pax_global_header00006660000000000000000000000064151343214160014512gustar00rootroot0000000000000052 comment=78cb14e81461d2e3b5153adb925f2a006f662d10 time_decode-10.3.1/000077500000000000000000000000001513432141600140355ustar00rootroot00000000000000time_decode-10.3.1/.gitattributes000066400000000000000000000001241513432141600167250ustar00rootroot00000000000000*.zip filter=lfs diff=lfs merge=lfs -text *.dmg filter=lfs diff=lfs merge=lfs -text time_decode-10.3.1/.gitignore000066400000000000000000000001031513432141600160170ustar00rootroot00000000000000*.egg-info binaries build dist debian __pycache__ .DS_Store @eaDir time_decode-10.3.1/LICENSE000066400000000000000000000020551513432141600150440ustar00rootroot00000000000000MIT License Copyright (c) 2023 Corey Forman Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. time_decode-10.3.1/README.md000066400000000000000000000406051513432141600153210ustar00rootroot00000000000000# Time Decode ![PyPI - Version](https://img.shields.io/pypi/v/time_decode?logo=python&label=Latest%20pypi%20Release&labelColor=white) A Python 3 timestamp and date decoder/encoder. I noticed a lack of timestamp conversion utilities in a number of different linux systems. Since I happen to use linux in my day-to-day work I thought this would help. This was developed with the Digital Forensics field in mind, so all of the testing has been done on Windows, macOS, and Linux. If you have any questions, suggestions, helpful thoughts of any kind, please feel free to drop me a line. # Requirements All requirements will get installed automatically when following the below install methods. The additional packages which get installed are: # Install `python3 -m pip install time-decode` or `python3 -m pip install git+https://github.com/digitalsleuth/time_decode` This python script provides the following conversions from existing timestamps: ``` ┌───────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────┬────────────────┐ │ Type │ Format │ Example │ Argument │ ├───────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────────────┼────────────────┤ │ Active Directory/LDAP │ Active Directory/LDAP timestamps are 18 digits │ 133908455300649390 │ --active │ │ Apache Cookie Hex time │ Apache Cookie hex timestamps are 13 hex characters long │ 63450e689882b │ --apache │ │ Apple Biome 64-bit decimal │ Apple Biome 64-bit decimal is 19 digits in length │ 4739726202305531884 │ --biome64 │ │ Apple Biome Hex time │ Apple Biome Hex value is 8 bytes (16 chars) long │ 41c6e3de6d084fec │ --biomehex │ │ Apple NSDate - All │ Apple NSDates are 9, 9.6, or 15-19 digits in length │ 704656778.285777 │ --nsdate │ │ Apple NSDate - bplist / Cocoa │ Apple NSDates (bplist) are 9 digits in length │ 768064730 │ --bplist │ │ Apple NSDate - iOS 11+ │ Apple NSDates (iOS) are 15-19 digits in length │ 768064730064939008 │ --iostime │ │ Apple NSDate - Mac Absolute │ Apple NSDates (Mac) are 9 digits '.' 6 digits │ 768064730.064939 │ --mac │ │ Binary Coded Decimal │ Binary Coded Decimal timestamps are 12 digits in length │ 250506232221 │ --bcd │ │ BitDate time │ BitDate (Samsung/LG) timestamps are 8 hex characters │ d223957e │ --bitdate │ │ Bitwise Decimal time │ Bitwise Decimal timestamps are 10 digits │ 2123703250 │ --bitdec │ │ DHCPv6 DUID time │ DHCPv6 DUID values are at least 14 bytes long │ 000100012faa41da000000000000 │ --dhcp6 │ │ Discord time │ Discord timestamps are 18 digits or longer │ 1102608904745127937 │ --discord │ │ DVR (WFS / DHFS) File System │ DVR timestamps are 4 bytes │ 00F0063F │ --dvr │ │ exFAT time │ exFAT 32-bit timestamps are 8 hex characters (4 bytes) │ 5aa47a59 │ --exfat │ │ FAT Date + Time │ FAT (MS-DOS wFatDate wFatTime) timestamps are 8 hex characters (4 bytes) │ a45a597a │ --fat │ │ GMail Boundary time │ GMail Boundary values are 28 hex chars │ 00000000000089882b063450e600 │ --gbound │ │ GMail Message ID time │ GMail Message ID values are 16 hex chars or 19 digits (IMAP) │ 1969be0e7d000000 │ --gmsgid │ │ Google Chrome │ Google Chrome/Webkit timestamp is 17 digits │ 13390845530064940 │ --chrome │ │ Google EI time │ Google ei timestamps contain only URLsafe base64 characters: A-Za-z0-9=-_ │ WoUXaA │ --eitime │ │ Google GCLID time │ Google GCLID timestamps contain only URLsafe base64 characters: A-Za-z0-9=-_ │ CKSDxc_qhLkCFQyk4AodO24Arg │ --gclid │ │ Google VED time │ Google VED timestamps contain only URLsafe base64 characters: A-Za-z0-9=-_ │ 0ahUKEwilufv7joqNAxW3nYkEHd0vMyIQ4dUDCA8 │ --ved │ │ GPS time │ GPS timestamps are 10 digits │ 1430407111 │ --gps │ │ GSM time │ GSM timestamps are 14 hex characters (7 bytes) │ 52504051810500 │ --gsm │ │ HFS / HFS+ 32-bit Hex BE │ HFS / HFS+ Big-Endian timestamps are 8 hex characters (4 bytes) │ e43d35da │ --hfsbe │ │ HFS / HFS+ 32-bit Hex LE │ HFS / HFS+ Little-Endian timestamps are 8 hex characters (4 bytes) │ da353de4 │ --hfsle │ │ HFS+ Decimal Time │ HFS+ Decimal timestamps are 10 digits │ 3829216730 │ --hfsdec │ │ JET LogTime │ JET LogTime values are 8 bytes, one byte for each YY-MM-DD HH:MM:SS and 2 fillers │ 343a0d17037b0000 │ --logtime │ │ Julian Date decimal │ Julian Date decimal values are 7 digits, a decimal, and up to 10 digits │ 2460800.1380787035 │ --juliandec │ │ Julian Date hex │ Julian Date hex values are 14 characters (7 bytes) │ 258c80524d235b │ --julianhex │ │ KSUID Alpha-numeric │ KSUID values are 27 alpha-numeric characters │ 2PChRqPZDwT9m2gBDLd5uy7XNTr │ --ksalnum │ │ KSUID Decimal │ KSUID decimal timestamps are 9 digits in length │ 346371930 │ --ksdec │ │ LEB128 Hex time │ LEB128 Hex timestamps are variable-length and even-length │ d0cf83dfe932 │ --leb128hex │ │ LinkedIn Activity time │ LinkedIn Activity timestamps contain only digits │ 7324176984442343424 │ --linkedin │ │ Mastodon time │ Mastodon timestamps are 18 digits or longer │ 114450230804480000 │ --mastodon │ │ Metasploit Payload UUID │ Metasploit Payload UUID's are at least 22 chars and base64 urlsafe encoded │ 4PGoVGYmx8l6F3sVI4Rc8g │ --metasploit │ │ Microsoft .NET DateTime Ticks │ Microsoft .NET DateTime Ticks values are 18 digits │ 638819687300649472 │ --dotnet │ │ Microsoft 128-bit SYSTEMTIME │ Microsoft 128-bit SYSTEMTIME timestamps are 32 hex characters (16 bytes) │ e9070500000004000f00120032004000 │ --systemtime │ │ Microsoft DTTM Date │ Microsoft DTTM timestamps are 4 bytes │ 8768f513 │ --dttm │ │ Microsoft Excel 1904 Date │ Microsoft Excel 1904 timestamps are 2 ints, separated by a dot │ 44319.638079455312 │ --ms1904 │ │ Microsoft Hotmail time │ Microsoft Hotmail timestamps are 2x 8 hex chars (4 bytes) colon separated │ 07bddb01:aed19dd6 │ --hotmail │ │ Microsoft MS-DOS 32-bit Hex │ Microsoft MS-DOS 32-bit timestamps are 8 hex characters (4 bytes) │ 597aa45a │ --msdos │ │ Motorola time │ Motorola 6-byte hex timestamps are 12 hex characters │ 3705040f1232 │ --moto │ │ Mozilla PRTime │ Mozilla PRTime timestamps are 16 digits │ 1746371930064939 │ --prtime │ │ Nokia S40 time │ Nokia 7-byte hex timestamps are 14 hex characters │ 07e905040f1232 │ --ns40 │ │ Nokia S40 time LE │ Nokia 7-byte hex timestamps are 14 hex characters │ e90705040f1232 │ --ns40le │ │ Nokia time │ Nokia 4-byte hex timestamps are 8 hex characters │ d19d0f5a │ --nokia │ │ Nokia time LE │ Nokia 4-byte hex timestamps are 8 hex characters │ 5a0f9dd1 │ --nokiale │ │ S32 Encoded (Bluesky) time │ S32 encoded (Bluesky) timestamps are 9 characters long │ 3muhy3twk │ --s32 │ │ Semi-Octet decimal │ Semi-Octet decimal values are 12 or 14 digits long │ 525040518105 │ --semioctet │ │ Sonyflake time │ Sonyflake values are 15 hex characters │ 65dd4bb89000001 │ --sony │ │ Symantec AV time │ Symantec 6-byte hex timestamps are 12 hex characters │ 3704040f1232 │ --symantec │ │ TikTok time │ TikTok timestamps are 19 digits long │ 7228142017547750661 │ --tiktok │ │ Twitter time │ Twitter timestamps are 18 digits or longer │ 1189581422684274688 │ --twitter │ │ ULID time │ ULID timestamp contains only Base32 characters │ 01JTDY1SYGCZWCBPCSEBHV1DW2 │ --ulid │ │ Unix Hex 32-bit BE │ Unix Hex 32-bit Big-Endian timestamps are 8 hex characters (4 bytes) │ 6817855a │ --unixhex32be │ │ Unix Hex 32-bit LE │ Unix Hex 32-bit Little-Endian timestamps are 8 hex characters (4 bytes) │ 5a851768 │ --unixhex32le │ │ Unix Milliseconds │ Unix milliseconds timestamp is 13 digits in length │ 1746371930064 │ --unixmilli │ │ Unix Milliseconds hex │ Unix Milliseconds hex timestamp is 12 hex characters (6 bytes) │ 01969be0e7d0 │ --unixmillihex │ │ Unix Seconds │ Unix seconds timestamp is 10 digits in length │ 1746371930 │ --unixsec │ │ UUID time │ UUIDs are in the format 00000000-0000-0000-0000-000000000000 │ d93026f0-e857-11ed-a05b-0242ac120003 │ --uuid │ │ VMSD time │ VMSD values are a 6-digit value and a signed/unsigned int at least 9 digits │ 406608,-427259264 │ --vm │ │ Windows Cookie Date │ Windows Cookie times consist of 2 ints, entered with a comma between them │ 3600017664,31177991 │ --cookie │ │ Windows FILETIME (Low|High) │ Windows FILETIME Low|High times are 2x 8 hex chars (4 bytes) colon separated │ d69dd1ae:01dbbd07 │ --filetimelohi │ │ Windows FILETIME BE │ Windows FILETIME Hex Big-Endian timestamp is 16 hex characters (8 bytes) │ 01dbbd07d69dd1ae │ --filetimebe │ │ Windows FILETIME LE │ Windows FILETIME Hex Little-Endian timestamp is 16 hex characters (8 bytes) │ aed19dd607bddb01 │ --filetimele │ │ Windows OLE 64-bit hex BE │ Windows OLE Big-Endian timestamps are 16 hex characters (8 bytes) │ 40e65ab46b259b1a │ --olebe │ │ Windows OLE 64-bit hex LE │ Windows OLE Little-Endian timestamps are 16 hex characters (8 bytes) │ 1a9b256bb45ae640 │ --olele │ │ Windows OLE Automation Date │ Windows OLE Automation timestamps are 2 ints, separated by a dot │ 45781.638079455312 │ --oleauto │ └───────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────┴────────────────┘ * BE = Big-Endian / LE = Little-Endian ``` Note that HFS times are in Local Time, where HFS+ times are in UTC. MS-DOS 32 bit Hex values and MS-DOS FAT Date+Time are also in Local Time of the source generating the timestamp. All other times, unless expressly mentioned, are in UTC. I have added a feature to 'guess' in what format the timestamp is that you've provided. This will run the timestamp you provide against all methods, and provide an output if human-readable. There is also the ability to convert a date-time to all of the aforementioned timestamps. Simply use the following command: `time-decode --timestamp "2017-06-02 13:14:15.678"` or for timezones use: `time-decode --timestamp "2017-06-02 13:14:15+02:00"` The date/time you enter should be in the "YYYY-mm-dd HH:MM:SS.fff" where `.fff` is the millisecond value. (Double-quote required for Windows Python) If anyone has any other timestamps they think should be added to this tool, please let me know. References/Sources for all material can also be found in the REFERENCES.md documentation. time_decode-10.3.1/REFERENCES.md000066400000000000000000000105371513432141600160060ustar00rootroot00000000000000### GPS Ref: - http://www.leapsecond.com/java/gpsclock.htm ### Leap Seconds: - https://www.nist.gov/pml/time-and-frequency-division/leap-seconds-faqs - http://hpiers.obspm.fr/eop-pc/index.php?index=TAI-UTC_tab&lang=en ### Microsoft DateTime: - https://docs.microsoft.com/en-us/dotnet/api/system.datetime?view=netframework-4.8 ### Microsoft Time: - https://docs.microsoft.com/en-ca/windows/win32/sysinfo/time ### Microsoft 1904 Timestamp: - https://docs.microsoft.com/en-us/office/troubleshoot/excel/1900-and-1904-date-system ### Microsoft OLE Automation Date (OADate): - https://docs.microsoft.com/en-us/dotnet/api/system.datetime.tooadate?view=netframework-4.8 ### MSDOS wFatDate wFatTime DosDate: - https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-dosdatetimetofiletime ### Microsoft FILETIME: - https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-filetime ### Microsoft Active Directory/LDAP Timestamp: - https://docs.microsoft.com/en-us/windows/win32/adschema/a-lastlogontimestamp ### bplist timestamp / Mac Absolute / iOS / Cocoa - https://developer.apple.com/documentation/corefoundation/cfabsolutetime - https://developer.apple.com/documentation/foundation/nsdate ### GSM Timestamps: - https://en.wikipedia.org/wiki/GSM_03.40 - http://seven-bit-forensics.blogspot.com/2014/02/decoding-gsmsms-timestamps.html ### Symantec AV Timestamp: - https://knowledge.broadcom.com/external/article/151245/interpreting-endpoint-protection-av-log.html ### VMWare Snapshot timestamp: - https://stuffphilwrites.com/2013/03/vmware-snapshot-forensics/ ### TikTok and Twitter Timestamps: - https://dfir.blog/tinkering-with-tiktok-timestamps/ ### Discord Timestamps: - https://discord.com/developers/docs/reference#snowflakes - Discord epoch is 1-1-2015 or 1420070400000 ### KSUID Timestamp value: - https://github.com/segmentio/ksuid - https://github.com/obsidianforensics/unfurl ### Mastodon Social value: - https://github.com/tootsuite/mastodon ### Metasploit Payload UUID format: - https://github.com/rapid7/metasploit-framework/wiki/Payload-UUID - https://github.com/DidierStevens/Beta/blob/master/metatool.py ### DHCPv6 DUID: - https://tools.ietf.org/html/rfc3315#page-19 ### Microsoft .NET DateTime Struct (not .NET Framework) - https://docs.microsoft.com/en-us/dotnet/api/system.datetime?view=net-6.0 ### GMail Boundary Timestamp - https://www.metaspike.com/gmail-mime-boundary-delimiter-timestamps/ ### GMail Message ID Timestamp - https://www.metaspike.com/dates-gmail-message-id-thread-id-timestamps/ ### Nokia Timestamp - http://www.doubleblak.com/m/blogPosts.php?id=7#nokia ### Nokia S40 Timestamp - https://sqliteforensictoolkit.com/a-brief-history-of-time-stamps/ ### Bitwise Decimal Timestamp - https://stackoverflow.com/questions/19185106/unknown-timestamp-reference-date/19553622#19553622 - Source of TS unknown, but since it's seemingly rare, it may be useful ### BitDate - https://sqliteforensictoolkit.com/a-brief-history-of-time-stamps/ ### Apple Biome data - https://blog.d204n6.com/2022/09/ios-16-now-you-c-it-now-you-dont.html ### S32 encoding and decoding - BlueSky Social Network - https://github.com/bluesky-social/atproto/blob/main/packages/common-web/src/tid.ts - https://github.com/bluesky-social/atproto/blob/main/packages/common-web/src/util.ts ### Apache Cookie values - https://github.com/apache/httpd/blob/trunk/modules/metadata/mod_usertrack.c#L99 ### LEB128 hex value (thanks to Justin Lazenby for identifying this one!) - https://en.wikipedia.org/wiki/LEB128 ### Julian hex values - https://stackoverflow.com/questions/56067745/hex-numbers-that-translate-into-date-and-time-stamps ### Julian decimal values - https://github.com/seanredmond/juliandate/ ### Semi-Octet value - https://doubleblak.com/blogPost.php?k=timestamps#semioctet ### Google VED Timestamp - https://www.doubleblak.com/blogPost.php?k=abouttime ### LinkedIn Activity Timestamp - https://github.com/Ollie-Boyd/Linkedin-post-timestamp-extractor/tree/main ### Microsoft DTTM - https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-doc/164c0c2e-6031-439e-88ad-69d00b69f414 ### WFS File System - https://www.academia.edu/81188982/ANALYSIS_AND_RECOVERY_OF_VIDEOS_FROM_THE_WFS_FILE_SYSTEM_Atena_Editora_ ### JET_LOGTIME - https://learn.microsoft.com/en-us/windows/win32/extensible-storage-engine/jet-logtime-structure time_decode-10.3.1/TYPES.md000066400000000000000000000347231513432141600152740ustar00rootroot00000000000000``` ┌───────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────┬────────────────┐ │ Type │ Format │ Example │ Argument │ ├───────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────────────┼────────────────┤ │ Active Directory/LDAP │ Active Directory/LDAP timestamps are 18 digits │ 133908455300649390 │ --active │ │ Apache Cookie Hex time │ Apache Cookie hex timestamps are 13 hex characters long │ 63450e689882b │ --apache │ │ Apple Biome 64-bit decimal │ Apple Biome 64-bit decimal is 19 digits in length │ 4739726202305531884 │ --biome64 │ │ Apple Biome Hex time │ Apple Biome Hex value is 8 bytes (16 chars) long │ 41c6e3de6d084fec │ --biomehex │ │ Apple NSDate - All │ Apple NSDates are 9, 9.6, or 15-19 digits in length │ 704656778.285777 │ --nsdate │ │ Apple NSDate - bplist / Cocoa │ Apple NSDates (bplist) are 9 digits in length │ 768064730 │ --bplist │ │ Apple NSDate - iOS 11+ │ Apple NSDates (iOS) are 15-19 digits in length │ 768064730064939008 │ --iostime │ │ Apple NSDate - Mac Absolute │ Apple NSDates (Mac) are 9 digits '.' 6 digits │ 768064730.064939 │ --mac │ │ Binary Coded Decimal │ Binary Coded Decimal timestamps are 12 digits in length │ 250506232221 │ --bcd │ │ BitDate time │ BitDate (Samsung/LG) timestamps are 8 hex characters │ d223957e │ --bitdate │ │ Bitwise Decimal time │ Bitwise Decimal timestamps are 10 digits │ 2123703250 │ --bitdec │ │ DHCPv6 DUID time │ DHCPv6 DUID values are at least 14 bytes long │ 000100012faa41da000000000000 │ --dhcp6 │ │ Discord time │ Discord timestamps are 18 digits or longer │ 1102608904745127937 │ --discord │ │ DVR (WFS / DHFS) File System │ DVR timestamps are 4 bytes │ 00F0063F │ --dvr │ │ exFAT time │ exFAT 32-bit timestamps are 8 hex characters (4 bytes) │ 5aa47a59 │ --exfat │ │ FAT Date + Time │ FAT (MS-DOS wFatDate wFatTime) timestamps are 8 hex characters (4 bytes) │ a45a597a │ --fat │ │ GMail Boundary time │ GMail Boundary values are 28 hex chars │ 00000000000089882b063450e600 │ --gbound │ │ GMail Message ID time │ GMail Message ID values are 16 hex chars or 19 digits (IMAP) │ 1969be0e7d000000 │ --gmsgid │ │ Google Chrome │ Google Chrome/Webkit timestamp is 17 digits │ 13390845530064940 │ --chrome │ │ Google EI time │ Google ei timestamps contain only URLsafe base64 characters: A-Za-z0-9=-_ │ WoUXaA │ --eitime │ │ Google GCLID time │ Google GCLID timestamps contain only URLsafe base64 characters: A-Za-z0-9=-_ │ CKSDxc_qhLkCFQyk4AodO24Arg │ --gclid │ │ Google VED time │ Google VED timestamps contain only URLsafe base64 characters: A-Za-z0-9=-_ │ 0ahUKEwilufv7joqNAxW3nYkEHd0vMyIQ4dUDCA8 │ --ved │ │ GPS time │ GPS timestamps are 10 digits │ 1430407111 │ --gps │ │ GSM time │ GSM timestamps are 14 hex characters (7 bytes) │ 52504051810500 │ --gsm │ │ HFS / HFS+ 32-bit Hex BE │ HFS / HFS+ Big-Endian timestamps are 8 hex characters (4 bytes) │ e43d35da │ --hfsbe │ │ HFS / HFS+ 32-bit Hex LE │ HFS / HFS+ Little-Endian timestamps are 8 hex characters (4 bytes) │ da353de4 │ --hfsle │ │ HFS+ Decimal Time │ HFS+ Decimal timestamps are 10 digits │ 3829216730 │ --hfsdec │ │ JET LogTime │ JET LogTime values are 8 bytes, one byte for each YY-MM-DD HH:MM:SS and 2 fillers │ 343a0d17037b0000 │ --logtime │ │ Julian Date decimal │ Julian Date decimal values are 7 digits, a decimal, and up to 10 digits │ 2460800.1380787035 │ --juliandec │ │ Julian Date hex │ Julian Date hex values are 14 characters (7 bytes) │ 258c80524d235b │ --julianhex │ │ KSUID Alpha-numeric │ KSUID values are 27 alpha-numeric characters │ 2PChRqPZDwT9m2gBDLd5uy7XNTr │ --ksalnum │ │ KSUID Decimal │ KSUID decimal timestamps are 9 digits in length │ 346371930 │ --ksdec │ │ LEB128 Hex time │ LEB128 Hex timestamps are variable-length and even-length │ d0cf83dfe932 │ --leb128hex │ │ LinkedIn Activity time │ LinkedIn Activity timestamps contain only digits │ 7324176984442343424 │ --linkedin │ │ Mastodon time │ Mastodon timestamps are 18 digits or longer │ 114450230804480000 │ --mastodon │ │ Metasploit Payload UUID │ Metasploit Payload UUID's are at least 22 chars and base64 urlsafe encoded │ 4PGoVGYmx8l6F3sVI4Rc8g │ --metasploit │ │ Microsoft .NET DateTime Ticks │ Microsoft .NET DateTime Ticks values are 18 digits │ 638819687300649472 │ --dotnet │ │ Microsoft 128-bit SYSTEMTIME │ Microsoft 128-bit SYSTEMTIME timestamps are 32 hex characters (16 bytes) │ e9070500000004000f00120032004000 │ --systemtime │ │ Microsoft DTTM Date │ Microsoft DTTM timestamps are 4 bytes │ 8768f513 │ --dttm │ │ Microsoft Excel 1904 Date │ Microsoft Excel 1904 timestamps are 2 ints, separated by a dot │ 44319.638079455312 │ --ms1904 │ │ Microsoft Hotmail time │ Microsoft Hotmail timestamps are 2x 8 hex chars (4 bytes) colon separated │ 07bddb01:aed19dd6 │ --hotmail │ │ Microsoft MS-DOS 32-bit Hex │ Microsoft MS-DOS 32-bit timestamps are 8 hex characters (4 bytes) │ 597aa45a │ --msdos │ │ Motorola time │ Motorola 6-byte hex timestamps are 12 hex characters │ 3705040f1232 │ --moto │ │ Mozilla PRTime │ Mozilla PRTime timestamps are 16 digits │ 1746371930064939 │ --prtime │ │ Nokia S40 time │ Nokia 7-byte hex timestamps are 14 hex characters │ 07e905040f1232 │ --ns40 │ │ Nokia S40 time LE │ Nokia 7-byte hex timestamps are 14 hex characters │ e90705040f1232 │ --ns40le │ │ Nokia time │ Nokia 4-byte hex timestamps are 8 hex characters │ d19d0f5a │ --nokia │ │ Nokia time LE │ Nokia 4-byte hex timestamps are 8 hex characters │ 5a0f9dd1 │ --nokiale │ │ S32 Encoded (Bluesky) time │ S32 encoded (Bluesky) timestamps are 9 characters long │ 3muhy3twk │ --s32 │ │ Semi-Octet decimal │ Semi-Octet decimal values are 12 or 14 digits long │ 525040518105 │ --semioctet │ │ Sonyflake time │ Sonyflake values are 15 hex characters │ 65dd4bb89000001 │ --sony │ │ Symantec AV time │ Symantec 6-byte hex timestamps are 12 hex characters │ 3704040f1232 │ --symantec │ │ TikTok time │ TikTok timestamps are 19 digits long │ 7228142017547750661 │ --tiktok │ │ Twitter time │ Twitter timestamps are 18 digits or longer │ 1189581422684274688 │ --twitter │ │ ULID time │ ULID timestamp contains only Base32 characters │ 01JTDY1SYGCZWCBPCSEBHV1DW2 │ --ulid │ │ Unix Hex 32-bit BE │ Unix Hex 32-bit Big-Endian timestamps are 8 hex characters (4 bytes) │ 6817855a │ --unixhex32be │ │ Unix Hex 32-bit LE │ Unix Hex 32-bit Little-Endian timestamps are 8 hex characters (4 bytes) │ 5a851768 │ --unixhex32le │ │ Unix Milliseconds │ Unix milliseconds timestamp is 13 digits in length │ 1746371930064 │ --unixmilli │ │ Unix Milliseconds hex │ Unix Milliseconds hex timestamp is 12 hex characters (6 bytes) │ 01969be0e7d0 │ --unixmillihex │ │ Unix Seconds │ Unix seconds timestamp is 10 digits in length │ 1746371930 │ --unixsec │ │ UUID time │ UUIDs are in the format 00000000-0000-0000-0000-000000000000 │ d93026f0-e857-11ed-a05b-0242ac120003 │ --uuid │ │ VMSD time │ VMSD values are a 6-digit value and a signed/unsigned int at least 9 digits │ 406608,-427259264 │ --vm │ │ Windows Cookie Date │ Windows Cookie times consist of 2 ints, entered with a comma between them │ 3600017664,31177991 │ --cookie │ │ Windows FILETIME (Low|High) │ Windows FILETIME Low|High times are 2x 8 hex chars (4 bytes) colon separated │ d69dd1ae:01dbbd07 │ --filetimelohi │ │ Windows FILETIME BE │ Windows FILETIME Hex Big-Endian timestamp is 16 hex characters (8 bytes) │ 01dbbd07d69dd1ae │ --filetimebe │ │ Windows FILETIME LE │ Windows FILETIME Hex Little-Endian timestamp is 16 hex characters (8 bytes) │ aed19dd607bddb01 │ --filetimele │ │ Windows OLE 64-bit hex BE │ Windows OLE Big-Endian timestamps are 16 hex characters (8 bytes) │ 40e65ab46b259b1a │ --olebe │ │ Windows OLE 64-bit hex LE │ Windows OLE Little-Endian timestamps are 16 hex characters (8 bytes) │ 1a9b256bb45ae640 │ --olele │ │ Windows OLE Automation Date │ Windows OLE Automation timestamps are 2 ints, separated by a dot │ 45781.638079455312 │ --oleauto │ └───────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────┴────────────────┘ * BE = Big-Endian / LE = Little-Endian ``` time_decode-10.3.1/dmg.sh000066400000000000000000000010511513432141600151350ustar00rootroot00000000000000#!/bin/sh #python3 /usr/local/bin/pyinstaller time-decode-mac.spec --noconfirm #mkdir -p dist/dmg #rm -r dist/dmg/* #cp -r "dist/Time Decode v$1.app" dist/dmg/ #test -f "dist/Time Decode v$1.dmg" && rm "dist/Time Decode v$1.dmg" create-dmg \ --volname "Time Decode v$1" \ --volicon "icon.icns" \ --window-pos 200 120 \ --window-size 600 300 \ --icon-size 100 \ --icon "Time Decode v$1.app" 175 120 \ --hide-extension "Time Decode v$1.app" \ --app-drop-link 425 120 \ --no-internet-enable \ "dist/Time Decode v$1.dmg" \ "dist/dmg/" time_decode-10.3.1/icon.icns000066400000000000000000027747721513432141600156750ustar00rootroot00000000000000icns ic12"$PNG  IHDR@@iqiCCPICC Profile(}KHQ?cD\ AAԕJ. B| 'W!\&I Bp+Tv㣋n]Vւn ]"s3)=|s3g߱TAvɉE~tmZE&o4|>{~2r#<ZF&SE ᰥpUIi>~P/4'<^O4=s$I+m[ Lse6`ʞr:cIb$(%$ۢU(8ɐAD%Rb~!ws{u ~Af]Klk=;жe:fUjK{ybɐ7}0 + -zu/\ŻO0-eGwh_ae<8eXIfMM*i@@e`IDATx[w\TǷww){GFM%b!"vEDXb%ػ`4{1*VŊ’Lb~03gΔSܕoп֬\L`Sg"eo?΀vK/pUS%e&:g#R^\ʙzNiYSOL֭ Tz|p <MA'&ApeAU! $UDU=9ۇ/c?U ڵ16-RYǪLJ4<1  &9j b<*g?6YΛ€S3Um*A]=6v ӷMcE_#p))- f65)>8~P>$)t<)f 90)*%x^t>ֿ1Xnaq`ͼ Q 85x@X o3lF7HSC XoNUda@of ĮBKտr]cX5><ز#DU$rhGIHNn$T߀=ߒtB:6BLNy$KAk ̙Wx9fUޟ$ =cUu IENnmɻs&?[S"7h)cd;5gLq7/'zo_Ҁ+APd PgǸ\ڌY.HhI; \S7v}2Ԟ*dB= &h񩍹KLWN/,p [N6ҟjnTy$;cnפnYt~f+ ǬjuX*v{fG-:N)jkR_Sx@մ04)Dy~~k/cJ{[%cAͪ$C\PzՋ xd鷔|zA?Ȥ2 4$s MMF~Vq-Z.@V!c?|B儽 `5 I[0#38rX&oU$5CVܶ4XۑiN5F>)v Yf9MfU~;u{BvwfOO-'Ҿ)$>ւlaOȗָޯ$T;P0sSR _4|& ~"ZÂ; _x2V5MN_~ȏZYk&9pR\;0E]t&ہcWz#bU;\]{L-}Q2Uٱ5̪l9O{Mj鷔d.ldH`@ChdPIѶsƕOؗ, Njg8 x#N+/ol׊؞gC㯹u&,L<>ݩ{Rbvۀ ^sJ;|f b0aIϠc+hcω4ڑ@M2 -tpdVC=a oطz+qztXhO:ҹ4QR08:&ӽ DW~!/Lpt"Ml"^tƝ]!xPbu,PGN`l dC3%s&c}40ճ4"% Q̗Chz+^4#;xz(pgDP[Pd#U{h%Ǹu׮`ھW Yko .q?8eB~ g!ݦFvo ћ` '{ً SP&CzЗ;}ӂw}p5a>E60`[[}?*nYb3dB_ލh6pY{b:_N0JaݦyIr{;Z@*tͻqUbss v&& $O\qzWۺO$D9^hE3Su<*0LBbCЎVF JARGYéuRDGQ>.>o]qOtKv*럊| mv-TzI.0AWxj td=@KȊH <2ǥxY߃Wy¸̄MTGAIwTݕy.tVf [oEUJk G#Жj0t(L=94@h* {' .f-Buiu~ȉLv?*tf ~+bhBVK&[`Ͳ[K`M-Jh< ye"KKazIou9V8VJA5`.߂HKtQL"9| 'DVNvVybGѬ%YW1Fe&`~yV.\ *e]8ǐЙH $~j>6eS~B9asAP\lyˠhXakhDeMk⽿A W#8Tec/foy}M90#~moݮ``B2Onݟ صew[߂`N8-cêG9}4nS`Bp |<@5wm)ۢ:W2px?TF85fR.eMX\~ 5~ z4|D&LD2w oA{lc]9|Cԉ(1oQ~H|`B,,̵ 00p7BhשOOLd85WoD_c|pdހhoo,~C  _B%fkRyh{ A`'֔OI`B F^D^M J.T[bzh` Q rb''E&rZW͇d%8 ҦG_d=Ca6߽ah]~dwgý^pCކzc}qNQ {@X2n+cr݅|Di#p! }`6(L\s#‡HU f8xEn#SqsT.K-5β^F^nv=k j3b"%LtV fnH*Uژ OFozʻhÖ$ YF +Ϸ+r* a̯9=':ᔈEQߊ#~j[#")ucGM~ >&|Ws7T{Ѐ; 94UyLІ]xCrdY6;&UvpDo vcž@%zCwE#oN&H*دȔPiwHT!|1^#!yh3%M xx Ju4>;'3bXW]Rq]n/dfpc*k5N2HMژo;b I /c@I\&qD#A.QYRk{SW,&=Հ;qRbj6yoh `) wZuX /Nu}ςKVJfDAK84}F4[p3լJm;-AP'v4< Քk~@Yhb%3N^:y-A}tpOE1Pf+kmSr5ƏXO{> ;RT"<ҳrrTrߝ >Zt4}-9)4" $9e1000~@Q#[i-GcCOya~V8SAU8iH h!v:V_g WO9 n}=_2Iķ'S v~ۧR.wIGL}ȶ[*`p;ehDUE1h< @܁ds|HXϟ=c̔YH ^!ZO:hwR4t9Cfeܿ@RZ3JX)u,s'̀F%liyJom씘Zׁf2aUDǎ{V‘9q@w RI'Dea&lNReUôy^ҥƐd)5"\MiɎ?ɇ ݡ6̌mje[Fk?i-/eRW\ozOox(Ļ,^PS)fpr!|b`+Bh5p䕣 BmlȘOP?{1{pw<5iA$>C$S z!p5)vUqp[kS,N]Z7+zsAI}wK`AK)y^zvhsױ ]*hQKX>p 4'?(S _l VI>bY>1/pl^7l0^\S M[d+XnbK)*LD{Ƭ\J`4xvVaYGNm>4 8 .Fny| + >t/0嘥^&]>7sy \a62.NQY?!YAEy0z9niz\%4PΟ d#9x&ѸǺ /Y+ ='Ƨ"MZhĤemVsB#kĽƯ˔ġz<1rfk;%[%~mo4KLF%{ %l!  \pFu+s7h6RNúY)&+;9<8CgO`cL1_qk8lLṵcz߭+n2-p,=;].SG$N:Tۙa * 瑤 9F*~rv2^z5r망1,S<`4u;z0P|(7*+L (UE{(')I$|9qٿxTR1g!SОn艵V:ݜq]V:Wtv36 _ҕSWpFk+Ay>BBhk[p)'̜Pw˸L}sLjO^bB\f8|50yA<-uwsܡ{M 6B6catL=fm [ rA1ZjpqUiBX^U8uQ lNgRDArm60bWo2פP=F1@ĠjQ ];QصSg<̲ZA&l;~9ik;1mb 3iMŀg`֋,q%s*gՅ lFSC[+)sajo7X ,o'V3JƵ8g7\x`dt*=tdzY>W"AZԫÃot+f+R}thBbQaiCCPICC Profile(}KHQ?cD\ AAԕJ. B| 'W!\&I Bp+Tv㣋n]Vւn ]"s3)=|s3g߱TAvɉE~tmZE&o4|>{~2r#<ZF&SE ᰥpUIi>~P/4'<^O4=s$I+m[ Lse6`ʞr:cIb$(%$ۢU(8ɐAD%Rb~!ws{u ~Af]Klk=;жe:fUjK{ybɐ7}0 + -zu/\ŻO0-eGwh_ae<8eXIfMM*ikF&M@IDATx]`rw){GP^ tIA#R&BO]&JIHer)?'yڼ:+q=_{M'3yXl,yɃe$e(K6% Y,-6_~3q2?  ̑ PlYFH=9&"8^ s]myzi0)ATN 0C(57ћyėCO,$ ܑ: p~w30]?7$?jT Anȯtnjx'C?sŔ# VJtXugϷP!mcL#1+FM 8> 羁殙;#coҘ'MHRQa&x/BJyLU d.Vل)aك_]'t֞.oUB0hsaVKouǛv- pٷ]yA/QT%]oBEf_Y@~=d^QI:stU{-gsi֠\ _1,{) t6l27P`Qb$wN ȃޝ7ۻyi^+ 57l+Gy. ?YÊۖ܀׀~K2FfQɯ$=u̯G4 L;%Q>-\׹ Oĵ2RVxXѤJ?QP, ["r GGt1w ;D'߻ _|,6ɖ`[x{)09n^Vk_`n@8:a5wt#סѮwlgHd p$.+l߬^>C %V-S9>g7nwS+/~ &Zm1r$A`s4(ys@'1 vn3/q*]ۑʥ'1/;ӥ)qxN)%yCg %{#gցҿ$٧ k{uӓF5lhJYT v 4Oi&GMg}gޙҦ&|_P/OI %$#AtRKBb%I4I `P}&oAVe׼$!Zd ŷG9p&t`aZºV2lms֜S4h'šzOvIq֠j 橌tG%;oԇ.~Q*tEbDCJbG9 q 0nprBN ?de-DƉbWp1'{]H6$"\/ro o}{%{0:2$.}lLݫRn)P.p!wz\5haZF@Vy+ Eö҃2dORWG(A#-'8* `,M+ÝWVhl0 -[.Um&` iZTҨo|F oOh; LM ^>,a+ϻ6~щyZm&EyI|:#MV-&l(5tꏬ$p\=HlJ|hz L) wnbPQ0~iXipRaV@V+%j0@I>H)yfaPK<.6|Յoot~N)x/ln ݫ[?=~#{劗NFՐ~ЈnP@!y[g5سŞ\~)ذgVBbTAUP'"!yt[k*T dN,Eѿž/xVKh5ݧˆ滠lLv4w/5y"/FbW>i"d7 @ LM%䔌~l 1{x-sSM1)hui=4&d }G>[Hi׭䩱.]jޕ[4i3I?4TakTFrpϷAfm^krߐun lR\|8Bɴ-o讅j :g7ؤn `?- 87j0){9\*a܂P=422x֤L0cD;SIH:/e[1_A1D>lF|a{܎;x6pf8yiU:T2D_`7 Hvu{Ң_cHeҕM^U0o,o~?}v5 jNf3QǨ,Cqå8om@GXF"`Z׈ V@wmJ0u |-'&C9\z@įaWR~YJJpa;OoK|Qb G>T1|`'|۽uB45`Lw@˿o-& :eT1[&;5Ҧs<'H& V%Q[i</yM""\ů=n&bk $c`1:۵6ѮV#HmC}Pc˰7BcgWa8W M*, pn)ΆdKxm*P`l2)e”(j`*~ b/v o%l~IK>qMځshB$_A>͂'+u)~oת{d^xN^UywYw}feAT/(Al<0߾]w)"~jjmD4Y<bkR{A!yD:kaۥgRa;X_>oxi*DDiH۩^p79F#GBV-~\Ӎ)+ll=j#p?8ĤEu; G.G9tf~m &Î;6` On}⌝Ҩ&.nLBsh# + Ȼ濤xl=v-N9J> .'-3HYmY(U!fiE][I:\iJO )̤8i]n(%FiJ'#P. + AEVIM[ hք}z|6!dWa{PF\Hͭ>oMƂ=vϊO. kDr)]lɐ>>$R_nE@)]I+1ZqB#SO.Vy{ k2x"]o>YɷA~ s+MRS:go>?`*d Qp41m6?q%~<7Rݞ#6:5c+%fu0\At(f K#G Mr[SF#{:^ikK/dXh}g 48k'M?M$QRUq-e>ͩfiᫀXWww{`6`W i'h?9d%SO"e! c Y~V4|>܂;>_n.vDazi k9$B'0tؿo "PGUa`^W!Fwqѵ~wԮ˨vD$ˡ& c 9 ꈏ:|N'B %ȭ-{*\4O:D_<7wǜ078N^`pS,pĿCp9v]V3ß{^wP)oٜ W=ia{_k,a:^nYԣt̬ I5p;^{A59XѰI&&wrM72N #S]aFBL79InBjٽP?͔KMV  FIh=_fEbRYyt7p4`+̪]6xJ֞LA֬۾84@s[GmX1tJq"I[^=E ؉:>:<=J߸`_M|OsnSG~;/=RL$zmMσ]hlQM[pej{(] 3VqK4D__6!VqŃQ/_+!؟Jpbm}dRx½E?|nαaN/0X1Q5d8V6JW;i iJtjh6#~3y]m pq97sBxN  dT*vi79KM n Ѡ[.Kot ֠ ^ oZr"C">\is@X?8c/D&F{ؾҋS;#0-: ((HwEZ7Lp6r|Q_ܕPm$Rp{Kc`̓q@ƌ/E?{r#@ 8>6;Ej K!e1/O딜@!<']2?QPRpC@|)k&'"mJ]i']j/0_6.c ԲlieKc+F,BN4ף/RQj;YLp4e ntZ&V 0} C@KX>&Rz3]6\RaRVF@L\ntj+[q-/ax%kč^0h\jEE͜a{j'Gst%lXKbF?w4R&Ôk߉峱Jp'm,[+ZV ,?]]v3{ڱU ŧ99ZTش P@ 7 Ņf-ڿ\n;#5<\u]@#DOUTbhN c{jDXGrLGe `_.;tw<9ov%FHO"u`2N5Ǒ,V,ia)̹s Vupma-ýص ctc0<] nT)sg}XZfDūF?vb Dì]0wpEL~֝`2 S?d&~9=b-dk0f,:^lĦ7; 0HA-~-)=bTZ[\)o\&З E32uJ>q#a 1 Y87-mx\c,, a_\y7ȋz7{P4?/Ճ=ym;jA{u^&%W̐MKg3iek#\w ǜ+d솫9׿ i%BL^eZX- cEu.pOC8ݲ[ x!1$ n|m]';rPq_*ow*Fྷ4i@lOZ*p4m7[ԞND Pɚ'ڤ/\̿F#2b6>d񄟖c4QGC8G%`'>#3hjH`$6KĵTa۴_ZtH}Y1cBp%FpAxA2iqzSVf:\?2PiOl$Q0sATR]W:kC:8Vk*ܯ{/<PLty`r_@‚`<᾿FA"& ?Qh[֬CGQdfO6Va3 R4~i% FYE\k,fRJ8~ Rġ:$u'%YٷQj  4F2)Sl?LS5H[h0!%3g5&7!.IN"<"O -?- qxD5pMG_x-Ia)x>5/EI@fs+>풂 &SAah0Ve{k4Bۮ"a C8*qRBQq\0~#ᧆmrNWFi2wO FiG} @* H;S{WR\Bsq* [3tCPߨZt6yr,NN##T66#&>%Sw)$޾`D׏}c7LTJsK0c~:|: U ]EJ\z#\4ʉ IZ׈}`>! ݁} iO *`7]M 7H{ ZΦYf%dp8b8Mkć G<1r})!nbSF4I^W|Qo':PtpEW{_]۰&6y`ꃛ "$Ea鍚8 <fi)½_t6pIA^" aWCF 21cJ`0"puEӴܫcRbYL9r6͉ = ނCD~mLBmi6N]DmCFc4c'~<1$K~Jz{MH4hշJ`*Е=34AϊwK|ei"[/[|};iXFRiЁC(%}0B ]Bę}V2d)zMq<~aӈON#֦R7E̮)s8}fZsKXs I%V+KiPH(;.z rl=F8{7iEuLhDTJҖk2khE'Vv >c_-9?$g9ST7Vl/0uaX$c~Mn~`'s {P Օ":rHD[0O*ko?!Y;>'!P޹! (zħq7F$3:lcV~03Qh/bҰO 0j RzDp@ɭt"D0n[9҃ 8SAWm~JRv77|F;Je?{L0擐 wYNnwȲ CEd*GCSaR@\u3f~͔n Hs8dWLq! 8@-0`:GbB˜Xj.i>%n 0@ p"QPé94E~G]*Bw&2.p0/}A"N Ef"`˽-,% ` 05vHr!ؕ1\Ǝ7q+.4@?3 cᄑJVUZkHv+Вhgr_.~7Es !)9z@[Bg>ǃM#e8i5KaU`ԅ>E4X :̝C P=@Ə\"=_=b2D*GӍtYrDEZ1i ^QPm@*58 \#]h.n๮|^ 7i4CӀ_*)CAiaOHCI\ȼij!O&-$rxH B~m~r.+O:$K:S Bo y 3֍}JlHzgV:pЩg|M†>[Q5Y57-C D`d8K\@LyI H'd,+BlmDp"1>PiBß/6P<@`pp&ZC!~?}T,N҃b$3qN1炣Xʩϼ Y3͑.Ow @X->6a8-00_7M`ؽ--o  ޫ"4AqD94${m+#ӺۆtkoȗT)|s). ݳ $%h ;W Y*0[(C13 נ3wV]\*tᬈZ"gOiG0m%-NjPb۠S& Y>Ak((кJbf?a|1ѣ@S2 cNI@ǥExGD"q |H .@Q'0c/ Ҷ,1%.,Y'h,p`[ pᾦ?:ꩅ'g\382?s"՟*PL"p'0!rS4iOse#,kQ(g`CQwDhF)%DjZ-89-O<,XcMQC wvMaH-Ub܃4hCݕMt x(1KDr7s"`8c`:30@ BrxU[kͫ BOٺ>6.UetDc^G2CZNйC@b.DX[V˭f-mzL"T|A RD(CItK|(I7n=_F[4F+I8 qAHhHa?ǒEN:ܬ)C"-Aʀe)2|e -rELfsT~p|dHENk!:Av8!^j#Qz .][o{ŵ@N-m1{0 !ʒ8 B7 Gb2{~B+sa~S~o3Zv!*}D Hȉn'C”a ^ -LTi7PЖ*]7(Q$͜c'%Wcc- +C@} (vv @DWC_#:18i@ݲ]DҨ B@=p"ϕuW!-,ۣn9ćȢq\Nq-oc;bdԃz$4&@@ѝБLAL'ޟsL ;磙 F!\,=mZ̜#$\%xͅ[t%~@'ég[9$1;C%;? h$|t$'; Ebt6J+TRB4op6ΐ 8zOIÝ6YGy m &Q czE y~ʃ:YPGTRa垀3Ũn q)h]몬tP(EV]5-- 9H vdLyw)K [-`i UI0!%2y @)B5ڥ _[lcm$|?;& qLq&)(Zʈ8ey Y ]' 8*KeD/~b6;:튏< ge2.">yp+*Je*kG  " v'RzOøˏj.9 CIb^ꢒt&ZcېfKsĚjOWcKU.{ω=P/h2Enc:C-;iZwC/Q*A_xخNWkoWM!R~>rc+(4^xuT<ԪHKQf^P sIa(='%@ca~y ":mc9@.&Ig O(C7FF X)'A?L'4V]3IcV08t2@ 'ܱ5WD~JmԼL?@"ݡW\w~O=H$6n! w}Sf t1L#׹iLLtx)dgJ!{0݀]|VK@$ 7PFR,@ qv'NMm-S7BS *GF% Hxr^sH"XsHC>:;jhHHSz!ж,CwHnEqF '{s _xh xK@;sf]#д\Kra Qz|қ{'7- P+I`g*J>QKqMN{ 8aZ2#>. =%>:{e #:>=EnDh(wiq8A;6MNm)JB^3Ưj7Gk0nz*''YxC'F\-Ҟ1M\=†c {bN : ˪ ko{!THՔ:cQH &+y;_ "d s<nCNˢSZ0?$i/ٌT@@gH_r.ȗQ$TJG M<|mK9^oHs 2xaz򩪜{]AohKاq͡$>eր~~ t 0ފm v sH6 Խ-xi#`ںk=b ˧q S:+g:ᆻs^dF"'N;{T^OR >Թ#/Q tSp:̏qD}hpŜ^oel!!>;1g9Y@!Ӊ,$zrcϗO&Hw = }1rʛ9੄px~OB$wY˜,<}}%`aE?FPTõ> ӧ܈?hR9bR &Ѱ4?<-i҆t*b AMc9L:SKzAl &Iau% 0tQ^^FMj+D H;d]hÔ[x"`у3pxoƨA 33d=N!s>y݌f6=y,/ϼ^t@UZCfV|q@gx0BYCVXÛFuB:7pn6[" nm{Z|d˗Q<)\}vu-*OcaN$IRu9 MZeos$oG v[l s<-L,z2:+Ą}׳;Ϟ8 صN[702nÈK&h#D7SBw0rN\|hN"^FL?4ԎaB0l zQ.~bKc0]T!Qa|Fc٨9 *E9 ;)JaiUsY9ȒG%>K &({oꦶRuFOٜf@n5W pd#ӓMF%zk#J ]A҃^x%bȃq4ninW;xLO xaWR>cp3So~cp-#rO?rã,v(*LJ'bhR>,5=}5ě SvM5JPh9g #NM8_o0npٳZ`"`H CP aJ4q^"wiaz܈ 47wʏbbNCĔ"h^(lwRO\+<[IS1peO!PCtÈkASC,-=νȘWo~hIx`yȶŶI!% g{Diީc;%V1@s=x}o cgNic }ۂ59FFոovƬ,cl?QzNpъɽIۑ/{} iҨʙ{ůڬq_zp 1ݗ k²&?;#&AϚWѪhM'-*|} B:{ԳQZc?JV^&b$~IT4^at3.9EZhXݽ)P&B?7'_F}Z^w(:NkʝB, g8=;Wa3),{ ge[8>$3gĮ3$OBŜph|va :X/4MMyߵH|i>Z狲 鈟t0%C&a ١C^+=.:LV{`Htکw}Yib׫<6F"EL'!58hV(2jќF >b"Ai2~6+|WMڭ#'|Ï[㌻2= C,3<+=ˆ#:_,k4@bHC%2eYѾUۭ#[ 5K~)nh  oT֕Z]ivмKv8|.\=!N>B9s'p͆y6֝.h&p%+֫&umrYVj[{e0;0M}^G0#zHaj{?q,vVYh-l½$\6Ew,Uy ;Ҙ!3OxƵ )1m8O>㷤3?6+,vnLv?x>yy{T w!>?>ǏZ%rnZcߋ0$>}&+2Ɗӓae\E9`?^iVk+DŲCm,c '|-=4h'tQ*%9="<]-&H K5v>rdcQFi%HN:h(1:>Ft9[Ez3'hҵzloY=#>:VPɱ;8hGT|2v 䫵}6zHbZѝ5:UC Pol|xT"d#XMqNM*(0X=/byOx#T}&hZ`S#Oz3cٜnkWo-ٽ`H0s|dnى= ۆ-UC4T'qfnrmAzm7GQN}ݫ>hnK] e"K?xagw|kY2=L1> }FjXǀWTI:LNG:G2@Jg/ :>brf4a5cZ8 U⁋O&P~e$s>bb*?i㔀x&?NHMVCCЖX6kOȢN6["Ҟ]YO\fP{q 2`v%> s>ʗF f0Zos?zR6 ;˳+{L9[#i=<:fqԘ 3lNJJ9xNK|\I1X|z:/I4؝ܳ_DKs-vS;|Z (6{gixptQde[,lؿwV}*=_?],IENDB`ic13cPNG  IHDR\rfiCCPICC Profile(}KHQ?cD\ AAԕJ. B| 'W!\&I Bp+Tv㣋n]Vւn ]"s3)=|s3g߱TAvɉE~tmZE&o4|>{~2r#<ZF&SE ᰥpUIi>~P/4'<^O4=s$I+m[ Lse6`ʞr:cIb$(%$ۢU(8ɐAD%Rb~!ws{u ~Af]Klk=;жe:fUjK{ybɐ7}0 + -zu/\ŻO0-eGwh_ae<8eXIfMM*iD"8s@IDATx]`E+$tQP( (  HQ(+" " "="(REғ\{3;{ɥ\rI(dn7o{SwWM>)O| S ȧ@>)O| S ȧ@>)O| S ȧ@>)pQ@sC7gfd[]g$VO*fHQe5RpYR,Y*U%jJѫW|?OYMz|74+CPK)%UDBA. +A~xJ܏xگk8Se B:3iqҧHAawCj՛^2皠@&)m$P7A)B3fMS)^B͕K'H9t##2/ExQH;d ~Tҙq3UfU!4zW*?јN 0!T(/Yy^ SD8JCEQY%ה >Y:{"u&I1'O) 6OȯŊQ~ #a';D[/{'`Wnxb ,3fbgM0EL$)5x!B %Q3iEn /[f"}x{GD|7( z jȇ(?͊(XWOXK(H{c`.V| F|4x2BPk~m3iNCj X>CP /#O"F]OQq곎Iro'R8 ,>:;S":<E]B>7V4QP4°V/ˆ+B(SeKL )T)t|0f&Eyd\8#!E@0׈fZ%.i{ZMN6)C6(}9Jb5Q] t7 pIج%,/ҳ~m p|}bG+Pn,j0*ji'ݎ݁y/hZ$YLjϕP)#$4%x@j n0|괩4 o~\(`&{J HLío;ax(IL * ESl}? k0rmۑ.-^ Pm /85XSU̴Qz/cŌ<њ!YRʘ}C5;a]Yn"n >*t(W H[r=?5R>n`TL{JAN"LieiM2InZEyrxy3%Ue,(@BO4tY 4-Kn4 ߴ( Vz~| l޹}VQƒ_ 4eܳWQB!4 @!`3hKTMAvzD.`4;c'6\;%Ҡl>}RR %}j#PS ȠhY`{yUB~ Q`CZ@!@ܖ2`]ڀ) vFɬQ|E~ w R2_ H]j@GI> 9b &B .EZf!;5OYO~80~bsKu->#$-Ymy'xuoeW (#~UƧϭg0]t٭Ytf[c[=ƊWYAKEGw 6Ͼ_uB|k'oTנ׍J)kIˊF!ٌqIU>2e}?S//Z +ns=0%냥@5 :F̤tnG|<9hbN^7@6?~l16L&0`g_E5I`F7B: ̝q~7L\춫T"\-0⿏۱ 4;)/kv%03g# y!gjň{Eϗ)aNOa\_Q}Bj@#\ IJ?&ڢ6[ i.ÊPNB}݅ӎnq3/[>]w hV+Bj-' _@zZN[Nw <; rzT @g pt'+{lX[r!*@ el_C0n=v?J P 722fR|U,. !0{*~Q/CfSRD~LcqB?C_<]S@B ՆXh­W/ʠ16=K~= &a|qS{լn\njwm^R3b*@"?.AmR 1Yڢ7*# gF-f9p܌ aպ4Fs*=<g7rWCڗ-mnPX"l(0j 3{bZ.`lQ# rAH5+=`[gn5W`zr#ZA`1#~j:Q-jU^lU/_3 ԄyC+cG=q띉QA!X|tGa2.xoeIie#IVynPݩ"׿n. / W0_m~pg@X]fn xAbS=,סȞ?$uk2,# r,N@&\ӄPNF @SjFZܝ(Kύ1#pΦ\Щz&)Ky#4bͲWDۋնpn_',7xy E*{BZxo5~[|LkT,˟1B.aHnjW ^F-&,>]3g&AHcTJ7B[~&"SKqX " E@?|5]LϦQ8vpb k}Cac2rVyQQSv3ZP8%f-i$,tFE:Oģy4,Fqoğ;LrXN4]AoŶUWBM}&l9Vxml?9ͭE=C+d06!; x7 ?:Y @| T_3 up%ٍ̭0>ອ:N}d5kb^8*hkIN3]Y;HP nNt) )+_{TԫNԐ?Е=گ*=f5zƀ@ g@RBq}$; lj3B.ك]a5ѯQ?7 6z'}-;Uނ0_UW-ΔR=*u|ZL^lBex>O(4V3, }K_nžҾ C:P"\>|qx7; `Oʀt[&'Q#:nFT8㙋mpH!x0ieL,;)BH.@`xI[x44ND$&U cTR@)Ňݵq՚G0u-)a@j"`4ڒ,|(Y;a>9=1aT :ދ_̔"OjhS =YZ&Ǜ͙/J* s-9 h;댳QVނ~Zx|MY(>tugKX FΨ=`"j[a=}Py9RH Fs&LP&Z}grix9bK< SAkv<:t/8NƠ Y E'31ܴ`¬9 2PG޽Ls 6jP0w#:v!|B3-<0꿜fY+~vhm=;33fx\vUEqX%P`|V7 &jeֶU0ۇYo0? @f>S0 Ya>a#Y!2T/"~r12xSF#—<ݭ>D< RF|Fj; 4X ̮?3xnlgT(Aw@;@".E &`(NA-& Ѩv<-{} vhR³ErZ/TP/cN%&숫naRC^J/FUpp1]U-p1!1BU\ < %ijL˲2"KK#;N8aw{a}]b P㻨V[ Iq`YKBGds>t ynW{u^-9eW<]OziJ 9P>9K@< X_qLu"yj8 +EAY^p;XQŴLDt+H{Xuv^Kՠ|[PZ5AaA昔p{ڰRʋ"-ܯ *pz"~'j1cCj-WyIaY?уb5

x lpC LuXew^7740o9k)ז=yD(p{bXȂ(`5t0ۆ:q9271~aT6k6&lO mDӘx -S6Ks!xMv C0WŔѿ=uLAeF}Vh*ꮜY3[ [~&b{bsne M0ZMB?б\%jH0C4ѕOSC8#)m7b$\,w^2Q*}ۢ 0 oAk(M 54mvN}B}mj3j3Pv${;(2/'jn$̆Xzž%`fژ5eto.Rh5)<_zlb1#~=ETf&;e fz0CY]a9gf߶@bW/O'nW{D>:cc ר`DyY6#NV`jaaol).ߠ%Aj&QYD KؗX2eMcQm.˸83qifvƄ_CRӘ8~S_;'r\^maUy~،_N0F B~,XiF-ex`FROf^(;QeKƊ,J s"`Sr݈z٩&Q0#$ &L0>D-̓Ʉb*7Pwk̗(: -dW}w˳)`^S흞 ^J'y̜:`bШQPB1||Oޗ04ۖ}6w:3F^"V4=i@+P-ؖ 05"PYjWvV;|svcR_Xܶi2d6K+$9:4(pt2z6qn Ϳ_?]ŝ^, #.jKgf=zc2 ':B7CE]WIH]%Xz}65CxX2j>ڜ)58|t F0]lཙ69A N\URFVq햼9Y6:Fт6+VwVf c%s 둘JX3 G7 Φ_X1`us{|Gx3n_V 1dGbR;>FzYm4Udc3Z~l}aH3Gui4KiJ`lBg_sd"%P 6Aم"5AW?J}ʓUkt4ZPe]@c_:2[PǛ+o;`B r䈻1Cpynqq@-ZY@O6rUx5, ۥ+sfv3=J ƜO,x7(.}ΙfqdE)"JEƓPE;Ư Sa.,&`d+oB!rsgpx\UuЩQx# OaM4=`ݎ1w[M6Lq&zK8Rd  HF+wl\seɥ1osh&NWYGKx<Or X(rp+|+_xGᗎ:a'Zl[߾V+69 +z |$z‚SbidE&]W&Q;rKŝ\ǪjnaO f=- p|&\6͉&|j!0V<(o̳Ԛ)%i2!a0C`)7oܜUlm Wк FAp<|D$d-Z *Er:q;"u3[FPA 48"7bF&E@muv "_v^ѥP 8W ;PnSք>={͞\$P%FŌJ0/cZyY7" SuSfcB~if6Y08|xLPFp UymM+..K (ߝ $9n .5}r1<9s) hS9| Z,?MX`lN?tߊzqy;ph%qP 8%иzD2wz:bKhGШ@SćYֱM/ӫ?沪dmw1Z?7{"oeYKMBM4ņƼ"\0p;̶A3|*N6k8Dр&x߈V=d> {K(@p!Cxp\HQDS˃<icMzB%H)ώFz6W9ur4m\sm|צ鹁) _|4]Q5@2cnӢBlo;PLvߋZзcgv.E 30~ 2"H&&"SyU+L"0"rhHjpOW%.sTW-nQ0,,̾VdׇXTē, ]6[=sh t${H꒶ E%ģPPXfzXԿ `RhEnګ?Sb 4eK.֯Nt&lgMM\!>kjE/`wpw4@gY0+1ڕ![~j`p+6a_vSy0:pԣ8@f5F1K5Vr xZ*+"ί  m/'yܽnمBMq%.jM-gjQ|Gҍ.l(@SX )+m3DF^ػSV˒1A~3rf"}J|1H-/Z@ݑfFwwk~W- o rC-)rݱaL45SYm1{ksTS|P EWF81^)]S^Q )/zW+B/_hjI̊ "{(_SKa9rҌ%?2}:9sӎ_b" KN .Ee6͖5Fy[*N2} TJ2һPZ=td Ԥ ValDUPrCP{tZtzv${7,fmz=qօF~Yn۴y!1E 39&TH/ҽSȳ?b] ҎNZ+>lew׾r[œRv(2 WZ108/?<P|.;68C %@%鲣oDQ,Bz((Pt:vE781h z[)-+ W]G385B: #8= To1 Χq 3UW-㓐-:w:_ya]d´pn{΄l+לczGac#ڬ+ؑh@\\'\x ^+mAw9m/#OZN(2GJb "`̯8v|Wޔh ǩc1# PӎcHl KA뉑͖Nx'ʡh /P4jC }%@p7܆h;-y-ޢkx_bb'gN;x3td㘸ɷ]6D.h|I1BNqx xgʹNmDtf)6p4K?UlM0nDDk((_ytVNXA2]O9R{ؤ d*o2PfCʐ3lͿ8|n#Z2i?6 TۇaqMi_'[.:%IaZ?Blps%diYiVo 8mC~ukxm&0$tBKFY'GɅB{J`v !~BȄeGm{-ޠ9᧦U\JM])X1Q}A'*i876nK'l+>ͿnM܃;>XZ+)F xV3Ǖϗ_lT]hTn<r Y :Dm "6UIVeiܨ'tb0a=9lMnkg)ף[mB"m :ҼhCqlhr{FJTL.{} ([:>F7sPTg/aIikZ K$_RaZ/6UŠ\dkJˮὐ](9PhT; ZT_oL+ܴوNgUWxe_(!wsP4}j6v{S!B>y`A(_7֛7"()`h} A97ǃ5P1֞[O&K?7h PEpcv H+;- R$ҙ.0`Ç'EJVݫJD:[} "RyQ G?soFs||zl {!Omnx|A5QEyMqS"xb@JiMuH乁6(ˋe¥KRUy{ؗ;Ӡ3ݼ7[t/ziEwy<2\9n$Xf ~n0r~KS5OڥX:Ipm$ziFzO ~7U?׃k@alt 2aǂsDP`a윇D-Zqv1&jǞ64489ʄ$= GQa=W >Xg46dy36Bj@=k)vV >nDǛĴƩAOc!\װ'TLX3; cݨ!¸e~{(= ^SV8XD8wQrd"tػ:kav4d+;P2(]TOΤ.`-A͐j]"|Y«8;w"{c].ly; yܷbQ)8,@}^Iq3E"]6!Qo*n0s4K7m1hUq< %0 c]@x0\;F-}#?SEW!'%~Ͱ#Pǐ fQ?^Zw^:/kpP@т6$YD7*"xEf\ʥY䧨^#Mv$ ;˄.\("O`)4`Ru|Xv}v•)yJ^2XYp٪li|bwt uMTo^E1FI.gK !#y#˓p,MC"|p{n +p.L#P*&ʲ~C\g[ǐk]?c @: E`YQe;liO.t9|;H=,~]n se]W-)_vNv\O-%aS*]݆ś(oHm<%.'p)w2hwq7 ;܊| o`LDit) ;jN­TX 3[b[iJx : Lȇ\ `!bw^5(B[T ѫ`2blOFuTS0S=+LBK`1p-a#{2xj}:B9tƑV>_댌]zz vV4g&L mT%pT;bW^>R0߉Qvv6 &3e˒wZۓe m>G,B&k}B -hh[S{BUz,!, aIEN3cC(f": ~7tѭ.E9s|l/%F3ZM@,veu`K]#nܨ2^i~H㻂nڲ A1_<񬥰XLeUBΉ%x}F=4B(J- 4zXw(7XOۭ1a %Gcьs@Pa (3O/T\$AlcQycê@F ])Xm6|~EȗyDTX.3 k. iH ېlf]!ĚNT3`1 a{j]hч,1pauܑ/X2hC%(-M:ÖLbv6p|\ЭLhnBr \Rr@Tmi -:s*CHS!qCp@IDATe0>֌qSg*.Z D6[O>u?8$4"/pu&]n `3m83xYp>>8:TAD ]lVP~z63%\m`oP -u/kN'p'>Xt5.k6TZGvI;ZQG:g, .:1DADQlLeS͒:_`2 Aeq'H3ިl.ۗw9rJJx|>g`E} F>ޒfyq1[k4t*6#/YLlLprл֢rc?^hőfCR8bF7FPnhY (ʬK'eJ $ tQȏx |JN2e0#=RxfE.B &hהG!ln @iIT2@*c@REO.eH@ .̙ixvctb¯8¬ |Y/mH׽8KT;i W\dkQ1OHj?y6[+#WAqb":9ݱ,Ԣv:d7aM̐/+3 Il_v)^fꩿlIW`1 +F"}z$V8O?먃x|ƿ"E||9+/4W5m^LFs9hV!iQSb ov~2fCenNc@`\I#%ri[0B+3vX1jzd o!E 1%SDΤ26$}}hs ܩnt(`sl—#\HXGa < 'ql +puEP{\24gbb4V1eJCL{q6kz33q͸1B%[ϸ#ysjf?v<DbND3e9kӆY0n]wfwqxl͔kmg04 xaI)|PS`iJ|o(`RRGYMݚlBx3|@,V6*D>/n6 #o`!F? /jjL$4Y 6t-_OZ|[M@X QrUGx..] Z"oYfr^%yl]LǾ]>0Ref} ,m9㞋  Vh`햗$Yj-^pʎ;5\|,)w%KҝxG1t|ah0X[=`僶WK%T|A{*Lަ^ђ~&=ܮF:,&h#zu">ww~_0`](,cÀȵT+⨚3؞1$#nL !Cȫn OQtX{ KK.H66W,3:ϯQmKoo6FLSY>K=V{\A؊Fm̛¬C뒭C*| Jd󒣅SDM%k?IJh(znMs} V n߷3e) Cg hCm5,䄋 NT)AS݀˞uE;..l>x҅{Vc@+KEhݼ 7MZ0oM۵-/̘Gi invV'ȇ?<\1ܿ>M =8{f^YOyR)d{1QO,#pI"= @6YVNuar Q8B)FN82m\qd 8`$~Վi)C G!f`i.;09U:lxOǁ:▕Ń`IW.=8WK ;첻=+QM7ȟqD#1WǔغmP.`o>V휉=!ID}\%^IY^Oڎ-7?'f\ZzY=ي?ȌCPۅcZQR&Es2+,k6ܠS.{CJ]S׳ ?Ȁ17Rd22ewwӖkYT~~9XѤ58uhSljAltۑd֮Yo*4v߸_G˶W\N#i**”- ywUlh8MXB&E(hKv D89BFU&ŤaV0{f ?,^L^g'(_"pj~Q}K& .EQ,KhV0OcBN%3`mឮ~SXT/NZ ^ [HR />)3ALFx]CkKfp*y⨓0\.\ =.S L0@JAV]I.{؛efi+{ήI[HrA :ROGh4?FuvV[8@KSN;|@ϿI w_XDV߶D{|ȑ9_f3!]/ZgҨ3Pve6xo4Amڬ`A f!.F V7#ə;Sm9H6 X +)1.6i*Woڅb-at xf#b4D3Dxf. X*-t!v BNTQ٢~jzZ)}liౚTB*zfަ^rz>W>,5^+. +՘Ҟ%P53S8 LBcbW ?%CgQ! i`dC&z+x:?D05^Vz@TTJ`3ڰ{v/,ܦS~踞|zN.Q'l[]]NaX3ñixL`eux(mpgNTzc" JհO!NUE^ A7S%cM#^ ߒUBhE(G46hF £D,}P|i-0gOms;Wwy|3~=ePf[璔fPS@(~.:==)\ɇhpKlRlKC+cS8csy' KP =ʈ%ЩƊnD,@#ǣ iSFah0R1ğtٸO #˦'"NԖ9d]&ӲX,PJ8ӤQטFbFPXCKw\ 7Òf 3}!L+,'? 9fn౒VRM@/S^$|k(6S5q+IX9mr nyq?RNL?3m/15.uw":qi\.(]@Z"4.&)KStSP,!w RtOZEaODZZK{0m(+P_/^页 J)Z 3G_#]s8$/P%'I 2e`涅0o`xhKeO pag9q>g߿^:6Ϡmf᧦l`4PowPC 3m_Twp+(}qCF+rm´n٢ BT X1gҨ͸HgHJ='1R/AT3)A*t2SyZyHM+ONe8zhTAx$uytn_od;^NTlp5_"@= "{7\~|h݈%gJid2GC |l :w ٔGxq$3Ql*xCkߛi\ŠMKL,ո",8(O )e7>Ō؇L ?\7pqQvo&B^L'h9.@Pw SfYQ8j?Y|F2.,:'=Cۿ/Uy_oI}=J C6}p*4ZgL@$* 6#|<\̰o @e+.m(ʷ46>Jb|?5b# K$eaW73( =jKvQE5fP~jzf=QIJÒ+Zob^DXXmJ^9cgn}@C,`, KGSbF19Uy!f3@@ODP|w\3S-pF:,ZFcmڴDq. Cpťgp![Va)?U%hk%xp3fx|@Ia?(.upJ$xqS&!R)T1H tcև|7}u~Z0m%f>& D8|txPm 6Ho@ρݻY 0seL8EHSx @%8aIP0y`4T[C86*ZS L"J+U`QɆ튺%R T+ ᐖSaZ`ֆ^@wÔH%ljG$];I}.[?HAia7o`)l_i K0ĥ6ջ  3~ia+.L6Cq_Oʤ F X2 ;GyIlC%*(]g )#ע#Ta䴱y 5CK *O FləWWѢkь ,T"6~eC!qEf6 h|FhcpPx=1#̣  "hV 'O?RBO yMQ7i0nƥi(-tG~9nF4f02|`Yƣ;ҟgy2rt_  &cPNëNDaѤ)4 a_G8"Ye^>f,rI>/=˄7"{(-=S'3/.2oݳcf=L{gZ5mrVrcJQFwa{5%F2 k7 1rd7(R` S"~TB^(ai7ynGQ2ɗ^ Oy= %@fby,fi2ӌ`NqKgߌ UjV,RT Θ {&" K#Xb\3t6xB49uy:zH?m|gfh 3{15fHx,|tI1"^1p7E魀Űh kV$~@*4 p_Օ m8SsGԫ)DIF`D-CO,DlTǃدvfp8K]M`U #ISt4'2 G`؟ 4Tqz+,mVm3iդ@!4u|r?` p@Ġ*H3 KSՈTeevE{$654zRpeuV4%X,O# %06ͥcTR1iS")"#\B99v3 l]J:ܶ;Sp݁_D"'sO{HrpL8b "ڼ %@ħG@j+$#C}qC~.xպ)xƀO@q\9ҺҘZ LhI )PHG #7Ug*)Z2ݎ8XJ" 4e#\ 'fj KK(47]CJh JN;eʿbO`iVohI?m~B[ ;X5%IZF9٥xب$6:P' 7JLd.wr1+R^=%//-etÙ\2~?{ EѴwGVIE_3bDEQbEYQAA@QDŀ(9g36<ӻaf@~?뮷cUWtUrϯ?f47 VfNIL IΆ'៺阺 !z!.PY0eǂ؂ȋ'`V $Z킙 \<>ITsh H|bg^ËdQxSıoVm4Wal<`8`j`w;L*́:5[`B1x.Ny{&p&,*X,wl@wvu>/HfBF2Y1b8{ `9f"XFPhTDR~G+zi5I 6?1hnHr฾Ō 6*J G2nYZ, f>2r6b=([0KELW`pcQZć񰞃oՓl!G3$ aU`H<վnkA'DK Ƚ*Aح.ŲS#H-"33bkwdaHQ*Km"DBEm aWGX<E\C%`P`+3&yY| F"hkE${a>YRxƨclG [^v|DbAԎ[QO=Š(9< +埽Jqw`{pkmE*FUU8 {Ҙ‹P ݺ|o?5."j'*J:90xW ľX4"Hz [VG.TAW۟[YpW4ceA6`a ?0r$bAV֜uv.r`իea8@7PJ|Pd02fTz)!-5 e#uT;B36”2{a%0`P09\#q}A~h܏PFנNp4 nO3ތQEDQ 僐_F `DD{ށw"@;Wۼj }jE urke# r*}'4\{Uy5+UH6 FBd_ǵ+;`ÊBqn:9H|‹lVdGƋbphzÄ 8Қ 3 *?V+j G,@_(Ma/6 Ls)a/pKY(/d+aFF `%iZ*Rp j[+|%~Α! ![6x,$D8._b)dj|oϨWWU=AYQ&(#KgB1Wah,zOas%710{`9#e3? 5PO԰>Ze0"0: 屵5,̯F$7G")X0C/k/`E/ Y.1D22AK,S>jr#+`ބ?A6%tv>q6Q|#%kg$F:p̗&!8/wo # "u;,z"!.hzAQ%xAPSSSs+*&4.{9<6'm\gon8r i3r1k[a\|J"T*w B $b:4i'wS!`SV5@x&2gAAR4PC mB<9p̧FǛonŵ"*r$HD2{h82Xl-wG'4{)y"4zt&>WqB+-9,)$8}+-_<_yU9$ʣ: k+VNiLtd[FӅGEdda6c7ij#i_.jӃ 5f9s^ޖ"Yro@!_8t030^|^L@ v ~"̟Id3 9h0üt@] c}4Ѱmqs>-#K/u&YDv5"Ţް@CDGě20r3/pBU$T(-3…6*+lD ;:m`db=+[kV^^ "ryL.3Dxa/@س: =3 ww"ZGCĺ~e(q 9}&a%Ǝ0פEO J߹[7w;.ӚY״uYpҴF"/yW`mETͮ,rThAnIE`S&NHvO@9݂J!)ӯl-?  `O#|v?7#k4*e"18B`D氖Ba1,P8o K r'GbgGѧ"М"82"]R W\NoPߵ8A/,D9vf`(!DXl1MHd~4ķfp [pl~l,2ҥ;r#ƅᇇs+xE0n@HǐV^Aذ+1I uYRZ# \ ߾Li =.iG !#(=4@:܌+;"`NJX|? %m 0u|1\CAϮ< Hgqe+h֒eMQ@*- ђ[,+uKKK…v(Cp5FI d>Z*҃X*(!wcP pNM)m=n ,?l(1@P6P ER T/N23aH (*,4H-2./)RVpL` ɑ$_d۞VgazCJ! -.0G&$#i 7,M!) rWvHbՆh**%@AZ4aL?G3YT1P$  론÷s%)`P 8-/ )TPHplJxc gKcZ&DHϴ4G*/&i'r|޼>My!`B/}V%mDMcxCHjvh4We) XE ☵L[PlENZaK_!qcW]Q_Bn)J(&Z8 0 F!k 14 J<ojN>*J@vQ׆AS^PddJxϡUK: iJ !y|?u0mvi>M#5tB̵nH!Sy o_v FPĢi0#w> y}[r=&kk/nl 3Ą Z' @T"7,o@o :7[,P+7}4tMVB eE' ƯFdԬTrD 8? "#b~ŽһW@ B f(Õy)1{1QɽD0 c@ q]dS-d9 a %vpND)HñF9j Ȍ"l#":VPl+c1]qqgBm[2l8epJ /os !D+MANeZ px ,`b}&ld hٯy_zܰ# G0!F? Nuxx~ k-TRNP~ G+a {*a!Ac6*2tXT܁<."hn%KގI>PWTp RwH$ I#] >e,4XJz[$(p]81QB>WQXAˠ ?C@CrbEƜV $a.|֙B038G)%R& `=x7'>߂0^0&aC0գɊ>Qy%.z0 "jjI!Vlۘ2,ueK@G*:Q& (6; GDLLZ|yC> #rQ.xo*;^֢Ar{Q_;قVu/hTN<@~iPhxLPSee˃(ח_lfe 6WC4)*4 4L]y0KsauʬH0ȡtaNjOFI| cnn+E:B*蟱&F;067Ʊ3@&*$3E-‘m1p8́۰M  )p J(D}ҭQi~K0w1|:($T䳂@!CDi} v4dϱ+w1p VCΈ ; 1(}AalZ  1]RbqH0 HTpD;  \_ʒ̊/i8W`z&0w9W;¥%*&J 4S fԟn,UocXFOs i_CD = :I@W¿\$HM0Q2a"l3NDi\ .Jj1ޡil,g|YC8!(|Ir.{rJ&f] @\[.@XR=*U)l'n\ 3p-NHs6N~nx n3dJ kgMnĜR="բbޞ{Wuǡ*;{?!iQ ܄qс ~g< %Fӫ3‘쀕&A(f ܇ e @IDATO+=!>V1CJq? A!,R@9ߏ9R\ta7n"/EF1 sH:L_s[=3#sPâsa`P1%` 8| G<l( #kX-R\:{ҕ='.v4?/… #3x0iqI3צ=*b[懍0ObʇVJ\1j=Xd~Ms +TQo NÎ 4I A"JC̵X)wL#קxp3/Bl\ Ʃ`7-bbQM6!: 7Ba I N}pQ8"[X.[@Bw&(&oG5G?t5]. %$>uL&?3B" =T\p׳+3DspDf Nd%1a$gVHҳ,]-[XZQO]Zˇ|gsDm^__?GqM0H#p Cpp'ਦhb*?NyJyL_3t&D{^4 B(ql:gD' McYH0#;e)6hf4 QKUx؇-q`FQ֎BRD(7›`]>Ӵy-?QH2=є9DL 7:ҏU9Cz] l\퍏X?6^97 A5 GH(BͽI¨*8EX7xBL.8D^0)P06JF> aJ#_4PpGEd/S0-:\LJM0RIuaޏ~b:p;@5UTF+@#w\oBFLGM]OgT|LŰ>y c_3s}v!Ti wXwV>CK`6U lM7ZHJm'&2A9D>+ɼk6 yܰČUd;w[lx`RЍ#Y.Dnnf] \D#zap/D'C:55O*d"; Wr`zaWeDHӄFBq#Yÿk;G9QIM׋ 5J@#:NF9r(r`pt<&ɼܷ~Ѩ%AED m#P\qjAj{/!Rn%~)XgfsΛ81^oh{(R"6hE ox'!MB뽐 C$dqr mL$q/m!@4ǟy/LۯoP Ln1YL̡0ӓVūq8!*$SOMSD"HDτ P }8t8ǣʀ3eUehy7MetRRr :΅ ](Z(Kˡ:?-wC}w=h)h?w{{W赿G**ȡD!6JN_;g0oG jHlQ P:^9ј+ 8I,ƠL ARD3RZ(M}2'QN!7 XX9 @w@V&\.a W0(`ًIHRdILB |ev:4O!alٓc+Ru=\ _RU(hxJZzmّ$І4Hm%-1G?w5q8-) $$9c)&$ue7] \ܼIC0R(%x:w֣7 opt "l*hxǦs0 5S[{;C0ZQQ!lm^K޿21돬pLY |?ês )ߛiq/A^؞7AG ,'uSNc'mxnK6zo@p'YeG+PQ- }X)E)+@GK!Z)ac[AhZ^ju"DX*yǹ-H)PlO(B᦭n!Rxi8ud k<~ѸJ*AC>B6Oȓ@E@%O{#n$btRo߄EY7hBz _1ZDU0 a3I]P\` w:./ȘnI-zڋ(^TPXu\9얺+L*@KŦWбgWgzYOP? .G(`'Lts ̺L)+}K )) C1-j"5c~P%O:fo"XA:&*A}ITeH_UؿG" ֢eh[AI$bvbh' C_Dޔu<['aZ+Tɲ-Dn Ŵ+He8?Py'BX .AZ|~LG&K{$E1B"@m)dҴn&YCe9B$ U8,> UlNI\6-.-xY^Q6;Bh-Or8k9i9рt(Ggi @ LCukd9>wC*[~"vY0̖ u%4$.<@0_UYs忪vAV.J z8xy)~-yL/(0$Z"H^x)Fđa<*ès#n#A)[2}"p))?-K~+3ghU/;<+ +ߗc0lơ{8 Ft^jKUPP{E?d1G74VZjGB>S W|>X*(nQPӺTsϜ)h(6 C3ҹ߿вFs`fl2M֘ R̜ Հcsy(/2.$qiE_~8"_0hU~h*Wpy)M19JR`}a?4FiyY2_űT4pݮ>PDLD6 CcS_gl.E!_,3ϭͤd)&T - bQ|rDUIhæM#UwX_%0PE=ags}qV%P'ke%ב`dqD٪<@"o>b*m~@6lBF6fYjZQ|O!zH*1|HUI4e$k\a)ƅ8PcW}W2 :iIG- ?̋gyp&/@sgpK1n32ʇN0(?z425`4ПZ&I75M%-l6hThWUVA2á]c>BU?l Nbs}I9k^,..RqVv0B"*LZRp9XOla2_`7D74.7#+"FJ:Q} _#G+%)1oSZ^G =dOYܰ1afSa# :М3C3H/v;T^ aZvGr(a5%۪$\fe1_T7`7]y8ĺÕQONjFAM? C-6ohG9ǁyǥ8Rge&>=66"pe G|GpQhWm c!řvKhd3 6q< p:Ր{S`Nt{|F@'tuP0PD=/SWRqO(h/Rwc|~uԂ˲=o8e%UM*GyOE{6r(Wӫe[sSsj>g]OE~z0ŝ*ݸ0R;E)@WK8Ffr%0Tyŗ>I(R4/-@`p[h&)x+҉t~`/t,XJCg&{qc;ve3Je{Z0  NiLծ2g J+qN1 fo>ߝu:^[򉷝c7K}JwR^ 1!D-N)lzۿrIB֧aQq&h">( WiĿg݂AHf-s}N::/qxƒ/UO0} `LSȊ[Vwx$ sKJd~BTSF3S)|#EE˃U̺CIi<閣?PSPeExLr{H<$cTM(UT\$V k*5vtըyoz53Ӿdh']oA[!lgC+Bl˲mQ#B FEH+p_^֭|r`h$ǷЛ% j<3`s&LmTCCʄ8[z]W?'D< pR(%?xA)i t>>mP8x!+®xQDV\DQ`߮ )d,4eK9MėTaJq釥0=h붣(z3bUYxIG-)YU.F0Iv6tPh*|;53̋?H>aNAJL%•dxmk^iB'FWڭQ !k CeÅE V_" HPЉZ!r'Ϣ'g ~}\D62:^Tl[`j,"[xu|$EB]c iP|ee;?:ri ;uEX<hg}$*ݺF)*3~HWww>O/*+rW~âOZ(KNzjbmFzZYt+s{xy{ JKӼe+Zp^)~/<Hd䀆J8! p 7G!yxEHf'+wQ2dPLuH'qN`+rg#`@hb勶"@*fJP ѬW^[[ӸMyC4m |) RcWT$^wgd(xX+-'Ѳˮ*ںbX2/tzA U'{=;agÌ )a,J R*XL n!\íYPܻ͡o&B(: ă{s^Z d[z31|E(A?uo#v4Y#mR0P *$;bz-SYky "j9c T9܅Wwno Jc4]u‘GלFԶ՟Rlӎp^*]_O$*l?*WB-AE%e%tB-zY1TEkW"~ =SDt:./ᷗ3?&D$Oq@2o9GI/BAЙd}a9-I?_;E9ܪjʕ;O|-B5́X aAQX"P}#f#Ʋ`v%u%]ܠp,o S%ȃ:Yw[oЪ038XާE.b[a{%x ŅP(OA1BOG},k-6d%}0o%i ڃeExhÿq}D'֯? .gAPТэ$mP"^~82+vy":!`J"l_J`)VpH_tBVH  #,;=ظXZz<-X1R 4˾fvB!zx. d 1$ODWAQfr!ü8E=EEr_1P -5FE T"oЅGq2haO_؊؆+;~iXn靷tQO*|2 Щhw(+q02n!H%e_ pP(;oI:ͯ9W\$Tb <"5%`\D@KE?fT8*^ "'Qq&Oxto ϓahtOZ (pa{oG2lթptͽϾ"$*-hбf"D @]~.H {omR4ei[j{wz+w X44nWT&.~K[`\\zJIB('9gu]p[vIr4s@B5L[gC=qvtjD9@ e&V 5o ,8P kvD͛L䬜#^`< B#IQQkk9<lZ$꼲řnqo=a;QFxvCQoZ_|"HW߮sk|f*ݎR]:cgl<,يX#"(F[W3np_"] ۡ:HD#_r+&Y`6s-38%ƈК¬l9q6"в) ?l~VLBup"I(fzF}0ZHv J踪m@Iє'ІVҽ갪c* G6q97o3QSɲQ,q+F~zi]8owd8 ;3`f6zt{@hM+xl G?Β[BJa^IPE#㝺[mCiU*+J[EqwY0t5q**Ns8`thbڳ6 D2?T+🎵QeY"(.$2DpQfw = b?TYNoӼ?%jC,F> *i0z 4C+¢қ8a^3B@?}U+S[=';4JxYvr[--cWk#WY]ݙt|ߔ%o/RXI r0泩0blC :i)TT86[\+88mac 4 4( kǫ8^"!LMB笤g~~^?g}Dg^~)uyQ_Tx!2:IBSI V6F'N(@(+ACuwj#MCPo߇zԃosvBUNbPȃ-lt8|]BlA?S<KJg=?WP+=s#4a+Cr{R$:?~|qV7.'ؒ({/1[&,+x毀3a> {ƇoZywC6AՇMZi3(I@YhYrć@,Ʃ/5ց2a*E%~~8J:vQ|/O(T<*SE Š Wo1J7<Cۑ €e Zi\1r6FݐHH^un؛?r/^3c@:g{ (=$a/3X;ƣ*= v2)TpeY9 z_؈/h'˛7V ](f]0Yo}t: ՑDGtίx9h i[ 9_/䀷S;e)d6,0TD?VpN"@p3V􋴴o2-<P4~pe xq[nљFS=?J׬GpQzaz7F_e{oyC<oz/\w,_]֎L_ KSv4Qm=Fk/ |eS{wRe5Qp:@O8=> G^JJ?} Nla<}<8A.#ȶdSćouөmW_lfAa86~̊sYNU4WJ  ?4SPPpY*hF˜6O*f {[i0x5B@aqvC%6{Ap{zQ0؛S-y¥+mԳ02z~R)͟wt;bPX?yM, OusMChIYDe @y?e>׊,ۑrQb.VZ㿛pVxf+2'{\@**~`9^*C9 5UV5y?>s]Aქ zG)`C 5zVF!.JJ=APHNBKz=x47=I/57C7t$Qeyv̵;g==(xG71;ֻJ vaف%<_rr>9fzBjG"V--Ӥ3+)P_ 8sE7Mz܌ί B TtB1Yߵ9NgFͥr Bg:M%rY+k>/^|Xw}pٷ[p1h6DEmGEJE/NM{0QDܙYGbCJ;rȞfEEY7fSlAN_šղo2zѻKKV_k1@7üG &H%{}"8,N⽽+V\rEn*"O , à 5Swp 8챈qh:47mķ{W&nyg*Vcb2z8s_,|Aba#H@OwEz(=st](4<=q:o6l9(pC2b 7̏weedv1﷿nig(0:9q\ L?R@7[))o=%wwy*S`wXv ?it۪YY7B\ 2bfVxKFD{^ _<4dd+:Qr.m_Me{ſMAS<א ZnŸ:⪒X+mܓ*e8!laDqìql~䔜eb4IEƤp€al/ ~@3I嘫,FPT8qMQ AO˛3Ms/ۯ 1oDz$,?( o~Bb~Ħ;򉜀@M{˜סWrOMPR9YMzwS, N[#"@u:o}C;Ka9m,)G>h*7BFc_XR'|bNfs徱Joo;#gSz,]@~=GdBD ͦ.ܰ0\yc>]T2,M AZppq2tµyQ]e1|22c^ߵ b|tFѢ EW mGG}fPIU&Y3ro[.3h'|s#1 ?;̧9{ >EܭEgaE&"atM{sˣ["V_9bOi[ꩂpiG. Y^+;'߶a^;rjY`ڣ:b1oi%~VP,8uj`Mb.jz[Bm>v{Ey_ؘx EYt`,H^ã?l ɍG4ԝq VJ⏙ qҫj|0"tL =(! A#\D!ȩ9x]}wLTu/[PQ14Ec^8Wێ,z |TC|muPtX''va󳻨0+PԇBȸa x7ݛWP+8gVZ}І.SApӢcsW>47esC^jX#5(.CK1}B1!,.3ʋo-$7ѯTfIe_{EGIU8O<;W (C0g@8 ! $@0 (pCqc Bг,=OO n}&dwH* LLmP~K9(+f5FS:]w>}xxvޏEt03WujH j앮cVfźddl8O>X6@ 32~'CIb4 M o]$Q#b$N1&&aЃn{mU?E :yɬy!/\t5sJ>15ئ?'fd?0p4 %ÌYIG)s׼e0RJ6@ 4sa cuz=t.YuuᅨjLu%!@~5vpã'lI~~Vv8,ѰPJV t;*}3DZ\Txu?p uEA%]P jxζ[UOYK{(Ua]xƣql,\D|XjHltn!5ἜËq)\n@7! )˃5\L~oXFDi+{Ү1Ə{V4+K|!u0%I:OV(1y]n^٧tzN/$y ,CmW7 ݳ&8sӊɻ'FswvF$L&!P̪mkTTAD0H~ /A3^z:pZ .<\! pE9t[ZSV;Y4߾y>hvܞY`(L b,Ʈ_2弑tD?pEC+$B?Ôkwy}a OBL5QVCQJ|uerGԞv*fWP `+?q.hafC2VnGٺ ܲ_U[- e~l֗40 59B_}ϲGNbc~@8JX3}_7P~"jm|h!̴)Rժ4]tdgYL<K𠩺#{gBh{ .v>ΐd-?}!ޒїԶw.Ksgu'.Ofz/dd=bSK?86\e X ļ i1ִSn>v{ ܗo`ņ>{TQªbFb4/Kі0J~] 7 Ըtg1r[2fbT@F|՚ZdRJm>Q-főŠ$iS;8yp#!7̫p9_}Ga0 ..?IRo2Y)nҥqÓ&ediOcysbM˛/- pЍ`2hw&aL=!?Z$}V5-RI-<1zΈA@ՂP/~j&V>w``P{*-\,x:c2ۺ"=$kŇwe)E KN=a;`n<.A.v#qKc~%ӫ]sU N_1--n r&S א,{ ?j p͗2U:xC T!a+ՙ[1 JE1cZrGsQ ^ܘ7innWɆCU΂Gw:s6g| FWyG.z^/=v(&^.~‘K_dIENDB`ic08cPNG  IHDR\rfiCCPICC Profile(}KHQ?cD\ AAԕJ. B| 'W!\&I Bp+Tv㣋n]Vւn ]"s3)=|s3g߱TAvɉE~tmZE&o4|>{~2r#<ZF&SE ᰥpUIi>~P/4'<^O4=s$I+m[ Lse6`ʞr:cIb$(%$ۢU(8ɐAD%Rb~!ws{u ~Af]Klk=;жe:fUjK{ybɐ7}0 + -zu/\ŻO0-eGwh_ae<8eXIfMM*iD"8s@IDATx]`E+$tQP( (  HQ(+" " "="(REғ\{3;{ɥ\rI(dn7o{SwWM>)O| S ȧ@>)O| S ȧ@>)O| S ȧ@>)pQ@sC7gfd[]g$VO*fHQe5RpYR,Y*U%jJѫW|?OYMz|74+CPK)%UDBA. +A~xJ܏xگk8Se B:3iqҧHAawCj՛^2皠@&)m$P7A)B3fMS)^B͕K'H9t##2/ExQH;d ~Tҙq3UfU!4zW*?јN 0!T(/Yy^ SD8JCEQY%ה >Y:{"u&I1'O) 6OȯŊQ~ #a';D[/{'`Wnxb ,3fbgM0EL$)5x!B %Q3iEn /[f"}x{GD|7( z jȇ(?͊(XWOXK(H{c`.V| F|4x2BPk~m3iNCj X>CP /#O"F]OQq곎Iro'R8 ,>:;S":<E]B>7V4QP4°V/ˆ+B(SeKL )T)t|0f&Eyd\8#!E@0׈fZ%.i{ZMN6)C6(}9Jb5Q] t7 pIج%,/ҳ~m p|}bG+Pn,j0*ji'ݎ݁y/hZ$YLjϕP)#$4%x@j n0|괩4 o~\(`&{J HLío;ax(IL * ESl}? k0rmۑ.-^ Pm /85XSU̴Qz/cŌ<њ!YRʘ}C5;a]Yn"n >*t(W H[r=?5R>n`TL{JAN"LieiM2InZEyrxy3%Ue,(@BO4tY 4-Kn4 ߴ( Vz~| l޹}VQƒ_ 4eܳWQB!4 @!`3hKTMAvzD.`4;c'6\;%Ҡl>}RR %}j#PS ȠhY`{yUB~ Q`CZ@!@ܖ2`]ڀ) vFɬQ|E~ w R2_ H]j@GI> 9b &B .EZf!;5OYO~80~bsKu->#$-Ymy'xuoeW (#~UƧϭg0]t٭Ytf[c[=ƊWYAKEGw 6Ͼ_uB|k'oTנ׍J)kIˊF!ٌqIU>2e}?S//Z +ns=0%냥@5 :F̤tnG|<9hbN^7@6?~l16L&0`g_E5I`F7B: ̝q~7L\춫T"\-0⿏۱ 4;)/kv%03g# y!gjň{Eϗ)aNOa\_Q}Bj@#\ IJ?&ڢ6[ i.ÊPNB}݅ӎnq3/[>]w hV+Bj-' _@zZN[Nw <; rzT @g pt'+{lX[r!*@ el_C0n=v?J P 722fR|U,. !0{*~Q/CfSRD~LcqB?C_<]S@B ՆXh­W/ʠ16=K~= &a|qS{լn\njwm^R3b*@"?.AmR 1Yڢ7*# gF-f9p܌ aպ4Fs*=<g7rWCڗ-mnPX"l(0j 3{bZ.`lQ# rAH5+=`[gn5W`zr#ZA`1#~j:Q-jU^lU/_3 ԄyC+cG=q띉QA!X|tGa2.xoeIie#IVynPݩ"׿n. / W0_m~pg@X]fn xAbS=,סȞ?$uk2,# r,N@&\ӄPNF @SjFZܝ(Kύ1#pΦ\Щz&)Ky#4bͲWDۋնpn_',7xy E*{BZxo5~[|LkT,˟1B.aHnjW ^F-&,>]3g&AHcTJ7B[~&"SKqX " E@?|5]LϦQ8vpb k}Cac2rVyQQSv3ZP8%f-i$,tFE:Oģy4,Fqoğ;LrXN4]AoŶUWBM}&l9Vxml?9ͭE=C+d06!; x7 ?:Y @| T_3 up%ٍ̭0>ອ:N}d5kb^8*hkIN3]Y;HP nNt) )+_{TԫNԐ?Е=گ*=f5zƀ@ g@RBq}$; lj3B.ك]a5ѯQ?7 6z'}-;Uނ0_UW-ΔR=*u|ZL^lBex>O(4V3, }K_nžҾ C:P"\>|qx7; `Oʀt[&'Q#:nFT8㙋mpH!x0ieL,;)BH.@`xI[x44ND$&U cTR@)Ňݵq՚G0u-)a@j"`4ڒ,|(Y;a>9=1aT :ދ_̔"OjhS =YZ&Ǜ͙/J* s-9 h;댳QVނ~Zx|MY(>tugKX FΨ=`"j[a=}Py9RH Fs&LP&Z}grix9bK< SAkv<:t/8NƠ Y E'31ܴ`¬9 2PG޽Ls 6jP0w#:v!|B3-<0꿜fY+~vhm=;33fx\vUEqX%P`|V7 &jeֶU0ۇYo0? @f>S0 Ya>a#Y!2T/"~r12xSF#—<ݭ>D< RF|Fj; 4X ̮?3xnlgT(Aw@;@".E &`(NA-& Ѩv<-{} vhR³ErZ/TP/cN%&숫naRC^J/FUpp1]U-p1!1BU\ < %ijL˲2"KK#;N8aw{a}]b P㻨V[ Iq`YKBGds>t ynW{u^-9eW<]OziJ 9P>9K@< X_qLu"yj8 +EAY^p;XQŴLDt+H{Xuv^Kՠ|[PZ5AaA昔p{ڰRʋ"-ܯ *pz"~'j1cCj-WyIaY?уb5

x lpC LuXew^7740o9k)ז=yD(p{bXȂ(`5t0ۆ:q9271~aT6k6&lO mDӘx -S6Ks!xMv C0WŔѿ=uLAeF}Vh*ꮜY3[ [~&b{bsne M0ZMB?б\%jH0C4ѕOSC8#)m7b$\,w^2Q*}ۢ 0 oAk(M 54mvN}B}mj3j3Pv${;(2/'jn$̆Xzž%`fژ5eto.Rh5)<_zlb1#~=ETf&;e fz0CY]a9gf߶@bW/O'nW{D>:cc ר`DyY6#NV`jaaol).ߠ%Aj&QYD KؗX2eMcQm.˸83qifvƄ_CRӘ8~S_;'r\^maUy~،_N0F B~,XiF-ex`FROf^(;QeKƊ,J s"`Sr݈z٩&Q0#$ &L0>D-̓Ʉb*7Pwk̗(: -dW}w˳)`^S흞 ^J'y̜:`bШQPB1||Oޗ04ۖ}6w:3F^"V4=i@+P-ؖ 05"PYjWvV;|svcR_Xܶi2d6K+$9:4(pt2z6qn Ϳ_?]ŝ^, #.jKgf=zc2 ':B7CE]WIH]%Xz}65CxX2j>ڜ)58|t F0]lཙ69A N\URFVq햼9Y6:Fт6+VwVf c%s 둘JX3 G7 Φ_X1`us{|Gx3n_V 1dGbR;>FzYm4Udc3Z~l}aH3Gui4KiJ`lBg_sd"%P 6Aم"5AW?J}ʓUkt4ZPe]@c_:2[PǛ+o;`B r䈻1Cpynqq@-ZY@O6rUx5, ۥ+sfv3=J ƜO,x7(.}ΙfqdE)"JEƓPE;Ư Sa.,&`d+oB!rsgpx\UuЩQx# OaM4=`ݎ1w[M6Lq&zK8Rd  HF+wl\seɥ1osh&NWYGKx<Or X(rp+|+_xGᗎ:a'Zl[߾V+69 +z |$z‚SbidE&]W&Q;rKŝ\ǪjnaO f=- p|&\6͉&|j!0V<(o̳Ԛ)%i2!a0C`)7oܜUlm Wк FAp<|D$d-Z *Er:q;"u3[FPA 48"7bF&E@muv "_v^ѥP 8W ;PnSք>={͞\$P%FŌJ0/cZyY7" SuSfcB~if6Y08|xLPFp UymM+..K (ߝ $9n .5}r1<9s) hS9| Z,?MX`lN?tߊzqy;ph%qP 8%иzD2wz:bKhGШ@SćYֱM/ӫ?沪dmw1Z?7{"oeYKMBM4ņƼ"\0p;̶A3|*N6k8Dр&x߈V=d> {K(@p!Cxp\HQDS˃<icMzB%H)ώFz6W9ur4m\sm|צ鹁) _|4]Q5@2cnӢBlo;PLvߋZзcgv.E 30~ 2"H&&"SyU+L"0"rhHjpOW%.sTW-nQ0,,̾VdׇXTē, ]6[=sh t${H꒶ E%ģPPXfzXԿ `RhEnګ?Sb 4eK.֯Nt&lgMM\!>kjE/`wpw4@gY0+1ڕ![~j`p+6a_vSy0:pԣ8@f5F1K5Vr xZ*+"ί  m/'yܽnمBMq%.jM-gjQ|Gҍ.l(@SX )+m3DF^ػSV˒1A~3rf"}J|1H-/Z@ݑfFwwk~W- o rC-)rݱaL45SYm1{ksTS|P EWF81^)]S^Q )/zW+B/_hjI̊ "{(_SKa9rҌ%?2}:9sӎ_b" KN .Ee6͖5Fy[*N2} TJ2һPZ=td Ԥ ValDUPrCP{tZtzv${7,fmz=qօF~Yn۴y!1E 39&TH/ҽSȳ?b] ҎNZ+>lew׾r[œRv(2 WZ108/?<P|.;68C %@%鲣oDQ,Bz((Pt:vE781h z[)-+ W]G385B: #8= To1 Χq 3UW-㓐-:w:_ya]d´pn{΄l+לczGac#ڬ+ؑh@\\'\x ^+mAw9m/#OZN(2GJb "`̯8v|Wޔh ǩc1# PӎcHl KA뉑͖Nx'ʡh /P4jC }%@p7܆h;-y-ޢkx_bb'gN;x3td㘸ɷ]6D.h|I1BNqx xgʹNmDtf)6p4K?UlM0nDDk((_ytVNXA2]O9R{ؤ d*o2PfCʐ3lͿ8|n#Z2i?6 TۇaqMi_'[.:%IaZ?Blps%diYiVo 8mC~ukxm&0$tBKFY'GɅB{J`v !~BȄeGm{-ޠ9᧦U\JM])X1Q}A'*i876nK'l+>ͿnM܃;>XZ+)F xV3Ǖϗ_lT]hTn<r Y :Dm "6UIVeiܨ'tb0a=9lMnkg)ף[mB"m :ҼhCqlhr{FJTL.{} ([:>F7sPTg/aIikZ K$_RaZ/6UŠ\dkJˮὐ](9PhT; ZT_oL+ܴوNgUWxe_(!wsP4}j6v{S!B>y`A(_7֛7"()`h} A97ǃ5P1֞[O&K?7h PEpcv H+;- R$ҙ.0`Ç'EJVݫJD:[} "RyQ G?soFs||zl {!Omnx|A5QEyMqS"xb@JiMuH乁6(ˋe¥KRUy{ؗ;Ӡ3ݼ7[t/ziEwy<2\9n$Xf ~n0r~KS5OڥX:Ipm$ziFzO ~7U?׃k@alt 2aǂsDP`a윇D-Zqv1&jǞ64489ʄ$= GQa=W >Xg46dy36Bj@=k)vV >nDǛĴƩAOc!\װ'TLX3; cݨ!¸e~{(= ^SV8XD8wQrd"tػ:kav4d+;P2(]TOΤ.`-A͐j]"|Y«8;w"{c].ly; yܷbQ)8,@}^Iq3E"]6!Qo*n0s4K7m1hUq< %0 c]@x0\;F-}#?SEW!'%~Ͱ#Pǐ fQ?^Zw^:/kpP@т6$YD7*"xEf\ʥY䧨^#Mv$ ;˄.\("O`)4`Ru|Xv}v•)yJ^2XYp٪li|bwt uMTo^E1FI.gK !#y#˓p,MC"|p{n +p.L#P*&ʲ~C\g[ǐk]?c @: E`YQe;liO.t9|;H=,~]n se]W-)_vNv\O-%aS*]݆ś(oHm<%.'p)w2hwq7 ;܊| o`LDit) ;jN­TX 3[b[iJx : Lȇ\ `!bw^5(B[T ѫ`2blOFuTS0S=+LBK`1p-a#{2xj}:B9tƑV>_댌]zz vV4g&L mT%pT;bW^>R0߉Qvv6 &3e˒wZۓe m>G,B&k}B -hh[S{BUz,!, aIEN3cC(f": ~7tѭ.E9s|l/%F3ZM@,veu`K]#nܨ2^i~H㻂nڲ A1_<񬥰XLeUBΉ%x}F=4B(J- 4zXw(7XOۭ1a %Gcьs@Pa (3O/T\$AlcQycê@F ])Xm6|~EȗyDTX.3 k. iH ېlf]!ĚNT3`1 a{j]hч,1pauܑ/X2hC%(-M:ÖLbv6p|\ЭLhnBr \Rr@Tmi -:s*CHS!qCp@IDATe0>֌qSg*.Z D6[O>u?8$4"/pu&]n `3m83xYp>>8:TAD ]lVP~z63%\m`oP -u/kN'p'>Xt5.k6TZGvI;ZQG:g, .:1DADQlLeS͒:_`2 Aeq'H3ިl.ۗw9rJJx|>g`E} F>ޒfyq1[k4t*6#/YLlLprл֢rc?^hőfCR8bF7FPnhY (ʬK'eJ $ tQȏx |JN2e0#=RxfE.B &hהG!ln @iIT2@*c@REO.eH@ .̙ixvctb¯8¬ |Y/mH׽8KT;i W\dkQ1OHj?y6[+#WAqb":9ݱ,Ԣv:d7aM̐/+3 Il_v)^fꩿlIW`1 +F"}z$V8O?먃x|ƿ"E||9+/4W5m^LFs9hV!iQSb ov~2fCenNc@`\I#%ri[0B+3vX1jzd o!E 1%SDΤ26$}}hs ܩnt(`sl—#\HXGa < 'ql +puEP{\24gbb4V1eJCL{q6kz33q͸1B%[ϸ#ysjf?v<DbND3e9kӆY0n]wfwqxl͔kmg04 xaI)|PS`iJ|o(`RRGYMݚlBx3|@,V6*D>/n6 #o`!F? /jjL$4Y 6t-_OZ|[M@X QrUGx..] Z"oYfr^%yl]LǾ]>0Ref} ,m9㞋  Vh`햗$Yj-^pʎ;5\|,)w%KҝxG1t|ah0X[=`僶WK%T|A{*Lަ^ђ~&=ܮF:,&h#zu">ww~_0`](,cÀȵT+⨚3؞1$#nL !Cȫn OQtX{ KK.H66W,3:ϯQmKoo6FLSY>K=V{\A؊Fm̛¬C뒭C*| Jd󒣅SDM%k?IJh(znMs} V n߷3e) Cg hCm5,䄋 NT)AS݀˞uE;..l>x҅{Vc@+KEhݼ 7MZ0oM۵-/̘Gi invV'ȇ?<\1ܿ>M =8{f^YOyR)d{1QO,#pI"= @6YVNuar Q8B)FN82m\qd 8`$~Վi)C G!f`i.;09U:lxOǁ:▕Ń`IW.=8WK ;첻=+QM7ȟqD#1WǔغmP.`o>V휉=!ID}\%^IY^Oڎ-7?'f\ZzY=ي?ȌCPۅcZQR&Es2+,k6ܠS.{CJ]S׳ ?Ȁ17Rd22ewwӖkYT~~9XѤ58uhSljAltۑd֮Yo*4v߸_G˶W\N#i**”- ywUlh8MXB&E(hKv D89BFU&ŤaV0{f ?,^L^g'(_"pj~Q}K& .EQ,KhV0OcBN%3`mឮ~SXT/NZ ^ [HR />)3ALFx]CkKfp*y⨓0\.\ =.S L0@JAV]I.{؛efi+{ήI[HrA :ROGh4?FuvV[8@KSN;|@ϿI w_XDV߶D{|ȑ9_f3!]/ZgҨ3Pve6xo4Amڬ`A f!.F V7#ə;Sm9H6 X +)1.6i*Woڅb-at xf#b4D3Dxf. X*-t!v BNTQ٢~jzZ)}liౚTB*zfަ^rz>W>,5^+. +՘Ҟ%P53S8 LBcbW ?%CgQ! i`dC&z+x:?D05^Vz@TTJ`3ڰ{v/,ܦS~踞|zN.Q'l[]]NaX3ñixL`eux(mpgNTzc" JհO!NUE^ A7S%cM#^ ߒUBhE(G46hF £D,}P|i-0gOms;Wwy|3~=ePf[璔fPS@(~.:==)\ɇhpKlRlKC+cS8csy' KP =ʈ%ЩƊnD,@#ǣ iSFah0R1ğtٸO #˦'"NԖ9d]&ӲX,PJ8ӤQטFbFPXCKw\ 7Òf 3}!L+,'? 9fn౒VRM@/S^$|k(6S5q+IX9mr nyq?RNL?3m/15.uw":qi\.(]@Z"4.&)KStSP,!w RtOZEaODZZK{0m(+P_/^页 J)Z 3G_#]s8$/P%'I 2e`涅0o`xhKeO pag9q>g߿^:6Ϡmf᧦l`4PowPC 3m_Twp+(}qCF+rm´n٢ BT X1gҨ͸HgHJ='1R/AT3)A*t2SyZyHM+ONe8zhTAx$uytn_od;^NTlp5_"@= "{7\~|h݈%gJid2GC |l :w ٔGxq$3Ql*xCkߛi\ŠMKL,ո",8(O )e7>Ō؇L ?\7pqQvo&B^L'h9.@Pw SfYQ8j?Y|F2.,:'=Cۿ/Uy_oI}=J C6}p*4ZgL@$* 6#|<\̰o @e+.m(ʷ46>Jb|?5b# K$eaW73( =jKvQE5fP~jzf=QIJÒ+Zob^DXXmJ^9cgn}@C,`, KGSbF19Uy!f3@@ODP|w\3S-pF:,ZFcmڴDq. Cpťgp![Va)?U%hk%xp3fx|@Ia?(.upJ$xqS&!R)T1H tcև|7}u~Z0m%f>& D8|txPm 6Ho@ρݻY 0seL8EHSx @%8aIP0y`4T[C86*ZS L"J+U`QɆ튺%R T+ ᐖSaZ`ֆ^@wÔH%ljG$];I}.[?HAia7o`)l_i K0ĥ6ջ  3~ia+.L6Cq_Oʤ F X2 ;GyIlC%*(]g )#ע#Ta䴱y 5CK *O FləWWѢkь ,T"6~eC!qEf6 h|FhcpPx=1#̣  "hV 'O?RBO yMQ7i0nƥi(-tG~9nF4f02|`Yƣ;ҟgy2rt_  &cPNëNDaѤ)4 a_G8"Ye^>f,rI>/=˄7"{(-=S'3/.2oݳcf=L{gZ5mrVrcJQFwa{5%F2 k7 1rd7(R` S"~TB^(ai7ynGQ2ɗ^ Oy= %@fby,fi2ӌ`NqKgߌ UjV,RT Θ {&" K#Xb\3t6xB49uy:zH?m|gfh 3{15fHx,|tI1"^1p7E魀Űh kV$~@*4 p_Օ m8SsGԫ)DIF`D-CO,DlTǃدvfp8K]M`U #ISt4'2 G`؟ 4Tqz+,mVm3iդ@!4u|r?` p@Ġ*H3 KSՈTeevE{$654zRpeuV4%X,O# %06ͥcTR1iS")"#\B99v3 l]J:ܶ;Sp݁_D"'sO{HrpL8b "ڼ %@ħG@j+$#C}qC~.xպ)xƀO@q\9ҺҘZ LhI )PHG #7Ug*)Z2ݎ8XJ" 4e#\ 'fj KK(47]CJh JN;eʿbO`iVohI?m~B[ ;X5%IZF9٥xب$6:P' 7JLd.wr1+R^=%//-etÙ\2~?{ EѴwGVIE_3bDEQbEYQAA@QDŀ(9g36<ӻaf@~?뮷cUWtUrϯ?f47 VfNIL IΆ'៺阺 !z!.PY0eǂ؂ȋ'`V $Z킙 \<>ITsh H|bg^ËdQxSıoVm4Wal<`8`j`w;L*́:5[`B1x.Ny{&p&,*X,wl@wvu>/HfBF2Y1b8{ `9f"XFPhTDR~G+zi5I 6?1hnHr฾Ō 6*J G2nYZ, f>2r6b=([0KELW`pcQZć񰞃oՓl!G3$ aU`H<վnkA'DK Ƚ*Aح.ŲS#H-"33bkwdaHQ*Km"DBEm aWGX<E\C%`P`+3&yY| F"hkE${a>YRxƨclG [^v|DbAԎ[QO=Š(9< +埽Jqw`{pkmE*FUU8 {Ҙ‹P ݺ|o?5."j'*J:90xW ľX4"Hz [VG.TAW۟[YpW4ceA6`a ?0r$bAV֜uv.r`իea8@7PJ|Pd02fTz)!-5 e#uT;B36”2{a%0`P09\#q}A~h܏PFנNp4 nO3ތQEDQ 僐_F `DD{ށw"@;Wۼj }jE urke# r*}'4\{Uy5+UH6 FBd_ǵ+;`ÊBqn:9H|‹lVdGƋbphzÄ 8Қ 3 *?V+j G,@_(Ma/6 Ls)a/pKY(/d+aFF `%iZ*Rp j[+|%~Α! ![6x,$D8._b)dj|oϨWWU=AYQ&(#KgB1Wah,zOas%710{`9#e3? 5PO԰>Ze0"0: 屵5,̯F$7G")X0C/k/`E/ Y.1D22AK,S>jr#+`ބ?A6%tv>q6Q|#%kg$F:p̗&!8/wo # "u;,z"!.hzAQ%xAPSSSs+*&4.{9<6'm\gon8r i3r1k[a\|J"T*w B $b:4i'wS!`SV5@x&2gAAR4PC mB<9p̧FǛonŵ"*r$HD2{h82Xl-wG'4{)y"4zt&>WqB+-9,)$8}+-_<_yU9$ʣ: k+VNiLtd[FӅGEdda6c7ij#i_.jӃ 5f9s^ޖ"Yro@!_8t030^|^L@ v ~"̟Id3 9h0üt@] c}4Ѱmqs>-#K/u&YDv5"Ţް@CDGě20r3/pBU$T(-3…6*+lD ;:m`db=+[kV^^ "ryL.3Dxa/@س: =3 ww"ZGCĺ~e(q 9}&a%Ǝ0פEO J߹[7w;.ӚY״uYpҴF"/yW`mETͮ,rThAnIE`S&NHvO@9݂J!)ӯl-?  `O#|v?7#k4*e"18B`D氖Ba1,P8o K r'GbgGѧ"М"82"]R W\NoPߵ8A/,D9vf`(!DXl1MHd~4ķfp [pl~l,2ҥ;r#ƅᇇs+xE0n@HǐV^Aذ+1I uYRZ# \ ߾Li =.iG !#(=4@:܌+;"`NJX|? %m 0u|1\CAϮ< Hgqe+h֒eMQ@*- ђ[,+uKKK…v(Cp5FI d>Z*҃X*(!wcP pNM)m=n ,?l(1@P6P ER T/N23aH (*,4H-2./)RVpL` ɑ$_d۞VgazCJ! -.0G&$#i 7,M!) rWvHbՆh**%@AZ4aL?G3YT1P$  론÷s%)`P 8-/ )TPHplJxc gKcZ&DHϴ4G*/&i'r|޼>My!`B/}V%mDMcxCHjvh4We) XE ☵L[PlENZaK_!qcW]Q_Bn)J(&Z8 0 F!k 14 J<ojN>*J@vQ׆AS^PddJxϡUK: iJ !y|?u0mvi>M#5tB̵nH!Sy o_v FPĢi0#w> y}[r=&kk/nl 3Ą Z' @T"7,o@o :7[,P+7}4tMVB eE' ƯFdԬTrD 8? "#b~ŽһW@ B f(Õy)1{1QɽD0 c@ q]dS-d9 a %vpND)HñF9j Ȍ"l#":VPl+c1]qqgBm[2l8epJ /os !D+MANeZ px ,`b}&ld hٯy_zܰ# G0!F? Nuxx~ k-TRNP~ G+a {*a!Ac6*2tXT܁<."hn%KގI>PWTp RwH$ I#] >e,4XJz[$(p]81QB>WQXAˠ ?C@CrbEƜV $a.|֙B038G)%R& `=x7'>߂0^0&aC0գɊ>Qy%.z0 "jjI!Vlۘ2,ueK@G*:Q& (6; GDLLZ|yC> #rQ.xo*;^֢Ar{Q_;قVu/hTN<@~iPhxLPSee˃(ח_lfe 6WC4)*4 4L]y0KsauʬH0ȡtaNjOFI| cnn+E:B*蟱&F;067Ʊ3@&*$3E-‘m1p8́۰M  )p J(D}ҭQi~K0w1|:($T䳂@!CDi} v4dϱ+w1p VCΈ ; 1(}AalZ  1]RbqH0 HTpD;  \_ʒ̊/i8W`z&0w9W;¥%*&J 4S fԟn,UocXFOs i_CD = :I@W¿\$HM0Q2a"l3NDi\ .Jj1ޡil,g|YC8!(|Ir.{rJ&f] @\[.@XR=*U)l'n\ 3p-NHs6N~nx n3dJ kgMnĜR="բbޞ{Wuǡ*;{?!iQ ܄qс ~g< %Fӫ3‘쀕&A(f ܇ e @IDATO+=!>V1CJq? A!,R@9ߏ9R\ta7n"/EF1 sH:L_s[=3#sPâsa`P1%` 8| G<l( #kX-R\:{ҕ='.v4?/… #3x0iqI3צ=*b[懍0ObʇVJ\1j=Xd~Ms +TQo NÎ 4I A"JC̵X)wL#קxp3/Bl\ Ʃ`7-bbQM6!: 7Ba I N}pQ8"[X.[@Bw&(&oG5G?t5]. %$>uL&?3B" =T\p׳+3DspDf Nd%1a$gVHҳ,]-[XZQO]Zˇ|gsDm^__?GqM0H#p Cpp'ਦhb*?NyJyL_3t&D{^4 B(ql:gD' McYH0#;e)6hf4 QKUx؇-q`FQ֎BRD(7›`]>Ӵy-?QH2=є9DL 7:ҏU9Cz] l\퍏X?6^97 A5 GH(BͽI¨*8EX7xBL.8D^0)P06JF> aJ#_4PpGEd/S0-:\LJM0RIuaޏ~b:p;@5UTF+@#w\oBFLGM]OgT|LŰ>y c_3s}v!Ti wXwV>CK`6U lM7ZHJm'&2A9D>+ɼk6 yܰČUd;w[lx`RЍ#Y.Dnnf] \D#zap/D'C:55O*d"; Wr`zaWeDHӄFBq#Yÿk;G9QIM׋ 5J@#:NF9r(r`pt<&ɼܷ~Ѩ%AED m#P\qjAj{/!Rn%~)XgfsΛ81^oh{(R"6hE ox'!MB뽐 C$dqr mL$q/m!@4ǟy/LۯoP Ln1YL̡0ӓVūq8!*$SOMSD"HDτ P }8t8ǣʀ3eUehy7MetRRr :΅ ](Z(Kˡ:?-wC}w=h)h?w{{W赿G**ȡD!6JN_;g0oG jHlQ P:^9ј+ 8I,ƠL ARD3RZ(M}2'QN!7 XX9 @w@V&\.a W0(`ًIHRdILB |ev:4O!alٓc+Ru=\ _RU(hxJZzmّ$І4Hm%-1G?w5q8-) $$9c)&$ue7] \ܼIC0R(%x:w֣7 opt "l*hxǦs0 5S[{;C0ZQQ!lm^K޿21돬pLY |?ês )ߛiq/A^؞7AG ,'uSNc'mxnK6zo@p'YeG+PQ- }X)E)+@GK!Z)ac[AhZ^ju"DX*yǹ-H)PlO(B᦭n!Rxi8ud k<~ѸJ*AC>B6Oȓ@E@%O{#n$btRo߄EY7hBz _1ZDU0 a3I]P\` w:./ȘnI-zڋ(^TPXu\9얺+L*@KŦWбgWgzYOP? .G(`'Lts ̺L)+}K )) C1-j"5c~P%O:fo"XA:&*A}ITeH_UؿG" ֢eh[AI$bvbh' C_Dޔu<['aZ+Tɲ-Dn Ŵ+He8?Py'BX .AZ|~LG&K{$E1B"@m)dҴn&YCe9B$ U8,> UlNI\6-.-xY^Q6;Bh-Or8k9i9рt(Ggi @ LCukd9>wC*[~"vY0̖ u%4$.<@0_UYs忪vAV.J z8xy)~-yL/(0$Z"H^x)Fđa<*ès#n#A)[2}"p))?-K~+3ghU/;<+ +ߗc0lơ{8 Ft^jKUPP{E?d1G74VZjGB>S W|>X*(nQPӺTsϜ)h(6 C3ҹ߿вFs`fl2M֘ R̜ Հcsy(/2.$qiE_~8"_0hU~h*Wpy)M19JR`}a?4FiyY2_űT4pݮ>PDLD6 CcS_gl.E!_,3ϭͤd)&T - bQ|rDUIhæM#UwX_%0PE=ags}qV%P'ke%ב`dqD٪<@"o>b*m~@6lBF6fYjZQ|O!zH*1|HUI4e$k\a)ƅ8PcW}W2 :iIG- ?̋gyp&/@sgpK1n32ʇN0(?z425`4ПZ&I75M%-l6hThWUVA2á]c>BU?l Nbs}I9k^,..RqVv0B"*LZRp9XOla2_`7D74.7#+"FJ:Q} _#G+%)1oSZ^G =dOYܰ1afSa# :М3C3H/v;T^ aZvGr(a5%۪$\fe1_T7`7]y8ĺÕQONjFAM? C-6ohG9ǁyǥ8Rge&>=66"pe G|GpQhWm c!řvKhd3 6q< p:Ր{S`Nt{|F@'tuP0PD=/SWRqO(h/Rwc|~uԂ˲=o8e%UM*GyOE{6r(Wӫe[sSsj>g]OE~z0ŝ*ݸ0R;E)@WK8Ffr%0Tyŗ>I(R4/-@`p[h&)x+҉t~`/t,XJCg&{qc;ve3Je{Z0  NiLծ2g J+qN1 fo>ߝu:^[򉷝c7K}JwR^ 1!D-N)lzۿrIB֧aQq&h">( WiĿg݂AHf-s}N::/qxƒ/UO0} `LSȊ[Vwx$ sKJd~BTSF3S)|#EE˃U̺CIi<閣?PSPeExLr{H<$cTM(UT\$V k*5vtըyoz53Ӿdh']oA[!lgC+Bl˲mQ#B FEH+p_^֭|r`h$ǷЛ% j<3`s&LmTCCʄ8[z]W?'D< pR(%?xA)i t>>mP8x!+®xQDV\DQ`߮ )d,4eK9MėTaJq釥0=h붣(z3bUYxIG-)YU.F0Iv6tPh*|;53̋?H>aNAJL%•dxmk^iB'FWڭQ !k CeÅE V_" HPЉZ!r'Ϣ'g ~}\D62:^Tl[`j,"[xu|$EB]c iP|ee;?:ri ;uEX<hg}$*ݺF)*3~HWww>O/*+rW~âOZ(KNzjbmFzZYt+s{xy{ JKӼe+Zp^)~/<Hd䀆J8! p 7G!yxEHf'+wQ2dPLuH'qN`+rg#`@hb勶"@*fJP ѬW^[[ӸMyC4m |) RcWT$^wgd(xX+-'Ѳˮ*ںbX2/tzA U'{=;agÌ )a,J R*XL n!\íYPܻ͡o&B(: ă{s^Z d[z31|E(A?uo#v4Y#mR0P *$;bz-SYky "j9c T9܅Wwno Jc4]u‘GלFԶ՟Rlӎp^*]_O$*l?*WB-AE%e%tB-zY1TEkW"~ =SDt:./ᷗ3?&D$Oq@2o9GI/BAЙd}a9-I?_;E9ܪjʕ;O|-B5́X aAQX"P}#f#Ʋ`v%u%]ܠp,o S%ȃ:Yw[oЪ038XާE.b[a{%x ŅP(OA1BOG},k-6d%}0o%i ڃeExhÿq}D'֯? .gAPТэ$mP"^~82+vy":!`J"l_J`)VpH_tBVH  #,;=ظXZz<-X1R 4˾fvB!zx. d 1$ODWAQfr!ü8E=EEr_1P -5FE T"oЅGq2haO_؊؆+;~iXn靷tQO*|2 Щhw(+q02n!H%e_ pP(;oI:ͯ9W\$Tb <"5%`\D@KE?fT8*^ "'Qq&Oxto ϓahtOZ (pa{oG2lթptͽϾ"$*-hбf"D @]~.H {omR4ei[j{wz+w X44nWT&.~K[`\\zJIB('9gu]p[vIr4s@B5L[gC=qvtjD9@ e&V 5o ,8P kvD͛L䬜#^`< B#IQQkk9<lZ$꼲řnqo=a;QFxvCQoZ_|"HW߮sk|f*ݎR]:cgl<,يX#"(F[W3np_"] ۡ:HD#_r+&Y`6s-38%ƈК¬l9q6"в) ?l~VLBup"I(fzF}0ZHv J踪m@Iє'ІVҽ갪c* G6q97o3QSɲQ,q+F~zi]8owd8 ;3`f6zt{@hM+xl G?Β[BJa^IPE#㝺[mCiU*+J[EqwY0t5q**Ns8`thbڳ6 D2?T+🎵QeY"(.$2DpQfw = b?TYNoӼ?%jC,F> *i0z 4C+¢қ8a^3B@?}U+S[=';4JxYvr[--cWk#WY]ݙt|ߔ%o/RXI r0泩0blC :i)TT86[\+88mac 4 4( kǫ8^"!LMB笤g~~^?g}Dg^~)uyQ_Tx!2:IBSI V6F'N(@(+ACuwj#MCPo߇zԃosvBUNbPȃ-lt8|]BlA?S<KJg=?WP+=s#4a+Cr{R$:?~|qV7.'ؒ({/1[&,+x毀3a> {ƇoZywC6AՇMZi3(I@YhYrć@,Ʃ/5ց2a*E%~~8J:vQ|/O(T<*SE Š Wo1J7<Cۑ €e Zi\1r6FݐHH^un؛?r/^3c@:g{ (=$a/3X;ƣ*= v2)TpeY9 z_؈/h'˛7V ](f]0Yo}t: ՑDGtίx9h i[ 9_/䀷S;e)d6,0TD?VpN"@p3V􋴴o2-<P4~pe xq[nљFS=?J׬GpQzaz7F_e{oyC<oz/\w,_]֎L_ KSv4Qm=Fk/ |eS{wRe5Qp:@O8=> G^JJ?} Nla<}<8A.#ȶdSćouөmW_lfAa86~̊sYNU4WJ  ?4SPPpY*hF˜6O*f {[i0x5B@aqvC%6{Ap{zQ0؛S-y¥+mԳ02z~R)͟wt;bPX?yM, OusMChIYDe @y?e>׊,ۑrQb.VZ㿛pVxf+2'{\@**~`9^*C9 5UV5y?>s]Aქ zG)`C 5zVF!.JJ=APHNBKz=x47=I/57C7t$Qeyv̵;g==(xG71;ֻJ vaف%<_rr>9fzBjG"V--Ӥ3+)P_ 8sE7Mz܌ί B TtB1Yߵ9NgFͥr Bg:M%rY+k>/^|Xw}pٷ[p1h6DEmGEJE/NM{0QDܙYGbCJ;rȞfEEY7fSlAN_šղo2zѻKKV_k1@7üG &H%{}"8,N⽽+V\rEn*"O , à 5Swp 8챈qh:47mķ{W&nyg*Vcb2z8s_,|Aba#H@OwEz(=st](4<=q:o6l9(pC2b 7̏weedv1﷿nig(0:9q\ L?R@7[))o=%wwy*S`wXv ?it۪YY7B\ 2bfVxKFD{^ _<4dd+:Qr.m_Me{ſMAS<א ZnŸ:⪒X+mܓ*e8!laDqìql~䔜eb4IEƤp€al/ ~@3I嘫,FPT8qMQ AO˛3Ms/ۯ 1oDz$,?( o~Bb~Ħ;򉜀@M{˜סWrOMPR9YMzwS, N[#"@u:o}C;Ka9m,)G>h*7BFc_XR'|bNfs徱Joo;#gSz,]@~=GdBD ͦ.ܰ0\yc>]T2,M AZppq2tµyQ]e1|22c^ߵ b|tFѢ EW mGG}fPIU&Y3ro[.3h'|s#1 ?;̧9{ >EܭEgaE&"atM{sˣ["V_9bOi[ꩂpiG. Y^+;'߶a^;rjY`ڣ:b1oi%~VP,8uj`Mb.jz[Bm>v{Ey_ؘx EYt`,H^ã?l ɍG4ԝq VJ⏙ qҫj|0"tL =(! A#\D!ȩ9x]}wLTu/[PQ14Ec^8Wێ,z |TC|muPtX''va󳻨0+PԇBȸa x7ݛWP+8gVZ}І.SApӢcsW>47esC^jX#5(.CK1}B1!,.3ʋo-$7ѯTfIe_{EGIU8O<;W (C0g@8 ! $@0 (pCqc Bг,=OO n}&dwH* LLmP~K9(+f5FS:]w>}xxvޏEt03WujH j앮cVfźddl8O>X6@ 32~'CIb4 M o]$Q#b$N1&&aЃn{mU?E :yɬy!/\t5sJ>15ئ?'fd?0p4 %ÌYIG)s׼e0RJ6@ 4sa cuz=t.YuuᅨjLu%!@~5vpã'lI~~Vv8,ѰPJV t;*}3DZ\Txu?p uEA%]P jxζ[UOYK{(Ua]xƣql,\D|XjHltn!5ἜËq)\n@7! )˃5\L~oXFDi+{Ү1Ə{V4+K|!u0%I:OV(1y]n^٧tzN/$y ,CmW7 ݳ&8sӊɻ'FswvF$L&!P̪mkTTAD0H~ /A3^z:pZ .<\! pE9t[ZSV;Y4߾y>hvܞY`(L b,Ʈ_2弑tD?pEC+$B?Ôkwy}a OBL5QVCQJ|uerGԞv*fWP `+?q.hafC2VnGٺ ܲ_U[- e~l֗40 59B_}ϲGNbc~@8JX3}_7P~"jm|h!̴)Rժ4]tdgYL<K𠩺#{gBh{ .v>ΐd-?}!ޒїԶw.Ksgu'.Ofz/dd=bSK?86\e X ļ i1ִSn>v{ ܗo`ņ>{TQªbFb4/Kі0J~] 7 Ըtg1r[2fbT@F|՚ZdRJm>Q-főŠ$iS;8yp#!7̫p9_}Ga0 ..?IRo2Y)nҥqÓ&ediOcysbM˛/- pЍ`2hw&aL=!?Z$}V5-RI-<1zΈA@ՂP/~j&V>w``P{*-\,x:c2ۺ"=$kŇwe)E KN=a;`n<.A.v#qKc~%ӫ]sU N_1--n r&S א,{ ?j p͗2U:xC T!a+ՙ[1 JE1cZrGsQ ^ܘ7innWɆCU΂Gw:s6g| FWyG.z^/=v(&^.~‘K_dIENDB`ic04ARGBy{d ycfq}nQ?vZHfyAVkS1{xo3\n8Gxfbuvf[Wfvji2 8k=W`xWosipUSROLUUTQG:NNHGX}~NSSUUS8MIOOuSRUF8XdPRQ88MO75wN755} z4745 {xt{kk315I |ywttm7342}xws22}~[~xs YRUb]Z_pnn _Ylh]ym`nfPCJKIf^X`rWLKIb[UNLOdwx~WO>ijlmkfelkiRGFJGdc_deiiMDIDHؤ]_fWD`vW[^D@MV<<K757 ܽ/728 ,+3I 2/.822ic14`PNG  IHDRxiCCPICC Profile(}KHQ?cD\ AAԕJ. B| 'W!\&I Bp+Tv㣋n]Vւn ]"s3)=|s3g߱TAvɉE~tmZE&o4|>{~2r#<ZF&SE ᰥpUIi>~P/4'<^O4=s$I+m[ Lse6`ʞr:cIb$(%$ۢU(8ɐAD%Rb~!ws{u ~Af]Klk=;жe:fUjK{ybɐ7}0 + -zu/\ŻO0-eGwh_ae<8eXIfMM*i(0@IDATx]E֟_I!M6Jppzh$Hl<@88r.Ivw|ׯzfvtիWK@E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`,ұ[nEx| N V!q:L:(3S(>dE"ԲX:&[0l6eMB*J(,vqQ1iwN =a8P>! "iL4So!烁(cA.. |s'_+"`hG`l"`(F ux2|z$l 6׀]^ZC#qlj50]3~)KT:)ɠK"2T* 4 \od/ ͅ@|)eEm๡m`Ktzp{EU3{0zh sXS6H@q)g$G3m/yș%Ά~:P%?T?I|1'c ?9'm:<rKE wBcE`"s-JXAVB&^`ۍe[]#N΁Z PX%q3r::bBY8@&gU+:3q+K$w̄5/{#2"`XȘ[E`ixpšy!bjE 0`TJQV]J#g9nG0G; tMd1puF1TO *v8SX$xW wqKa?<~CaY-a9-O3Ƣ6dx8c $cOt0 `)g$ 4%M ><`xrDHT6l nE`JTt`=~Ig.CeS?"ƓK2p g$^JFjJ 7iC@!2 6nOh&eQ2Г0E)b8 "FS"˯"ORdXPjI<ʢJxqeh:pF%K$|R%?L)MӕL#qN֙>H)oNNU"tuΖU."k-#(cGU?(6,N"KҕXITGqdy.G!ދ)c̯]bͫ~N/GR P`>YɘA)7ɜ"cn5)%oDHؑto|b:sJlF6dr5b6D3,N PEiN;||p>o>8@JԋK1 /';خcI#ΰM@~rCs]ɖsp> vS ềHn{lE_& r>"!}0rc(>%J%B JR = G)$1Jy$ͯNL_&Kx.9\J~'[W@D[4 g6G@zWV"}L%tꯡlnk+ViKvdcEl]=/cDpssi /Q,*6[/͆p(30|$sv/Ė8wh00-+nؽjg1f+~_%} \@f>K| Ir \=NzMH!-V-"t`,삕T&䮐 w9&3ۄx$2H6l&= }.0Q!z a瞧*̶V'gɓ*QNʲl'.@hցP얂%x_><>v?P6,KB!DjD00ݏ4^y@vόV$SvLpIe(f0 es ~mn+8X֕Nq_Q$wPدXŵ2:Œ4H2)惘3o GN p"к-ߖf(B`^Uxh2=3Z&rLM3Sb.R֞GwN2H,ICQL 0ZdKk l}^+ܻZQ`ʗᶀtJϭ@Є i:1H&0MY9e@Ckux}'5mnK:7i+ q6֑>b܆x3a+\edrA%!}UI{ Lf Uz#K(y d$νxrauA՞W,F[4w/fg)MםVթkʔKiRRi;{_F;8^EE*1[ V8Ez.x3- t6etIVd?8_Ja]}eO6_""([W\+"PXQ]p}(9;Q\5Sla52*6NWTcRDE|]>ؔfÝYa< f󃱗Zҫ7>\ү2 J}t"*G?P\s_b^kX>|lDx߰576Ŷ5$zt@Tcrtl$ XT)E.02y(f`n0:P)ګ 6@'/\A\< 1u(8y؂?LPZ .T-E` U{FcpŏdHF/T 9]!Df7@66u`M4Z1 X}x-~, yyHn;4(:DEdΈ]>y\O-`,%#Nc=׆3Kn?ANo\ Uw͗dS-K. 3?30F/wbS)0mLFh#p.5nϷdt ~xﱛS3IŴS7p)i܍",NH~7WKqZE`e Ly}+SA po>kNLS=&Q5|K1dA- 6 97VY3~uMC(\G-5QdIk#79@#QdAWgT'G4m"@bh9XKNg/չE46OP-ݲ0 f>v:ņ,c. v[> ǍƖ?ұ *H3Y}4Bb\̲<:k8 1>,X~gzݦ3`uo9o=:HfFr؍]& e^&^Jd=syx?a_.DzlOn{8;4*Fω[d?́污Όtf$"bdH&= X%3$H&-J#;sʯ [t L^/$ⱳw:?Ysk;WeC[_ ͋o5P?42xX) ,_:Á6݂\6NUwvOx_m: :rd/*9-yJ*gDŽ sOHl8|N6ݞ-{Cb\K8ؐtW03ÒWoM_$832W t*|=Sin]"i(wf F9\-?y'CGvDzImE=#0v+v0#B&eiG@J yG&vF>eu=X:G:V%!^{"l?rƺ:d:5r&%JRg *$SU\:,s w"jLL7j2JTH ?[ty5/_S`M"WFym"{@Gb{\E8;?J^%;݄iGnQ$ڣphZ& 2WLyN> y!c  huv/ݶADHql:Y8dt}z|drJwNE"w!2v+K#(u:dZ-Cf աZZEÙܾdj" yTVL"q%,jaL∢L8"v;& 0~id#65ؓ>\w::ܖx0s#[5UÔ22mU ? 9E\\j}Y Z5_J!g,@ϥTg1TqbwPj f&:'AIwKe@`nql;|h,mD\X774#In칲-p-SG[pp<]jgUZ"g:=clN0hqRsP5@o[ ?po{tXJ#t-#Μ%f,w'R t)1x$/*_}gt?g"\m, r;oʕy)Z+0J<ĩ*9> lWQ^\?7l}M!gK#4:,]ҸھŦ=|{@ҋxѡp%}L(0mhӯKIh 5Tb߀MI60UxuX6n1,oz*2<1 )D:;^LKdM &wǏ恥%sѵ+E0KvO"/KL E_sΞtnL[vksw=QZ*#3py#GWyn |}xZL`2tn+L(45Y;ɏ*esٲ!;**&$Do R@"$'C,,- TCr<,TMN(n]y]% zKκ&5DTYL9*Cb?x5J+tߥ);>\\V-z5;5%Sa{X ,XL gRF4aYKp>X?מ{ec0#)iDaBDϷ΅rreȄ=T% M~í(WAfJd]?f.+r^1)Jp ͝[ M}~IiO?!{V$G)]:N΁/ݢZC[3Ckp:{)ێ2YH4Kue`7lr6Y"eJ|ٻV>wv8WEd= tVQI#D$&2#*2(=@y5B~:eSy8ƩtSH1z+TC,}bh!lNby%r˃ݚBgNGs'bQ;@z&'X=xoO h)Ҧ'PI W]2S.E> ?6q4o-nW~pCj}цQF`qNܞ/&1\,[x$v;$ER.4_ #wjDD%59J'}OC& 7K>p5W"^FBIq+D_r^%8)v_9($T.:P}äڰ p;_|[5?u>A|>C"Ҵ# h˨W:l2nªxech"=;+'©ҔAi~SR<?NVĆ8uLGO9W%ӿ12ҐDÏ+dH_>sIS [l KD_'#@%@EQ;`Fxk|q+'.3elM|\OKGA(L0q#˿8-l3MS@|<=ޫ* .6UzaI'R{Vx+Tvp&\:<@y<{#}xnF7lp k"@>J;^6=&jW2>SƕU{Th*s gg4&Ј4qh'O2d~.Skr;mYT\]FY_:`A&_ŠI)tV!GeȜ8x$ 8/_=+D{\籓b`I"ZlI3@o$=Gm\րJ(uOzBcEl=PK+Z6MdBμg߽h#e@sl+Y*na{ r+6R&3P *')&;N?ѐE 974uLY}Pe ՍM-l/(&}D'>{"+u\VRm^D)Vg7B8t:H)ұ:>g_ʄ{aE2{Ou)+}Ov2ܫS)ڡ1)i:W+r0RJ 9ڙxCq[ rӥ)Pq};vaWL>|4Xan@Ni.~Gn7 ͹}/O7ֆI͵& iMgM8ױU+|62Q&Xd"<,U*-<IYT&ѧk/bp.lr6uz*kiZL<$4Eveˆ榹b\'W΂d,4BoOEBvZ[  gsMEl˅Ϸ%f^Vު9)xWNlU/K0fnbߠyzT$z3Ƽ\9?sGU'73]^T>5'}8MMqZ'Iáyҿ& GwJTݞet$og"䐉KmZvhyCkYʽV{V]x?zm`|W!Ƌh|f>CcH?=㪟6Ll8Nrh4nDᕳ!gPdyfV掄ֆƚFFM.` gJϒb@cEHx"!J"\w&+|~` 8A8#̆)'^c!Y.mE@ێd/WkOݲK}by}8<ـSWM#Y^G"Te OzXN8xSq]G4fX*lyDzI֑):NڱКcEpp$nr."Z3ِE`5֮]G9k'@@S>9_ͽ뮽i,ˍg[$pӵX&3Wam\䶂Ns$*KWA;LӦW3]j ۱~=j+ƙkn@O*ҽ#]. ռ_W}j-+15#d'ïBI?KL_++"<2k6eSYT<NME" k E7WBH .ZX]uH3g^|ت&^'/泎r%OuwuE=u dL^9MdiLpO8Ψ6Y@3=,+ λ9n'N PN* tNVQ+"P ltwEV?Ͽ/qx .!dB>fW^|.!}6଴/;tqBas(,~5kӇ˾X#_q+z%;;DSn8d&\)"20,S~ϩV'OFٝXqe/h<b wϫV|m}.]^]|ttHGNe}g>@0KLx8 `ig8Kw.y}[͆W+LZ'zS_K.rZi8?iRQo SE`"PGWN gwh:w:ET>tנ_ 8:6Tćnm-'_EW8,etǸtֶ(Ի!=1 r9ڃ|L gr5]ey94㮉f [5w'R36NG#S7-RW|4Hԕqտ[ï*R fr0FP xxC45'@ad8^ds 0UkuIfxp HL3Q+HKn? ɖg!e6r(qC l4⫈8KEw;~xRWIu?~ 0n:6 >B_G'Y'Z C0NuuTy%pyIJ@ z=T<6n?R\gAS`MaV;c.;&rrMݳcCAM@TC]SJn!B[K.Vx,e;H!T0g*ߍO lPܿܬd$>þР+Es0!P0'X/AvYg nt4X{q'R# cu3v /՜^U2=>GoU(&8mAǯ4R^7=PF?pGnT%_=]s8@s0i{~Y6&<3#Yz6*62n!*Kǎ+%Le<*;mJR;8A`wpO`>VcL8 GESyL˾)ANkc5KleC+S+9or+'TsnHO jInU-PK}ɞ4G*oHsWO#bD=.MDH+@{fhHn#3J[љx KaIA+ȡQ!}8 S\c6'͍‡l|sؓwevD\Sݘ[coW/V(+F8^BH=`oPjv8hx̵NYkZ|o;5٩K&)hr#J]cCJ6~l|);iХ]7G؏hj&1E0 ދ]}ԑmB- ?ԉ%o*NQh*Nnr\L~{$LUFW6rn9R\^Ĕ'y8T9؄MWyA.<$+\xBZox~`b85 ߔ{vu}-qx;=\+[.pŸm1̆{7v=zVi2˾Wz%=ϭ* 6fԑȪy@,{'sC>fZ '?>2Ff\HXAj# ?8v Ut6J-Җ\JWpPq"T*7˥D1i׫7?pt(t%ǰ~;`Eb*ןt"vX gmOz_&3f:inaraEkhtuXrʿC'/nw+e`yTf2WI$'an#5%#Q* B>,A9IeCx]=l2ԫk23umy"BNރ"tzu\_IWCś'CZܧ^CcUO^p67ILpW<38TSK$cOK<(-Je8,sX\lL4.%q"V2 4M/p؟IC|챔_e1lX*KNL0#\YEqV+_7]aJy8IFCפbѿ6^J=/03uq\'J#P+gޘjZA9׉fg QsAQiI䕉M_;9?&CW{%ܚ?u+SB|W|&1. L<|m+ÚAp:CW7FFnQD“=.M } ٸU1u#L]T,Wf M;.<\Ȧ TO2\*J3ͫx&/D:חj^3V}[/5mT_ ήdM~:YM2^ ,Na€taPl(p>3H#pniO3@9'/iOsTyױUjrϳLAHTX2yq#nM'n=XiEKC7Y@':^pZ F% "cdtS7y(eGRݠaD2ÃWlt\0 9_0< >@IDAT}!Y.wQN%AAiGal+t]t >.-O2)lLKpT$|6r|Oe{ewy2bOUtv4E"M]"d6_.N~*F2S02%e+#:PNrz%n\Y.j- {OlpM|B|8+7Gx=+ Ņ_eæLx}ognnpQ!3ztRD^qPQ_ 1oarhN72w=z @s9E;A8i(=-P͟\H_^Qʟy)C𣛑avrI?8H'5/8e 9LLql.)Wʒݱ$QUIHne,3 e-,1oLF?4گɣ($H~JM'sBsۀ6z0z{U1#,ҍR? , O1BH'g܇w-w,@t34?QZc$<>dIams7$K$'`kY ;HXŠ@: 2E{TV%r):G=yE&6ZkF6`$ a]2R(k4IS5yI0] 5"sThKWHh=g>xsY(L%tHmjS*h(ōZ8WiIxSq/5RS &X̮ݿUoC<|cx5 7Qq NyżAQkW.nN&\_b,t4MB:_s\m5Hct3݆K#b3%ӻ)G6–TAWxBר~0`}ẹh8Fe2yKV B= [m3{Gi KؠֲTMÏ xRccvәHgD%|=fp[#{_",*->Μjk;%|T3p팉tn9|Vp *A/lsSkfHƬIc&iQng?&,gb뫪sڰ!=NzU)I΂&f**ax`6$qc0 ;o,6V5WG85JWj/zj$y[ZEϝI~2kÙM[iy4[S"8- ZaV">ei[RꬴkO+ޘ˾XڪYF__sNKr qd27`Zj=l 9Ov9Z,2IXAV} M:0 nȠeo1W Z%v\**Nݧ?omBwU9M AV+:a#gJ" x]t;n+|x-#prҭ5Kkj*B#p?Ws#yݛ;ɋw?ikvMlkSΙ]5KuUI+\8VN>>#ݶ]v_3~Ecr|ZSPW̸o(I" V$G*.gʨenceMPɤ 9*J#:gF蔛[-=L1fQU!µe"pn|ܸ?/dtHQtf Z4B=2 |ڣڿ+~Sj+Xx&,E}sxmNH}!jߓlH^=tW{&]wp V2) "J e#>:4lיm7t+0(ՓN\bdžu7JHbcJ2pDp8KvꐳNŐԡh#p2(&+|hy_T@&>wgf֙ey|֣vFvFPռS*X]v4/I;ߠ͓fOO ",!v`h2} l\3q½4{UN aPɄB"P(JlENmS2]ÌTZ# + 3{٧"G˹[[r)pR?_-WpD k5=jրѡ~' !s^zK咦A!Ftp6eLcrfht>h'_sʎ5{ qH=gX3[pU7%pn&r; nÛRp|~E6P>bbW<+e |ydCTlbS<X%$-LTU.U?^IBxzPՃ֭pi6]࿞E[O{*Rl+OvyN5ޛ+ގq{Z9+]qh. 8W9 ~Dm/ WjOY5ސz-5!\gSS |{ځHTf(r.#`fj+rT!BƻhTxawŔjp|a8<;mgTESGO_o3H^QEٌ?.`/+~ް" t7sƼ,HG u[̚^Ixqbԅ[yhtHpi.Spf9҉X*unq\:8#!Ss .9#pFSςPVNn&4Ŏp ,j:m٧5ڷU$|Ț>CB/u|Nc:;; dԲbXv=,!djΫِ'D]Ik>Հ4{L]+'xh*{JfӸ yp&W3逈׎Hphd:j_p$ˡQXUU҄ccwWhgNoאF ~DIXW+Hu== HQɊ xKCLPP*[R!LbGT?4-mI6VFBmVز4!uvV|QU_- U)P}ٌ'_.0 G#֧5"^w;E#tkSY>Q6+^4FmQt1hĢq?gS|):X_/Jۣ͆da %͠zJMXt42Ei9s__+wsB%Ҵ"P~Xe?rSK> =Uٻ6o7ڜҊ&{6 |%ơ_G77] uNUn×Ǒp`QaEb*.rT b7|l$47tbOz$ӏ㭆P@iVZצ$3ȵwS:G=@֒7 [%^ T,G"Cv6Mxװ#+LE~u@cXAֹZNЏvCe}7^AHo2^/D;Y#ke>3 V8 P>4LjwP\@))]_1$iD½sۍ/쒽|W8a*cUuXcGLGsh* 8<ɝr.ŞWo>~p6s'ٯEDפ~){=Pgy$ 9w3Zx͢0nW婉GhU5Ȩ6H^Pjp vW](Z"ZWfgƷ9=XaV͕=UtLu@$2xH\x(NlԲg?@l,7inHdrթ+f*uDھ')<ײLǺ7so_s%>YPHGSw[бkxלV1v0_s_a CZ9Mm8ͥg3O 1>s+u`O*ץnj&cv,ZY/uo{K8iÀ*XՖ|Of<3gNo5ׯhh"DRͻ2q ىʊ1xm@"Y:|xFxw=\ɅȗJk>p`I u>F}#}{+{|4rFbJuFT8"N2NW)=qfP'J %SwcM*w,Y hFXPWd"r9ss\jHԡJ }K&nUpw#>|J#jvf8qRM5=>mEC>wQY uiRC;*ovxΡ9mlZFTtf!p6!{7:Z2'࡝g9dJ& xE5pJr?1M&1w7Rn!ʬێb2S<]u}8eYe kUB'i~WG*pqWwĽJ &XtO!GoЕ7n-hdmNO(<6Yl,dF`^kԃt3D)54wa*wycl-܍UX'/ ( ^M^寻=@C]qoA}We(Cx%hG=q'FwP\"8ȿ|?U-Z.# `B3*Җp-rr㟋-Rr@;AՁ'UtYp㛫ra& If-~j'=x^Ttz Ѫ (A[yAf<ռL=&Po9\xEt=z. 6q_o2#ԻlH>Š`O. g|mu84o. 37' X-FOuUΚz_[[=H5S ^/pK3hgCO;8EpnzrǠ=>Ǯw}<"AB6_ehG!pny+TYp@;䠫>>tKW5VD:@2@Ӛ e,sư3o0{g)]Khǽ]hf)6ŔE! 4v)mͧkؘKwC^S.\*{>@s4ˏ{.Z} vhzFXGSE5٪lv5<;்'vW)#)d˻4Hu^$r!7vw.BhEpk}W9>[!ꐓ_nS%tl!ݒ^8֓t渗޻xWͦvt?w%jIlӊ{D]j𑗱 pB(kگZ)]_qW8_Xg^~F:|nǣ̾xO-qsw]A&QUSq%,,4~*KǢn4{]gl&>WlYS& YBZKeU]$2| :Ax5ueJncJ1 9t?-P~S`yu"T,s"Gާ xNmm!&)]<1~YC]'5yw N#XB^iTS]l8T?ĨPQСuqis CnUVSF{R-PY %uUd2h\>O4':Ūt>E0\FQͧ[iN>kuن1e0G 8J(Ќ#@3'͖g`xm6N:N?+ k'֦L+f)kV7? rݨIY\}N znJj'n+qH Je\EqiN5 5^/H~G^WR0?|IcL4|'ɷΥ6+3BՉ:\q.3ŀAHUZRШH-F1O8t?%nq7JⓣJ͖g ԥ5Dl)DdCp>=N%i~8tH2u$ha( Rq:HYvzZ{%b|+uME,V G` 0s7˥fiGn#]m=dܕ_Sʨ{sG_̋fx1gJInBvCѤwRZ{gt)`AcbtP6=PS#>DB"( bGAQ^nݾw$3;{I9999igL+B%#WN|1 1x_}|jķrf]㊧ci@VAr!RJE^ߛ-E >,/'lr9ozsym S(x=uUp{ : ǕG/˖/Qc6aы6B Rs9!'5$! x\/9#Ɂ,gEV3GNʼTК h]0ݱBw;!HBUzp5MCҤ?uȋ`Pb?0dKCat@B4*Τo ;Q0/>P+9 )(``Ctc aH9i Vtv>gfҩg~]^& Z@@pЊFm;tc1`3dyiHO]x0đŏ @ux΄@ay‹K҂:|b1ofWu.u~V0< fuz2?׀KR#x-WDX-NeeUED|اM#4yH$d=]Co$b9?Q(ښ[+앹b~u켃v"|}$Gr]p_ECTvS$҇ϰ{k%# |9k̍J8 4^#`#6^,ҍˋ@Z6hWL~=ٗ)XnP)SLQIE)$:N 7hX-i,ɎO;Č]MGh pO\ΧZ̛WS}kKCiNd+ `^DQit8`̍:/ &f, f,OKiHJ!#O<8.`X5QIy|Ztbx =6Dط0zwj7;=xrJJQ2aF h׷ͼx fJFZ"E-i0n#O~O0S[šXֺ#F@%ٗ{|)K$Ӯk7xhU QѐD"EQ (fG6/|?6 xc;p?7qk#~SXKdַDfQ qC^c#ͨ U2qjൽ;PlGªÿy*_ <.H!\- ZP:#/)^\Ì#\D:Bf N%q$Nr3F~DjNBYaPH o:|jZa>C]y%Ϲ‘ U\ bc@Oa۹܉)=FiR"8=җyR^0Ȁن+G?]*ZfCqqO'j7x*%dN.ޙRQ0 uzfƗ4yǃ5^ڷan|B.PX8xU5+eU\Ѩ3hڬ"t9 ެ0G-4:` NQT[g3L0 N!r7؂9-C3(aIO>+}ξoyJOӉr)dEga+Ρv~9$5s}.RZ<ydLՊKF]ƭO0|LeJLp1Vx2J_WhW8Ĝ<+f*VE^V~ \b9J=^+-ۄ~6\WE'6u"\ժutM_>ݷYQp+F:2A?{:#<4([fۥ-U|:*xy~W.c< F!܇ w;5w>NS\K߿.}\g1އv\tL?LR;p}hv(tF,j-^2Odpѹ%D ˶&2?ÎT#ڭm?U_8| )NhbF($v~9- >awss??~Iu]tt XoRS^ȩOc5't`0W#YÎ7cL]n3'c/w\3K~ qJUBOpq0Ky6E|Gn~_1NBxꥯѴ(y|璱F_ѧعNNgm?|a@jg|q0jl9y!|JkЉm 3`E E4 V3)o|XDBww;kt+(63ǷT$̿pIRRˌ`2,JЮ~>fUÔ)}]jO!j7%F6Cwo0/GݻG)w3oy-MqfDcW$\ϵ.ѐL+9j"*}B{mcx2UnV 9ިziNN1Z^U%=?[aJ6•W|4J%`R#ƂDݶ&.zSq7k?]\_u/7+:N.@^&l O@}xX}f;5˟\uSv<*w\$vaQG!XqnCgNN۵9}kVXӛؤEnDE U~]$7xpOK댍88:4*<] x=Q҇⍗x+ͥd,'b*8C@Pxgj5@D`V`?7gLuxŝU>rloHPk*i0zWOht#?T CgxS6ABM{_'Fxd/! e`qm*5k]@^?g`7_bC̄05 #N]Y[.zZ~}^| xPY֎0:"Z0G͝L'|z^Фt3 !*gΞt!huz3AB=O~ɉhaX`B]IsKe#6klu>)}"tsf .QLկ}APuZp Η#IS&347~Ԉ7Xd wE.Z Bg h)$aӏ3'![ 5@bL]?x):}kRAkz My{Q*a.p% ZTfT˞ڎ{{4-%ѥn3bOMС(w(BFr.:r2X;׉0&)Ȥ{a4G"Qd Uq\VY!p Tda\4Xe3̀Ӳ^i}vIb534ܺE0XAB*aJC0x7 ;vFz>9J?^MrDS"_N.(dkA&EksJ}sO*Mif\4eA9eqPrlfUr(x8Da.)ws S,,ґnn之^y!OR}-4\ku8&[i[A_W[w>ݔk$<>#ʱR-$3#ZtOyjzB8+0fBk 4\]B}+=0vGL}}oH1s, G͛~:{[) ?튲蒓"_<|& 8_#>;y@r yި1.NP8IqaAGUg/|,JW}=P?h2UmKi͹V5q ZyşuI3ߢv_wʫ˷է'S݉#.[> 0F@ꊋrKQī#%:}淚_%{Ie]+mMMp<^>~N/ӟ2(BՉqtb1my1:"nv*j1Tx(D!?pffy=gؔN<W޿,0 ܝ`a9H_Q6(oW>:t ,/f Y~uY=e{ f E q5XieKڷuRJ I#ft1 h.,`pg;n| ni`](ϔ7> }*P~[Uoښ,m,|9 *iƟ&c/ :[x\EO1w|+V FD%y7@{~UO/uqs^4@`w7|2:(9N~P.;A#֣EKiuLR6mqrY@IDATWO[ MNFJWyw{Q?YxW6 ew*4B_^e[{t,4w!c$`~` 4;pMQi?iBΘuW^ܹj$4B^`g`TQ-+l@t  }Eu"HYĺ%Z<_1 (N07UK $m~ׅS[{Bwq ,DDDMA1/,kx̷h<}F9udSA9vf{fx,cL޴0pB=FmeG2ũ^RЦfOے~1⾸D8HRk ƌMU݃?Qa4^sy@D3F[wl#2n?4}׫Hk ܚ̸_Z%zu"[RhoGZ8*0H zscߑ; )Z} +ȸr4#j^hoɹ^CnNlը_m׾73mdͯ>jD?u«9 =J%*݇ϱ"*Я)B?`Wr fV=)l6tA?hUJfik{ ۸B;5#,nvܜ+n{ }&̎//'U3˧{cfW>+5a<:m?\6W]"-JsaJ_w?SǞV JsUPN=!->on#WZA|jHq]\TLO_ʝSRz9^|6ϼ2y5G3Ϫ20\=lPU5 F阿t F=j ;`8ƺnƍξb+!M6Cu0viy1[M1vf‰ `M߳Ж f,:Ņ0{ հ@A{<5;m3?V 8yڤp36 {JT*3+ Hsv?\dIJ}PEz`Yvg##oIQq@N5-N!VwrB{]X{槓tGF80"v]^{ѳ'۬S[CrCalL5*lɞ~ڳi}"U"on~ԫ;C.d,Y {?6Xa[jCx0zaK zoYUxeW7{_&r1%h@] ۩6hPp' R!4Hrek)+O]AO[ ̭*&|!{Y~伩ﮬecX6hskvJd8%Xס0^C t¹xD`$ddW/z!߳D'!#' <fppqtlܱᆆit]P _)%nIRA(;ԯc؏4,xyj"]=r y\E*UƟ@Fgvݵ"O t^پmAcM䥝jKzze01VP<(9}0h৷DZ.7٤~ ,crn]a>!rfiK$MJzmTO$܈W~ʾR. _DE4O8H|y8>rW<|wM@F $Z0hD0X #rRE s@M!شkn2b ?{R5n:$ǰk N:a? XlOsUwlT0gPpQCn}k5dvtІ^:CVّhH/֜MPnQu0Բ``fcGy g?D6Z!{PwcGa9t.u h߮}Zf2V`uH@ڌ:$Q]!xA2wSڳUߪUwl] b, y=+6ltV)"2Ir($p{S   4Eoy,v)XXR+=3rs3`UУ񰶸QL[S>B=: Bs‘!u10{tHTi:\w tgP>hSpb!7# (=!/v~/t~r;hc94#/ȋ0`%u8Oܥf'mQJRǖŖn~~z)1RS9 Oj+^תv+ֽ͡rj;zca >s*9NkF'mFvL LtW:xSڅhT&މXWSdGGnP1<'0 t:s|yWjؤ'X،;4#`S͒Fzh`i3?鍋\Rq[ K;pp =M؀cU]zVULێC/Ty @\"xμD'T~?tn/`ڣ͸8n xJD/FC槀"KjuAȸ݉z=@;SQ+-JduH$!©tsƌ搦}Fx^5ɯ3%oWE=sMή0Ym|-.nSy`vVY6Kj?;vc6! ~ -ɢMyUONCf+ ]1`aS ::YΰO^9ij KPr'AT92oty_"\\ Lg=H^Qt@c׉~,Z4:>p#8H,"2CGEK[:q};^7o}$)IG r-ƅ+%5(0 r## h]Ҁ\ 2h I:?7.ZJǰ bnMZ`J *jnW~%Uj O_gj=2i`; 3rK&GzF,[*H wГt^SOWo yA吠a2TM󗺴N[^za^;s=PلW\2E̝ 1>iCMU}m@vGq+/'w^kK\JuY|e3@lcFL& uR9;S?ٛ3YoMAwR'<aHxTt@iOCXm0AvGdwS :k0BȑO "aGbs-v>pjK{O{/sO? SNEk׊3J߀"8mV02 M9stsڞmC mgЙNt|CA(t6F"j1~dm8 yH@)AG_M=%0Su/I:-qޢ G )D0K·ӟbau1L.EWE޴#3S`,d\b*7C ETfzvQ2I ~F1@O?|&~F:O}ʬfbD_ILlXo?`}V8t]\X0B]9u\lN5,=|ۊ|R7$@Xi`ΐ<#踬p Bv^tyr=˂4 '%[itlJ$;@EZdh+O^pɌ _A{̪dCA܌3\1婔OwZDLz$2W3q0&] K~G M +t-d {(c<ҚM٩-|H7&@4 _F-(լqS *f*Ũ0O5ܕ2+aAJu8i%^<]"H/kgo86[4t( CQ]L!$7 8 $D`= `8a$v/`3U:PX )3W`;N ʹ"\/ږwC> + q(96ׄڪSNz% i `CFРs,kln,cb3_=o4@c~HuD ,ԫ%Pr@ K?POGl/ ϓHd~aV3f<闫G|4;~0/R77Z`zu;mN%X,l)0OA:v3B87/Bi LXcX>/FyŎbXL{nji}ƺz]<&]7&Ӯ0f h6@.L\%\L>ތ# 8K!{# *8 l2xEO&MD5])G}EU ?V"=.''+k穳'u7wjau.&rOp|_,>茜rQ޵^zbAE#'(5OՆhY$6/Ql+“.,#^4!11N`PG.>ɪwC`)"80lHxnjx 0sPC<5Kpf܎\AG`xkqQ9bC0>r0^AZQzf˲FՌ`,po; Q |# raԪ^ ^gK7U@:k:͎D^  kX;Y_5|#\WeB3J=-E^߶sfZb?uҜPOf9UxܯG4ƿٕ#qg~8|7b  ҽt cXkЁ@ɹ|49w rbѭ%.W)^+;;=;<>g?q5YiuSv|Ca H}@uc#"-zd]8`(`ʹ 2\Ngaf_)yX3UКPV_tzbhqkkW[Tդ9ce5!c q% 9 ߘ˹&xt,lS\26 bQٌ6UdVlࡦdqp yT[RhFTB}ZO3ҽ^nx"mv;G"i0@pQ>O|.>hTVf\B {rn Gu@`ᤏCdzY , a;|kLz]wt2R?=Kq0[H٫0z#)VͲ3X 7u(H.v箖[J7l),3|3Gsȋ-"L J8#QL=R4O%M, , \l|Xw;jPW'E.nZx8^ "ҫs4[qD" Fq:N_ƽ@ҧ+Wՠ~(t(f Z鋙K<egݒyNDaS*/s0C`SfDLC ZKwTc[.g7V0R'ɮ[$fYep2Fw}a_- ! ObFyO\]З,TI#eWy1k#^,}At@Osd\Zq^4鱤/ėpj3#W0? h)Eu9?oᲳ☦#.ڶH.LWF7řEe93(V=Ћ Y<xjZi隈gꆼO~2IwS+ly;ԡhVU`D &~bс(N?ٙ5gS28rW@Y3 9)3z Ë p8 7稣~0ěIf4M3عBEo.kcR0?P lֹd1v>ݡ0"h,E#Zy6 Vp_ˆ "."o'/ t ᑔB-Ň1jD .Rjx9 m FtC,$6\=(BQt\̭wƚ ?ud~ Y8`׉ȗA, F@A ϲ^5Mv/Y4Ah6O\x`ikk|K'@,uX?MvuDUfgjB>fx# =ZpyJ^DHhX'=_`Bp>kx/)(z˸GJ'Jᥥ>wQ7s·-1KU frC>#dx8?lӟFx!Y8{js9~rB0{ U06"QmtCRX5Ƶ4ɚ4DGo'~a`3j6'^IRIAq4[Μ=ǔ9Dt )`k464bPn0")E\Vz TW<q8N[_ƓX &C+a pGc%+Q_%9& ^sdi0zŎ[ 9ͲĆN-=F@ҍ%ihljPvFInp0-]TLfV!celQ/dǀZi^v퓺.-PIs5/ieԩ'WNgMoj5:LSa %|oCT`;D"ݔGF]e% %~uꎽm5uH4Z>ákDpYt=zJAFgIQ~&tsϽU FZǏ0F~(`8{Xh9^IzxzEZDV Vٴ}F -c"Z~n0oaE7|ǞX " rrs[O1`~LR uӴhT\:㎠,@LzuqHt7Q 5EhjvzTXr:leWT[5i`r`RiRK7 \D' |׳#&>]=0pXhFpqb^tj-H1 nHg4nL&If: )*R>p/|H8K[ׁ@WߺpۆhL},106hغWL@ 3:R`o5kώ/*Z $R+.]nQyu å j-5(+ _Kƌ4htUQ{bX_)7SsqfWS޾ӟxO%;diW*dL'%Mڕ{<#8up68)5 HY0(Pkⱉ\0Hs)ɌKf.F=:qoGSrbxYL?3^fj恺5ZR̊h1T }~2k\+@Dp]d.wGW)H,N!O(y#FfsNYm}Žݾfz_67Q@Ӧ T?Вq˟2 Fvyٗr+n~F'Z\\aƋNcW xlY6].hQWppܙ}F슱bN oV jN TU*өf'S ! ,5o˥w WeW ڶ`~ -Q*pA#?0?H/G冀*#.xY]vfN0!3/4}|G9/>VR{ ҪS5zEu <L/z -gHΜD\ nvf{ fĆΟ2p\,eƸ'eT:virUA|j-3DB4ee'}FI>qԡӱ9eáUʙR6;<լW1 =h_ P'w4šUf BBȋ|fޥWL KC <ђ6VC|-] bUtݧ WQUs٣mܰ RoIr'n\AN0ڗc@OeRzVzAPe4%SۋHʲ9Ov;xe[`HwkKT8&QB|~ӳ}e:`,xe\pIyǵr:lmNUL+hzD6< |;s9g O?1UxS-4:]Q Pw낕UEV-sx^4>#OZ* #`0ZNɱӜ_ W2kUlM<PU/'9.f#;s@j~;j!dI&o$ EЮI&cG4}/lSa20ݶhނUE߿rK%}05|g>]_Y2TMbs,2οnvӢg7fB5VMr :s!n.sQPu>z[8־5ڰV]D t7h,*& `jM |" T9$_6Td/d ,Y=2-t3CvD2.X߭ ܘ?/~eMe6CI71@XP^vXI$KtƗH lе/=T%j 7쪪(ш(~ ˯[𿍍~=T"t"`8SC 8D?EKݮ%%o &s#/ҦNݶha\m o8}nee0E4fٴ`c0ΟfȣjӳRH!K(-n|A^\ƠA ?n/hu!Ѭ3uS$tKlshigx*+sD,u8dx:n@``b6n'8ЎkOcw`]wWoZ;ivhglr)| I"xIbhLfC/i^+pws V~Nخ҅۩VaWsoaA8F~$LS>9ÍA? ęi1h7 ?KR/Q(+0 ݷ1޽aLc$XZd)qq@ҿe@.}K6"}e͐IUVqo~ǵ)(G 툁^5hlpnx}Y-*qpNJ:Ï4s9Ůhj TPf9-"Ӯ|&M~W][7n= S.P1k&O{+ɔl']sOdB*D0Z ΃= * {=}٣͝/;y~9;uk,[uICA4S}O{gj\ubչPiuĚ9\R+K B.Yq??٣%|ZS$Y=9E_ξ ,ݫ`zZO@gląB,)JՈ3lNQ .;EeIXo%%p 2̠f52 ˎ W*1#U3 #QNi0b᳾Ku~F(HoEϨJĤ(u>ou nbɸ)>_ܪ5<ɶOt;;a=mZÖl(v8)ȝZ0yJNIr{ܷa'/JY.IUb?F]x B'>#0q7Ɏ+Y k>}#כtwbUJ0JnRA)eFb0NAX8BT'e sI=l⽛QxRXLuCPK:7^Yz7))V:8|mLOynѠ7;كwiv%UyW6\L+iF@M9Ȯ~Ͷ+1 #On)u*ޟ*F[VDϝ2ϋ$f >3ͩ:Coxq?՛ N*m"6^o 9?Θ@0j-6o%e j١ӂxR@6Jn8w}Y^ /y~38'*!uCXmΞ=ť=¡zp rrWM[<-$`.diW!#bZ>vFgdwYLne^7}kȔVp?gL{-]qnB #K ADx庖rH*&\rdOrEfۜ˗dXY΅{қ/ s`?US~``4φ*[~ Ab!gT?jtނH.A7ޏNgFK[>-犓&Kx_y%gV/Wuz/<[\E0ƾԌ U ;Jz#+C4+.f7^XCb`lE"=p^^54cCa,F8Th@q2@?\r2]cF7. ?_Qia&c6vK{+𗽁irJ\lYE2* E&6_v7W{ާk{'7|HXD m@X~ڞsǼcUWCK.j깟[nܡeXp'nZo7 Iv~LF8x [*M1.R TmD {qU3J!NǥP%!)+h%M}WBҏwR>S< *gGLmDʸG%Ucok_yo݈#nDGhn; qG|^M/FsKnU96Z2m V.w?k?r'S>O6x/:~Eu.0c?}J]*RAƆ@KKG9װls6٠F@}"a Ƶ+@Uu{]{ 9S_ރrҴ eLk!JVĶӓKJ:m+ߝ.J|yK2Ih8]e Ӗn1#Z8 A;eg/,si6-)㉅ xA.ct\(O ^ZU,Ǣ?m z}W7Y`Quk`շ/̲pQj>j1͈Zyc7}xE2]h)!e:#M{zڑ1Ba#Kedj K#_7>꺃, |@ UVbAe[ o=i[֘qZjë} ^.{~+y܈x-Bdi_˃cYԪ%h';ul}IoiN_z5;W-[2 } SVFv:{wJUdYUȼҭ@Ce|ede[qsvtW{v4')0BETT_ `k5m"o ?_fC,Aܾ;'zOg]Nu'SHV*UI`*汢ـq낫+s1Tb"Te6>OLYr|ˮ9=lwL{)KAQe.8Z8+ȫIkEr#AyBXk$B,\8i,860$߀X$+Ƶ FN\Jh\#pmF2_\ N }E"5,Hɩm(:מHA ?7X 4IQ|Zt͹OL&>>#_]x%TIҴWG؎.>r ==zH} eEaĂP+1=#J:{P* k3eWw<$ȝb=};q  ] p} pU'N-/_6RPOĚn` /YZW7L@$[G/RKzF@8%?![}ssA@:b&5LT  v}$]~G!ƝAu`C 893N4ۥ=3m@IDATR[ Nj\>O!jùHƂ%^-R b*xXJq4w^\lVrD8~ cv_ѱnjxP;T,5('u, |YX(+$!`, FqKO NAw!Ϧ=J,iFAJI- J$|FzoCMiNM024ɉiCm`_6_q3kр;h&qOÀOu~%.:^ h Sr c_9Ue9=ϝɔx5>~PY|o|<2>M})oЩ{ZS.;A2N(Z (^ Ddyp#=pY7Vq-tޏ?A|%¶JpJci(v|HWIrA`jr;kVbsq<2, AffWEC:3a s0d0^C+EdݗNN詒"+X榷d]wp@ !h_:J5ZMW0W$?RLb\4 =z)>#vn@ J\>w.&H Q `+_V%O1@1+YֲlpW42'a%׏̯WZ Ӕh9NU.6n#mX3մ½NBsy_Z,+T%U*N7(0U:O0+_bb@)H9*8Wۥf_PJ?i)@ǣհ![];4dZX10r#V0.1"%ɳpT 7$dQ :K{~G`4S, Tsli4+2d!.|T-E%#V[  ]Ԙ;w/_V%O rwa;>qr,ȝkF4/'WH:e!҂Y>9ruw'mղC.n8ȥU1ufeӨp 4V'ZVXGv<܃pƥ`PU~{ҸЦ7=HmJ^6'`,O x]g/NF=0ZS' O3&gM2.+ܹO|1g6xɱLSr;-f3v[^:HW0SsrfWRoE7cU,9m ;6e>v?=[̟RfV.Q94dCADt{A֜we=ϥ|Gwh}69 Ct$%3`!ctNA[[Dwisb>SžT2j@7hbƒmMUNQicĦD P3@z]G3Awb䔆0FFJ @^pz#UõF08=6"}I!fia$"Sj~F'=k·" ֲ$.X22SU`OikOá|ZEPU,9FP3sy[e\nCn8??"^q~Μgق=g1F鰑wCnC&qVKQX"{|ٷf_uk&mNY:߫[nw2JjXy1`Zp݉]Ͽk2Oj\SWGG$4~>8[l nuYܰidwiS!Gwq:4;A<L][ʢtpP:_q24#Qee1jciB5* E*EVD C*wAdt{pUv(86i+iд~y8d"5maUHϵAEGi[-"R91>tm'aW ʊFfk~w!hR/8tU$-e\U:/.EĔSH;+zs޼W qx?{ZG5lGXI6Ie@5S0A c**_㈎&a=iH+aFz4hϻ "@ihڢoQHDwp@2~\;9o]&)\Cܲsrb,o*F%ݸaFz]s@@R ŝ^w`dʞJ+,}VYiR@kG6=< ?2:"|ȼ%E_dC]*J[r}Xu{s9y˜ L4娕_< ]ojKdڷFUT@#X+v)hTSF)$X@Di@Ј=vxvvvwܻw{|ۙ3gΜ);^@|x_[ƫOAvڄ6G$-'`: hXV]L d CJh_'`&@ v%Q$k!̲{bv'_+ z^<-UDo7I䕠ۆBP9~=-[zMn긵W:V]e`ApVx;`0*pf;AgK*׋K .c.vHiK->+L|6!Du&- ]'ږ/>5+`M" K2<Кˮ?n8y9k8O`x\*98 )*-TiR7*Vi 弥lJMc8]jXO$8˕9N}2BM+RRz<>(),*(ÌKN[Na952J( p??#p 7An/N=>Ʀy4`_~xw߲c|ӿWF=YnuIl:_t(/墮dVj[jˍqgnel[`߹M8%Gr[443O u.] mSgӍYW"R3W #fǹv)lfd% R8sG2wkm~lBH:⹳a8cnXrgb LUĴ`?K $2fIDS|# >᭶mon ~fUaLxGCV{-,mX1,]V@v 9mήM֬2қ-l8w}<좎=w )NHO$Șo;g)QPՐ0RkC7P .)9((ERYyk/n6x؅0.&e94uLH.b8A4Rx7~B{X˃ )l/]LDŽbZa^_}챓QPnbzT0oАkj>RŕdndF0uh?3\2<3`g+ox=.<x"&hM`whp5CNҒ3,-21oi]: Uܴ-%ڐ%΍~[gڽovgHS >d ҩ]ۮ>Չs&yp3h~Yƒy]>yz\ D}XS#|x\o1Яm&;_ri3OAku,ILQj{Ft @%pMJp8!-ZybK͆압 I#rMSUUu>׉`U 5g8yԇPm>hGe<GVC3O#FĩLN00Ȋ7(ZcmhmD-G7aO|(NMBu]#@Nm{ԭ| p c gP{> p8o{GB._b`=ĸDyit#.23fC8#w_ etfꤶN勒c@y;ɴ:2]׭G=vod;ŋNeVa-y@"wX K$/^x)#h[ 'Hk4$X6 qeS9dgcq] \C`6/m;g5G@: bdPߴhy񆀾.nerי[giQ76EZEncc+t솨Ksyj,ɟwQ08|f@}>rn7u4WM>=m H8'+`饛H8ܽ!UI7u Y bbfpJwouV40,D{%ܭH$ Vy^=='nD^m<_Lǰbv|0\=tNb5jP`pCk:(>M,\޶݈[^o:]!XlbeC.ua'cC~q[σ y ́α^,Nבw poHr`oSɘp1>б>6?V\=>& 9RY#A݁'k+KLLwK%o~!{HC8tv_#QԢEMjʔbRBD-%ꄝL!:ͰgzzM=!rt(cC8UQū7۾%*ExFI׽Y iw˧lS^ rg`/NoQ_]߈f㟡,95H2U>_!nLT7h䟤ʈ$~cY&ejĤC#~vj8~r?yŤ:>QU4ummO)OY|ΕУ\_TRS?țN Kn<8uP`75JDcS_;GET6d7ɒPr=*k~uu%9SSlB*u'8T33a4w.:W[ǧqKT͠,~t&4 oȫOxn噧Fa`1XlD|rB'™o{ǒ۾IJ-<Ԩzk=[f9MzşDʖ.-'ݸ\ɭ߿}4v&5ø9 }:vEE,v7!1C([%oYwTUnT /ρDu5U,`(lۺu`tfeƿ'T0Rn&W@>0/*y/4M?DV *]_3v!x_",)@p~ a3?atѝ7]+ȫ:9u9֟K?)W9̥l'@[^mAmKجxAAJsNd"YH$b{ N 4SG@W hv5W0=cKQbPq5ā>X 2}< 6w[T21D' o C;HgVu)F)O7 q6)S.@TܳT̶ҝ:ņBUf0ʜR-h:Dz[xk6ZܢE-*;6,t[Uee6^gk)m~+ W&M tíc,o&\ZSH +"+ªD:uqK?]TM~B(œ<;-Q\z| ȉb5pr%vUW 0a ,&z03_zɇ6DGYPSUu|°\4Z|;9Y: L347Y3;JeXaK:H7`RYO.йd q J_NfNU^A>1H9hB 5~z|:Xh'<9Y,(Y0rLs!S(W#FUWU9.ܶen(iڪmgi` FL֌ąo M`J+);Ja GxAP@Q:bxؘy~?VK b.x$p*qwic}-E@:ENg^ʠ,䣢a/1xx;;>n?z N@?Ay70[|;=kN(t< 8*h^}gY: X4+h+Oa:6SH%]I6Įw(möB= 0!/(*Ԝ[(ϒ}a-OȶE*#R>̙c ;$A@tA 7>&{,m0= ڤ!f1/q@n --'HGe4O 0Y/wt7c@pppw69Mצ|#8<04#LʼnVQ,XIt~Ii3KgD:{^/hsNlʧl*\RrTm}!X`۠WpCjggA0\%1?Ieؤ2:2󁅁 q O0e#}EJ?iˀ40Y^TCpp=p5;5ig`|MjB6 Nw_% fԣ@ۙ? .s,M?>/#%Nc:?rjEew1kmWKJRؚy]MPe &=ޮ:|DeǁBVIy?Ƶ7? S2Fu3RF4~H[ w\~%^+ABpx+-i뀭!ex ;C2~:p @SϷ#eܯiPxù&B?{Di†tߒ5~ & G՛~C:ɇSx|&Z6t[;iDѺ:ЎeUA[`ݙ'>l߭4}=<5-˒;fǣhV<^ Y=aUl+Muˀ\鳹M\XX`+,(dbiorA $dLD3BWwɑ'`3D+44G yxc!`5v髐Urx8gZ+!"!2 FZۆiX^0/"-_m`kI:2Quk(jѪBn”bN'Zn=XafRHs֝9 7E@ yu ŵd!LJ z_D#YjjN7>2f(ZNDh͐hb;7 _Uʋr[}R港tWd, gz{&e`1=BQpvkZVgr#P&, !{{>:+o9\AS cC˃4+Qm:WW=].~9w2mRWZ&씆I\n~%E{|^8nh1p"rVΒd-~nz#G ?l+qmd`dK,@[vR/q׬qG|1%}"chx3AT-KG!ý c_5 G`v۷S p'*p#w0ļsMEwG"8(ڑN >gx : 'KTr[UǾ$r Hv٣.?;-G ܼymaA!k/0_Nw'3OB8B8x=k8VH '?d^rYQ6 G7''b'M,j|`4Ɵue]\d_K;WW*@ <"ۣO(;{\hϘŤ~k*Q,wۢW Dq6 um-7ȎF{6†wmblrMS ˲fAuͶ"3܌Bz!?|i=^԰0[ M(e]~8ƿaw^&u{y8*G$5,L, \A3 ;-<DY}AQqFGo0ƙ܀9K6kbO0`LY2v: ϣPjiXe9itcibk, k*uNQ'J' UB+S' ТwvP1tu;kW;g5hU7;זN  TG1䲽!+TwOaXF7iȜ@=U]fy$^~jAyHH+FBƲ5ObuQQ:x0jl˹@]vpo|<d+i7 Ξ7LNIzI9&Q]]pJ cfӗT+,/n2ŵxUUaԜb͗)l#OއÂ&-J:W2&B<(%Z٦s_|.Ŷ&<r-&`2-OzM)4TK1,õH'WǮK u3p:Wh\kP/!A:[ P`g{Łd`Ɓ`dApw|c9{P:oMtTw~~x9jң>VwB_!Zo  c@-[^t2\$a'R;گCD/=#daǼ,wi5'3'g#wjr}N\iǻf6;-e=gwZ6zDCA\1*,C,`HJ ށ+P7/=K<x a΃o6R~)W 9 CF>݀ :iуw'r- p=Kg|_2uq |< # Kk9_Bv22d0ɯ,`9;j]|apxo7@TQn6 Z M?*h9?; whH9מ~.>{*! iEF钌W+[SC)9@rq<  <6Gs|>muc.$6[̐Ka5[V>P` pT]`> F]M9X{bPu9Rǹ1J&l|Se8٧€y^@0{A q2䫳UW+n6KhHtE?V[dy C y B} =>+Vsu6""S]g2T0m-@n!щ:$ W`Zh R~ @#mhy']?a9pMoL* feHʬ"9f_w?8 BY_?E֎;+51RKO`InCe@l’ԄHbRhJls荟 `'Kr -N"M{-vMK&_lu`@eAIV_%P,K1Ct:.jkPE8bx 07YG:mpyhjw`/4/l __ YA)bblbRN4#]g$:10uȖ!c6fP4P=K??:ڙ@3 <a`_PCG5+<]L?^9.Ҷ)ĸk]$4e#];L7fC:m`s8C&܅6HPf>8).]I|,CGfW8 {rd:ZݐZ#1DCX29daa`":~>9}T1 Q0^3ӓAsP+Y,.pb h }P,*$mOeX[6ƫIO0|8.ϟ6S]^WYXD v[B CQ{52b϶+K&~ hJ2+=b٩:2E'#Ӊ7/@܍h3|VмIe| _:ҝaLMvCYqx4xHt`LTkZDsx{ NY@} FbteJ' R]7sUvUtr韊2D9i>"m\+E~/[CjI޺z&)Wo0-V1Z rysj@[ gAK@sH` F )>(*H }YEfyOdS5-~c?VaRYkHx3Py;\Y~<0F8gt_F GxkH{.rBYJgod.k\̷ŅLN`CˤؿMhqS-.$0;kJmY,,3 Sɂ$Y!ÅN$D _S\ *T Wg+L^#IU`/_r:^|=DTr*ۀ0 J>w* Hī׀]`/?ERMDȸ~<Lpo͍'wyjq OY y4uAyQ R<88WiwsnXֻVkavaxTʜGn TM} H}QO *JzdCQ2wUFK C$8+_CYlJNazʋ"H Td<% Dc`xR]v)b/^P)B`'!X_\Z[~᫄ L`ϝ,C[mj_ژmaEt( 6CyC1s]aa!2+vd8|,A:\Iri梂; rtU*#F4$Gv\'0:KE O-nN蝵\*<쿽`g4/K/'y²,75m`2Hx<0 _+z/FΉ!s3۵`y~Id=56Ax˦>#0p#7oHYgrj0m+*iQʒ( "&h5_9;R #p $)\.ez?藛N7&U Qv"p { 3S#2|?šwLR!ѝqh2"j')0wersCq#DyHgZZoag>Vs$sW#Wx.Kg'=QXT15hsʤZeG8QuIZMAAq G , oF7Q2?VpZG#:>FTFdiSy`^2|~`v؏K=;:$CGc JlI|O@J8xD=%]]v>y}dV!5A^yXÖT^HXGB / ޶}@mY]j~(~sl""r*N.5hq" x 8$h74:i.6TxZxbI:G5 0[5O.OlS;%s;WVKhpMp~u.$qlH&c<CXԴx p5o0_3XPoVֆnVV{jɌ+#?#\&ٮy8|'^&cU(KN6Q֓>.2#8vH&Mƛ<Ȫ:Y'!إ{:S>$Px뤰Z2KfoP I{pcÔqoa2g >NaD|(tH\ꐗ*K`._dlgM..S3v4wW&o;}]Rinێ@}}]7D" ߝHa/M)ۇf07Y?"V1 o휬7Y0A L^t8ߢiac f/&~a \IN1ag/sc7]<؂Jí0 &i|6Vfz>-Lo[sL#`:´'W:1E/k`%aAdAwâtzS2,l.75@ <-xѰ*Z{ɦ%;0̘C*`J`ImQ+*YuI͔H[`\eмO .{\c&_ nv"Kեꐧ!0w Dƭ:р[F.Tv.<9Vgݶk|,UP_ t}jbTJgJcUWn[ᷴbēaa%2NbOwB,ߴ(A]]aR@w29r2/`gi2C5o  IҼ`+pr|?/ B o7g)}L8L<(s6t 3_;vIQ Qaܭc[؁4 N%^TRG(VҲkP~n&S~`7,APீܮs qw4yJx"ܣ l ўH'wyoπdhb{C#<> WND"tԛQ/:0_WWO/i¸~580mb`gef s< X$@]|.=A^(hoWN9}67>q|]GA>ZIޗv(((zʰp XRφeDEEQ,۪ 5AءF?Wfn#z끫 < ,t>fDSa_3<˔<&Q! :tDΒ3S&@\Mlc+e~p 4`\z8W@g4&g03+t*vCbM؄ l!í=c8 'GЄ4>E-~{!)J3Ї-4e6o8˨>&d7o$G jѩ(,.2|gL# ]㑅Huu@IDATYey^7!#Lf7`78| (ze./sfB҅%Be3ub'܁֬( 4rsp"4a3,rG*E.JK&8%-Wu;]  9"s?gCΝ w4p̀[) K W+W8?zA}p.YM&ToS՛ KP>ӗC^b[4b(35H*Qg[7%~i| `5Ѕe<@ғ+OYb`WVAJ^2t`lto>gnHՃ'* ρ~{دF{z5 A9 N|1@9蒍W8)WVjO|N@sxTb.Q9)T^'{:B/zeONʷ KZm *w@Ga{CDbl %u5<y|U Ybi5rD8rZy]tyasIk$>? n(8XOQ@n!C>%[x Nyļy& |dz,u9{Xj+EX*QU(>G)l$FJ'sp-̐5@MPR;QKb.6-=Qo`f[`:_ CPя!+ V^zx.$4xNW*"8r@]Fn#}䐯U I-ƎJnƋEЫT}ղ{oG){@۠-P0}%^Eb)+|uШ>0g7g]g b(J?X  n'Ċ%S?fixF# 6>;\݀_*6W:hfD(@XǬm` vD)Xe3퀞BL4aY4 sh[|sA 8brsӡ͇.΋M+,*֞*ڀ4nWoIV%YnѶl4VB÷@CX w,6F G7hIFފrYM nOC0pYe70\fE0$X;)l֎vep\yb8]  W-} Ctp<@)l avtYeTCtA`|eKUZ 8iK$ A/ں /H~ s, t%  =-t<3lw?KqZek1ޅmi3L!Jji嵦a0:6}qy%|kQ@ M݁w?g;^L2'D wYu CL(瀞3څ]Y/Y<`0AxLpJ=V)!ÚV_]/4e8=UF-Z:hewm4;iQ# '$ 0S̐ypn@ޯ\tWWPLx4߃~7 h5`ҭM`!,gv`z h]xTg_@#l uPwb!6r 0e/ۃfw me[%_TkῃղW K#ɿhU+.PQ*ꪪ2泩//;w#оU۶<0ٝf Ƀ⇖%`χrOEXj33d͉ĥ/V&tO #AMwA3 h̕q$DJO-LLy]ɓ 3niP6)~֍Ýjt z9YZ㷅KGQb|1HRA#闬9A|AXs g>{7.@g𔢒L_EbE&`Ң h~!/>ghNaXa3|_"S.B4)|ގ2x]1`PUǖdmyLaH G-#ςwh9 MZ\'W+嫈r'9/`=M(A:fʞ6(2$x< o _  I7۽^(f̏y%F.E>{ zB,A ר`\+[ B?!?E%kK\,lY5BQ5k_UJ/4Ko0o}8Umt*yxY (#p\53!e:) 3&mwr'5rgkD?zc{f"P#y>+5ҸG܍ԓ:B84qBPE=..@P2]}`[BmqV$B@9,C>2 l0$x1Ew{M]E}$I{; L)B9=5z (3h+ D<8Mjeo"4<5Br @@6@!.6_~aq1po`O@>;sO~Z `i݁ܚ  NA ]W h) y^ Bɍvv!TvL{Нd9{aқ3! )ϩl [Vk !jA>NAL|Vܾv zA 8ov=pЄο g069yE0yUpF"<̴fP[\#1h؎9z8#z%X݀uwՍ]am[Z`J1qYA*LV(N^" ļ\O-ـ+@>j#&#=/[@,!-06yLׯ2vҫ0g0Yl4~tَ|ygϔG9p^%oWTAMG6 zɼ)w9`$ Èv7s`AV&2=8NHY)EbzzIe 6NQ& lp 2[Jf@p&_ 䊦hd{Hi]R0MܫnTf6R~x('obˍ2L`&߂ !r.ؘDp7F wNUs_o =94A|7h6˜;>: sp\Y6ͽnuK}L" ^eҌ,wR[Khȟ`YRHuE^9h]:(H Uvt/#p.>Pf; |('܍Ϋ keVzEu -0oH;1*dsQv˜i8_oBA;98n+' oXz^{SǹCFL`9 rz/2˜B, PS $O _he:pwRdAw,l uK^xE,G6ۗ(05M'S8Ef!pWpKX~yνQ~nZGGd3ے۲\LԒGR>5u}g$%.4c}Øp^|)zٳDW_`},䚀؟Bbqn#]mhfty=?*$O`iǘzN#+'vhejFYV'Z#a>1')DZiCoЄ"idC؝֍:H'M#@ǁŇ>ƒ[.łcA~,@ kJ' Bj+3Gfj)|R bq?z9$!=9=ut\.۱@jFV.ԓ 0#-WMP u tCcB-A!f9$<\W ZqyQ_Kc|4뇼Lx_-VC9L!sfP d}A:J6Ut_%1Xc@?@z[,mkǺ*H KqgUX}Mm''OӠNjkIv S#@>_Y8K`ほ{g.~Po;d]&/y ê/u AW+s^*y{@nN g.3Uv?)/f'`?Il"uIGvtB 9i므wQzwW/ke\Hp:3{: kTzJif KQ&Pml[_Wd@̰ij 44jl ȸ'Py0kyl؟>.f -F.A}yf¨ ەw `XtÈW Ӏxc~'&` -6h1kWǃ$?X<N@I`Y2\ُϼueN=m9J&D~Ĥ@$|23`~%A#`wcDbDΤ\Dgq 1$kB^"^CSaYF}Dn‡ r~ME,4؂&`RN^6ia= 6lI+W Z?H1\?.Bb8<شsoQ\{^mBqV-D)4ʰNl2IW:zErnJ!_ /Rԉa nfi{?-@9Uҭ2 s:$s&:hh F+x2>D9BصRL׻:pn~Ε%C鐳 PeJ_5_|Up%$usHSf4g+|P(̛1|MX69 f},UUI,ZX/ehCacZod:U\:&p =;YT7^DwފN)Vw=' i$Hc(zF+j\ ,`/ ׏=VM\@|AIpUQ WmciA +:RW+ PnuDjlPZвBl=Lh+4n^pZyhBG#y ^Rsq8ƿQvTUX1&$T 9V{ 0佥!sGg, Bf8?DYp]p.1l<*kUE15_"V3om<7JѲSz"/ĦO_RN_^/J'@8/ ˇ[n2ABtՅX X" =GGCA #S )&˱ig'+L^S'/-Piz/yuvB,E>k [A:MMY,y KP6'̐uLjj@4hVʘO"x:fʎNw8BUM=p +ӽE)fr8{rݽ/_Őgl։-vwObUkWitBfP,WQ(d=,K !t<|F&i/’];\G8eyZ>!S>ңKϺ|"jy<Bt]w 7 `[A`VUDW sLJpq Zo̘;piiX:vGtaU#gْF^:j5:!L~;Xu l>ߏ.;q9Y-j[WZB n@&:7<Y r-ZWpϝcaʵc} ?`zH%ߖ?Cy9MrCDM:4H9V޽͢$]Jmm-|ҨF8 $ RA-Bc& nv+'E| '{@$ 1$61+yvyЀpa2Ƀ e(:rpQzJY #`߃' @٠ p{fkYCZ`9Hjh2qc 7ۃ;|.ęh7#SP'q-~;ה팈 5T[mq9TH$#) r[Iv^Dq69Qz5 }DÙ7rSq-@7Jd-a`I1MSkt#ŒIQyIq#S,E'A8Vy#tPoХ7#{ޱadOc Z p˫L֗H/#UDtyN[(ubuE]Xإ{>!WC9釅ip+A7zpSSi#bg; hY( 8y)ql"j6~/w(HrA .pm`֗4W^#|[ƍ٪4!p3 rkT6Tº*Yȣt\4Cmk0G&fdoQm ve0aY/ʗ@Y:ƋVqȞvdOͳ y-~xٞP ّ:J=t6ZN7Oq{![U g4Oc#K`X CO pjJV\АYa ?rl?:8(> Ɋo/*55"d֭읯RlTF\eބkPxTWفnLs34rθt(Cyp[e0l=$( rxa5 mHj;$%/;|rw*xуZLg6@3֍aoMRiÑ in< Y1 uCl`,~X|Ts:fq M)olT؎WAmq댪qvК[U8P jق-OM,`YܩY25J6] 8[  ` O\jXBZ'bvs6w#A|9M["I'Xw4ѵde';>?֜cЈZ<T5Вכ$|]`=ڤiCl|S9'.E/- rG/ LQ>%O*Xb}TFTψggg PdĶ@zR9QLsaKMmoֺ-DYˆީ3y3g\#_3.LԙxȀf@AAVG#h̻ױb M˫n"qYD KZX/ (y> W P]A ?xj[ u0j"+'tɨ^9!үF5ЏM7UoݧLjh-06xCF!1 ,rׁJb#vtdvQFvR(oDw/yU^E0t$Tn@=x^H+`lth26?CMEY/%(Syp EB@[1#vQa0TRs̥GUc?Yye| ˲ p 1>9k탁e.[=|EvwPS2KR55*!YPH e"%#w!B''guܰB'F;J>0;A1܈R+zXnX<2lG)L0ܽX<v/?xMX^+@)$QG\5ba\^5 NVO(2_?O=}8-xaKeʗog8.37VZ$^QS/]3A}g#jOh9B!']W+c `RWCj0I,Yl8 /!}s7a>Xέס^aQo޴f kDv Lk/@eۀeFx[ÈԢWɐ"Ng1IK:F@9蓎M* 9zPb!;0xOsc!c6LP-y:Utt.B9/ !^@'Z$?P=G:˕ ' :S>* 8DėwRqIv~̦<>B`w`-A#1c8߀wW!}=}5>u)x:$ 7p%Ok2C\V\r~βU'k܇#0 o6.L)g҉ĸP4!‰s!WM"GC!^ N7 [Yd?'$*_|VHM3>4Uj\D+tda!S,1K]T]}$H$؈64u+43jN5u>/V fۡvg +IG@0LdvFV_CAi<Ŧԙqud0]bZ+'П)hN)޷4z VX/s(<c> Pe}x`\4~\o:@B.9R=禩,xtś-ōod\`s3`tTOۭ=hvh?sy[Hzz 1Y0ٗ;bSʟ_pĵ1t&dܼ &)t'd@ ;c9pZ(,=G0լw^tdwooէaJgњ -!O:lo[ I4+i >s~Op#ϛQvfm%FGW8i@n( h 4ayσc 'bGa<`nZ | <57Q!r_gr}1LFNa SqǏBנ\h49\\H9##&Tr1h"4s|<ّ_-VKAw*=k87M]JeZez`mpZӬW`}ߍ#^2̸ [+GH|`w`24Hni֖ z[ya[9‡ྦVUցHЯ5J_ܛ;-cSFA@gRh:hr/.2Y;);X$7vv[Znxua$ Υ749!Uu4̒![_yȬ댹pvK3%6{A0s9 ILmPK@jMboH-ԀZFsq-. (^(ſ"*e1z:_wXZK 5`z6+0'9p9äeZxTx]%">J7-Hqt#>~gmZ w@ :N}93<%y7bBЈkѽg jE'@3HNy@#|v#{>< Xs=O:L1C @go]U–?_- 覊Y4S3qdK7% &̷SP\seo˽]'[љ:œ;-qV/S@ݗdafR!߮DNO 8)j{`DBڜ)sΊw9 C#>a#aICU.Ew[ÿ3ԗ(>7 Q[H uEzk\ LѦbE#^ͤ2zr Fd8uA=9', u*d^k|6w[ {:d05̕!C߷9?rՋ_B w|YI?E;rI N' ":޸{>w`AZj[ն9).8Gn;~sV.9dX6|$`u4!t-U\NvdOmp(~hG <ȻZgp*~,)Ӵ T'E"+)]aB;@L=> { ZŮC "@ցc Y?K = ?;1E9C]pdT# /~aH& ye= t"a>d8A|"([ѽ*M5Gyuλu5._Ib0>xOXOڦ~q]Mk6hW R|h:4nl=#|E;aȞ /X|g540#mF jGWi/WUTlΖrÿ dg }0'0W}M ;mɲC!#95ij!.B˙|жP rHVwak8 v0\i :w )](W47~7Fe \Ko3h"&VEsi+6C劍[DWm]}M[aKeY7n.I6N\ޏ,rt-W0iK`HCNejL?`:9ـ7/yX;'8z=m@ĺQua4 ?C3ʟ  dD% wpǥ/uO.lꞮ.P;lz!Q6$i7+y Q?.t Udx|GqIUSw)? RS1rm[5GjӦሓQ'1pދc#Frs3{\C ~L=hXm~Sjlj8&$5 }bNq\c-K*@0@3UQ߻QEeJ[AբPH?pΗ#1i^sQ8R5:8 o9UʡN.WmSP01 6}@$caKp\Eu+W``d3Vk/ENh3N/Peof!AfHyo_NMјZ0>ypD`&A ##X$\|[g; *[@tK# ,/Wj Kv -,9lARkQMm ^<3vSgwC:^lP \T {M(d@&bA Bw/!̤X7_\n<i% | '\Qg/qo;Ʃy 2QDjXtf߱-'yO fKʹ4ʑގJ=MTlKGAp(첐]!NPgkz1>ٯOOX_p\ Jc tL8E[Vf\j]}c~iy֘,-~*`jsr4̹_Aܓ&jo9t@ 6}Zh6Ɗ~Smv~Ct⏉G7l*`0ix0ZWYa9 ~Cy̥p~yKȬ0Hw/~EgGc3U| 2ŌixX|aLmh˅OYg؟4Gm9xꄔ6$m"KHA*nXMfM8ٗif9t[W4 %_tʩq>$g,Zb^+V(_,q%+2WeVtzwVݡExs!tl1~)3ϋLGiowQڜ >i\87Xˋ6](R)]]Pu:Ƃ4^dƒ6y*GdJt'NA-8 ]oʤ1;Y3χ;}x ~gI\SH/tm|YdIڧa-6_D[aP'q?5<'L "3fᓐ;c=By2ܹ@!R6Hu`WnMb_NWp9!` ϡ0Âc[xpcd-|owoCT;jZ7.Hdʴq P_SEI>W)dOEq[`22 fr/-֭su"J(/ZȼŊ@t)R[֖HG]Q9l+s NaD /¨B8ޛf066Uif8@\~gnThmo/KLG US8Y^Qox_Aa^)^d6H;\`*@8/J"}D=7;ZP=߭-v+xVwMɬ `REday^h`[+ݶƻQ'KZ{ @DSp:z=[ +#S)/gJ}+Sx;kk~+:^*epBP!.u42‡K-cS0g6Q=r}ua&x=L$: Y< ű.>xas:k¡1H=Qd3h/~gy'0aԭ 0v@\''1%yb7Je(P~ D3p?Dv':ᆯ so$ #gJ@IDATax1Ћ>WKE#bU4 LAg\8TSw4Sﻯ 󠥲(co6:VuN+un85C6@Ù0]4ABr95L}GBw~w[vt&/ 8R mJlB%A7a} d 2Y/y[8^%Μ q(a{p=8m{a.D BmؒXB6ѩv0_ ʵ1.'7L* ݭ{Mi5鄙<f4[u.g!Rhn U?~_8Ǹ6Aӹ8{?+?Osy>Snˬ0;w n +bzgO4jV cZ(XapKvuY / .>mՄ 12@uaZ8z5oo&t~/]ٲ'=ySY@yfbH{'5hpBi1ш6u7F k͌}Bي= jtWȃ8&~ ӿP7_0F{/J(#7HңZ t3< ӵdɫd21 i쏯YnZIɼ$ HAuR'θNhl u 0[f'T@>eGlYbܛ>τ2yxt)Zq g#!w|տy IplW߱}^[GqN$.d#r^*,RNP:EVN@t,&]@=dj]'4$6L@Xn GM{WK4(2u`e5!(e%c W _pɰ RߘEk88tJdLC5!: s5_ؐ '|t^WAĕe:%?U8n^xU 9.vnee; @$͚ !|V4.Cޢym|v[M;XBj(TWUpwV',ʐJ}ATѰ0X"ܥA3(ڈMx Ʋ"*BGb#Li~b(Q/U86y퐁i7mnOh鶇)n,@*f;m |{{[J.? ǘ4[xp% ꆂ6 F.3~ pF<!UNP Ĩ ?9'x)@̸F!?VCUߩdWilUI4WLxNS9ͣ`6Oz[~䮞%ө8-<'e%@#A`&M9rl9Yͷkz.c^նH|Z+ ϴ g%? 0] Ida oEH(R2#y3`pd|a~m{PζrPh?& Nۏo ?=nJja=%uuoϚ.%FU&#LhWkPΩdUtzlU2I4=euw+ Ƹ@ӋnG/Olm@&#;Kx<^Hhczj7<ӿ\T:EQKrF9%XWXO~ъ Hc̠`n\U# ٬'igZ >7O>'GC!1ЛaT(ԲE}%>R==4hh;ST9. ppvj;rBz!Rd(u}I͔Ý_[OƟlRRɏ(X: ,HgpZ24-ӕց9pJkEՔ+2ҋ#P o.$Vwt5z5)ekރQ}Q^HsRZ/2i+ QW茢 u$o~}_2Ko0fJcOAu )xG@<s}vħ/l=n_1`1H\W\NK\ [xH\;骞IF^ Mcj <)qDN%34b3hWx{㜁xM"xЄMl4@%d/ು [ x4rT>CwCM ;#aE~T.h9fڂ"($SP/9d_BR.ïZGH. r_ڨ&=DBV2 $)E}IWLb# YŔ0Uev4X>8`N|_qgk"_N4;n_Q_ Fdè/&WtczgׁgO%~ 0| gS&Lβ`VCD?PBjf(иWʰ%}PORO-P~?2.LrޥL1*#KIlg~5H,HxwA :%*v4ܟSמ or[Ѷl.!fsſpѸ>kYc7?O,phad|pDiXyEŠRiғGv R&kK@Iu_&88w,? 7nLU/Mlby ,;bJ*'~*Lzp8~gDc5 9 $Gz^XԺ0ڥ ޜW ڢU0oE h$2R-T-*TSf!r pRD =!( UeJT-uU;h@(9W`RVkzQOG[SG:99;eugAdr&,++ uc[,nLS7Ћ T#un|`Khe>Ys#30 ^[ ('CSOGAs@^E(]^A y>żv(qUoXcXNw[,y _S B/ ]0cWfRmiGy2D#8[>pR0}_ny8y?nlRMޭ3= ]_oqg֘;`T DB`0m0>896Z[ݹho^jsڋ+yj?Mg91Sd-`UOxb|rX EKe3fKQ+0J!z"gꏥ>'|&wO׽[05c<ٱ:9gF#-UѪh.&xɎ+8e:o6Ʒ >TSZtZ?54~U]HV~ =LF%$q!UUjRbAP=1MŢѺf+r! 7shd1SC??k7Xމ`) AmY&,(G=/Q/+sk3dod5el+U7ëXcPg l{".=34 2 `Z| 0͹Pf#¹"`t|O~ n]L(;*Y<\ ` hwA;!jh!nƯ Ŷ(~r 8NE[`(̈́gei6;98 2G2WϘ[S\)RHG@^ 1Գ2>ST%y} O\Z'^i1n )i2rrK48dK*]T%:_'59pLr&jL1V]oc9q݋/cr 4LwL d(dæ~ n];9`2R5qTG8Y=GM *vA=2р*Ui^@kbi+&^WՆdc+0Nk 's9u+D/M3RF<SC{jTGs0o`xj" {x94˙c@|M m ?{?!oY,\'>jbi#p8rT A6f6bn>J'6Fz%>1HHkϨfdu2jf3#x@f`y Sy\d3)yn)Z^TU:8 ~y1N,:OIY27yD!Ԁ{j 6onr)AppBA5\cDˑ>/)4smviLUҷGe[S{\+n-_Z &>>R377 p VLiR˗Yիjycͤ[ h 8jYF[-X|1x.9I8eeAe4伺Ʌ^ ZzM:wQҭkll/^cԻ#Wfp EjܩrOdGQ*d 8XvԮiKPfu^3]ҾSB˩(EVݵ?5_U1<]kHMt/\:Qi]I/>ޔIڂ$9B˅ B`S6K¥61 t{¢RR8{.ZjFs0eXg#u2.  yN@8Xu f] ?UbGbɤ-']o 959KX9 @:5`G2U3c0NxɬNv`t V+cgOZCoyc!uŦ^-F3:oV)) ;D'@Qmղ/er1e(RAxzWk[\w5POӾR~~.!ӍK1J%+r^e}Gc'\G`xRaҽ)GliZl5eh0bzF;5lubs[8&~Uz7B4 auܽr՝OS};4!]z*@"UaLWe-9`_JAKOpv|1qhI)dR=F1 R6IW{! Rk[ds͠6%S⏀%,R ( H{k:_Mg\S(8ޕ5#f_i_Y6pԺ%%` ^X@5hWө;1;(2EZ9 +4)xq4 +4\NHEv7bրOA3GxxP~h׮-dЎ 5-3s+{@L+pv28 /a0}yQ7T{@òoJ0G~' 9t@XN:ѺWDL$k(8JraGK6=jjo}cg2HGcEFpYnѲfQFkv:_IՓ9G^G {'~_'Ճy{ߒIq2> ůuƌi9Jw#`W7OvM'hT6cxd/ R6JdFb@X/=b T!~k =iomN'tK@j8Q5?bݟJSlu#jc7ݦ03, IpLԪwI"*g7>޵XIۙ6Ny35t:\UiU-'X,^Yo:KJ\TtjZ)YZA~^9[u= 8`ʶ$S$S¥/nXG"|s_+$y{憅Wǀ݀Vϼo >{,bzGyL4LnswX5 Z: [ܱ>14l+`"0-t`爫IZ4~أSW fS62u9Odϑ<6}ԉYFu;dH:I3qtJ@F-L[of:ڗ5']p gXٵjFFXiʥpKzJ:JL@iм3;vu}k&qD9BcV"Ӧ֚qB -b($N Ɲݏm|ꬫOߵXi)7ŔKHZee / jFv_fMQ6ԤS! n#I^[^@é vӼW^؛ >n ccT —PtL%1stxBu>v!LiۡxN`&6<^m>da><})\P,VV ^.,袣h"E>mRjxYuu?8Us *-Z oz(&ԥ(qFa;N X7;ޝ~20tu'pxQQϑg_d$F[n[vODomFa#n7ŝ.n ƁwgޙglUœİ[ @qQG@8)5~㜿~}yf{ -Zp8/o6j ޶W7n$oU1"Pn2 >Dta+^m1HD́K:nӚ ^p]Q>+֫2dN/l*c[pS0Ik`DurHaq*EW?xշ2VD`)I̓¶ XE"T<# Xh}}+-U[vL0ꂹWdJJ붚].`.5HE\EHTʇkK~ 3NHARL{!S#xleO4 Ϭg^jLĂ<}9p+ ]v&.,vкm2 Y X a084&3WPSÔ͘ikyypLԘV__$ j/GSs*w yj|l(Px!dT 2{!X"9\tbI[0DWB^- (FkpR59}M_Lbty8~nd0]|vƣ{+$ieUNHzi䠑I >=u^گU,@5k IJxYD KbOr~>zE=B(eePmtce/-iϞ0\y㫃b% |ofIZ[cikI_2 7RGOiI|}A\S^F~Uk6Uh}mVlw(a(_]ȰFW5 n#lj5rռϜ, H.c1$?n\f{8n#Q^eeRė ikc>YC6xh/`݋~5I[/NEj| 4Ј/,phV l0 +1ΞT׬wOqPļQ`$ 5DR5$V_?O*g?'HM7`]$ 87^{I>+~&9 28ɟ^uy_+Mï'fZc@ho驵+ܫ[ΫOXI+''R(y%}3'^ủO Vqb>U7|Q;镡bkxF^\}?C'_8nx18"ߏ8n-,UaB5GKZ݌^i_+.;+v.?``c Un.62)7(3;we2A,7Ntt6NԭU`Z@VpG~ qBW #Iū~sy$ٸ|pjW{[5S.4ll;6zz:[ݙ$z" @7`LoPi٥\䐼Ca]f)Bϫ&cg,{&ma&)lr/a0rgW,q JzdñmAJPS|!.f"Z@}գB_4zj1䱬V̞U^)(oC=|fZ>:~ouMMAqf)JOC}o(E \[o=4,W?8|Y8&b4RSɮdS>;2ƙdaGoosT(X͘?[~`In}KWNSG%s=1'`%p֒:M(uH!L 'Cz22q.0RJl ˞eOb9Q8|FBƝ2ȺR"=ٝA܉EĬ/A@ fīXʕEѸDwԸ&=2 z}raMHwM?,F˨#:Y dUzDuC1hWނϘ+Ls~2Ѷk\“YJfD`9}#T|}F,3ҿ/ V5>U#U BjpZ.}4c:SeՒje-yhF,.bHKk,:ԁ% a56rhrNWAYȱ#ݥ5'uUR/7݁eC.vW.D5z>sa57ظdE݉ľ\v'|RXmRPIKL:6q.& k4V@YpM9T2z" $Xx{4gt/.9?&@N:g.6dňRvZ_x C&ߣNc!ϗ~ ȄS\$x +>Jy)*[Nu2b7gPc_:|xC89}xbGI,.W/Ű9HS +V=X\c(:Txlku^N5\ie֕D!'8L|R9JѺR~+G~p'k9o&3۞K:Z2+_լ,ez:cUi8BxFƠhe\dSICC&O q x,֍W=\q1w(Ɵ2WWeGMHKuL=KpsfK.f@&0̟Q]]rxCȘJ ~JC\wGM[.8`9ԙ e]Jjq=_>0lb:B J /*B)+\ز[}+=ӛ;C[r&zd)Do\\)|32t!$ԍ\9p=NJF:尿RL ,(SI>2 ZraL_~TWW1]ǭ ﶙlf#r$.(P@ fbUO 7E4[_&S9&uۥu x{LR6y 1-q[`.ۿf@b_1r(!.t1CH2r\8p 쭺.cYӵK,uUh.@& P:}* wI`鰬e~+''wښFREQyI c"C[|c8MI9X'_D[ʹ?@GV7^&lY TaѶ/@S|+=}35|p lv8tJKL|\b'V"Wi-y'fs0|ؓcZ~{#;qϒ a6(O>t8rrzb_ ?q)FMQ&3_/aaQ.:;uIGj@EO9i>z _ ЍN(7Iܻl*jpQx U P+M3U5GE$\pݪ)eP+0i؈?s$k}@fO!xԽeWgWE#$H#>bq4?N?Sh,E<^ס4/_xK6tُO kvy\Gm|4&ӳ3͢LFgl0̡Nwz|9r0^`<=drp,͎e0(لJ3_ԩSU P81w, j!t /Zo>nqWAH9~{ه#*#K6}Ha{>~Oo<׹{|Rכ>—6G/JtWWT&cY ƫ k7eE[IXf^rڎ<1V}ſ,h={ݻd+$_)0ANqUS/'>{ФgN1qPhɍ0Y (ލNaOxHj L#\/b '02R9{ºwA f@IDATT{EV50T.x2_{ԡDZBFR 7CaYd:V_I'yٌ#grpx,z>VJV?b&+\Pݺ|T{"=k7H%9#0<]2<4/\r36z+mJ\ô>1O9'8Ί\9}K"G,ϽKC#/hMRO*Q0On*3 җ>}Ф =l}".~qAs~Z@I]Ȇݺ`gtE q![H~_ GqCY]v1IJ#}?]6mV0kJ.I֎1{AI =upIiSPU Nnu=zWzcv&b씇z8ӔLk‚i9rַ,ŜxsxPL걇ug]xNe5y5TUoLܯxN֧&$ŅU7K;=qcޕ F'ta(3w/frυ#':S&1"ɕ_=l|tQ45O-)̸KNSqZ{)Ub u\ joXH;oHC{$ 7#܋B6ljy.GJpM_cbu>$Yѣ"qF5O<`+ O|%|~MLܓ2hPXYpE|x^68[t$#`E c'|6m!$oȓi/$@X:֚븕ZDR$rT`Z3(atn8t]v^0kE⸦a?3%}HbŚ@,kYv&S̮ڋy#|6eSݟe!Ǥei?REZ?j9THoɆ89@ۘ@s2 Ʉ.X.mZ E.9󝆘=l4snUEޞ|. y.8/28*hZN8&Je"󯌙>*Gybu;ִR`4x$XFPa 6C9 'a8Md'g[[tj$i n78rԽ5"`Hց-':y9dGy*"&p7v0|_\Y)ixS H ym؂1uyE>yWO:??@aKgeh$g~V?w0yT,c륬עlCá)Q nb\7َIGilGk TWw [G[68++[[ȥkhw}ܠ 3B,*NW@W8Id-3W+kN~|PgS^QN YТ@dG,Wul똷܉lh ĦQD ,Z[ɖI=Fƃ2z>uth #i %zD%Xz''! 03e/pVƧbxK!pZ4g2K|n؈O!*A"|xG^a\3LZ]&Aa]3|,r/nl7ĊÏxgD* 7vѐAGm>k??V&;(:d^>Hn1'Pi4iiXpV 0ـt͒V 4)&a1Ӕ0F޵"Tie?;'kji MͯbubMG)&*hцc<v2xrT|iu?*=U)7}5.)^:8CA!<{ΞTjdHJ-XԊ45[qZx8Q=81s&)ókGy pGXF5pb.SO|KG@<2PV%3Lơ= t': 1/\S9^9{jX$~E`K2$7ݮ*y6 1MG1G@Q*Y__iI :a_T?#)\nl5=%XtZ>"tOϑEлXa-!'ةxtkuYa2Mkaٺ{lG:9hÐ0hn` ~ܕ [LV;asӾʶy[vSe g`eT !>-)'zL'6B, ШIG@z `h)e= GO&ATd5"Sgm~WD-iv% E63? i,{؀NbɗcŇUd"n P9bldV}B ZPX|sV}Q6KXCH'Y*kCq]s]#F g b(Q>loW0'\g#NJ}jW,reyu %0ƲFO"c7x=M sW9je*d~qFi\z21o *@ :Y|G 'G'.b:$##&7 1g]h@u U}Gn;Zx?\ zr!;-KyMknyTPotvf>H pƒ_Hvur(Wr[ݶG5A$>?7V;^{~>rև?Bu^=6Vo/rh-#ui{Vs WLehqJn%6ʨwkL^rNq:L[4W.#7,Z^~ P|햤i1_{:Wk_ܻ}6߾rRmxW YyQ>b o@S$AP#t2}hU1ݬl%QP)дi[]/>BQc&^޺rdDW + M#G_K|ȐP<5p oG{Rr9PerL^=,Sb ?qϰ|<D^MKN)[׊U;Rz݀L &;/a} vC F} + C:!7xyAgQ ~;5c4|rkfGLa)iXα zEl"yJE\d\ >j䨦I$ +\swYxd651Lƿ_oKVjTMVdGS6~B([)'+8t)02pJjQƟlD9x@c͔ϼ-@q[>uċL*_x74j dȊ [KDwa fI%jj*y8緛޳/F< ':&_?[k*/Sa|˰p욮<[Sϊ*V,pbnw.[q/ &]v-CaHUi8:ռLr x<x Oyš&SC%6" x /|w,ΙZ] I 'r߃LamJt7f. yk]eE 2A+;;{Fﵞ/ՉF\BLǀ6hNx$qkѿ fu;#=&}v! $Su3p*32?2f04,<'|n.B E1 s le7ƿ\D&Ċ'VTW)OH)a]y,q@'@2fLG̻?s㚣5 ;\pe{ê~9K&!V9X PãEN ?jDQ6NE0پ{pZt숽x!h8 ! TU|fJ ~c,p'n{ՙoRYΪvJr<&57rGZ)7P/P90|6dҚpˉ"};ہ4GqXL?`~$ix3ұΞp_2#R :@- ~ 䉺:=ˎ+*vbP1x0,2lwcо c"0P5P_d>/ڨӁIHKh᳓&oE++ymNv8ZDTEiư5{cqDXqI1'# [mp7JbF;М8 S~ `U &+{P=WlrxszށWg6{+2wFQ/ @=!7=NLplgbb.#?+!Փ'~|xm4LO7V: !Z-mrAF쟣NLcS,&nģ*,:tu"7AGEw;C89sq꛰|6&d}9da6~vG&#We:#Jgçe;f V7հֲ+ LIN^ ˀT*@$[у폅BfȐPտ'%a k[wtm;|#a=v!9!G˶>=j5AȾ ]/ӓ'*@PopIp2<| j|-Ҷ+D򶕫`9+!L3Nڱ_^Wg ;ۮiKZ9 @},MG?1W|OߺT6z2SV8*We7;ߺ-/]JpY9|7AdLMjG &AIi<*\ݒ B80'\EܶE[cojɜ@y0(xlڵӡu8'ȥE~8~nj1,, {*!@g[TPA_]}GgWbݱ(H%S)k7O)+wڎR^o747Ἐ{ƟvdXӳ1OCyА}&y1pN)pRo8;v8z L|XsE !Ng~ٝTˎrҳ;%-'@Q'4wuSo?"HwvwՃG؝HsTKSx=03F:p?޽n ZBE(c8~iX2-d6 DO- M˾cCqK.h~'@F#ճ0aLUGOJ7Qˍ[pJco^֓b'W҃-Nt劝/+ Qb#=W8/l4Cy88$@)Sc{[NnoLDgk9/6hx>{>F˟QיL֯n9/oЕLMI+/<ت'Zd껻LuϸO]vM|G\ ɝ &.K:f矲YLPŠTVIrr *!wrq_n"?8G_'Lğ~hHߞ:2006,i)<£xt6 ; >VSdxOmPsg}2͵`L)ܾ@F (?xrtz"0,`k&*58x R'{&'1d Ql\iSв뀵s`NO:jLI9G75coǢѷ1vG2F`xlۿ;sY4 olljokk۲;޼=3z}Ò59gK:?G“>6{.o~8(ƕiԈC] aeb?_$8Q.@#"gIK 4 $DVwv84 lB{ Ewrͻ$LTDATD̊bDAOs="vټ~3,TvzW{UUwW;Kzc?!/or)|V#}6UOKJ*j4j}>ud27㱜 $A /3TŶr餾y# +Nu+jkΏ` thLl2k[y\ux&#NH.Q`Y47qG&!|~+M̏Ò[U D=VޝEW*t.l.f⒵ on'"7p8*l5C{Ց%9Ni&J,wGހFaH &G>ۭ$|%p?z恷ldMy _8| &΅bDx@3 6?]PGsj=wb1GCx >b4m Vt$׭vN! F$t;s\3l?m;\ґ̭ԜJGr}!`x[7~ʿbHx 4G}ibo-1/*8Y1Ct2*fReQx)?\\ 0Mi,b,+PbFK4x, :v)DNVx>8 ;>ۋk4#m]n ,L[x_^_8QI9fްl|Wd/(#X3C/BLkOdҁj1=m>#g1aÏ>7^c~69W|6W2܄p(7}K`Jrr({윇?hC*H :!t&cUﯮ'MO[놂h-a:5?{eT`hq9&:g"S?b?zo f37 ´2CGH &\`d0/YKu3;X\i?);ݸLuCC;w+$C̴V'p;]޽̌}: -{**w8?<|hAZ>sD=`Ry`3[K;ty?_m6 ɡcAߏ9/ol V = $ J.m17]OF"U:XɘXhfgu9ֻh(t" <fQKEڻ֟t’gx޳wvW/m_Q-\ZͿ})89l^ũhbtԉκnB.>2bYNc|փ4,#882tg p}%kf# ٩MW+ s@^/'؈vdێt[Lg,xS)6[^9XnR=nAѱNx= -> xO1=v֥rF!t4cL,2祥O|>Z` O;.t8rM{ .4֞m8<e];!=Hkrm 2u'ܹ|^#햫󭖯i Q`Zk˝מ|l/,_\yhY6\1IƢm`NʤjMށ^Mo2.AH2d- *ʄKOYYoΩt1 HsXgڋ4-xj(C Yy߸"!YeAj ms'"N,$'|4%dz,"H(,VJSE Mne}>k Oq @>~'Ld| wc1^<! }~)O,OS"l"u,6"1llЛL%ic%o<VfyT׃54)ߒBC1FkNNF{h&#)m77r΃P^Q}A8:;%1:v WO-MIDD ˑ0^dh:Fǃlѣe_߸킘m6ils5f82#~j|^-`fdyM[|{U>2&ہL[g.ĦTM8Μyo1Muk>P&;BolսҒaJbG?c" ʦ> *i\=BAxJ 6ͿfٱV]'ܡe[U1civԂNt?`$J"_Bq:Q-f'CEn{`WR-xgVTKP8g"{29fT}w`~mW"YQ#C8&u,<~W촢ޣ^?p4_7;qrŹw?_EZ «#փ=gC~+Ƀq z N`uU*~)Z]):EG%զwB7ۛ;;jrč'OE'(\P][{B$96{$nFDߊN ={.q >%8訡L++)6PCi(}g{QWc{×C~MQRP qQ%dr喒AB7xii:yFz+:&&NX^QwX&i\7H |`ehDųnxG PvD'FID~&DBPe7`(AHLu۷W^OvTOS^5[R.6g6U[~ǎ)5՛Ε$mm*]},NNǴpc|>=p֞V i/|e|?pI9 ^WyVP]h 9_o^z9yU :T=~.-]A;f;PO* ,^خ/;>Y 7No:;58T18?BWY G_ZItZIVnKƀbiQ ot @]3#MG)\plRXXھH{,配=eew%'~pl2g1rqM`!7|*D- 6Y 4$a# c@έ=} eNGpxxG{GK 1?WN[rnOmoe{ʊ[>YMUU+BH8Ix0t#:OD Mw+lh6KyʃUS;W.+ !ȳ 9XeL'}l?$04mj}Xi^q|Sypū X@gg.] ^k PvӶVB3d^aB_S]ڼ^n]~9y5||>yoavʸR*㕷 g|ƍ | ;=yQ삑 }p=ʔTz3&?_`lr-P 8 `1[_ykei▬oI*+v>@Kb4[2 gaUUݤL`"&n,Թ׍ %dNC, Wb%)ӬXJ%z$1)Y,lx+jw4:a7 L7" 2yE/E"cu xNI(u {hPc]|ވdZG~a肕6n~WW%@AAh "z]^5QӄEd̦ W}cf`V:beJ\G,Sɧ5PwF[wlV`lҫZo7_RȀ|SKWW?U{D n*;JqpAn)|BW7Ϋ  O& dX?{+&?X?,-TBa pƈ|8_Zn_\%mҳ,'f=ZLO.eCڬZ[u2-ssc{76.Eh%4VNqMoWE#J//d x//?1|QllbQ[{n-\􆮤ߛhF+4 #{xB+;*t\ar@N_'!#}6z"#Y"#h4E̖`<AOC/4|9;@wgLDi "vc/N2pkyߔnM&= : : uU|ȟ9ƱHZaF LNG3:;U`Ibg[qW׶l[6= -@)[^އL˸PF}M//KJ 45nWїg;bQՇaL!o3,lL-{ȗX.v(S^=X1d pj#m{sηDá`2ۼn&/͊F)1 k'YƜ=9טt$yeJ׎ulBIzr =ҍw.ozBAQt.gW?&',N<Llz>{a8+;sx<塃y<OJ`RH ΎiOok3뽓tЇY6 ox|x'OxZLW <Hy|[Wy=0J#6m9ݍm׊n PYL6݊^;//̮/Og9ht-0g x- K/DPOMObF.>79c[=nsKeXy 10*tH;leYF\OUd4Ca_?07>zpP?X7pn"y/v2[i̮Jk14X-_=ֶEmaE-ڭ\0VTOu'[sr?N$F:ȲY`m#G/gsp3{)f~2m09g 3T_~n8>^ 3NDd4vPQ^3fH O5X5Q%0ŽSTǾVvBF·+ D<0=~W(4*Zyg¥eJ cmԆZ [Ϻfc_U9iuQUyO8M e?>Ycvq=Tb5(p:Y:aH_Sz;ïgTmX-4@F3`pzg1۝NwnĻ1+G.HgcHYi,U13 lN8Ө. 0*_yOraԙEpL=y[ɚ@4z0ˎx_ݶ$چ+vw|_9_tlޢF?9 ~Lm@eft8`6?uF#t+BYct`Uh]VgoJ7Q~4A/?m@Ç/X"2w!zT4`}H.:]9}HTϳ5ՃS \௾@6}o(UJaKL|7Jهb;AZ7N{6lz#"e{ܹ01wzRJ'ľeMFgt͜ &cUw5HdYF8:vC@;.tBҧ|ha;_CK+IOy̻{[&vA?t%AR۱ )/V`QM?z*KQr[(fHϟMjo=z|e[mZ-nvW}(M;$7Kb59iw4L+ĹFc%=xx e @-pW2Wݶ}/H3~w\ssaN\N*v[>1}B|}y?m83lT koF`<#q"/ߙ= W|:5y>CVS\۵kĘktysJu`9QڊgaS=6P_Wt~(5wEb{$ՀtU4/lc@T{VRע=WB٩lμ FO]\`0JM#|Ee;|pg֑yu,߅m5*;~jc$ al%S:k:ʊQ^pLrQ.xڝ][=Zf!Dܱpn+d@Lj>?#/| 3P ^,1V1N֯9IDAT&jlLxizQm.y!D:N_B&b6PVj.Ç6+;0mimP_z{˶>N7C熸? :x.B#Yӎ5 /vFou_t횞Wtoܐ %oI`#/!k9Hׂ+ 6W\HO_FįiΝx܁ 1$4x,G9<*˿pܭ8!LLK'sARY˙?k̛O>k'z)g ZL8Q^ ιh@6q &>8:kf, <4sٜ=5>y}ߪr tr8"4?:ߡv~ ^_K F$JJṳ`kd5f0[\h Ph+Uh/m1Igr#*.\~ȶl)95nBIm]Sj9䳌wT|n>#'x.b몫W?O8Q΂Ad }h(ۯm 7S~a]/Voڂ&gɘئ.p ݹ?8uDΙ˪fn@%bALaSitNZ>_k/N)>Х=_pĄL\9-,)lW1-B}ΧCŒzW"+c,ݐK q[enYQj @jS;0`8|:{]Iy{J :Rw D<,Z:7hS]>ry?70 I%5wBшx ,F*0NnHs0 ܓgp=ҍl)Y{8HJ6! \<5 'c߅~XXԄ5eQr<ÿퟓs; <Vι>n Ae |+CcU04Wda)vԓ5XE!- - y^Y>+v-_ۆ-NᔩK=@ʹQ:W*ɞraǎbV /v a 4k6۔5iQQæ>~Q\$$6?+JzCz}g2aGq fjҸza횶<*H m){> l?uz]j==ӚamY Dbԭ=Э ɷoO`YYڳ6*J&irǕe#(i VW߸AbMlh\  @8MM9Oz^l<% oSi^B(?rO8I:X5{ˡngŃ۶wgi 56Q%s UP WULDԖP+=|C i7;8fZLl_ @WܮSoʌ}M[ymiumԍ?CP a`F,autgO|}eiี{ry46PA+[lAQh0tf,moN絍)Sl$lJA?z%e[@Z>_ ڳXP0(q2pa'.{#3 34o|3~ȴE4%cK?Ύizx}RRZY=Tpq&0!Fz=jШhD^V6j[ |$A3a7>Dfr_6:- 쌅p(tU,U,)4~{͹97HxB.DM3̋K?+/3Zq Зn],h;$$8XȠrj)*S@y\*l,nAoT3"+~nH2gYx> ؙNM4a`8]M*#[BňY@jsv) 8ZPbgG}T[0VIx̏+j6yN&Is=;*ȤzMz_*nQo Ĭq!f{y/d`Yo<'[NV1kyɴlyj$\|%SHֹC÷AZP82&pCFGD|.$j*@$ByJkyzuBLz悜[uc_76̺U]w.^k4S-;Z֡u,ZyZ:oLOY6xg\?WT|QV8V 1Yo>7=2r>< Lv2#<ɶ0Lh7n﷗Ne; AkǎͿ;4S3BTf,GT 2mmt bv+o=Xvxﳀ}$%1|^XY坁LeTb_v* ʳ/jUs#C :3)uĨ7lw;2kF G?Ny{_YJrD b"BXXph)K7LA6~ +*> b %tc"ΠEZe /?;;F^bkl||mW&'ir5 #hX`_ѰycӊQNƪ꾵 _Cq i l~yrh{CqlXiʛhNZۮgvWQMEsN7h-OXZ9#ӗEE 8SicqEЈ0Kѡ :]n~f6tlޜh\Y#I\]?r{8$; # {!p,4W?0nUիh#Pa2&V/ʐD)6Ec{giHl>ixb|vĠۤvԘ^ioe{:~_Vz?ۃgJ ߆ '؜'^Fl\0%VJ!_\`{6+3iR{r'@J,=M ~N&Ǭ#oA"q!b܏%S1rwdE]wTìU<6WTD3jhU<0b0JNsfiv]ru{OW VYiP?' 9y\jnKw~nsKxSH)^oS,v~vłۼO;vR?bC<4p:l~rjB$[.2z _@cG3-pӔ+Y{<@tnM"(\% &d)>#2Uct[ ~|}״gx Mf[j*}㽄fŴ0s *i#VE,}x}c2fMzXg8DU0pBqWcJ*gw,9ShM+'vdXJaB-8M^taFv> 7<'3؃5>}~Np 6bAS '2чPPxڄ!W f댖لБ*X'-&#Kf I;&TY,: 9gqYQRʑuݶ:;lPm*1ٛSd`6vdS`:$x\m/6଴7eAMfp Ԝ!Ӯ up[zdAKڥ1@Ffa|q t|bOBm܎ϸYYe8(" VɳXxvSYW߱dc#77bd/V^ po&le/!mt=9ߕZIIbƑM*+MNRti <_-vxgrt`!-&f@Ktv8x rb0 <$ٳngHfpӌggT V$ \kU*JPPyje3E0& c JPq.6nL8K'1˶zf |cy`+0 vMejn`6ST.Ţj+vnx%לyrWS:]`/o!S{rGxu?Y L֖v8iz?e961@9#$M&Kh<㗡7^ܻg8w[y֏n+LeUZ"P19cx&gg^c)Cԣ!8;9.i֧v5g&f*-R&Tz;|]Ac)s hA~ 5u˘iwz{eaw5PɠLvo=/ӭrЂέiN <)4z !B,A7bBײ]u9.w7]ube 2Euʶʪ}]=E#MbdGeA?o 98H)$v5<sz5wڎ,얯5^e|MN{Vd\saxfzoOѮVex -9v~/X^zuҿ`O'!ԗ LؙHC*7vO,CgcW4ot&\OL~'+B=P_Y [kȻmfF?Ess+3N{Z}-e݂V<N-* WXr^p\([^p'W+k}lyom (^Њ65[6{<H@}(ծ،[kغIp2VOT*mV~qTo*G*M;[i/w۹Z]n}ekhklд%_E#&PeKӦwnH'7mg#ao){W PL9 (phہ/?L7pVW&` E@٭hOH2Bv~{I 9OEc|CVZ4~qY+КLf=۷G[>  nJ Ӑb% r~3~ ۷{#图qlADJD>! >1m0js{1 x?}P cRb|4 aSPikaٻ޴@-eث-0ηϨxюN:-8Ch8K bՉ*)뢹.u3\ᆩK6qʼn4',m@q }W}~>v^_׀H8x B:~h1KNvN+?2cޒ;w*Ϝŋ%ptX~V}1A> /bPh1Җſ:=ghx +?FQS}v8^X (vRbr2q[@,u-'翫;r&?j~Ϯqɴhs:Wr[ؾً?/)|2SN5mY@-HNZqH)rݥUo>ީ8D'0CSʬ^$@_sMy#3GM]MVᣀqF VvQH$pʸLO"uRx--AZ3Zl_Zl+v+Tmz4 q)rRV[惞}s6mKENZ[M/MvG}1ۻ, {'̼wY oD#Fܟ `e-&EyygGjkRbo@IL}r4GO'?[P38A2q>i'?Q3Is3Gzzlí3vEŧjcJ^n1BJGξ,&d[jہgNԌD!"oĔ3Pt(/B4?',NÇ WleK5^&%*LëK*Z.WE xP@Zܝ]Z^{ (:zm4bƐ@w,-sf \ǘQ7Te0tk#ʪk`)O$[ ؁ 켒1sneA Tqokirz}pʔ\0A/it];gri/|-0*1=lWr ɧ7GgbI].52+{A+1Hl9؛N+6/mյhH'ph?1 >':z5Kt~a #BTICQ1Cm/NZtYU ݣW^GV4wސa̠s7:=G :;f<_WV<FO;H"Ց(PO+=aE6ǐseN*hIrQ+!oB)I"W"`Cg6ߵ2{#'zw7sݟ|7nZ9Ϧ~[nSuK}:Idy\ LU=n7|Й6ܭU#9GĤj5r.%㇜y*}ޙpxy31P?i+ +;{#S6l`Ίt wU?_6f{ Ӎ*Ec\̚g|Ƣ{`8?OUU;+ݡ=#wh4hε<#DdrH, yM~ qO#h^2x[tv+"~WVd}Ş@5#@&|KG\"l#d ?[ƵfD"5U6F6~{W^U[ҘR@$yW>N]}7SG-j߇hLq1_GxsyӐ6= Ͽ3Ѳ.'-\|*j6Z0CvH,P A\V!Vn6LuQagl{C|͌ TU/;?غ^10v l ^>u>>DBҘ#fv=SvWVGGôrl7-OK@gν7ɵْG- ty!95cٯ6OJ$ 9<ŏr ]WNr\NsCtm5 7 }ugqe:%nGvhzVSiL O,Z3f6/|k}cY,+>k->ă(4ouh7qWu ]rߤ~uT}`6{lhut^E(֎0ٝwly͎9/[@峟Cٽ3N;Pe1@(".<4sܐIYä{ZZ*+ৄZH+NM.v_4{El&33y^S}7koxmgۘ_YS\(=+dX᭠) {oMY  tKm ,_Nti[}]s.YE3s*>W3~ai˙ |tcf<j^ !=zPUttco{pnO[jb Lm,- 埱? :s]L4p%M6tz2qkOz՞Rv N,dsf?T: VV<٬a!s?[0t:̎V?1SHuVP,Xm<$ܥVP$]T#*85jie iE^8Y-FE.(23pX൜}?: jR1XJ&S3^ﶽvMhև|))e:7/w>˜d,-/X@ -mmu#CP(t tF]-Pcue~ntod_ 8 OpO)߃VB:Imkh^8c6=ax)'1KD1񙇘᠂zYFW(o[㻘gCg bcʒW,Miii泀7|Zd*[ZYX}.i/D$d1uϙ4}F_~`Eu'h ,.IzĨ L"-2D׉6dzWZ9v(/W\qBiiZ@<2Zֻ?3*FQ/h#^ x-2@ Qn]3?m'ʪʪjߤW,A3> mi2fTGm-+v#,[^=WTWcFq-qs;h8d'>@BY6ё6ٹh{;G*2TּBQP&pjc0T$L8}5˃"- ;mqUQ^x@X \=uG)khxPy)'-",0򊿇T ?,]m,.=9c Y?D_ʅΙ)ۡd޷ѬsFAZ`/槻Oܦ_¡`믣>U֩z5kOfHXp@k5hˆGbV·ye@SWX-0Ic.Sih{yMv$s %XU`1idiem[x8UHZ`ﱀ [{cASOXicurPOx?CJ„؋@4LF_-8iF?R -wY@!Ѵb ج]0)i.wY#Ǐl%=aRG"6Mm=Ƀ[,)@-߆M?XgtagpH|<:KF4Ya'l0s 'g@3 9;f{2fd /ihV^K7ǀ4bA)v_'?0tA',nQ0@dZ$űQ-qw_Ij ^}z$fyV\B篱$Zo$qaIENDB`ic09`PNG  IHDRxiCCPICC Profile(}KHQ?cD\ AAԕJ. B| 'W!\&I Bp+Tv㣋n]Vւn ]"s3)=|s3g߱TAvɉE~tmZE&o4|>{~2r#<ZF&SE ᰥpUIi>~P/4'<^O4=s$I+m[ Lse6`ʞr:cIb$(%$ۢU(8ɐAD%Rb~!ws{u ~Af]Klk=;жe:fUjK{ybɐ7}0 + -zu/\ŻO0-eGwh_ae<8eXIfMM*i(0@IDATx]E֟_I!M6Jppzh$Hl<@88r.Ivw|ׯzfvtիWK@E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`X,E"`,ұ[nEx| N V!q:L:(3S(>dE"ԲX:&[0l6eMB*J(,vqQ1iwN =a8P>! "iL4So!烁(cA.. |s'_+"`hG`l"`(F ux2|z$l 6׀]^ZC#qlj50]3~)KT:)ɠK"2T* 4 \od/ ͅ@|)eEm๡m`Ktzp{EU3{0zh sXS6H@q)g$G3m/yș%Ά~:P%?T?I|1'c ?9'm:<rKE wBcE`"s-JXAVB&^`ۍe[]#N΁Z PX%q3r::bBY8@&gU+:3q+K$w̄5/{#2"`XȘ[E`ixpšy!bjE 0`TJQV]J#g9nG0G; tMd1puF1TO *v8SX$xW wqKa?<~CaY-a9-O3Ƣ6dx8c $cOt0 `)g$ 4%M ><`xrDHT6l nE`JTt`=~Ig.CeS?"ƓK2p g$^JFjJ 7iC@!2 6nOh&eQ2Г0E)b8 "FS"˯"ORdXPjI<ʢJxqeh:pF%K$|R%?L)MӕL#qN֙>H)oNNU"tuΖU."k-#(cGU?(6,N"KҕXITGqdy.G!ދ)c̯]bͫ~N/GR P`>YɘA)7ɜ"cn5)%oDHؑto|b:sJlF6dr5b6D3,N PEiN;||p>o>8@JԋK1 /';خcI#ΰM@~rCs]ɖsp> vS ềHn{lE_& r>"!}0rc(>%J%B JR = G)$1Jy$ͯNL_&Kx.9\J~'[W@D[4 g6G@zWV"}L%tꯡlnk+ViKvdcEl]=/cDpssi /Q,*6[/͆p(30|$sv/Ė8wh00-+nؽjg1f+~_%} \@f>K| Ir \=NzMH!-V-"t`,삕T&䮐 w9&3ۄx$2H6l&= }.0Q!z a瞧*̶V'gɓ*QNʲl'.@hցP얂%x_><>v?P6,KB!DjD00ݏ4^y@vόV$SvLpIe(f0 es ~mn+8X֕Nq_Q$wPدXŵ2:Œ4H2)惘3o GN p"к-ߖf(B`^Uxh2=3Z&rLM3Sb.R֞GwN2H,ICQL 0ZdKk l}^+ܻZQ`ʗᶀtJϭ@Є i:1H&0MY9e@Ckux}'5mnK:7i+ q6֑>b܆x3a+\edrA%!}UI{ Lf Uz#K(y d$νxrauA՞W,F[4w/fg)MםVթkʔKiRRi;{_F;8^EE*1[ V8Ez.x3- t6etIVd?8_Ja]}eO6_""([W\+"PXQ]p}(9;Q\5Sla52*6NWTcRDE|]>ؔfÝYa< f󃱗Zҫ7>\ү2 J}t"*G?P\s_b^kX>|lDx߰576Ŷ5$zt@Tcrtl$ XT)E.02y(f`n0:P)ګ 6@'/\A\< 1u(8y؂?LPZ .T-E` U{FcpŏdHF/T 9]!Df7@66u`M4Z1 X}x-~, yyHn;4(:DEdΈ]>y\O-`,%#Nc=׆3Kn?ANo\ Uw͗dS-K. 3?30F/wbS)0mLFh#p.5nϷdt ~xﱛS3IŴS7p)i܍",NH~7WKqZE`e Ly}+SA po>kNLS=&Q5|K1dA- 6 97VY3~uMC(\G-5QdIk#79@#QdAWgT'G4m"@bh9XKNg/չE46OP-ݲ0 f>v:ņ,c. v[> ǍƖ?ұ *H3Y}4Bb\̲<:k8 1>,X~gzݦ3`uo9o=:HfFr؍]& e^&^Jd=syx?a_.DzlOn{8;4*Fω[d?́污Όtf$"bdH&= X%3$H&-J#;sʯ [t L^/$ⱳw:?Ysk;WeC[_ ͋o5P?42xX) ,_:Á6݂\6NUwvOx_m: :rd/*9-yJ*gDŽ sOHl8|N6ݞ-{Cb\K8ؐtW03ÒWoM_$832W t*|=Sin]"i(wf F9\-?y'CGvDzImE=#0v+v0#B&eiG@J yG&vF>eu=X:G:V%!^{"l?rƺ:d:5r&%JRg *$SU\:,s w"jLL7j2JTH ?[ty5/_S`M"WFym"{@Gb{\E8;?J^%;݄iGnQ$ڣphZ& 2WLyN> y!c  huv/ݶADHql:Y8dt}z|drJwNE"w!2v+K#(u:dZ-Cf աZZEÙܾdj" yTVL"q%,jaL∢L8"v;& 0~id#65ؓ>\w::ܖx0s#[5UÔ22mU ? 9E\\j}Y Z5_J!g,@ϥTg1TqbwPj f&:'AIwKe@`nql;|h,mD\X774#In칲-p-SG[pp<]jgUZ"g:=clN0hqRsP5@o[ ?po{tXJ#t-#Μ%f,w'R t)1x$/*_}gt?g"\m, r;oʕy)Z+0J<ĩ*9> lWQ^\?7l}M!gK#4:,]ҸھŦ=|{@ҋxѡp%}L(0mhӯKIh 5Tb߀MI60UxuX6n1,oz*2<1 )D:;^LKdM &wǏ恥%sѵ+E0KvO"/KL E_sΞtnL[vksw=QZ*#3py#GWyn |}xZL`2tn+L(45Y;ɏ*esٲ!;**&$Do R@"$'C,,- TCr<,TMN(n]y]% zKκ&5DTYL9*Cb?x5J+tߥ);>\\V-z5;5%Sa{X ,XL gRF4aYKp>X?מ{ec0#)iDaBDϷ΅rreȄ=T% M~í(WAfJd]?f.+r^1)Jp ͝[ M}~IiO?!{V$G)]:N΁/ݢZC[3Ckp:{)ێ2YH4Kue`7lr6Y"eJ|ٻV>wv8WEd= tVQI#D$&2#*2(=@y5B~:eSy8ƩtSH1z+TC,}bh!lNby%r˃ݚBgNGs'bQ;@z&'X=xoO h)Ҧ'PI W]2S.E> ?6q4o-nW~pCj}цQF`qNܞ/&1\,[x$v;$ER.4_ #wjDD%59J'}OC& 7K>p5W"^FBIq+D_r^%8)v_9($T.:P}äڰ p;_|[5?u>A|>C"Ҵ# h˨W:l2nªxech"=;+'©ҔAi~SR<?NVĆ8uLGO9W%ӿ12ҐDÏ+dH_>sIS [l KD_'#@%@EQ;`Fxk|q+'.3elM|\OKGA(L0q#˿8-l3MS@|<=ޫ* .6UzaI'R{Vx+Tvp&\:<@y<{#}xnF7lp k"@>J;^6=&jW2>SƕU{Th*s gg4&Ј4qh'O2d~.Skr;mYT\]FY_:`A&_ŠI)tV!GeȜ8x$ 8/_=+D{\籓b`I"ZlI3@o$=Gm\րJ(uOzBcEl=PK+Z6MdBμg߽h#e@sl+Y*na{ r+6R&3P *')&;N?ѐE 974uLY}Pe ՍM-l/(&}D'>{"+u\VRm^D)Vg7B8t:H)ұ:>g_ʄ{aE2{Ou)+}Ov2ܫS)ڡ1)i:W+r0RJ 9ڙxCq[ rӥ)Pq};vaWL>|4Xan@Ni.~Gn7 ͹}/O7ֆI͵& iMgM8ױU+|62Q&Xd"<,U*-<IYT&ѧk/bp.lr6uz*kiZL<$4Eveˆ榹b\'W΂d,4BoOEBvZ[  gsMEl˅Ϸ%f^Vު9)xWNlU/K0fnbߠyzT$z3Ƽ\9?sGU'73]^T>5'}8MMqZ'Iáyҿ& GwJTݞet$og"䐉KmZvhyCkYʽV{V]x?zm`|W!Ƌh|f>CcH?=㪟6Ll8Nrh4nDᕳ!gPdyfV掄ֆƚFFM.` gJϒb@cEHx"!J"\w&+|~` 8A8#̆)'^c!Y.mE@ێd/WkOݲK}by}8<ـSWM#Y^G"Te OzXN8xSq]G4fX*lyDzI֑):NڱКcEpp$nr."Z3ِE`5֮]G9k'@@S>9_ͽ뮽i,ˍg[$pӵX&3Wam\䶂Ns$*KWA;LӦW3]j ۱~=j+ƙkn@O*ҽ#]. ռ_W}j-+15#d'ïBI?KL_++"<2k6eSYT<NME" k E7WBH .ZX]uH3g^|ت&^'/泎r%OuwuE=u dL^9MdiLpO8Ψ6Y@3=,+ λ9n'N PN* tNVQ+"P ltwEV?Ͽ/qx .!dB>fW^|.!}6଴/;tqBas(,~5kӇ˾X#_q+z%;;DSn8d&\)"20,S~ϩV'OFٝXqe/h<b wϫV|m}.]^]|ttHGNe}g>@0KLx8 `ig8Kw.y}[͆W+LZ'zS_K.rZi8?iRQo SE`"PGWN gwh:w:ET>tנ_ 8:6Tćnm-'_EW8,etǸtֶ(Ի!=1 r9ڃ|L gr5]ey94㮉f [5w'R36NG#S7-RW|4Hԕqտ[ï*R fr0FP xxC45'@ad8^ds 0UkuIfxp HL3Q+HKn? ɖg!e6r(qC l4⫈8KEw;~xRWIu?~ 0n:6 >B_G'Y'Z C0NuuTy%pyIJ@ z=T<6n?R\gAS`MaV;c.;&rrMݳcCAM@TC]SJn!B[K.Vx,e;H!T0g*ߍO lPܿܬd$>þР+Es0!P0'X/AvYg nt4X{q'R# cu3v /՜^U2=>GoU(&8mAǯ4R^7=PF?pGnT%_=]s8@s0i{~Y6&<3#Yz6*62n!*Kǎ+%Le<*;mJR;8A`wpO`>VcL8 GESyL˾)ANkc5KleC+S+9or+'TsnHO jInU-PK}ɞ4G*oHsWO#bD=.MDH+@{fhHn#3J[љx KaIA+ȡQ!}8 S\c6'͍‡l|sؓwevD\Sݘ[coW/V(+F8^BH=`oPjv8hx̵NYkZ|o;5٩K&)hr#J]cCJ6~l|);iХ]7G؏hj&1E0 ދ]}ԑmB- ?ԉ%o*NQh*Nnr\L~{$LUFW6rn9R\^Ĕ'y8T9؄MWyA.<$+\xBZox~`b85 ߔ{vu}-qx;=\+[.pŸm1̆{7v=zVi2˾Wz%=ϭ* 6fԑȪy@,{'sC>fZ '?>2Ff\HXAj# ?8v Ut6J-Җ\JWpPq"T*7˥D1i׫7?pt(t%ǰ~;`Eb*ןt"vX gmOz_&3f:inaraEkhtuXrʿC'/nw+e`yTf2WI$'an#5%#Q* B>,A9IeCx]=l2ԫk23umy"BNރ"tzu\_IWCś'CZܧ^CcUO^p67ILpW<38TSK$cOK<(-Je8,sX\lL4.%q"V2 4M/p؟IC|챔_e1lX*KNL0#\YEqV+_7]aJy8IFCפbѿ6^J=/03uq\'J#P+gޘjZA9׉fg QsAQiI䕉M_;9?&CW{%ܚ?u+SB|W|&1. L<|m+ÚAp:CW7FFnQD“=.M } ٸU1u#L]T,Wf M;.<\Ȧ TO2\*J3ͫx&/D:חj^3V}[/5mT_ ήdM~:YM2^ ,Na€taPl(p>3H#pniO3@9'/iOsTyױUjrϳLAHTX2yq#nM'n=XiEKC7Y@':^pZ F% "cdtS7y(eGRݠaD2ÃWlt\0 9_0< >@IDAT}!Y.wQN%AAiGal+t]t >.-O2)lLKpT$|6r|Oe{ewy2bOUtv4E"M]"d6_.N~*F2S02%e+#:PNrz%n\Y.j- {OlpM|B|8+7Gx=+ Ņ_eæLx}ognnpQ!3ztRD^qPQ_ 1oarhN72w=z @s9E;A8i(=-P͟\H_^Qʟy)C𣛑avrI?8H'5/8e 9LLql.)Wʒݱ$QUIHne,3 e-,1oLF?4گɣ($H~JM'sBsۀ6z0z{U1#,ҍR? , O1BH'g܇w-w,@t34?QZc$<>dIams7$K$'`kY ;HXŠ@: 2E{TV%r):G=yE&6ZkF6`$ a]2R(k4IS5yI0] 5"sThKWHh=g>xsY(L%tHmjS*h(ōZ8WiIxSq/5RS &X̮ݿUoC<|cx5 7Qq NyżAQkW.nN&\_b,t4MB:_s\m5Hct3݆K#b3%ӻ)G6–TAWxBר~0`}ẹh8Fe2yKV B= [m3{Gi KؠֲTMÏ xRccvәHgD%|=fp[#{_",*->Μjk;%|T3p팉tn9|Vp *A/lsSkfHƬIc&iQng?&,gb뫪sڰ!=NzU)I΂&f**ax`6$qc0 ;o,6V5WG85JWj/zj$y[ZEϝI~2kÙM[iy4[S"8- ZaV">ei[RꬴkO+ޘ˾XڪYF__sNKr qd27`Zj=l 9Ov9Z,2IXAV} M:0 nȠeo1W Z%v\**Nݧ?omBwU9M AV+:a#gJ" x]t;n+|x-#prҭ5Kkj*B#p?Ws#yݛ;ɋw?ikvMlkSΙ]5KuUI+\8VN>>#ݶ]v_3~Ecr|ZSPW̸o(I" V$G*.gʨenceMPɤ 9*J#:gF蔛[-=L1fQU!µe"pn|ܸ?/dtHQtf Z4B=2 |ڣڿ+~Sj+Xx&,E}sxmNH}!jߓlH^=tW{&]wp V2) "J e#>:4lיm7t+0(ՓN\bdžu7JHbcJ2pDp8KvꐳNŐԡh#p2(&+|hy_T@&>wgf֙ey|֣vFvFPռS*X]v4/I;ߠ͓fOO ",!v`h2} l\3q½4{UN aPɄB"P(JlENmS2]ÌTZ# + 3{٧"G˹[[r)pR?_-WpD k5=jրѡ~' !s^zK咦A!Ftp6eLcrfht>h'_sʎ5{ qH=gX3[pU7%pn&r; nÛRp|~E6P>bbW<+e |ydCTlbS<X%$-LTU.U?^IBxzPՃ֭pi6]࿞E[O{*Rl+OvyN5ޛ+ގq{Z9+]qh. 8W9 ~Dm/ WjOY5ސz-5!\gSS |{ځHTf(r.#`fj+rT!BƻhTxawŔjp|a8<;mgTESGO_o3H^QEٌ?.`/+~ް" t7sƼ,HG u[̚^Ixqbԅ[yhtHpi.Spf9҉X*unq\:8#!Ss .9#pFSςPVNn&4Ŏp ,j:m٧5ڷU$|Ț>CB/u|Nc:;; dԲbXv=,!djΫِ'D]Ik>Հ4{L]+'xh*{JfӸ yp&W3逈׎Hphd:j_p$ˡQXUU҄ccwWhgNoאF ~DIXW+Hu== HQɊ xKCLPP*[R!LbGT?4-mI6VFBmVز4!uvV|QU_- U)P}ٌ'_.0 G#֧5"^w;E#tkSY>Q6+^4FmQt1hĢq?gS|):X_/Jۣ͆da %͠zJMXt42Ei9s__+wsB%Ҵ"P~Xe?rSK> =Uٻ6o7ڜҊ&{6 |%ơ_G77] uNUn×Ǒp`QaEb*.rT b7|l$47tbOz$ӏ㭆P@iVZצ$3ȵwS:G=@֒7 [%^ T,G"Cv6Mxװ#+LE~u@cXAֹZNЏvCe}7^AHo2^/D;Y#ke>3 V8 P>4LjwP\@))]_1$iD½sۍ/쒽|W8a*cUuXcGLGsh* 8<ɝr.ŞWo>~p6s'ٯEDפ~){=Pgy$ 9w3Zx͢0nW婉GhU5Ȩ6H^Pjp vW](Z"ZWfgƷ9=XaV͕=UtLu@$2xH\x(NlԲg?@l,7inHdrթ+f*uDھ')<ײLǺ7so_s%>YPHGSw[бkxלV1v0_s_a CZ9Mm8ͥg3O 1>s+u`O*ץnj&cv,ZY/uo{K8iÀ*XՖ|Of<3gNo5ׯhh"DRͻ2q ىʊ1xm@"Y:|xFxw=\ɅȗJk>p`I u>F}#}{+{|4rFbJuFT8"N2NW)=qfP'J %SwcM*w,Y hFXPWd"r9ss\jHԡJ }K&nUpw#>|J#jvf8qRM5=>mEC>wQY uiRC;*ovxΡ9mlZFTtf!p6!{7:Z2'࡝g9dJ& xE5pJr?1M&1w7Rn!ʬێb2S<]u}8eYe kUB'i~WG*pqWwĽJ &XtO!GoЕ7n-hdmNO(<6Yl,dF`^kԃt3D)54wa*wycl-܍UX'/ ( ^M^寻=@C]qoA}We(Cx%hG=q'FwP\"8ȿ|?U-Z.# `B3*Җp-rr㟋-Rr@;AՁ'UtYp㛫ra& If-~j'=x^Ttz Ѫ (A[yAf<ռL=&Po9\xEt=z. 6q_o2#ԻlH>Š`O. g|mu84o. 37' X-FOuUΚz_[[=H5S ^/pK3hgCO;8EpnzrǠ=>Ǯw}<"AB6_ehG!pny+TYp@;䠫>>tKW5VD:@2@Ӛ e,sư3o0{g)]Khǽ]hf)6ŔE! 4v)mͧkؘKwC^S.\*{>@s4ˏ{.Z} vhzFXGSE5٪lv5<;்'vW)#)d˻4Hu^$r!7vw.BhEpk}W9>[!ꐓ_nS%tl!ݒ^8֓t渗޻xWͦvt?w%jIlӊ{D]j𑗱 pB(kگZ)]_qW8_Xg^~F:|nǣ̾xO-qsw]A&QUSq%,,4~*KǢn4{]gl&>WlYS& YBZKeU]$2| :Ax5ueJncJ1 9t?-P~S`yu"T,s"Gާ xNmm!&)]<1~YC]'5yw N#XB^iTS]l8T?ĨPQСuqis CnUVSF{R-PY %uUd2h\>O4':Ūt>E0\FQͧ[iN>kuن1e0G 8J(Ќ#@3'͖g`xm6N:N?+ k'֦L+f)kV7? rݨIY\}N znJj'n+qH Je\EqiN5 5^/H~G^WR0?|IcL4|'ɷΥ6+3BՉ:\q.3ŀAHUZRШH-F1O8t?%nq7JⓣJ͖g ԥ5Dl)DdCp>=N%i~8tH2u$ha( Rq:HYvzZ{%b|+uME,V G` 0s7˥fiGn#]m=dܕ_Sʨ{sG_̋fx1gJInBvCѤwRZ{gt)`AcbtP6=PS#>DB"( bGAQ^nݾw$3;{I9999igL+B%#WN|1 1x_}|jķrf]㊧ci@VAr!RJE^ߛ-E >,/'lr9ozsym S(x=uUp{ : ǕG/˖/Qc6aы6B Rs9!'5$! x\/9#Ɂ,gEV3GNʼTК h]0ݱBw;!HBUzp5MCҤ?uȋ`Pb?0dKCat@B4*Τo ;Q0/>P+9 )(``Ctc aH9i Vtv>gfҩg~]^& Z@@pЊFm;tc1`3dyiHO]x0đŏ @ux΄@ay‹K҂:|b1ofWu.u~V0< fuz2?׀KR#x-WDX-NeeUED|اM#4yH$d=]Co$b9?Q(ښ[+앹b~u켃v"|}$Gr]p_ECTvS$҇ϰ{k%# |9k̍J8 4^#`#6^,ҍˋ@Z6hWL~=ٗ)XnP)SLQIE)$:N 7hX-i,ɎO;Č]MGh pO\ΧZ̛WS}kKCiNd+ `^DQit8`̍:/ &f, f,OKiHJ!#O<8.`X5QIy|Ztbx =6Dط0zwj7;=xrJJQ2aF h׷ͼx fJFZ"E-i0n#O~O0S[šXֺ#F@%ٗ{|)K$Ӯk7xhU QѐD"EQ (fG6/|?6 xc;p?7qk#~SXKdַDfQ qC^c#ͨ U2qjൽ;PlGªÿy*_ <.H!\- ZP:#/)^\Ì#\D:Bf N%q$Nr3F~DjNBYaPH o:|jZa>C]y%Ϲ‘ U\ bc@Oa۹܉)=FiR"8=җyR^0Ȁن+G?]*ZfCqqO'j7x*%dN.ޙRQ0 uzfƗ4yǃ5^ڷan|B.PX8xU5+eU\Ѩ3hڬ"t9 ެ0G-4:` NQT[g3L0 N!r7؂9-C3(aIO>+}ξoyJOӉr)dEga+Ρv~9$5s}.RZ<ydLՊKF]ƭO0|LeJLp1Vx2J_WhW8Ĝ<+f*VE^V~ \b9J=^+-ۄ~6\WE'6u"\ժutM_>ݷYQp+F:2A?{:#<4([fۥ-U|:*xy~W.c< F!܇ w;5w>NS\K߿.}\g1އv\tL?LR;p}hv(tF,j-^2Odpѹ%D ˶&2?ÎT#ڭm?U_8| )NhbF($v~9- >awss??~Iu]tt XoRS^ȩOc5't`0W#YÎ7cL]n3'c/w\3K~ qJUBOpq0Ky6E|Gn~_1NBxꥯѴ(y|璱F_ѧعNNgm?|a@jg|q0jl9y!|JkЉm 3`E E4 V3)o|XDBww;kt+(63ǷT$̿pIRRˌ`2,JЮ~>fUÔ)}]jO!j7%F6Cwo0/GݻG)w3oy-MqfDcW$\ϵ.ѐL+9j"*}B{mcx2UnV 9ިziNN1Z^U%=?[aJ6•W|4J%`R#ƂDݶ&.zSq7k?]\_u/7+:N.@^&l O@}xX}f;5˟\uSv<*w\$vaQG!XqnCgNN۵9}kVXӛؤEnDE U~]$7xpOK댍88:4*<] x=Q҇⍗x+ͥd,'b*8C@Pxgj5@D`V`?7gLuxŝU>rloHPk*i0zWOht#?T CgxS6ABM{_'Fxd/! e`qm*5k]@^?g`7_bC̄05 #N]Y[.zZ~}^| xPY֎0:"Z0G͝L'|z^Фt3 !*gΞt!huz3AB=O~ɉhaX`B]IsKe#6klu>)}"tsf .QLկ}APuZp Η#IS&347~Ԉ7Xd wE.Z Bg h)$aӏ3'![ 5@bL]?x):}kRAkz My{Q*a.p% ZTfT˞ڎ{{4-%ѥn3bOMС(w(BFr.:r2X;׉0&)Ȥ{a4G"Qd Uq\VY!p Tda\4Xe3̀Ӳ^i}vIb534ܺE0XAB*aJC0x7 ;vFz>9J?^MrDS"_N.(dkA&EksJ}sO*Mif\4eA9eqPrlfUr(x8Da.)ws S,,ґnn之^y!OR}-4\ku8&[i[A_W[w>ݔk$<>#ʱR-$3#ZtOyjzB8+0fBk 4\]B}+=0vGL}}oH1s, G͛~:{[) ?튲蒓"_<|& 8_#>;y@r yި1.NP8IqaAGUg/|,JW}=P?h2UmKi͹V5q ZyşuI3ߢv_wʫ˷է'S݉#.[> 0F@ꊋrKQī#%:}淚_%{Ie]+mMMp<^>~N/ӟ2(BՉqtb1my1:"nv*j1Tx(D!?pffy=gؔN<W޿,0 ܝ`a9H_Q6(oW>:t ,/f Y~uY=e{ f E q5XieKڷuRJ I#ft1 h.,`pg;n| ni`](ϔ7> }*P~[Uoښ,m,|9 *iƟ&c/ :[x\EO1w|+V FD%y7@{~UO/uqs^4@`w7|2:(9N~P.;A#֣EKiuLR6mqrY@IDATWO[ MNFJWyw{Q?YxW6 ew*4B_^e[{t,4w!c$`~` 4;pMQi?iBΘuW^ܹj$4B^`g`TQ-+l@t  }Eu"HYĺ%Z<_1 (N07UK $m~ׅS[{Bwq ,DDDMA1/,kx̷h<}F9udSA9vf{fx,cL޴0pB=FmeG2ũ^RЦfOے~1⾸D8HRk ƌMU݃?Qa4^sy@D3F[wl#2n?4}׫Hk ܚ̸_Z%zu"[RhoGZ8*0H zscߑ; )Z} +ȸr4#j^hoɹ^CnNlը_m׾73mdͯ>jD?u«9 =J%*݇ϱ"*Я)B?`Wr fV=)l6tA?hUJfik{ ۸B;5#,nvܜ+n{ }&̎//'U3˧{cfW>+5a<:m?\6W]"-JsaJ_w?SǞV JsUPN=!->on#WZA|jHq]\TLO_ʝSRz9^|6ϼ2y5G3Ϫ20\=lPU5 F阿t F=j ;`8ƺnƍξb+!M6Cu0viy1[M1vf‰ `M߳Ж f,:Ņ0{ հ@A{<5;m3?V 8yڤp36 {JT*3+ Hsv?\dIJ}PEz`Yvg##oIQq@N5-N!VwrB{]X{槓tGF80"v]^{ѳ'۬S[CrCalL5*lɞ~ڳi}"U"on~ԫ;C.d,Y {?6Xa[jCx0zaK zoYUxeW7{_&r1%h@] ۩6hPp' R!4Hrek)+O]AO[ ̭*&|!{Y~伩ﮬecX6hskvJd8%Xס0^C t¹xD`$ddW/z!߳D'!#' <fppqtlܱᆆit]P _)%nIRA(;ԯc؏4,xyj"]=r y\E*UƟ@Fgvݵ"O t^پmAcM䥝jKzze01VP<(9}0h৷DZ.7٤~ ,crn]a>!rfiK$MJzmTO$܈W~ʾR. _DE4O8H|y8>rW<|wM@F $Z0hD0X #rRE s@M!شkn2b ?{R5n:$ǰk N:a? XlOsUwlT0gPpQCn}k5dvtІ^:CVّhH/֜MPnQu0Բ``fcGy g?D6Z!{PwcGa9t.u h߮}Zf2V`uH@ڌ:$Q]!xA2wSڳUߪUwl] b, y=+6ltV)"2Ir($p{S   4Eoy,v)XXR+=3rs3`UУ񰶸QL[S>B=: Bs‘!u10{tHTi:\w tgP>hSpb!7# (=!/v~/t~r;hc94#/ȋ0`%u8Oܥf'mQJRǖŖn~~z)1RS9 Oj+^תv+ֽ͡rj;zca >s*9NkF'mFvL LtW:xSڅhT&މXWSdGGnP1<'0 t:s|yWjؤ'X،;4#`S͒Fzh`i3?鍋\Rq[ K;pp =M؀cU]zVULێC/Ty @\"xμD'T~?tn/`ڣ͸8n xJD/FC槀"KjuAȸ݉z=@;SQ+-JduH$!©tsƌ搦}Fx^5ɯ3%oWE=sMή0Ym|-.nSy`vVY6Kj?;vc6! ~ -ɢMyUONCf+ ]1`aS ::YΰO^9ij KPr'AT92oty_"\\ Lg=H^Qt@c׉~,Z4:>p#8H,"2CGEK[:q};^7o}$)IG r-ƅ+%5(0 r## h]Ҁ\ 2h I:?7.ZJǰ bnMZ`J *jnW~%Uj O_gj=2i`; 3rK&GzF,[*H wГt^SOWo yA吠a2TM󗺴N[^za^;s=PلW\2E̝ 1>iCMU}m@vGq+/'w^kK\JuY|e3@lcFL& uR9;S?ٛ3YoMAwR'<aHxTt@iOCXm0AvGdwS :k0BȑO "aGbs-v>pjK{O{/sO? SNEk׊3J߀"8mV02 M9stsڞmC mgЙNt|CA(t6F"j1~dm8 yH@)AG_M=%0Su/I:-qޢ G )D0K·ӟbau1L.EWE޴#3S`,d\b*7C ETfzvQ2I ~F1@O?|&~F:O}ʬfbD_ILlXo?`}V8t]\X0B]9u\lN5,=|ۊ|R7$@Xi`ΐ<#踬p Bv^tyr=˂4 '%[itlJ$;@EZdh+O^pɌ _A{̪dCA܌3\1婔OwZDLz$2W3q0&] K~G M +t-d {(c<ҚM٩-|H7&@4 _F-(լqS *f*Ũ0O5ܕ2+aAJu8i%^<]"H/kgo86[4t( CQ]L!$7 8 $D`= `8a$v/`3U:PX )3W`;N ʹ"\/ږwC> + q(96ׄڪSNz% i `CFРs,kln,cb3_=o4@c~HuD ,ԫ%Pr@ K?POGl/ ϓHd~aV3f<闫G|4;~0/R77Z`zu;mN%X,l)0OA:v3B87/Bi LXcX>/FyŎbXL{nji}ƺz]<&]7&Ӯ0f h6@.L\%\L>ތ# 8K!{# *8 l2xEO&MD5])G}EU ?V"=.''+k穳'u7wjau.&rOp|_,>茜rQ޵^zbAE#'(5OՆhY$6/Ql+“.,#^4!11N`PG.>ɪwC`)"80lHxnjx 0sPC<5Kpf܎\AG`xkqQ9bC0>r0^AZQzf˲FՌ`,po; Q |# raԪ^ ^gK7U@:k:͎D^  kX;Y_5|#\WeB3J=-E^߶sfZb?uҜPOf9UxܯG4ƿٕ#qg~8|7b  ҽt cXkЁ@ɹ|49w rbѭ%.W)^+;;=;<>g?q5YiuSv|Ca H}@uc#"-zd]8`(`ʹ 2\Ngaf_)yX3UКPV_tzbhqkkW[Tդ9ce5!c q% 9 ߘ˹&xt,lS\26 bQٌ6UdVlࡦdqp yT[RhFTB}ZO3ҽ^nx"mv;G"i0@pQ>O|.>hTVf\B {rn Gu@`ᤏCdzY , a;|kLz]wt2R?=Kq0[H٫0z#)VͲ3X 7u(H.v箖[J7l),3|3Gsȋ-"L J8#QL=R4O%M, , \l|Xw;jPW'E.nZx8^ "ҫs4[qD" Fq:N_ƽ@ҧ+Wՠ~(t(f Z鋙K<egݒyNDaS*/s0C`SfDLC ZKwTc[.g7V0R'ɮ[$fYep2Fw}a_- ! ObFyO\]З,TI#eWy1k#^,}At@Osd\Zq^4鱤/ėpj3#W0? h)Eu9?oᲳ☦#.ڶH.LWF7řEe93(V=Ћ Y<xjZi隈gꆼO~2IwS+ly;ԡhVU`D &~bс(N?ٙ5gS28rW@Y3 9)3z Ë p8 7稣~0ěIf4M3عBEo.kcR0?P lֹd1v>ݡ0"h,E#Zy6 Vp_ˆ "."o'/ t ᑔB-Ň1jD .Rjx9 m FtC,$6\=(BQt\̭wƚ ?ud~ Y8`׉ȗA, F@A ϲ^5Mv/Y4Ah6O\x`ikk|K'@,uX?MvuDUfgjB>fx# =ZpyJ^DHhX'=_`Bp>kx/)(z˸GJ'Jᥥ>wQ7s·-1KU frC>#dx8?lӟFx!Y8{js9~rB0{ U06"QmtCRX5Ƶ4ɚ4DGo'~a`3j6'^IRIAq4[Μ=ǔ9Dt )`k464bPn0")E\Vz TW<q8N[_ƓX &C+a pGc%+Q_%9& ^sdi0zŎ[ 9ͲĆN-=F@ҍ%ihljPvFInp0-]TLfV!celQ/dǀZi^v퓺.-PIs5/ieԩ'WNgMoj5:LSa %|oCT`;D"ݔGF]e% %~uꎽm5uH4Z>ákDpYt=zJAFgIQ~&tsϽU FZǏ0F~(`8{Xh9^IzxzEZDV Vٴ}F -c"Z~n0oaE7|ǞX " rrs[O1`~LR uӴhT\:㎠,@LzuqHt7Q 5EhjvzTXr:leWT[5i`r`RiRK7 \D' |׳#&>]=0pXhFpqb^tj-H1 nHg4nL&If: )*R>p/|H8K[ׁ@WߺpۆhL},106hغWL@ 3:R`o5kώ/*Z $R+.]nQyu å j-5(+ _Kƌ4htUQ{bX_)7SsqfWS޾ӟxO%;diW*dL'%Mڕ{<#8up68)5 HY0(Pkⱉ\0Hs)ɌKf.F=:qoGSrbxYL?3^fj恺5ZR̊h1T }~2k\+@Dp]d.wGW)H,N!O(y#FfsNYm}Žݾfz_67Q@Ӧ T?Вq˟2 Fvyٗr+n~F'Z\\aƋNcW xlY6].hQWppܙ}F슱bN oV jN TU*өf'S ! ,5o˥w WeW ڶ`~ -Q*pA#?0?H/G冀*#.xY]vfN0!3/4}|G9/>VR{ ҪS5zEu <L/z -gHΜD\ nvf{ fĆΟ2p\,eƸ'eT:virUA|j-3DB4ee'}FI>qԡӱ9eáUʙR6;<լW1 =h_ P'w4šUf BBȋ|fޥWL KC <ђ6VC|-] bUtݧ WQUs٣mܰ RoIr'n\AN0ڗc@OeRzVzAPe4%SۋHʲ9Ov;xe[`HwkKT8&QB|~ӳ}e:`,xe\pIyǵr:lmNUL+hzD6< |;s9g O?1UxS-4:]Q Pw낕UEV-sx^4>#OZ* #`0ZNɱӜ_ W2kUlM<PU/'9.f#;s@j~;j!dI&o$ EЮI&cG4}/lSa20ݶhނUE߿rK%}05|g>]_Y2TMbs,2οnvӢg7fB5VMr :s!n.sQPu>z[8־5ڰV]D t7h,*& `jM |" T9$_6Td/d ,Y=2-t3CvD2.X߭ ܘ?/~eMe6CI71@XP^vXI$KtƗH lе/=T%j 7쪪(ш(~ ˯[𿍍~=T"t"`8SC 8D?EKݮ%%o &s#/ҦNݶha\m o8}nee0E4fٴ`c0ΟfȣjӳRH!K(-n|A^\ƠA ?n/hu!Ѭ3uS$tKlshigx*+sD,u8dx:n@``b6n'8ЎkOcw`]wWoZ;ivhglr)| I"xIbhLfC/i^+pws V~Nخ҅۩VaWsoaA8F~$LS>9ÍA? ęi1h7 ?KR/Q(+0 ݷ1޽aLc$XZd)qq@ҿe@.}K6"}e͐IUVqo~ǵ)(G 툁^5hlpnx}Y-*qpNJ:Ï4s9Ůhj TPf9-"Ӯ|&M~W][7n= S.P1k&O{+ɔl']sOdB*D0Z ΃= * {=}٣͝/;y~9;uk,[uICA4S}O{gj\ubչPiuĚ9\R+K B.Yq??٣%|ZS$Y=9E_ξ ,ݫ`zZO@gląB,)JՈ3lNQ .;EeIXo%%p 2̠f52 ˎ W*1#U3 #QNi0b᳾Ku~F(HoEϨJĤ(u>ou nbɸ)>_ܪ5<ɶOt;;a=mZÖl(v8)ȝZ0yJNIr{ܷa'/JY.IUb?F]x B'>#0q7Ɏ+Y k>}#כtwbUJ0JnRA)eFb0NAX8BT'e sI=l⽛QxRXLuCPK:7^Yz7))V:8|mLOynѠ7;كwiv%UyW6\L+iF@M9Ȯ~Ͷ+1 #On)u*ޟ*F[VDϝ2ϋ$f >3ͩ:Coxq?՛ N*m"6^o 9?Θ@0j-6o%e j١ӂxR@6Jn8w}Y^ /y~38'*!uCXmΞ=ť=¡zp rrWM[<-$`.diW!#bZ>vFgdwYLne^7}kȔVp?gL{-]qnB #K ADx庖rH*&\rdOrEfۜ˗dXY΅{қ/ s`?US~``4φ*[~ Ab!gT?jtނH.A7ޏNgFK[>-犓&Kx_y%gV/Wuz/<[\E0ƾԌ U ;Jz#+C4+.f7^XCb`lE"=p^^54cCa,F8Th@q2@?\r2]cF7. ?_Qia&c6vK{+𗽁irJ\lYE2* E&6_v7W{ާk{'7|HXD m@X~ڞsǼcUWCK.j깟[nܡeXp'nZo7 Iv~LF8x [*M1.R TmD {qU3J!NǥP%!)+h%M}WBҏwR>S< *gGLmDʸG%Ucok_yo݈#nDGhn; qG|^M/FsKnU96Z2m V.w?k?r'S>O6x/:~Eu.0c?}J]*RAƆ@KKG9װls6٠F@}"a Ƶ+@Uu{]{ 9S_ރrҴ eLk!JVĶӓKJ:m+ߝ.J|yK2Ih8]e Ӗn1#Z8 A;eg/,si6-)㉅ xA.ct\(O ^ZU,Ǣ?m z}W7Y`Quk`շ/̲pQj>j1͈Zyc7}xE2]h)!e:#M{zڑ1Ba#Kedj K#_7>꺃, |@ UVbAe[ o=i[֘qZjë} ^.{~+y܈x-Bdi_˃cYԪ%h';ul}IoiN_z5;W-[2 } SVFv:{wJUdYUȼҭ@Ce|ede[qsvtW{v4')0BETT_ `k5m"o ?_fC,Aܾ;'zOg]Nu'SHV*UI`*汢ـq낫+s1Tb"Te6>OLYr|ˮ9=lwL{)KAQe.8Z8+ȫIkEr#AyBXk$B,\8i,860$߀X$+Ƶ FN\Jh\#pmF2_\ N }E"5,Hɩm(:מHA ?7X 4IQ|Zt͹OL&>>#_]x%TIҴWG؎.>r ==zH} eEaĂP+1=#J:{P* k3eWw<$ȝb=};q  ] p} pU'N-/_6RPOĚn` /YZW7L@$[G/RKzF@8%?![}ssA@:b&5LT  v}$]~G!ƝAu`C 893N4ۥ=3m@IDATR[ Nj\>O!jùHƂ%^-R b*xXJq4w^\lVrD8~ cv_ѱnjxP;T,5('u, |YX(+$!`, FqKO NAw!Ϧ=J,iFAJI- J$|FzoCMiNM024ɉiCm`_6_q3kр;h&qOÀOu~%.:^ h Sr c_9Ue9=ϝɔx5>~PY|o|<2>M})oЩ{ZS.;A2N(Z (^ Ddyp#=pY7Vq-tޏ?A|%¶JpJci(v|HWIrA`jr;kVbsq<2, AffWEC:3a s0d0^C+EdݗNN詒"+X榷d]wp@ !h_:J5ZMW0W$?RLb\4 =z)>#vn@ J\>w.&H Q `+_V%O1@1+YֲlpW42'a%׏̯WZ Ӕh9NU.6n#mX3մ½NBsy_Z,+T%U*N7(0U:O0+_bb@)H9*8Wۥf_PJ?i)@ǣհ![];4dZX10r#V0.1"%ɳpT 7$dQ :K{~G`4S, Tsli4+2d!.|T-E%#V[  ]Ԙ;w/_V%O rwa;>qr,ȝkF4/'WH:e!҂Y>9ruw'mղC.n8ȥU1ufeӨp 4V'ZVXGv<܃pƥ`PU~{ҸЦ7=HmJ^6'`,O x]g/NF=0ZS' O3&gM2.+ܹO|1g6xɱLSr;-f3v[^:HW0SsrfWRoE7cU,9m ;6e>v?=[̟RfV.Q94dCADt{A֜we=ϥ|Gwh}69 Ct$%3`!ctNA[[Dwisb>SžT2j@7hbƒmMUNQicĦD P3@z]G3Awb䔆0FFJ @^pz#UõF08=6"}I!fia$"Sj~F'=k·" ֲ$.X22SU`OikOá|ZEPU,9FP3sy[e\nCn8??"^q~Μgق=g1F鰑wCnC&qVKQX"{|ٷf_uk&mNY:߫[nw2JjXy1`Zp݉]Ͽk2Oj\SWGG$4~>8[l nuYܰidwiS!Gwq:4;A<L][ʢtpP:_q24#Qee1jciB5* E*EVD C*wAdt{pUv(86i+iд~y8d"5maUHϵAEGi[-"R91>tm'aW ʊFfk~w!hR/8tU$-e\U:/.EĔSH;+zs޼W qx?{ZG5lGXI6Ie@5S0A c**_㈎&a=iH+aFz4hϻ "@ihڢoQHDwp@2~\;9o]&)\Cܲsrb,o*F%ݸaFz]s@@R ŝ^w`dʞJ+,}VYiR@kG6=< ?2:"|ȼ%E_dC]*J[r}Xu{s9y˜ L4娕_< ]ojKdڷFUT@#X+v)hTSF)$X@Di@Ј=vxvvvwܻw{|ۙ3gΜ);^@|x_[ƫOAvڄ6G$-'`: hXV]L d CJh_'`&@ v%Q$k!̲{bv'_+ z^<-UDo7I䕠ۆBP9~=-[zMn긵W:V]e`ApVx;`0*pf;AgK*׋K .c.vHiK->+L|6!Du&- ]'ږ/>5+`M" K2<Кˮ?n8y9k8O`x\*98 )*-TiR7*Vi 弥lJMc8]jXO$8˕9N}2BM+RRz<>(),*(ÌKN[Na952J( p??#p 7An/N=>Ʀy4`_~xw߲c|ӿWF=YnuIl:_t(/墮dVj[jˍqgnel[`߹M8%Gr[443O u.] mSgӍYW"R3W #fǹv)lfd% R8sG2wkm~lBH:⹳a8cnXrgb LUĴ`?K $2fIDS|# >᭶mon ~fUaLxGCV{-,mX1,]V@v 9mήM֬2қ-l8w}<좎=w )NHO$Șo;g)QPՐ0RkC7P .)9((ERYyk/n6x؅0.&e94uLH.b8A4Rx7~B{X˃ )l/]LDŽbZa^_}챓QPnbzT0oАkj>RŕdndF0uh?3\2<3`g+ox=.<x"&hM`whp5CNҒ3,-21oi]: Uܴ-%ڐ%΍~[gڽovgHS >d ҩ]ۮ>Չs&yp3h~Yƒy]>yz\ D}XS#|x\o1Яm&;_ri3OAku,ILQj{Ft @%pMJp8!-ZybK͆압 I#rMSUUu>׉`U 5g8yԇPm>hGe<GVC3O#FĩLN00Ȋ7(ZcmhmD-G7aO|(NMBu]#@Nm{ԭ| p c gP{> p8o{GB._b`=ĸDyit#.23fC8#w_ etfꤶN勒c@y;ɴ:2]׭G=vod;ŋNeVa-y@"wX K$/^x)#h[ 'Hk4$X6 qeS9dgcq] \C`6/m;g5G@: bdPߴhy񆀾.nerי[giQ76EZEncc+t솨Ksyj,ɟwQ08|f@}>rn7u4WM>=m H8'+`饛H8ܽ!UI7u Y bbfpJwouV40,D{%ܭH$ Vy^=='nD^m<_Lǰbv|0\=tNb5jP`pCk:(>M,\޶݈[^o:]!XlbeC.ua'cC~q[σ y ́α^,Nבw poHr`oSɘp1>б>6?V\=>& 9RY#A݁'k+KLLwK%o~!{HC8tv_#QԢEMjʔbRBD-%ꄝL!:ͰgzzM=!rt(cC8UQū7۾%*ExFI׽Y iw˧lS^ rg`/NoQ_]߈f㟡,95H2U>_!nLT7h䟤ʈ$~cY&ejĤC#~vj8~r?yŤ:>QU4ummO)OY|ΕУ\_TRS?țN Kn<8uP`75JDcS_;GET6d7ɒPr=*k~uu%9SSlB*u'8T33a4w.:W[ǧqKT͠,~t&4 oȫOxn噧Fa`1XlD|rB'™o{ǒ۾IJ-<Ԩzk=[f9MzşDʖ.-'ݸ\ɭ߿}4v&5ø9 }:vEE,v7!1C([%oYwTUnT /ρDu5U,`(lۺu`tfeƿ'T0Rn&W@>0/*y/4M?DV *]_3v!x_",)@p~ a3?atѝ7]+ȫ:9u9֟K?)W9̥l'@[^mAmKجxAAJsNd"YH$b{ N 4SG@W hv5W0=cKQbPq5ā>X 2}< 6w[T21D' o C;HgVu)F)O7 q6)S.@TܳT̶ҝ:ņBUf0ʜR-h:Dz[xk6ZܢE-*;6,t[Uee6^gk)m~+ W&M tíc,o&\ZSH +"+ªD:uqK?]TM~B(œ<;-Q\z| ȉb5pr%vUW 0a ,&z03_zɇ6DGYPSUu|°\4Z|;9Y: L347Y3;JeXaK:H7`RYO.йd q J_NfNU^A>1H9hB 5~z|:Xh'<9Y,(Y0rLs!S(W#FUWU9.ܶen(iڪmgi` FL֌ąo M`J+);Ja GxAP@Q:bxؘy~?VK b.x$p*qwic}-E@:ENg^ʠ,䣢a/1xx;;>n?z N@?Ay70[|;=kN(t< 8*h^}gY: X4+h+Oa:6SH%]I6Įw(möB= 0!/(*Ԝ[(ϒ}a-OȶE*#R>̙c ;$A@tA 7>&{,m0= ڤ!f1/q@n --'HGe4O 0Y/wt7c@pppw69Mצ|#8<04#LʼnVQ,XIt~Ii3KgD:{^/hsNlʧl*\RrTm}!X`۠WpCjggA0\%1?Ieؤ2:2󁅁 q O0e#}EJ?iˀ40Y^TCpp=p5;5ig`|MjB6 Nw_% fԣ@ۙ? .s,M?>/#%Nc:?rjEew1kmWKJRؚy]MPe &=ޮ:|DeǁBVIy?Ƶ7? S2Fu3RF4~H[ w\~%^+ABpx+-i뀭!ex ;C2~:p @SϷ#eܯiPxù&B?{Di†tߒ5~ & G՛~C:ɇSx|&Z6t[;iDѺ:ЎeUA[`ݙ'>l߭4}=<5-˒;fǣhV<^ Y=aUl+Muˀ\鳹M\XX`+,(dbiorA $dLD3BWwɑ'`3D+44G yxc!`5v髐Urx8gZ+!"!2 FZۆiX^0/"-_m`kI:2Quk(jѪBn”bN'Zn=XafRHs֝9 7E@ yu ŵd!LJ z_D#YjjN7>2f(ZNDh͐hb;7 _Uʋr[}R港tWd, gz{&e`1=BQpvkZVgr#P&, !{{>:+o9\AS cC˃4+Qm:WW=].~9w2mRWZ&씆I\n~%E{|^8nh1p"rVΒd-~nz#G ?l+qmd`dK,@[vR/q׬qG|1%}"chx3AT-KG!ý c_5 G`v۷S p'*p#w0ļsMEwG"8(ڑN >gx : 'KTr[UǾ$r Hv٣.?;-G ܼymaA!k/0_Nw'3OB8B8x=k8VH '?d^rYQ6 G7''b'M,j|`4Ɵue]\d_K;WW*@ <"ۣO(;{\hϘŤ~k*Q,wۢW Dq6 um-7ȎF{6†wmblrMS ˲fAuͶ"3܌Bz!?|i=^԰0[ M(e]~8ƿaw^&u{y8*G$5,L, \A3 ;-<DY}AQqFGo0ƙ܀9K6kbO0`LY2v: ϣPjiXe9itcibk, k*uNQ'J' UB+S' ТwvP1tu;kW;g5hU7;זN  TG1䲽!+TwOaXF7iȜ@=U]fy$^~jAyHH+FBƲ5ObuQQ:x0jl˹@]vpo|<d+i7 Ξ7LNIzI9&Q]]pJ cfӗT+,/n2ŵxUUaԜb͗)l#OއÂ&-J:W2&B<(%Z٦s_|.Ŷ&<r-&`2-OzM)4TK1,õH'WǮK u3p:Wh\kP/!A:[ P`g{Łd`Ɓ`dApw|c9{P:oMtTw~~x9jң>VwB_!Zo  c@-[^t2\$a'R;گCD/=#daǼ,wi5'3'g#wjr}N\iǻf6;-e=gwZ6zDCA\1*,C,`HJ ށ+P7/=K<x a΃o6R~)W 9 CF>݀ :iуw'r- p=Kg|_2uq |< # Kk9_Bv22d0ɯ,`9;j]|apxo7@TQn6 Z M?*h9?; whH9מ~.>{*! iEF钌W+[SC)9@rq<  <6Gs|>muc.$6[̐Ka5[V>P` pT]`> F]M9X{bPu9Rǹ1J&l|Se8٧€y^@0{A q2䫳UW+n6KhHtE?V[dy C y B} =>+Vsu6""S]g2T0m-@n!щ:$ W`Zh R~ @#mhy']?a9pMoL* feHʬ"9f_w?8 BY_?E֎;+51RKO`InCe@l’ԄHbRhJls荟 `'Kr -N"M{-vMK&_lu`@eAIV_%P,K1Ct:.jkPE8bx 07YG:mpyhjw`/4/l __ YA)bblbRN4#]g$:10uȖ!c6fP4P=K??:ڙ@3 <a`_PCG5+<]L?^9.Ҷ)ĸk]$4e#];L7fC:m`s8C&܅6HPf>8).]I|,CGfW8 {rd:ZݐZ#1DCX29daa`":~>9}T1 Q0^3ӓAsP+Y,.pb h }P,*$mOeX[6ƫIO0|8.ϟ6S]^WYXD v[B CQ{52b϶+K&~ hJ2+=b٩:2E'#Ӊ7/@܍h3|VмIe| _:ҝaLMvCYqx4xHt`LTkZDsx{ NY@} FbteJ' R]7sUvUtr韊2D9i>"m\+E~/[CjI޺z&)Wo0-V1Z rysj@[ gAK@sH` F )>(*H }YEfyOdS5-~c?VaRYkHx3Py;\Y~<0F8gt_F GxkH{.rBYJgod.k\̷ŅLN`CˤؿMhqS-.$0;kJmY,,3 Sɂ$Y!ÅN$D _S\ *T Wg+L^#IU`/_r:^|=DTr*ۀ0 J>w* Hī׀]`/?ERMDȸ~<Lpo͍'wyjq OY y4uAyQ R<88WiwsnXֻVkavaxTʜGn TM} H}QO *JzdCQ2wUFK C$8+_CYlJNazʋ"H Td<% Dc`xR]v)b/^P)B`'!X_\Z[~᫄ L`ϝ,C[mj_ژmaEt( 6CyC1s]aa!2+vd8|,A:\Iri梂; rtU*#F4$Gv\'0:KE O-nN蝵\*<쿽`g4/K/'y²,75m`2Hx<0 _+z/FΉ!s3۵`y~Id=56Ax˦>#0p#7oHYgrj0m+*iQʒ( "&h5_9;R #p $)\.ez?藛N7&U Qv"p { 3S#2|?šwLR!ѝqh2"j')0wersCq#DyHgZZoag>Vs$sW#Wx.Kg'=QXT15hsʤZeG8QuIZMAAq G , oF7Q2?VpZG#:>FTFdiSy`^2|~`v؏K=;:$CGc JlI|O@J8xD=%]]v>y}dV!5A^yXÖT^HXGB / ޶}@mY]j~(~sl""r*N.5hq" x 8$h74:i.6TxZxbI:G5 0[5O.OlS;%s;WVKhpMp~u.$qlH&c<CXԴx p5o0_3XPoVֆnVV{jɌ+#?#\&ٮy8|'^&cU(KN6Q֓>.2#8vH&Mƛ<Ȫ:Y'!إ{:S>$Px뤰Z2KfoP I{pcÔqoa2g >NaD|(tH\ꐗ*K`._dlgM..S3v4wW&o;}]Rinێ@}}]7D" ߝHa/M)ۇf07Y?"V1 o휬7Y0A L^t8ߢiac f/&~a \IN1ag/sc7]<؂Jí0 &i|6Vfz>-Lo[sL#`:´'W:1E/k`%aAdAwâtzS2,l.75@ <-xѰ*Z{ɦ%;0̘C*`J`ImQ+*YuI͔H[`\eмO .{\c&_ nv"Kեꐧ!0w Dƭ:р[F.Tv.<9Vgݶk|,UP_ t}jbTJgJcUWn[ᷴbēaa%2NbOwB,ߴ(A]]aR@w29r2/`gi2C5o  IҼ`+pr|?/ B o7g)}L8L<(s6t 3_;vIQ Qaܭc[؁4 N%^TRG(VҲkP~n&S~`7,APீܮs qw4yJx"ܣ l ўH'wyoπdhb{C#<> WND"tԛQ/:0_WWO/i¸~580mb`gef s< X$@]|.=A^(hoWN9}67>q|]GA>ZIޗv(((zʰp XRφeDEEQ,۪ 5AءF?Wfn#z끫 < ,t>fDSa_3<˔<&Q! :tDΒ3S&@\Mlc+e~p 4`\z8W@g4&g03+t*vCbM؄ l!í=c8 'GЄ4>E-~{!)J3Ї-4e6o8˨>&d7o$G jѩ(,.2|gL# ]㑅Huu@IDATYey^7!#Lf7`78| (ze./sfB҅%Be3ub'܁֬( 4rsp"4a3,rG*E.JK&8%-Wu;]  9"s?gCΝ w4p̀[) K W+W8?zA}p.YM&ToS՛ KP>ӗC^b[4b(35H*Qg[7%~i| `5Ѕe<@ғ+OYb`WVAJ^2t`lto>gnHՃ'* ρ~{دF{z5 A9 N|1@9蒍W8)WVjO|N@sxTb.Q9)T^'{:B/zeONʷ KZm *w@Ga{CDbl %u5<y|U Ybi5rD8rZy]tyasIk$>? n(8XOQ@n!C>%[x Nyļy& |dz,u9{Xj+EX*QU(>G)l$FJ'sp-̐5@MPR;QKb.6-=Qo`f[`:_ CPя!+ V^zx.$4xNW*"8r@]Fn#}䐯U I-ƎJnƋEЫT}ղ{oG){@۠-P0}%^Eb)+|uШ>0g7g]g b(J?X  n'Ċ%S?fixF# 6>;\݀_*6W:hfD(@XǬm` vD)Xe3퀞BL4aY4 sh[|sA 8brsӡ͇.΋M+,*֞*ڀ4nWoIV%YnѶl4VB÷@CX w,6F G7hIFފrYM nOC0pYe70\fE0$X;)l֎vep\yb8]  W-} Ctp<@)l avtYeTCtA`|eKUZ 8iK$ A/ں /H~ s, t%  =-t<3lw?KqZek1ޅmi3L!Jji嵦a0:6}qy%|kQ@ M݁w?g;^L2'D wYu CL(瀞3څ]Y/Y<`0AxLpJ=V)!ÚV_]/4e8=UF-Z:hewm4;iQ# '$ 0S̐ypn@ޯ\tWWPLx4߃~7 h5`ҭM`!,gv`z h]xTg_@#l uPwb!6r 0e/ۃfw me[%_TkῃղW K#ɿhU+.PQ*ꪪ2泩//;w#оU۶<0ٝf Ƀ⇖%`χrOEXj33d͉ĥ/V&tO #AMwA3 h̕q$DJO-LLy]ɓ 3niP6)~֍Ýjt z9YZ㷅KGQb|1HRA#闬9A|AXs g>{7.@g𔢒L_EbE&`Ң h~!/>ghNaXa3|_"S.B4)|ގ2x]1`PUǖdmyLaH G-#ςwh9 MZ\'W+嫈r'9/`=M(A:fʞ6(2$x< o _  I7۽^(f̏y%F.E>{ zB,A ר`\+[ B?!?E%kK\,lY5BQ5k_UJ/4Ko0o}8Umt*yxY (#p\53!e:) 3&mwr'5rgkD?zc{f"P#y>+5ҸG܍ԓ:B84qBPE=..@P2]}`[BmqV$B@9,C>2 l0$x1Ew{M]E}$I{; L)B9=5z (3h+ D<8Mjeo"4<5Br @@6@!.6_~aq1po`O@>;sO~Z `i݁ܚ  NA ]W h) y^ Bɍvv!TvL{Нd9{aқ3! )ϩl [Vk !jA>NAL|Vܾv zA 8ov=pЄο g069yE0yUpF"<̴fP[\#1h؎9z8#z%X݀uwՍ]am[Z`J1qYA*LV(N^" ļ\O-ـ+@>j#&#=/[@,!-06yLׯ2vҫ0g0Yl4~tَ|ygϔG9p^%oWTAMG6 zɼ)w9`$ Èv7s`AV&2=8NHY)EbzzIe 6NQ& lp 2[Jf@p&_ 䊦hd{Hi]R0MܫnTf6R~x('obˍ2L`&߂ !r.ؘDp7F wNUs_o =94A|7h6˜;>: sp\Y6ͽnuK}L" ^eҌ,wR[Khȟ`YRHuE^9h]:(H Uvt/#p.>Pf; |('܍Ϋ keVzEu -0oH;1*dsQv˜i8_oBA;98n+' oXz^{SǹCFL`9 rz/2˜B, PS $O _he:pwRdAw,l uK^xE,G6ۗ(05M'S8Ef!pWpKX~yνQ~nZGGd3ے۲\LԒGR>5u}g$%.4c}Øp^|)zٳDW_`},䚀؟Bbqn#]mhfty=?*$O`iǘzN#+'vhejFYV'Z#a>1')DZiCoЄ"idC؝֍:H'M#@ǁŇ>ƒ[.łcA~,@ kJ' Bj+3Gfj)|R bq?z9$!=9=ut\.۱@jFV.ԓ 0#-WMP u tCcB-A!f9$<\W ZqyQ_Kc|4뇼Lx_-VC9L!sfP d}A:J6Ut_%1Xc@?@z[,mkǺ*H KqgUX}Mm''OӠNjkIv S#@>_Y8K`ほ{g.~Po;d]&/y ê/u AW+s^*y{@nN g.3Uv?)/f'`?Il"uIGvtB 9i므wQzwW/ke\Hp:3{: kTzJif KQ&Pml[_Wd@̰ij 44jl ȸ'Py0kyl؟>.f -F.A}yf¨ ەw `XtÈW Ӏxc~'&` -6h1kWǃ$?X<N@I`Y2\ُϼueN=m9J&D~Ĥ@$|23`~%A#`wcDbDΤ\Dgq 1$kB^"^CSaYF}Dn‡ r~ME,4؂&`RN^6ia= 6lI+W Z?H1\?.Bb8<شsoQ\{^mBqV-D)4ʰNl2IW:zErnJ!_ /Rԉa nfi{?-@9Uҭ2 s:$s&:hh F+x2>D9BصRL׻:pn~Ε%C鐳 PeJ_5_|Up%$usHSf4g+|P(̛1|MX69 f},UUI,ZX/ehCacZod:U\:&p =;YT7^DwފN)Vw=' i$Hc(zF+j\ ,`/ ׏=VM\@|AIpUQ WmciA +:RW+ PnuDjlPZвBl=Lh+4n^pZyhBG#y ^Rsq8ƿQvTUX1&$T 9V{ 0佥!sGg, Bf8?DYp]p.1l<*kUE15_"V3om<7JѲSz"/ĦO_RN_^/J'@8/ ˇ[n2ABtՅX X" =GGCA #S )&˱ig'+L^S'/-Piz/yuvB,E>k [A:MMY,y KP6'̐uLjj@4hVʘO"x:fʎNw8BUM=p +ӽE)fr8{rݽ/_Őgl։-vwObUkWitBfP,WQ(d=,K !t<|F&i/’];\G8eyZ>!S>ңKϺ|"jy<Bt]w 7 `[A`VUDW sLJpq Zo̘;piiX:vGtaU#gْF^:j5:!L~;Xu l>ߏ.;q9Y-j[WZB n@&:7<Y r-ZWpϝcaʵc} ?`zH%ߖ?Cy9MrCDM:4H9V޽͢$]Jmm-|ҨF8 $ RA-Bc& nv+'E| '{@$ 1$61+yvyЀpa2Ƀ e(:rpQzJY #`߃' @٠ p{fkYCZ`9Hjh2qc 7ۃ;|.ęh7#SP'q-~;ה팈 5T[mq9TH$#) r[Iv^Dq69Qz5 }DÙ7rSq-@7Jd-a`I1MSkt#ŒIQyIq#S,E'A8Vy#tPoХ7#{ޱadOc Z p˫L֗H/#UDtyN[(ubuE]Xإ{>!WC9釅ip+A7zpSSi#bg; hY( 8y)ql"j6~/w(HrA .pm`֗4W^#|[ƍ٪4!p3 rkT6Tº*Yȣt\4Cmk0G&fdoQm ve0aY/ʗ@Y:ƋVqȞvdOͳ y-~xٞP ّ:J=t6ZN7Oq{![U g4Oc#K`X CO pjJV\АYa ?rl?:8(> Ɋo/*55"d֭읯RlTF\eބkPxTWفnLs34rθt(Cyp[e0l=$( rxa5 mHj;$%/;|rw*xуZLg6@3֍aoMRiÑ in< Y1 uCl`,~X|Ts:fq M)olT؎WAmq댪qvК[U8P jق-OM,`YܩY25J6] 8[  ` O\jXBZ'bvs6w#A|9M["I'Xw4ѵde';>?֜cЈZ<T5Вכ$|]`=ڤiCl|S9'.E/- rG/ LQ>%O*Xb}TFTψggg PdĶ@zR9QLsaKMmoֺ-DYˆީ3y3g\#_3.LԙxȀf@AAVG#h̻ױb M˫n"qYD KZX/ (y> W P]A ?xj[ u0j"+'tɨ^9!үF5ЏM7UoݧLjh-06xCF!1 ,rׁJb#vtdvQFvR(oDw/yU^E0t$Tn@=x^H+`lth26?CMEY/%(Syp EB@[1#vQa0TRs̥GUc?Yye| ˲ p 1>9k탁e.[=|EvwPS2KR55*!YPH e"%#w!B''guܰB'F;J>0;A1܈R+zXnX<2lG)L0ܽX<v/?xMX^+@)$QG\5ba\^5 NVO(2_?O=}8-xaKeʗog8.37VZ$^QS/]3A}g#jOh9B!']W+c `RWCj0I,Yl8 /!}s7a>Xέס^aQo޴f kDv Lk/@eۀeFx[ÈԢWɐ"Ng1IK:F@9蓎M* 9zPb!;0xOsc!c6LP-y:Utt.B9/ !^@'Z$?P=G:˕ ' :S>* 8DėwRqIv~̦<>B`w`-A#1c8߀wW!}=}5>u)x:$ 7p%Ok2C\V\r~βU'k܇#0 o6.L)g҉ĸP4!‰s!WM"GC!^ N7 [Yd?'$*_|VHM3>4Uj\D+tda!S,1K]T]}$H$؈64u+43jN5u>/V fۡvg +IG@0LdvFV_CAi<Ŧԙqud0]bZ+'П)hN)޷4z VX/s(<c> Pe}x`\4~\o:@B.9R=禩,xtś-ōod\`s3`tTOۭ=hvh?sy[Hzz 1Y0ٗ;bSʟ_pĵ1t&dܼ &)t'd@ ;c9pZ(,=G0լw^tdwooէaJgњ -!O:lo[ I4+i >s~Op#ϛQvfm%FGW8i@n( h 4ayσc 'bGa<`nZ | <57Q!r_gr}1LFNa SqǏBנ\h49\\H9##&Tr1h"4s|<ّ_-VKAw*=k87M]JeZez`mpZӬW`}ߍ#^2̸ [+GH|`w`24Hni֖ z[ya[9‡ྦVUցHЯ5J_ܛ;-cSFA@gRh:hr/.2Y;);X$7vv[Znxua$ Υ749!Uu4̒![_yȬ댹pvK3%6{A0s9 ILmPK@jMboH-ԀZFsq-. (^(ſ"*e1z:_wXZK 5`z6+0'9p9äeZxTx]%">J7-Hqt#>~gmZ w@ :N}93<%y7bBЈkѽg jE'@3HNy@#|v#{>< Xs=O:L1C @go]U–?_- 覊Y4S3qdK7% &̷SP\seo˽]'[љ:œ;-qV/S@ݗdafR!߮DNO 8)j{`DBڜ)sΊw9 C#>a#aICU.Ew[ÿ3ԗ(>7 Q[H uEzk\ LѦbE#^ͤ2zr Fd8uA=9', u*d^k|6w[ {:d05̕!C߷9?rՋ_B w|YI?E;rI N' ":޸{>w`AZj[ն9).8Gn;~sV.9dX6|$`u4!t-U\NvdOmp(~hG <ȻZgp*~,)Ӵ T'E"+)]aB;@L=> { ZŮC "@ցc Y?K = ?;1E9C]pdT# /~aH& ye= t"a>d8A|"([ѽ*M5Gyuλu5._Ib0>xOXOڦ~q]Mk6hW R|h:4nl=#|E;aȞ /X|g540#mF jGWi/WUTlΖrÿ dg }0'0W}M ;mɲC!#95ij!.B˙|жP rHVwak8 v0\i :w )](W47~7Fe \Ko3h"&VEsi+6C劍[DWm]}M[aKeY7n.I6N\ޏ,rt-W0iK`HCNejL?`:9ـ7/yX;'8z=m@ĺQua4 ?C3ʟ  dD% wpǥ/uO.lꞮ.P;lz!Q6$i7+y Q?.t Udx|GqIUSw)? RS1rm[5GjӦሓQ'1pދc#Frs3{\C ~L=hXm~Sjlj8&$5 }bNq\c-K*@0@3UQ߻QEeJ[AբPH?pΗ#1i^sQ8R5:8 o9UʡN.WmSP01 6}@$caKp\Eu+W``d3Vk/ENh3N/Peof!AfHyo_NMјZ0>ypD`&A ##X$\|[g; *[@tK# ,/Wj Kv -,9lARkQMm ^<3vSgwC:^lP \T {M(d@&bA Bw/!̤X7_\n<i% | '\Qg/qo;Ʃy 2QDjXtf߱-'yO fKʹ4ʑގJ=MTlKGAp(첐]!NPgkz1>ٯOOX_p\ Jc tL8E[Vf\j]}c~iy֘,-~*`jsr4̹_Aܓ&jo9t@ 6}Zh6Ɗ~Smv~Ct⏉G7l*`0ix0ZWYa9 ~Cy̥p~yKȬ0Hw/~EgGc3U| 2ŌixX|aLmh˅OYg؟4Gm9xꄔ6$m"KHA*nXMfM8ٗif9t[W4 %_tʩq>$g,Zb^+V(_,q%+2WeVtzwVݡExs!tl1~)3ϋLGiowQڜ >i\87Xˋ6](R)]]Pu:Ƃ4^dƒ6y*GdJt'NA-8 ]oʤ1;Y3χ;}x ~gI\SH/tm|YdIڧa-6_D[aP'q?5<'L "3fᓐ;c=By2ܹ@!R6Hu`WnMb_NWp9!` ϡ0Âc[xpcd-|owoCT;jZ7.Hdʴq P_SEI>W)dOEq[`22 fr/-֭su"J(/ZȼŊ@t)R[֖HG]Q9l+s NaD /¨B8ޛf066Uif8@\~gnThmo/KLG US8Y^Qox_Aa^)^d6H;\`*@8/J"}D=7;ZP=߭-v+xVwMɬ `REday^h`[+ݶƻQ'KZ{ @DSp:z=[ +#S)/gJ}+Sx;kk~+:^*epBP!.u42‡K-cS0g6Q=r}ua&x=L$: Y< ű.>xas:k¡1H=Qd3h/~gy'0aԭ 0v@\''1%yb7Je(P~ D3p?Dv':ᆯ so$ #gJ@IDATax1Ћ>WKE#bU4 LAg\8TSw4Sﻯ 󠥲(co6:VuN+un85C6@Ù0]4ABr95L}GBw~w[vt&/ 8R mJlB%A7a} d 2Y/y[8^%Μ q(a{p=8m{a.D BmؒXB6ѩv0_ ʵ1.'7L* ݭ{Mi5鄙<f4[u.g!Rhn U?~_8Ǹ6Aӹ8{?+?Osy>Snˬ0;w n +bzgO4jV cZ(XapKvuY / .>mՄ 12@uaZ8z5oo&t~/]ٲ'=ySY@yfbH{'5hpBi1ш6u7F k͌}Bي= jtWȃ8&~ ӿP7_0F{/J(#7HңZ t3< ӵdɫd21 i쏯YnZIɼ$ HAuR'θNhl u 0[f'T@>eGlYbܛ>τ2yxt)Zq g#!w|տy IplW߱}^[GqN$.d#r^*,RNP:EVN@t,&]@=dj]'4$6L@Xn GM{WK4(2u`e5!(e%c W _pɰ RߘEk88tJdLC5!: s5_ؐ '|t^WAĕe:%?U8n^xU 9.vnee; @$͚ !|V4.Cޢym|v[M;XBj(TWUpwV',ʐJ}ATѰ0X"ܥA3(ڈMx Ʋ"*BGb#Li~b(Q/U86y퐁i7mnOh鶇)n,@*f;m |{{[J.? ǘ4[xp% ꆂ6 F.3~ pF<!UNP Ĩ ?9'x)@̸F!?VCUߩdWilUI4WLxNS9ͣ`6Oz[~䮞%ө8-<'e%@#A`&M9rl9Yͷkz.c^նH|Z+ ϴ g%? 0] Ida oEH(R2#y3`pd|a~m{PζrPh?& Nۏo ?=nJja=%uuoϚ.%FU&#LhWkPΩdUtzlU2I4=euw+ Ƹ@ӋnG/Olm@&#;Kx<^Hhczj7<ӿ\T:EQKrF9%XWXO~ъ Hc̠`n\U# ٬'igZ >7O>'GC!1ЛaT(ԲE}%>R==4hh;ST9. ppvj;rBz!Rd(u}I͔Ý_[OƟlRRɏ(X: ,HgpZ24-ӕց9pJkEՔ+2ҋ#P o.$Vwt5z5)ekރQ}Q^HsRZ/2i+ QW茢 u$o~}_2Ko0fJcOAu )xG@<s}vħ/l=n_1`1H\W\NK\ [xH\;骞IF^ Mcj <)qDN%34b3hWx{㜁xM"xЄMl4@%d/ು [ x4rT>CwCM ;#aE~T.h9fڂ"($SP/9d_BR.ïZGH. r_ڨ&=DBV2 $)E}IWLb# YŔ0Uev4X>8`N|_qgk"_N4;n_Q_ Fdè/&WtczgׁgO%~ 0| gS&Lβ`VCD?PBjf(иWʰ%}PORO-P~?2.LrޥL1*#KIlg~5H,HxwA :%*v4ܟSמ or[Ѷl.!fsſpѸ>kYc7?O,phad|pDiXyEŠRiғGv R&kK@Iu_&88w,? 7nLU/Mlby ,;bJ*'~*Lzp8~gDc5 9 $Gz^XԺ0ڥ ޜW ڢU0oE h$2R-T-*TSf!r pRD =!( UeJT-uU;h@(9W`RVkzQOG[SG:99;eugAdr&,++ uc[,nLS7Ћ T#un|`Khe>Ys#30 ^[ ('CSOGAs@^E(]^A y>żv(qUoXcXNw[,y _S B/ ]0cWfRmiGy2D#8[>pR0}_ny8y?nlRMޭ3= ]_oqg֘;`T DB`0m0>896Z[ݹho^jsڋ+yj?Mg91Sd-`UOxb|rX EKe3fKQ+0J!z"gꏥ>'|&wO׽[05c<ٱ:9gF#-UѪh.&xɎ+8e:o6Ʒ >TSZtZ?54~U]HV~ =LF%$q!UUjRbAP=1MŢѺf+r! 7shd1SC??k7Xމ`) AmY&,(G=/Q/+sk3dod5el+U7ëXcPg l{".=34 2 `Z| 0͹Pf#¹"`t|O~ n]L(;*Y<\ ` hwA;!jh!nƯ Ŷ(~r 8NE[`(̈́gei6;98 2G2WϘ[S\)RHG@^ 1Գ2>ST%y} O\Z'^i1n )i2rrK48dK*]T%:_'59pLr&jL1V]oc9q݋/cr 4LwL d(dæ~ n];9`2R5qTG8Y=GM *vA=2р*Ui^@kbi+&^WՆdc+0Nk 's9u+D/M3RF<SC{jTGs0o`xj" {x94˙c@|M m ?{?!oY,\'>jbi#p8rT A6f6bn>J'6Fz%>1HHkϨfdu2jf3#x@f`y Sy\d3)yn)Z^TU:8 ~y1N,:OIY27yD!Ԁ{j 6onr)AppBA5\cDˑ>/)4smviLUҷGe[S{\+n-_Z &>>R377 p VLiR˗Yիjycͤ[ h 8jYF[-X|1x.9I8eeAe4伺Ʌ^ ZzM:wQҭkll/^cԻ#Wfp EjܩrOdGQ*d 8XvԮiKPfu^3]ҾSB˩(EVݵ?5_U1<]kHMt/\:Qi]I/>ޔIڂ$9B˅ B`S6K¥61 t{¢RR8{.ZjFs0eXg#u2.  yN@8Xu f] ?UbGbɤ-']o 959KX9 @:5`G2U3c0NxɬNv`t V+cgOZCoyc!uŦ^-F3:oV)) ;D'@Qmղ/er1e(RAxzWk[\w5POӾR~~.!ӍK1J%+r^e}Gc'\G`xRaҽ)GliZl5eh0bzF;5lubs[8&~Uz7B4 auܽr՝OS};4!]z*@"UaLWe-9`_JAKOpv|1qhI)dR=F1 R6IW{! Rk[ds͠6%S⏀%,R ( H{k:_Mg\S(8ޕ5#f_i_Y6pԺ%%` ^X@5hWө;1;(2EZ9 +4)xq4 +4\NHEv7bրOA3GxxP~h׮-dЎ 5-3s+{@L+pv28 /a0}yQ7T{@òoJ0G~' 9t@XN:ѺWDL$k(8JraGK6=jjo}cg2HGcEFpYnѲfQFkv:_IՓ9G^G {'~_'Ճy{ߒIq2> ůuƌi9Jw#`W7OvM'hT6cxd/ R6JdFb@X/=b T!~k =iomN'tK@j8Q5?bݟJSlu#jc7ݦ03, IpLԪwI"*g7>޵XIۙ6Ny35t:\UiU-'X,^Yo:KJ\TtjZ)YZA~^9[u= 8`ʶ$S$S¥/nXG"|s_+$y{憅Wǀ݀Vϼo >{,bzGyL4LnswX5 Z: [ܱ>14l+`"0-t`爫IZ4~أSW fS62u9Odϑ<6}ԉYFu;dH:I3qtJ@F-L[of:ڗ5']p gXٵjFFXiʥpKzJ:JL@iм3;vu}k&qD9BcV"Ӧ֚qB -b($N Ɲݏm|ꬫOߵXi)7ŔKHZee / jFv_fMQ6ԤS! n#I^[^@é vӼW^؛ >n ccT —PtL%1stxBu>v!LiۡxN`&6<^m>da><})\P,VV ^.,袣h"E>mRjxYuu?8Us *-Z oz(&ԥ(qFa;N X7;ޝ~20tu'pxQQϑg_d$F[n[vODomFa#n7ŝ.n ƁwgޙglUœİ[ @qQG@8)5~㜿~}yf{ -Zp8/o6j ޶W7n$oU1"Pn2 >Dta+^m1HD́K:nӚ ^p]Q>+֫2dN/l*c[pS0Ik`DurHaq*EW?xշ2VD`)I̓¶ XE"T<# Xh}}+-U[vL0ꂹWdJJ붚].`.5HE\EHTʇkK~ 3NHARL{!S#xleO4 Ϭg^jLĂ<}9p+ ]v&.,vкm2 Y X a084&3WPSÔ͘ikyypLԘV__$ j/GSs*w yj|l(Px!dT 2{!X"9\tbI[0DWB^- (FkpR59}M_Lbty8~nd0]|vƣ{+$ieUNHzi䠑I >=u^گU,@5k IJxYD KbOr~>zE=B(eePmtce/-iϞ0\y㫃b% |ofIZ[cikI_2 7RGOiI|}A\S^F~Uk6Uh}mVlw(a(_]ȰFW5 n#lj5rռϜ, H.c1$?n\f{8n#Q^eeRė ikc>YC6xh/`݋~5I[/NEj| 4Ј/,phV l0 +1ΞT׬wOqPļQ`$ 5DR5$V_?O*g?'HM7`]$ 87^{I>+~&9 28ɟ^uy_+Mï'fZc@ho驵+ܫ[ΫOXI+''R(y%}3'^ủO Vqb>U7|Q;镡bkxF^\}?C'_8nx18"ߏ8n-,UaB5GKZ݌^i_+.;+v.?``c Un.62)7(3;we2A,7Ntt6NԭU`Z@VpG~ qBW #Iū~sy$ٸ|pjW{[5S.4ll;6zz:[ݙ$z" @7`LoPi٥\䐼Ca]f)Bϫ&cg,{&ma&)lr/a0rgW,q JzdñmAJPS|!.f"Z@}գB_4zj1䱬V̞U^)(oC=|fZ>:~ouMMAqf)JOC}o(E \[o=4,W?8|Y8&b4RSɮdS>;2ƙdaGoosT(X͘?[~`In}KWNSG%s=1'`%p֒:M(uH!L 'Cz22q.0RJl ˞eOb9Q8|FBƝ2ȺR"=ٝA܉EĬ/A@ fīXʕEѸDwԸ&=2 z}raMHwM?,F˨#:Y dUzDuC1hWނϘ+Ls~2Ѷk\“YJfD`9}#T|}F,3ҿ/ V5>U#U BjpZ.}4c:SeՒje-yhF,.bHKk,:ԁ% a56rhrNWAYȱ#ݥ5'uUR/7݁eC.vW.D5z>sa57ظdE݉ľ\v'|RXmRPIKL:6q.& k4V@YpM9T2z" $Xx{4gt/.9?&@N:g.6dňRvZ_x C&ߣNc!ϗ~ ȄS\$x +>Jy)*[Nu2b7gPc_:|xC89}xbGI,.W/Ű9HS +V=X\c(:Txlku^N5\ie֕D!'8L|R9JѺR~+G~p'k9o&3۞K:Z2+_լ,ez:cUi8BxFƠhe\dSICC&O q x,֍W=\q1w(Ɵ2WWeGMHKuL=KpsfK.f@&0̟Q]]rxCȘJ ~JC\wGM[.8`9ԙ e]Jjq=_>0lb:B J /*B)+\ز[}+=ӛ;C[r&zd)Do\\)|32t!$ԍ\9p=NJF:尿RL ,(SI>2 ZraL_~TWW1]ǭ ﶙlf#r$.(P@ fbUO 7E4[_&S9&uۥu x{LR6y 1-q[`.ۿf@b_1r(!.t1CH2r\8p 쭺.cYӵK,uUh.@& P:}* wI`鰬e~+''wښFREQyI c"C[|c8MI9X'_D[ʹ?@GV7^&lY TaѶ/@S|+=}35|p lv8tJKL|\b'V"Wi-y'fs0|ؓcZ~{#;qϒ a6(O>t8rrzb_ ?q)FMQ&3_/aaQ.:;uIGj@EO9i>z _ ЍN(7Iܻl*jpQx U P+M3U5GE$\pݪ)eP+0i؈?s$k}@fO!xԽeWgWE#$H#>bq4?N?Sh,E<^ס4/_xK6tُO kvy\Gm|4&ӳ3͢LFgl0̡Nwz|9r0^`<=drp,͎e0(لJ3_ԩSU P81w, j!t /Zo>nqWAH9~{ه#*#K6}Ha{>~Oo<׹{|Rכ>—6G/JtWWT&cY ƫ k7eE[IXf^rڎ<1V}ſ,h={ݻd+$_)0ANqUS/'>{ФgN1qPhɍ0Y (ލNaOxHj L#\/b '02R9{ºwA f@IDATT{EV50T.x2_{ԡDZBFR 7CaYd:V_I'yٌ#grpx,z>VJV?b&+\Pݺ|T{"=k7H%9#0<]2<4/\r36z+mJ\ô>1O9'8Ί\9}K"G,ϽKC#/hMRO*Q0On*3 җ>}Ф =l}".~qAs~Z@I]Ȇݺ`gtE q![H~_ GqCY]v1IJ#}?]6mV0kJ.I֎1{AI =upIiSPU Nnu=zWzcv&b씇z8ӔLk‚i9rַ,ŜxsxPL걇ug]xNe5y5TUoLܯxN֧&$ŅU7K;=qcޕ F'ta(3w/frυ#':S&1"ɕ_=l|tQ45O-)̸KNSqZ{)Ub u\ joXH;oHC{$ 7#܋B6ljy.GJpM_cbu>$Yѣ"qF5O<`+ O|%|~MLܓ2hPXYpE|x^68[t$#`E c'|6m!$oȓi/$@X:֚븕ZDR$rT`Z3(atn8t]v^0kE⸦a?3%}HbŚ@,kYv&S̮ڋy#|6eSݟe!Ǥei?REZ?j9THoɆ89@ۘ@s2 Ʉ.X.mZ E.9󝆘=l4snUEޞ|. y.8/28*hZN8&Je"󯌙>*Gybu;ִR`4x$XFPa 6C9 'a8Md'g[[tj$i n78rԽ5"`Hց-':y9dGy*"&p7v0|_\Y)ixS H ym؂1uyE>yWO:??@aKgeh$g~V?w0yT,c륬עlCá)Q nb\7َIGilGk TWw [G[68++[[ȥkhw}ܠ 3B,*NW@W8Id-3W+kN~|PgS^QN YТ@dG,Wul똷܉lh ĦQD ,Z[ɖI=Fƃ2z>uth #i %zD%Xz''! 03e/pVƧbxK!pZ4g2K|n؈O!*A"|xG^a\3LZ]&Aa]3|,r/nl7ĊÏxgD* 7vѐAGm>k??V&;(:d^>Hn1'Pi4iiXpV 0ـt͒V 4)&a1Ӕ0F޵"Tie?;'kji MͯbubMG)&*hцc<v2xrT|iu?*=U)7}5.)^:8CA!<{ΞTjdHJ-XԊ45[qZx8Q=81s&)ókGy pGXF5pb.SO|KG@<2PV%3Lơ= t': 1/\S9^9{jX$~E`K2$7ݮ*y6 1MG1G@Q*Y__iI :a_T?#)\nl5=%XtZ>"tOϑEлXa-!'ةxtkuYa2Mkaٺ{lG:9hÐ0hn` ~ܕ [LV;asӾʶy[vSe g`eT !>-)'zL'6B, ШIG@z `h)e= GO&ATd5"Sgm~WD-iv% E63? i,{؀NbɗcŇUd"n P9bldV}B ZPX|sV}Q6KXCH'Y*kCq]s]#F g b(Q>loW0'\g#NJ}jW,reyu %0ƲFO"c7x=M sW9je*d~qFi\z21o *@ :Y|G 'G'.b:$##&7 1g]h@u U}Gn;Zx?\ zr!;-KyMknyTPotvf>H pƒ_Hvur(Wr[ݶG5A$>?7V;^{~>rև?Bu^=6Vo/rh-#ui{Vs WLehqJn%6ʨwkL^rNq:L[4W.#7,Z^~ P|햤i1_{:Wk_ܻ}6߾rRmxW YyQ>b o@S$AP#t2}hU1ݬl%QP)дi[]/>BQc&^޺rdDW + M#G_K|ȐP<5p oG{Rr9PerL^=,Sb ?qϰ|<D^MKN)[׊U;Rz݀L &;/a} vC F} + C:!7xyAgQ ~;5c4|rkfGLa)iXα zEl"yJE\d\ >j䨦I$ +\swYxd651Lƿ_oKVjTMVdGS6~B([)'+8t)02pJjQƟlD9x@c͔ϼ-@q[>uċL*_x74j dȊ [KDwa fI%jj*y8緛޳/F< ':&_?[k*/Sa|˰p욮<[Sϊ*V,pbnw.[q/ &]v-CaHUi8:ռLr x<x Oyš&SC%6" x /|w,ΙZ] I 'r߃LamJt7f. yk]eE 2A+;;{Fﵞ/ՉF\BLǀ6hNx$qkѿ fu;#=&}v! $Su3p*32?2f04,<'|n.B E1 s le7ƿ\D&Ċ'VTW)OH)a]y,q@'@2fLG̻?s㚣5 ;\pe{ê~9K&!V9X PãEN ?jDQ6NE0پ{pZt숽x!h8 ! TU|fJ ~c,p'n{ՙoRYΪvJr<&57rGZ)7P/P90|6dҚpˉ"};ہ4GqXL?`~$ix3ұΞp_2#R :@- ~ 䉺:=ˎ+*vbP1x0,2lwcо c"0P5P_d>/ڨӁIHKh᳓&oE++ymNv8ZDTEiư5{cqDXqI1'# [mp7JbF;М8 S~ `U &+{P=WlrxszށWg6{+2wFQ/ @=!7=NLplgbb.#?+!Փ'~|xm4LO7V: !Z-mrAF쟣NLcS,&nģ*,:tu"7AGEw;C89sq꛰|6&d}9da6~vG&#We:#Jgçe;f V7հֲ+ LIN^ ˀT*@$[у폅BfȐPտ'%a k[wtm;|#a=v!9!G˶>=j5AȾ ]/ӓ'*@PopIp2<| j|-Ҷ+D򶕫`9+!L3Nڱ_^Wg ;ۮiKZ9 @},MG?1W|OߺT6z2SV8*We7;ߺ-/]JpY9|7AdLMjG &AIi<*\ݒ B80'\EܶE[cojɜ@y0(xlڵӡu8'ȥE~8~nj1,, {*!@g[TPA_]}GgWbݱ(H%S)k7O)+wڎR^o747Ἐ{ƟvdXӳ1OCyА}&y1pN)pRo8;v8z L|XsE !Ng~ٝTˎrҳ;%-'@Q'4wuSo?"HwvwՃG؝HsTKSx=03F:p?޽n ZBE(c8~iX2-d6 DO- M˾cCqK.h~'@F#ճ0aLUGOJ7Qˍ[pJco^֓b'W҃-Nt劝/+ Qb#=W8/l4Cy88$@)Sc{[NnoLDgk9/6hx>{>F˟QיL֯n9/oЕLMI+/<ت'Zd껻LuϸO]vM|G\ ɝ &.K:f矲YLPŠTVIrr *!wrq_n"?8G_'Lğ~hHߞ:2006,i)<£xt6 ; >VSdxOmPsg}2͵`L)ܾ@F (?xrtz"0,`k&*58x R'{&'1d Ql\iSв뀵s`NO:jLI9G75coǢѷ1vG2F`xlۿ;sY4 olljokk۲;޼=3z}Ò59gK:?G“>6{.o~8(ƕiԈC] aeb?_$8Q.@#"gIK 4 $DVwv84 lB{ Ewrͻ$LTDATD̊bDAOs="vټ~3,TvzW{UUwW;Kzc?!/or)|V#}6UOKJ*j4j}>ud27㱜 $A /3TŶr餾y# +Nu+jkΏ` thLl2k[y\ux&#NH.Q`Y47qG&!|~+M̏Ò[U D=VޝEW*t.l.f⒵ on'"7p8*l5C{Ց%9Ni&J,wGހFaH &G>ۭ$|%p?z恷ldMy _8| &΅bDx@3 6?]PGsj=wb1GCx >b4m Vt$׭vN! F$t;s\3l?m;\ґ̭ԜJGr}!`x[7~ʿbHx 4G}ibo-1/*8Y1Ct2*fReQx)?\\ 0Mi,b,+PbFK4x, :v)DNVx>8 ;>ۋk4#m]n ,L[x_^_8QI9fްl|Wd/(#X3C/BLkOdҁj1=m>#g1aÏ>7^c~69W|6W2܄p(7}K`Jrr({윇?hC*H :!t&cUﯮ'MO[놂h-a:5?{eT`hq9&:g"S?b?zo f37 ´2CGH &\`d0/YKu3;X\i?);ݸLuCC;w+$C̴V'p;]޽̌}: -{**w8?<|hAZ>sD=`Ry`3[K;ty?_m6 ɡcAߏ9/ol V = $ J.m17]OF"U:XɘXhfgu9ֻh(t" <fQKEڻ֟t’gx޳wvW/m_Q-\ZͿ})89l^ũhbtԉκnB.>2bYNc|փ4,#882tg p}%kf# ٩MW+ s@^/'؈vdێt[Lg,xS)6[^9XnR=nAѱNx= -> xO1=v֥rF!t4cL,2祥O|>Z` O;.t8rM{ .4֞m8<e];!=Hkrm 2u'ܹ|^#햫󭖯i Q`Zk˝מ|l/,_\yhY6\1IƢm`NʤjMށ^Mo2.AH2d- *ʄKOYYoΩt1 HsXgڋ4-xj(C Yy߸"!YeAj ms'"N,$'|4%dz,"H(,VJSE Mne}>k Oq @>~'Ld| wc1^<! }~)O,OS"l"u,6"1llЛL%ic%o<VfyT׃54)ߒBC1FkNNF{h&#)m77r΃P^Q}A8:;%1:v WO-MIDD ˑ0^dh:Fǃlѣe_߸킘m6ils5f82#~j|^-`fdyM[|{U>2&ہL[g.ĦTM8Μyo1Muk>P&;BolսҒaJbG?c" ʦ> *i\=BAxJ 6ͿfٱV]'ܡe[U1civԂNt?`$J"_Bq:Q-f'CEn{`WR-xgVTKP8g"{29fT}w`~mW"YQ#C8&u,<~W촢ޣ^?p4_7;qrŹw?_EZ «#փ=gC~+Ƀq z N`uU*~)Z]):EG%զwB7ۛ;;jrč'OE'(\P][{B$96{$nFDߊN ={.q >%8訡L++)6PCi(}g{QWc{×C~MQRP qQ%dr喒AB7xii:yFz+:&&NX^QwX&i\7H |`ehDųnxG PvD'FID~&DBPe7`(AHLu۷W^OvTOS^5[R.6g6U[~ǎ)5՛Ε$mm*]},NNǴpc|>=p֞V i/|e|?pI9 ^WyVP]h 9_o^z9yU :T=~.-]A;f;PO* ,^خ/;>Y 7No:;58T18?BWY G_ZItZIVnKƀbiQ ot @]3#MG)\plRXXھH{,配=eew%'~pl2g1rqM`!7|*D- 6Y 4$a# c@έ=} eNGpxxG{GK 1?WN[rnOmoe{ʊ[>YMUU+BH8Ix0t#:OD Mw+lh6KyʃUS;W.+ !ȳ 9XeL'}l?$04mj}Xi^q|Sypū X@gg.] ^k PvӶVB3d^aB_S]ڼ^n]~9y5||>yoavʸR*㕷 g|ƍ | ;=yQ삑 }p=ʔTz3&?_`lr-P 8 `1[_ykei▬oI*+v>@Kb4[2 gaUUݤL`"&n,Թ׍ %dNC, Wb%)ӬXJ%z$1)Y,lx+jw4:a7 L7" 2yE/E"cu xNI(u {hPc]|ވdZG~a肕6n~WW%@AAh "z]^5QӄEd̦ W}cf`V:beJ\G,Sɧ5PwF[wlV`lҫZo7_RȀ|SKWW?U{D n*;JqpAn)|BW7Ϋ  O& dX?{+&?X?,-TBa pƈ|8_Zn_\%mҳ,'f=ZLO.eCڬZ[u2-ssc{76.Eh%4VNqMoWE#J//d x//?1|QllbQ[{n-\􆮤ߛhF+4 #{xB+;*t\ar@N_'!#}6z"#Y"#h4E̖`<AOC/4|9;@wgLDi "vc/N2pkyߔnM&= : : uU|ȟ9ƱHZaF LNG3:;U`Ibg[qW׶l[6= -@)[^އL˸PF}M//KJ 45nWїg;bQՇaL!o3,lL-{ȗX.v(S^=X1d pj#m{sηDá`2ۼn&/͊F)1 k'YƜ=9טt$yeJ׎ulBIzr =ҍw.ozBAQt.gW?&',N<Llz>{a8+;sx<塃y<OJ`RH ΎiOok3뽓tЇY6 ox|x'OxZLW <Hy|[Wy=0J#6m9ݍm׊n PYL6݊^;//̮/Og9ht-0g x- K/DPOMObF.>79c[=nsKeXy 10*tH;leYF\OUd4Ca_?07>zpP?X7pn"y/v2[i̮Jk14X-_=ֶEmaE-ڭ\0VTOu'[sr?N$F:ȲY`m#G/gsp3{)f~2m09g 3T_~n8>^ 3NDd4vPQ^3fH O5X5Q%0ŽSTǾVvBF·+ D<0=~W(4*Zyg¥eJ cmԆZ [Ϻfc_U9iuQUyO8M e?>Ycvq=Tb5(p:Y:aH_Sz;ïgTmX-4@F3`pzg1۝NwnĻ1+G.HgcHYi,U13 lN8Ө. 0*_yOraԙEpL=y[ɚ@4z0ˎx_ݶ$چ+vw|_9_tlޢF?9 ~Lm@eft8`6?uF#t+BYct`Uh]VgoJ7Q~4A/?m@Ç/X"2w!zT4`}H.:]9}HTϳ5ՃS \௾@6}o(UJaKL|7Jهb;AZ7N{6lz#"e{ܹ01wzRJ'ľeMFgt͜ &cUw5HdYF8:vC@;.tBҧ|ha;_CK+IOy̻{[&vA?t%AR۱ )/V`QM?z*KQr[(fHϟMjo=z|e[mZ-nvW}(M;$7Kb59iw4L+ĹFc%=xx e @-pW2Wݶ}/H3~w\ssaN\N*v[>1}B|}y?m83lT koF`<#q"/ߙ= W|:5y>CVS\۵kĘktysJu`9QڊgaS=6P_Wt~(5wEb{$ՀtU4/lc@T{VRע=WB٩lμ FO]\`0JM#|Ee;|pg֑yu,߅m5*;~jc$ al%S:k:ʊQ^pLrQ.xڝ][=Zf!Dܱpn+d@Lj>?#/| 3P ^,1V1N֯9IDAT&jlLxizQm.y!D:N_B&b6PVj.Ç6+;0mimP_z{˶>N7C熸? :x.B#Yӎ5 /vFou_t횞Wtoܐ %oI`#/!k9Hׂ+ 6W\HO_FįiΝx܁ 1$4x,G9<*˿pܭ8!LLK'sARY˙?k̛O>k'z)g ZL8Q^ ιh@6q &>8:kf, <4sٜ=5>y}ߪr tr8"4?:ߡv~ ^_K F$JJṳ`kd5f0[\h Ph+Uh/m1Igr#*.\~ȶl)95nBIm]Sj9䳌wT|n>#'x.b몫W?O8Q΂Ad }h(ۯm 7S~a]/Voڂ&gɘئ.p ݹ?8uDΙ˪fn@%bALaSitNZ>_k/N)>Х=_pĄL\9-,)lW1-B}ΧCŒzW"+c,ݐK q[enYQj @jS;0`8|:{]Iy{J :Rw D<,Z:7hS]>ry?70 I%5wBшx ,F*0NnHs0 ܓgp=ҍl)Y{8HJ6! \<5 'c߅~XXԄ5eQr<ÿퟓs; <Vι>n Ae |+CcU04Wda)vԓ5XE!- - y^Y>+v-_ۆ-NᔩK=@ʹQ:W*ɞraǎbV /v a 4k6۔5iQQæ>~Q\$$6?+JzCz}g2aGq fjҸza횶<*H m){> l?uz]j==ӚamY Dbԭ=Э ɷoO`YYڳ6*J&irǕe#(i VW߸AbMlh\  @8MM9Oz^l<% oSi^B(?rO8I:X5{ˡngŃ۶wgi 56Q%s UP WULDԖP+=|C i7;8fZLl_ @WܮSoʌ}M[ymiumԍ?CP a`F,autgO|}eiี{ry46PA+[lAQh0tf,moN絍)Sl$lJA?z%e[@Z>_ ڳXP0(q2pa'.{#3 34o|3~ȴE4%cK?Ύizx}RRZY=Tpq&0!Fz=jШhD^V6j[ |$A3a7>Dfr_6:- 쌅p(tU,U,)4~{͹97HxB.DM3̋K?+/3Zq Зn],h;$$8XȠrj)*S@y\*l,nAoT3"+~nH2gYx> ؙNM4a`8]M*#[BňY@jsv) 8ZPbgG}T[0VIx̏+j6yN&Is=;*ȤzMz_*nQo Ĭq!f{y/d`Yo<'[NV1kyɴlyj$\|%SHֹC÷AZP82&pCFGD|.$j*@$ByJkyzuBLz悜[uc_76̺U]w.^k4S-;Z֡u,ZyZ:oLOY6xg\?WT|QV8V 1Yo>7=2r>< Lv2#<ɶ0Lh7n﷗Ne; AkǎͿ;4S3BTf,GT 2mmt bv+o=Xvxﳀ}$%1|^XY坁LeTb_v* ʳ/jUs#C :3)uĨ7lw;2kF G?Ny{_YJrD b"BXXph)K7LA6~ +*> b %tc"ΠEZe /?;;F^bkl||mW&'ir5 #hX`_ѰycӊQNƪ꾵 _Cq i l~yrh{CqlXiʛhNZۮgvWQMEsN7h-OXZ9#ӗEE 8SicqEЈ0Kѡ :]n~f6tlޜh\Y#I\]?r{8$; # {!p,4W?0nUիh#Pa2&V/ʐD)6Ec{giHl>ixb|vĠۤvԘ^ioe{:~_Vz?ۃgJ ߆ '؜'^Fl\0%VJ!_\`{6+3iR{r'@J,=M ~N&Ǭ#oA"q!b܏%S1rwdE]wTìU<6WTD3jhU<0b0JNsfiv]ru{OW VYiP?' 9y\jnKw~nsKxSH)^oS,v~vłۼO;vR?bC<4p:l~rjB$[.2z _@cG3-pӔ+Y{<@tnM"(\% &d)>#2Uct[ ~|}״gx Mf[j*}㽄fŴ0s *i#VE,}x}c2fMzXg8DU0pBqWcJ*gw,9ShM+'vdXJaB-8M^taFv> 7<'3؃5>}~Np 6bAS '2чPPxڄ!W f댖لБ*X'-&#Kf I;&TY,: 9gqYQRʑuݶ:;lPm*1ٛSd`6vdS`:$x\m/6଴7eAMfp Ԝ!Ӯ up[zdAKڥ1@Ffa|q t|bOBm܎ϸYYe8(" VɳXxvSYW߱dc#77bd/V^ po&le/!mt=9ߕZIIbƑM*+MNRti <_-vxgrt`!-&f@Ktv8x rb0 <$ٳngHfpӌggT V$ \kU*JPPyje3E0& c JPq.6nL8K'1˶zf |cy`+0 vMejn`6ST.Ţj+vnx%לyrWS:]`/o!S{rGxu?Y L֖v8iz?e961@9#$M&Kh<㗡7^ܻg8w[y֏n+LeUZ"P19cx&gg^c)Cԣ!8;9.i֧v5g&f*-R&Tz;|]Ac)s hA~ 5u˘iwz{eaw5PɠLvo=/ӭrЂέiN <)4z !B,A7bBײ]u9.w7]ube 2Euʶʪ}]=E#MbdGeA?o 98H)$v5<sz5wڎ,얯5^e|MN{Vd\saxfzoOѮVex -9v~/X^zuҿ`O'!ԗ LؙHC*7vO,CgcW4ot&\OL~'+B=P_Y [kȻmfF?Ess+3N{Z}-e݂V<N-* WXr^p\([^p'W+k}lyom (^Њ65[6{<H@}(ծ،[kغIp2VOT*mV~qTo*G*M;[i/w۹Z]n}ekhklд%_E#&PeKӦwnH'7mg#ao){W PL9 (phہ/?L7pVW&` E@٭hOH2Bv~{I 9OEc|CVZ4~qY+КLf=۷G[>  nJ Ӑb% r~3~ ۷{#图qlADJD>! >1m0js{1 x?}P cRb|4 aSPikaٻ޴@-eث-0ηϨxюN:-8Ch8K bՉ*)뢹.u3\ᆩK6qʼn4',m@q }W}~>v^_׀H8x B:~h1KNvN+?2cޒ;w*Ϝŋ%ptX~V}1A> /bPh1Җſ:=ghx +?FQS}v8^X (vRbr2q[@,u-'翫;r&?j~Ϯqɴhs:Wr[ؾً?/)|2SN5mY@-HNZqH)rݥUo>ީ8D'0CSʬ^$@_sMy#3GM]MVᣀqF VvQH$pʸLO"uRx--AZ3Zl_Zl+v+Tmz4 q)rRV[惞}s6mKENZ[M/MvG}1ۻ, {'̼wY oD#Fܟ `e-&EyygGjkRbo@IL}r4GO'?[P38A2q>i'?Q3Is3Gzzlí3vEŧjcJ^n1BJGξ,&d[jہgNԌD!"oĔ3Pt(/B4?',NÇ WleK5^&%*LëK*Z.WE xP@Zܝ]Z^{ (:zm4bƐ@w,-sf \ǘQ7Te0tk#ʪk`)O$[ ؁ 켒1sneA Tqokirz}pʔ\0A/it];gri/|-0*1=lWr ɧ7GgbI].52+{A+1Hl9؛N+6/mյhH'ph?1 >':z5Kt~a #BTICQ1Cm/NZtYU ݣW^GV4wސa̠s7:=G :;f<_WV<FO;H"Ց(PO+=aE6ǐseN*hIrQ+!oB)I"W"`Cg6ߵ2{#'zw7sݟ|7nZ9Ϧ~[nSuK}:Idy\ LU=n7|Й6ܭU#9GĤj5r.%㇜y*}ޙpxy31P?i+ +;{#S6l`Ίt wU?_6f{ Ӎ*Ec\̚g|Ƣ{`8?OUU;+ݡ=#wh4hε<#DdrH, yM~ qO#h^2x[tv+"~WVd}Ş@5#@&|KG\"l#d ?[ƵfD"5U6F6~{W^U[ҘR@$yW>N]}7SG-j߇hLq1_GxsyӐ6= Ͽ3Ѳ.'-\|*j6Z0CvH,P A\V!Vn6LuQagl{C|͌ TU/;?غ^10v l ^>u>>DBҘ#fv=SvWVGGôrl7-OK@gν7ɵْG- ty!95cٯ6OJ$ 9<ŏr ]WNr\NsCtm5 7 }ugqe:%nGvhzVSiL O,Z3f6/|k}cY,+>k->ă(4ouh7qWu ]rߤ~uT}`6{lhut^E(֎0ٝwly͎9/[@峟Cٽ3N;Pe1@(".<4sܐIYä{ZZ*+ৄZH+NM.v_4{El&33y^S}7koxmgۘ_YS\(=+dX᭠) {oMY  tKm ,_Nti[}]s.YE3s*>W3~ai˙ |tcf<j^ !=zPUttco{pnO[jb Lm,- 埱? :s]L4p%M6tz2qkOz՞Rv N,dsf?T: VV<٬a!s?[0t:̎V?1SHuVP,Xm<$ܥVP$]T#*85jie iE^8Y-FE.(23pX൜}?: jR1XJ&S3^ﶽvMhև|))e:7/w>˜d,-/X@ -mmu#CP(t tF]-Pcue~ntod_ 8 OpO)߃VB:Imkh^8c6=ax)'1KD1񙇘᠂zYFW(o[㻘gCg bcʒW,Miii泀7|Zd*[ZYX}.i/D$d1uϙ4}F_~`Eu'h ,.IzĨ L"-2D׉6dzWZ9v(/W\qBiiZ@<2Zֻ?3*FQ/h#^ x-2@ Qn]3?m'ʪʪjߤW,A3> mi2fTGm-+v#,[^=WTWcFq-qs;h8d'>@BY6ё6ٹh{;G*2TּBQP&pjc0T$L8}5˃"- ;mqUQ^x@X \=uG)khxPy)'-",0򊿇T ?,]m,.=9c Y?D_ʅΙ)ۡd޷ѬsFAZ`/槻Oܦ_¡`믣>U֩z5kOfHXp@k5hˆGbV·ye@SWX-0Ic.Sih{yMv$s %XU`1idiem[x8UHZ`ﱀ [{cASOXicurPOx?CJ„؋@4LF_-8iF?R -wY@!Ѵb ج]0)i.wY#Ǐl%=aRG"6Mm=Ƀ[,)@-߆M?XgtagpH|<:KF4Ya'l0s 'g@3 9;f{2fd /ihV^K7ǀ4bA)v_'?0tA',nQ0@dZ$űQ-qw_Ij ^}z$fyV\B篱$Zo$qaIENDB`ic05 ]ARGB 0ԭs zێ4uG_q S̻**=چL))R,F D\N@?Kbex6 zL |ۜ$/=zѣ)c Eyfp 00QC fdlӧ--ɘڇ"K D1#6n ^G)o=C\ (ɓN3 2́M N] HR\_Rxq3aQ̔}l{!]E+,џB G tK3 Uic< U\=2MRØ fdهfwϕ v C}b- Z.u 8fHu$TNii_R( + g\e?NfgN oO Rh c &@3* *h rE33_ۯ3{ da$3 (3{݀ ,3nf|ЃX#-3T6fy^=ZbK@a!VWu</G8Q5[V;yFm4}"H$RV'?r q%[N/VnBśf2>o,9]co4'$ ` ŏׄƌňʇο۾ݻڿѵׁ̳ ׼̽> ˀD>: ҴUE?8,͹ƀOF+Ͼʀ KTVNE7(Ѿ͂ YUO@7)$ ρ W[_ZVNB1% ֿтcbc\UKB0+"ػЃgMJH>( ضhqtn[SMA:/$$ՉfhbbYON>2&+߀Èilonfc_ZQL851'܋Uhkid]Z@D@8ŭߍlnbfegfMNŐgicitPSIEIHGJFEDDEFGEHCDDFKGFEEDDCCIEEFFED@GFFEFDDDFIMGFEDEHGE@D@IHGFGJHGGM]IECA@;BBADDNGGEFEBDEHZW[ CA?ABBMEE@EDEFSUWW DBB>DAAG@FEDDC BDEDKMVVVXBIDCC ;DCDQUWUUXSEBBC STRQPPNUMRUH@>NCA@`WUUPUNMLKSSTSTU98UFB?BZXW~JQSTTUTUU>7JN E\YYy RRMSUSSUT8'U@MOXRQSSTTP<88LMMQNNMMUQURU=577OMGNQRPR8868QPRPSR8733 RNPH975yQP2575yP?9576 M6:474{yv652575{{|uy~r6355443w~pkkj5335= ~~xutorpm ln313545zxuoqqrmn436{zyuusvtro3523 {zzxwsp53@~|wvu93:}t}z IU{xvss]TSTqqpooVSQ]iba_][[][mmotaZVYqifa^]]Z]mra^Xpoi@KI}vngb`pcmbYDFNJKKMwxmd`][^j`b JECKIIMUU@XWX]v{\RIDJJHGf`\WURPPMSXTcxxPMJLdc_^ NLMK^opwu}yXUQN lkllmmoifkmkUMbQ><pghkhjjllmgfkkpm[SUQE>9ddgjb`ddmgmnUNJGGIIG`ae ]^fc^fejkJ @@ILXр]\]a_decKGGBB@FDGFMUZU]UQECADMDDCYX[\I?@AۀUWXYZ\H>33݀ RXVP>A:QS77<:PA@5<7 ހ J8:4<51623=5 ڰ..552;3Ȕ--32=.,-545.-3-6µ0/0,51=1@93:ic10{~2r#<ZF&SE ᰥpUIi>~P/4'<^O4=s$I+m[ Lse6`ʞr:cIb$(%$ۢU(8ɐAD%Rb~!ws{u ~Af]Klk=;жe:fUjK{ybɐ7}0 + -zu/\ŻO0-eGwh_ae<8eXIfMM*i'@IDATx%E6'0( PP0  @]u躺kBI3 @$H'ypn;LzUo~NwuoWW?D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ D"@ Duph@ D84띰AV=qᮣ^ qZRb VO"HT6avH?ȘrAkXaz>(h?53n}Wt!D"@aul Dlދn8(^f mDqPWi= x87 x \Mm vr(( h5^M<3m 6qFA8zQ;6>&۹"pPD`.$rAx,R7)H ZbNĂ35u|Bj8$A4H$`,,6~% D"0IIS"@ihΊz'ڬ gԺ{Zi7C%Bp!f?Q0g"%N>!'J)&StTͧg5B*M _(& o@4oӂmk?'82CV!+Hx>g >}Ȏ!ImB03 @G`UFug?D"@"`J"@FyJ}x4WF#Apw7G:~#'&A:SܔO]~+A7j A@qT14L74Vp]y6 LU#tiᨾ)E~&dw2|Kq)XHwG V.EiJq#u'P MFx~ M&O?@&mEĵT#]$'(iij(j@3H<>;a6n@؋N' ۘMtjX G}6D D`=E@il"@ Ӄ9Oww!V9:i#fy@$) .$ =4`\kn,ʩ?HG=Y)3T _W=ߗce_[ۮlfCO,H,An>CAXC ;! =o@@8j ='!D" P^7MgC DL,8uZ'0]Yh=A: N&D75-NiItoi =-zfF&2Sb|)ꚸYZco'w%j',x]τf4weݻ7ѨT%i[rwږT68SeP'>T]֪f m:j,͔L9&rr v_LI|yZ2L)WE;ՑI!rBK J!M ]v{a8I@(f܏ݐwc}Ht#xkA-lՆq@ -7D"A4M D`F`h$ڽl/5쒆/|jjU5`zƚ i#)rE["Q૰Rb=EG}$`u jַꉖT$k"¡}8uMAW$ 7 m d {^pH|O+ez:B"@ ӇDp瑖 D/?yc?ƙKe9PezRBd&ksڝ]|;ҠHZo%~!}y mtA6c8yiԔPdO6q4Icu(Ji=ucC-eH9Uue% /K64m\[E`_( 'Zp?CRF7'o {% o!r"!Pyup"@Fy|ұݮ4C9CPT; 3HX+%Z^?9rN'cߛJS5#YךȪ])y*5XA6h>ʷ8"{S X2^MY{ O*\I;8R@ܕ7 3JE. 1 aө='=S4%D ~P D^;Y-?t+XP$Hoo53*)VOu(*6ZzFGDGUiOiT *>E&Qn_m7`mCU^VLCew9VT/|R pIsEщwltf/Lǐ[0K?>S`;72S&,,"@6@~H DLN-\0IV|)ŕ22~mՂR*3E p@чPօP~(cmغ)UX+LNo_1erbyIڰƶf#rMaSHz΂n=A[փP U!@;SY D`=B2G gS D|8(d٫)t.Tʷx|Iޝ~lg$a[f"ʈaN|#a(/12Z 7iV?bZ4g`97Dѕ+H7\|Wtk ȫ|ykdU5zI< |Eqc6mx/!sGtA_yı" Dkĺ>"@ACO <93'tG%@1DGAJ +bIP06 mI;3vmOU&i2ka(jAlxcuLԦe,4mkFpK=вbVHD}ⱥb}Z1jЋVxP\cۉ_-ue}%[%! |ox܋Y Z{g ;Q͍?,N$ eA`&6&4QS ?QY6zǓcOn]oZ#iZ2rLΤjH~:[VlX 2von4ծ&%_A2,婒bTK$UIKCk㥠B7Z0qvUף رFx# DjYG"`q>ryLZ,9}5 3((#Kd.> QLԄSCNhVuTb#oxĐeOg-߿\H"4hȩdjC6(Tn,7>Ujq9-Y+6!.L)H捆+ 4ۖԗOld 4 ۍ.$nzdA~ D9F著ctG C'm;j6Q7:؝^-jvo^tY?τ>5m:O2Z.OCއ⁷`;?/PySH%D)#S6BE"@~?ÍVv5N#"m0`eu_0jb\K10»:խf'\tƣߪ Nx2fż"ib,HIgpl8̶0GL*a22FO$ܺQt""[ EjG}z"h)5eH,GQmm-|EV =WnEےnP}Z)Czjn]`JI[+PR3v rDe)Xx?}vW w.<#" DL#}4:)"@8W"A(ٸ0`aɀ?QNG6욃Ro\ݍ\ଣNbSv.C/nY֒0& HfA]]L%J$#|I& bOBMNjg45`dPDQH~SKtc*66д i[T&$bVMd-˔5^o_vc[EXpsēյsļኧ } u=k%ǨmKV$1v=yT7X72d"@VG^McT'D!'삠v _lK|OOƸ^ثE_[1c^USkƣNlP' Fl(.{Hf$4X]@Oq0F:lxz(^خ} 9h(cžHItxH~DER DEuH즭D:jl;&C5A(;:0>(ce;zt'RL;4Ҧ^":IL&Q𑘴FCJ.=MŲ\T%;IK ~험SFbX4=FcՌg-gm{Y2B5S2Zy]k| wfk܌ rV \ SDS4@5"@7.x6vuV{(w`wo8- |˓e`$ﺵifmr~c-׎ѮnVq $/g!5n#`dqe-eЖ#h7x=` jzA:-Ih!zC,  LU!#5mj}z}zg59`H4E` ?$YqV$hb]F(_ԅF ,`46g0dE_'l]節_IOV`q%&n*dNض< '%p驴%FLIy/%1-BR7 Af@]9޲?L3F/z7—p6"Ll8f Y QMW˘ $ dLI6 {63ɈR_&:6daI ! mcceXVpAĬmeHe|"OkjS$;a6$DF?U"@* ! D`t{}$޸Wm7yKZx<٩վ֛ D`]GcyNoMG i6$6Hc_|L$F8ħC/hjI*2pޜ̈ö&lɊzv՜O1ӭ%$N`M]fT  |%y fܾ|8~A"@d"@&G880zE#vwèH^⿚?ֶM(zthऽ8 @v#BKhǻ.9yo;"90 ey`6H$f M59Ybvkq&nibP,=ϪY5+h@Yhbož}fѴ:ybW*ID#hةwئq'YoQ̢=R n{˽$D!n6vkZC7o;H-'(^2W@v~{`scnUnHH`\ns7="❃|&5‰L=CGL+DEEsr^p*FF+0{wJ'5(|܈MOc_tڟ &H DlDh繫DAGohp3ӈ7" X|!PA3O'ly];>1 >w}8+DE>vZϋ: yHH@y02翬?`f H[v2V§JȘv1BG"V-[ndj9UOZoZX'O5a=_x*(9H#D`F [n;˝#DL7񞭚c]jw _dv$Bvh*򄋆|&3{E~e)!p840 numN)f lssK$y2cdtS%gtۙ(JVM1%wE ~h_8kz֬W[2ܢk (ʷ͈<]9 *Kn"DL 8F^To_;n_k ]~fKy-bZ9cC[=1VV9W^X;1ckx#)"Yy!!ǻRKFC\n1uΒ%FU(!>Gk^nQfy7łm#ys5^)x7$ǃ%DlLD7.8aNsz {#o )d}7Y},W<{1G~;2<u]b &v"#;ֺk`A9!f (-f.45?goDS~ 3j%IqP2埢r97F܂OhKUhV[ 1+Fpa u~ p7  D`Aige(ᡓ__[*KDMܧ3Ƃmx@b N#Ec֎k Y[I8K $mNtM/#5)iĂO%Ƿ?kDؾo=6"0]C#7: c$9uESsKn׊g["J ͟muvn=`+ o#Kp+ߓ;/5劆)5SveRneH!d탥ZfK)Jg&w|\hm .JP{x}\xꊢGR GןaK S@ Nؤ1ھa&,%l&DLa\'ƊgˎT'ҌB`93}+@:c>] !;k )#I+ PwD"Q7}8FB+G{ C3]iɀHbXϓW=j"E֑OSM5rfV@pXoo7{$z]gY2XOpzl& D`y{6k/ޫ0\XvAyg&1I7Y2_t5xyVƮe~H#D`C#?‚/FB`O$YlpyEnbC~RyXy!Zk -T?]k\[tm@EVM{n_#&vVH^k;f|aa".#=ߺF"0m\zmxr+ -xva}9Ɖ3SYuebYbEl{e"@~b s2^A:]f?wsrX%D`#@x eXHpW+c F<$ 0H> S%TyJA. ]tPe!5REe[dZXǢHOX4_xPh%D`@[['F"@V [z-jڻ~x_t2T/ Aa_T} _ Y2˺Q􍑙C+}`=qЩu<$^No'$.TslJZJl }UnV!IvV˖g3ļ''b,x\ d/[S]| pCZGzk"@j p'Ng ^NgOlnƝ"DBztM_Ǽsxuj#ogg"\#$z;d 7Ի^!ס[@6y\]Tz2]EO(8sІXH̦y|o(gpNiOZHhOҮU?`}zܶYc5D_Š_ub.h"@{1]"@!ПWmN,#aZjNtsԼϫV%Zes]NдB,`;9zL{Y _!D@HfI2Gf߆$kx hs 6d@v@>~9/^;ŧ9᷐k' 52t-Yj+Lxi?:g!{KD@ D BD@@f=;%/]wauj0)'+Sy_5+9XgU>1%_^^.2et A3zv<ckVG^ H&D`!pbA 4kq<Ͻ߆ 1`kcY3]DzOW>5dsBT*F֠\A%ʡ [_b}oU7Ȍ]?DL/^hz D`Hh侴뽻e17UKyy*Æ>tN[z/L++u39?D8 d` bv0ez'ɀ<%i1OԎ\&U"*kZ/bQKX)OȚ-Y\yx+.|,"zմGu"@j#pc& SK''ׁS|uS3?NOPA1⳹:pL DG >^CFo~P ބd.Q/ I$}N)02߷'%$Iрi,xgk13`h\.C DGKX#D<܄`FIk>bo]a ~7rqX10`:2VlNZXgbkx,`K<`NfE62d |>5Ӛr}u%$[` og,EAm1 " @LBDiA#;uLc ?aV*鰴VZx\{uuv~ϕ++'xYk,³F\r6W.4"@k.;Q՛dZF[dw`zGIȵ| %{?ROtmqdt o1 -FMf-;`e@"@&@2E 9NZF{H \hT!i߽)7?H4v[w* XQ鿻W]`"ώ5^}p-  D9FX4 g6ڽM'o $03 @⯦6޽ثc{r?kE*POaKY"v-G/qXqb&Ôzۯ;" Xi^il;"ٙ|7U>3 eT8FJ2?jr;{-\]蝝FI|;3)Bw}4<l$A:#DqBGmsOK 6De6-kvN'W)_bH^<ol'BpE`bnD˩%"~ȻjZ}kx_g>~Y wuOհI+IV]՗[:dd_̳[= b_wq^GjxtI,7WL"@Fw~6<ڛlwz:Su M:ꤳ6=tOu"+oݯ _W )4 k2#X0p PemD %c@.n?϶ύ;wA직zpыp"V֖Zqk=ub5/V엻W|!wXr3:$"@@ X31Њ"qP!^Go?'w$kQEjj^W$'g%51Q|4y%jB?ÛDz\3&E"@|ܞFn;wg5~G6[x[օс2ǧ)+Gz=d9GMÕZ\bcIy?#j^wLhn SD>>hǛc̀`b|w}d| K{q?Pu]r !g[{3J9yLk(||$s/Wр3h^t (T""m6ZDn=A`7Q!o _n(?ВfÜ?ђ2I3OcQk0\w7n6c9Of,"@"#?.n5^`Ƭ]nPՇR$ʮKoz)j_[T>j^ɐG5.$.4?I D`Eh!"zuoiZ3b&Y +w5r3x72j5lK{cEʥ ڴ%;C,Ec%!q958Wg<"@>~p'9;!Z/]AX+@0>NVAvSh^gG52aED%Cfx6%_t["@6^*{9 SE'j1Xi0MpG]emr%,̖Ќ8V1l?o} V$"@vNHDNZ'OfخږʚeJxLT2 E\ne`FFKDllTv#_"@o/j;aedh lg2\剷9e9br=EX]wZ}{.>F* D`"pőlv'@IDATĚ;`mN~!~`V4)G4%#eeI=l!~O\j_5ryuJ D@y/4wC޲@v^ʜxMd2v2=T[TZVJ+\ zGؕ? y|gLe%DuE~6kevoG$vG~ +Y+^wH2+z}ѭoHJ𹶖XU_93+>ﻵJ$.8po/Q& aa Ӄ󏟅_gWl=4!VQtc*ŢQ&bO-ct)_wM D`]DfcVKϿ I#)7 ם+H:P5%;:~t(:EӚڴ[\˞FM(dt0\rТ\ؐ6"0en\f?^w8b7 `~"]h٨T}]0gReBkX@i^w.7cO)["@X?YtyVwg\E@, 3i^Y^1+ ~8ncjF6DUUTu:Y(pp?mrK@ya+@cNl ۣ6h8ЎEW㷄!0X$o䱀.:r?">#P{Ķ"0m<-!NmFL؎Lj$?K߁NO ݨ( Dl\u/Ǭxy-ڄ@.e _FW窪iTE#Ho Xr(?8 T%gc"@ ߻hkF{FދlgjYi&t AT*4S5\L"Wv;/v[|c.D`]A6{z7&x>9nDhXo5A'ROO&)0SLF la# Qrm<ӂ廪W W5o& φUN*?Hǯ3KO|,j}_Nk9\U"1fx運OA-sK@_'D`51lZjz{$;C$jYaCުW&AuX09"8n@%IVk0f=.>5ǝk*b30!lqw I.a|gXB]h @[my 4w1kE)x  =IW쏡>>`ң$hwx $ FAIAk%dVBfYX ! ?:csz4kpܿ!qY| ż}X4lLUŌY>^ح?vѪ -  $g:T65-Ex[k13BծZܙt^]F',1AvVqݞͩe5Ghgsq|vwHpL|gȻ1f~lp6YI96fF - & w]tӖc2H,{Z _WImrav h)J`lG@b+! ͳؿgh$ID /w϶'~:%̑+-y4 po7P֔ꓓKv|Ŝ\*o #5"ao tp?3~|Y# gz l( MGgAAnտcOZɪ&S] VIa`*? m5׍ 4H\?^ld3,ky q׾7w3gǛ@/wFeXrIt_zc(Zj ٮ-&H+Q^d2R<ܞldۭaAĬݨ >x 7 i#p mtlV& E2o|r^Ӧa9zv%FrU% kwk(?Ҍ|?"@+jX"@ G8chnP'cRh:~ |]Uk4%nM%R@JG/k;ѭ*k7׎ "Lxq!p;?2l;$y!#G0chk2Gf87w_+;#5zHC~9] ٧啞#8+c?k˚[76qt+]r9rW'>f)D׺o Zxf\02^}#Y  `}i6ITy/"9}1@iL_ O2EFJ,SwDmKjl5E;ނ@fCs]sq"wԘ;\џS{3Lnn[n,+}QW]Btu]=rB$r [RZTy%GU⩨39I{ OGy P~xէ$v._>THZ𱝐8։_KCEVb̆%iI3JHwRn =%ngO]N)w%D}3y7- D`M"ps[/sabq l$˂D6PU[ݏH![6 |esfu|#lIېmyX-oZu;=y~ 򟏃~a.Us(/g5l Ge$%EV̗$0Լv$SBUX7 ,Nۧ=H\ޑӝPe*I"p傏~h9Ӕ(?#]%WixS8Lݢ[#v p}E?cu{sMc._x̙F_  1y>HC aW#NFy< _?|bӹ׽. M a@gG}hnocznӛ`!p6HvC7y$x:"t9Wx43 3#cɽh H Zj#aKyT+TGSx\Q@&I{L% )㭁c#T#DvH0fATc]=})%Z4LJے03ofփ/NbXuul 'mS;N`p׃x1T|'rBğ#$ż &+hK+? l 4/Y9c};C^W ?Yަga;;"x{1o[]}3c?#)w@pd~IxO%H%qdI7 iKưJZ Mf6ԊKDAZJ 2H"a1l.X,~ eH<ӭGO 6W9S@"`F7D8B+rt(eoQZ) ,/4PԞnѢ0c?#Ukty "@1Y5!D`l5jgutbҮ2ɧWu""5WfyUOXWx_u ms\1e%ؗJZ 0_@Gq8c@K٥DɱiyeG˷?+ }kŠ$J/9i-P!X.M&-ɽr0/#V'bm@.1FLoAlk[뾁I#C 1x;dm7jK1[v}'kDq>B$;!iᐶ[){nլn-շTKZi? awecw_Ŷ" k{= ӃooK08];"gۣY%+zC.?6#ؓ{碳ymzf?2E)a ? w~3W jq"G9j;?쒽/%p=+JWf$ƍC OU O$iئ'=b唫߲_SckZފfZ_WU&oqJ?fXSHV=ݩױRx T lD1x<s#MV>"Q*ZZQ5/a8Z p%l7_ܵM&& ӎnxnn̊~xWqt/ $3Ns쉟^KOāuǹ++d 0^/=gq֗⏎=>c=8NgwVZV%p䏗c r%ǵ vU/noQ)RHLXTo~mwyԆX*#FT2s] LJgPV,X*Zu\r)%0$%FwA$aUbvnTxr ;>}N8p @ۃEJKD@W*^ UZUHFWd3yYZ\jDw4&-,@vtJ p6k팋Ρ<'w.^P]w.J[N* `>k7">ϗ~D|^/xb^HA(io7?yf+.,g}m"ӣ?2l{z73BRj//q6ϚrKFPZO%:ϱMՊ/4|5h9D@]#(~IQFNwߎrz YQRRj%/RҖb#Mx =9q#wxaKvT~ H NjeXvz:raw1=@+1xgtDն.# 8 G.mF8f?%!PrNm"D` !c>~[y=Tk10.be㥽l| w">ϳXI!fz:=L}?tW>+yB]&,֚`J0{p_{>~<$I)=Tt4-!WϮ=lɸ2Cݒmu}8͟@fnVև5 uzs%Tk"[k̂Ne|M߃m1zl!avX7v @As~b|PzIr0QHp>޷fP:w"k0#H\ݍ\ŕMֈXk%":t 3ZE;`m{X ]N%*m(^zv CNYRR4PzI%ރ;uq׿1:vxUEkkFә-+c0*.^gD9hX?1ְHfsކԋϭώQKKy>_-]-koG9o'c#A q,Y)V}c8m}rµdJ6e}IHU=! ;݀D8~:24/?FU"d0 N%@fP؃k81)ߢ"E\Ε\U$ zH܎|?Z1=yN?DyJN5<xο;"z#^w21hruIrm[PŷD6 (VeK,8<L/xn~N`oh핮|GVw31O97IqHo#A#2Fq_k0L^NyF?״M} %\ _)(!PC?;Z@7DćܺnsHڳ6q-ylóQ#fpq_NB\Ch)!#N )@QbV͖Ȗn˷1z߰F+y妧r"PD, BAÉzdiMz}.^%$:*k( 2* 4.o0y%e_9\}kn<ҬN7oF'`! +e.t U_FvN,W<4TdԷ5o%lIrBYwi hk\9&"тQrpG%e2ж}cpi[Ng:X8;mkwrYjGC)`Нj}+fl (d@(i+=H<3z%_|ҴXTkm"0Q~;ϕ +D پȟ;/*#^%qgNuK>ewnm)v0^V| ^]尟?xQ2p5q| 7:n0@z "w R6ŝ~wM^㦨gk$@4oCtSWnE3'EV\OUs<I^}-)RSJL/]<׶̄6$IRgګI{W֬ۙLnl~ k8S6(ͫMCBjl?dk;Y>586E,/7U@c<|E_n79`B!PrNm"D`ܰİ418$d? rsLoVZzqZuY"Y+}X[/Am;/s5[ȏ 4Ҹ۲+Jo_gzx?- dU=r ;jFD, D]l9JDd-璑ܼ%cEmY9f^+Sk[)E=`[LHeN^[VAylw.瀶L PmpMvAbi~V R5'%?h8I2#-[׶},8hцhqnCg#K-[W|?ZKj݋2yXk[KWf)%wP Q}isS[O,dJVZΘ$L4+V]*;>tP;q=4:<߯[=5I\sGł!n"#\lzM9\UGnmգϼ_hM" vd"aMܕ} 2A0'wbO:P LwjA-e;Ua4W꟰܊W,sy~͂%G;7]q%ΆAplHJҫ'HI36#*(m$T>!2ߢ&|6ʪT+%S :})-O(zj/3L1#5h@[01V詶0 n+H)fYV0_,tIl! ƢG3Ou8ȓX<^~ObϚITsũa-3V̈AHUI'D`j8 P#p[zC05#vEzqn/nXc}V%DB,rK'T鮬-ݢD,wVt_ߊXw,tZꨓB7xB3p<w4 ?$JgsNRE"dW g-]tcTWe]q.V&%Y&'b4,g0)i ,beRHٻ쾔UQ^<^%?=tmubW7E֤U2Ѣ5škƽ#CG,&/1]<^7vǘa^~&jZ'Dr%) ײ{[3Kgm <yϥ{"'7.xXtq׿G=q\Nv>b_ Zvq-MB=I'ƍ๽Z^=z|zbyzj,װ` 1}n|P{%xï2Džw֎Yk, $SK%ٺؐgJt_K4Ufvl\U_a#sj4pTKxJ}JB4yWhVK HSVYsUPBbwz(!VfU=36&>~4@>CxQ/x1|@<70o`-&p CKn>sc#0?u$D[=AҾl]r -A_PYT\sD;"<k^_gOWr.7ώNØރ-ś#Niң!&_庥ԟ*Xar?HՊ7Wϯzk6(_۪emmJuh֭5-&J}iMS)jm(E%,gB!\?vdnB|y䊣O{h^3׉?GތGEc@G&z ZSj-墊Eq-|U!sS*Bt"0pĉak"XN^S%P/R+ZE(U^$Uf}I-א*Y1CvD3B Bv@~H?Sw#xjN*RUܪgpS݄)z7`eGv[|'E/qf+A?s!_ZN>p/;Tʹ?{'Gm}\齗^B't`BBB$@//!:;):Slw3ӛ7fgq|nOk<$FN0#HrDA~-bm$Kd,]r<%gD(4FB+Iq[Pi= YmiҰ1zmDhHn-zQv_Jf%t*h&6Irآ*6&9%RlI 6WCQ,lv@5pz>uu6 d6Q,%lI 6%خe"Nq 7x-?MЯ?s~dwyuV3CgQ,&Um"NKGUhıW3W8Jm#>8 H TԪ Z U k% R4!* Cq`@(š`𿳉bJb*T8cJ K'-hνOqpL6Hᠢ*'Xat"BRS%Wn`q5:FX,{+x.ZZnq"QwLE Qp6ZV%/?oRu.Qia'VPbbn X j'leq}JuIDM))ƹ#> $  <;xE0QNn>NgxNȁ u8 ؏4A i *^&]hp78̃R^hN Ч<$ƜJP+/",kAvϤU #IA:>N[:] u:xV~pn_vn p`#O֮$ MNO2@Ej_ƙ+qI%:@w4y/뿰zqx-v@e-DXX:$)eZwJυ>= `t|CPѕAWl;$fmq%o&G+tx=9&ƚ5t^$AIuC V75ḬAnpncR$]K6y>)&4,`0'h(sX ~y47'Ny7ak#Gx5 D/'?ԛ}@-84&:PC9 tGOq\<֎uЭL;/v{lP!j`rJ!?m)c?|.] <0~pZ^({<u8Ñp%bF1SJ[/hr¬X)-(NABd"ag e 'cyA1p6߆C MlWN}; 8V.9QWz.5ȞA(K|#/ xp[09ɂZ`2`=0qg Iz_{NppalzaίR:-]+?2 _6[>Ą>{`0.z 3*<v粟6j.{+>ݦ^;t^5b'HL7}]7~:[tO;[r:՘#p장|iix |%?\c{H- V+^DGp-kX՜Mt\_:Hw]<0kAmjp0\?Q #(jJ;Zi4s*jT>iېE24dUF *[ȳ—a*8xpdlG(Ȼx.wl+_g>l}ʛs,8ިf. 4' op._āV0͑gZkar?2쿱}v_/_q+qtS=%5ZTGwGK}-sq7gUr?{uppdG44 gĖog`F J~P0V-cpIVOc,!yg|Nv[1|~cvIvQ47J׿--@ ǟN2قLҘ!V,&&9,qLpZC'8Δq [tN&RfJs* /t:4G!:i(!^aIc[ޕOz:3ysU5L䮜!lhKLm)0D_0^EGE,-vlp<#Y-.@;}V ݸ#N,ar{g Zmt^O๪uZ?h3:(>ݑhzsB_kB? ^RNTx$?\phl a8F-7q1'0ɟu >*[fu_l\8 _EQvm Hui# Vd3NRv%P9$pm?l< .^ȡ͒>h keӴs|b¦̃ohOR}QO:n Xd|M o^˺v|&ŝn9u PX 6dwnRƮj>}`ii`iOIrXa5?*VSqG`pr;3U' 4iS] zӕVF'T|i wz"wNjz7կ޹=5VBȡ/י/Қԣ&L>IjD$"38P =0"ti4,0pXǷ33e:akss83? ohEUs~|oe<;xu 5lvCO}ps)u5XrXxp8f_ػ|f>&0.KZ^yȄ%:ӀiO㸝Vh @B0}y?Dcmpqeͫ,pc/oy@{kpwfGr{8K{& u=A!Ҭ1qٲ4?M)0H#y|8KִHE 0$9VCu|u?x_c?`񗹳(l ubߢ ;`|5XmmHф!:3o# J ,׏ڋt5=FJ8$i'8<-{7N6F5ݴ >17 4 5 ^xkLOqBƻU5Zlawh Ƅv6Apj* $aunK+{Fas [w`VZI!s'bNSV=-eK)Bp(ؼl?uT;tJ5)KCM'( g ]N}wΟii8 |ifQpV`+8,ꯆaX!tqB7( 2鐿'}t2 5p~E7U]ڿ+Jn]CQBh@x{͌ n\$Kc=)iJڒҙ(] JYHP^M 8/t6V/߃6~ggTٷo` wISxx]`}|UJ@R{ G_~09b ?ꤕe*#l>>~ ats~: {rӎ\W(݄@zx!]}B\9usl7#GGy9cviTJ-5,@IDATzl@)L5nm= I $-jnzfۯn|9u~eoWla+;tUHZv2`B5iu\S2L0Z@1.ZNv6[WxH3JI|lupj^ ~Peǃ|xg]M8 8 8 f }Je,lj8d%tE>۱_H@?ެwoN=Mј̕i`yj5WFdk۶p5r}>\j%;R.͗,WA 8ap?FMnX@u:uclk*xӡ]%&z-ELx\S, 25 2Զ3> PiJ(V~%e|ocu gm.uMjrͤ ww4`{X\qy\T{`$SCGq!a-zL#O(C@Lwe~Jw_"no+/*o\ Ξp\dφп":@ѹԹ(,38k*r迉1NhXE-N( P(Z Q&>lX%оLz:|O+rwS\iiiiiiigj"R9 , қ6w8Cq21pi xx\ 9B:F*$a\b w%N#4Eg,ۮG*$O~ M.JM9ԁ)|[.upZ[7K$Hy;qӚypܬz yh)V3?@#mҏU z˾ 5l|n%15Ӏ'dVS3U̖pDQiih {q4e kqx1fAH{),k%sI-XKɼwcgp^g jx|HJkaOٗY?vA.3^_4ͣi!!0)#  ")GR wLc$D;mL$"QSo|_XppX۲4)OI8:q bGB/Rymg]erVT ԏW;qv~̚sW<|LGp LqH4MshF7iV+|^|*`n&MUkP$]ä+v]hzf(E'.[[4iBcH#"V& e8*E.: r[||5Ю 4&.kB22}Rn9יiik@F=NKGR] G ػ' ɔVqt INI@Uоmwa՟:𣃯 cN+ ({VPcmnHQINʳUW,}^P\y:· \?yӀӀ8gͦrf/8xE/7 {QWKeTB)^ÄDL \{[ς/\NNN=Q8'Еi` 5p'gV]pݼ|k_o4xˌSͥS:/ ^ 5ބڴX[ 7wt{:[* 9{^m=R]ِIOosH}Mq6hIe4D6j oҧ;ӟ}N /vHQ t \;1=V0jy2^n9D{WD-A`17_z8 8 |]2?Gׂ;}HU9_;V:c0!'Kej~4L+bӲ~ j.we[Kin7#Y)땛*W}ᝡX)SKMݱFmU%Օ ')a]D:MFڲ켉Z&s \[IR6\#j> >˟}^~/{U(]444Г4p迯[fNW3`~04N$4lI;F~Dd. x- ]=(qɝӓ*ݕii`jE.׌]fNR~p]`1PWkrq'O! rMr3?M] Lc>V.B'_ߧWjMłJ&sD0I5֗:u-\6Mo-1"C[~=^Pf8ScVl89LJ>O8=钛 z>򜁅r旅j3/ @J@wҵ/\nnk/]NNN}M֐ݼީo (|[xPӅACKڑJ'l 5)zNgy6ɞ;N&2G6rkuWM z\<(iIBg]߆ ؍0$D]T= lt¯-J#p^F>˦{%1444г5pT0X͞ қpiٱOvC=`jgSٝP)DW:C.]N>9E?8<[;rBFAI҉zzz4NUXr#3ۏMa6 |ѡ?[׃T. CnXI \=-?(B g]Ό3XMJ2ew!3>7!=L|vz`Ez9O^,pn|W&mf#9]Wj˦ape=R.5euӀӀ@o@߱^GЯXpƏN=. [׾<jQ5[Dy x"^-rXe>,:5K5G=|/VMQ}1SJ5 4tV)c%Cp[-_h7qf-FbJe#8tr~6s_:`kEӀ GEv\=;4zbR\[^AK=R?z3Fgw>V9 8 B 3- {ԉUTpNDw] xtlfC2(a* ~&0 >侹?yo{qv~rIcu!'֮ǒ"r)eU=9F^'/]=yɍ!C|]e;2;|2UkʥԹxG4444|Kb"(7j_~]/8q ՚w@?1W]=uo\ؔ{MvjG t8Vή7 w5Z 9UC}w`ĉ5 qD".6j d XsSgv71xlѭI0~"pҵޙ6^ 扟$UɰŊptF鲚xv@~:~5'J:ڼ\&wppX4@3Aj$[ŧb=*D¨m8"qu 5jWU/~g}ѝސ W444Ы4v7'fWjm w<@^Rnw)aaVo//z x׿ϝ?uoAlj3 tYZ`l} Tl+8Z?؍JNKf, A:1>,;`OcpE']&7G44j_sɠwRZd1/)'/9<[{ӞkV31giT'44jMu'KO6?xG|(B_yPVj@/!m4Uk1 0Vz>9~`%+-k`T^)F? %%Xh7T4)]0agp'^ `"KKJwDNN+0AC!VtY'ҖrN-yDGB5nLbf[ڹԅNNN=TnV+GF47Rx7|;ܣUկS&髣9J\cV?j½%8mP9 v trm8. z" ӯC45@ P$H`P :h"@i?~&^9yppA63bqUnOQGx I:R;d^=NJ2uNNN=LnU+N5L9V'F$R QjGpj0}K+h< hu:]綝:Ϭ=4[)P?Ƨ~Pob#'ꏧnDC?]#_=w=dW2"iٺ~j.j5 ;͉ϱ_ }jHqppf5b5%i錂~?ʺOߐj7?wK^Y8ӀӀ@ |err#.z~3 '}lA7a__8 B+j&@ }gnc`~Z&V{ZK9pu mN,RkTBM L.lJBњǿ@3샰qX N{%io…Ŝj8h7+lWq$i^w頶V,՜C&cL^:ӀӀ@OҀIʒzrOru`-~Sowժ?VL!= h*2;l$AVd";rL^<\(zՒY#Q~8qMl< ,jhs#qHI^06@;MX -# +paj.3Xwc<׺ԋPL/.444dRgVvXவRsk-|Z_i͘ }EZf*NxvߺQ}4445mre4_k̮pO§x9J0P)M ^)mH.;%&M$SK;>qҵ}ko 0#f8+1n) bu18q1Bʍأ RePTjx3 kůq$: 8 8 8 n~N)oo-?LM0YLS(?8ʓeA$>ڻ.4R8l^6}LgN>PszZ3}\OI!kݟʕE']邆1`krC O$<7S7_!B%lE&Ղ& pѹOw**\B!驞8'[A;QPCvPZ'L|S/pu)D Z@#NXP3R+09V74qL;I4K^m+,/퍾GLkS;K!iiiKӀT2~rO2EokЦw z |,ה_tmtp>[Ca0J I?Wh"! <|R&&$^Y yTk ?# m׊F@^iB%\'!㝳 k158L MƧb,^Y2XykįS(~AR*jmd6HoWևbSΓ;ӀӀr@wZ^8aSBC᰿SU_&Nϫ;FvDƟVMWAY38%2$%4fZ,H)Kj48^UpmH}1|pజRE5HHPjP)qu4P$sZסIJ4D+P^$VY$\TͼU{1X\;`}!6QZ_f{^283 %+vϤ`V'& [C"S,`E@Ya{W8N$miԎU\k,i/6. NkO̓9HA㜋ϋ`ę鐏<qPjFOdi@igc9=cބB_A3*CAzi %M!]3(`<&!TSO4#4gU@>r|沼W}rQS!8dP?.pp6ohVqpTGcp:w#c,E#z$mZII'd$`!$ч6N@}/k铫)_T O6n׀ՇB:ZcI-u(959 hx#5¹B!ݽ)juaj`"{<8,lm4i-p|ɁϡˢMȑ9g砩O#Ǟf2Ɍ8 6Thي@0 $v(Q(%sV/Nj8& RM$7 0(` DAmgl6`wVG?W M O@sPS4<*}B5s~¶VUf X2Y< M:㇆zuN=@jU>d5 [@&^~v.ђ m om^b3,xu VSEfCP)N0snc^"s Upq*KA5N2ʤD)&q!?7H 7O$A2peL ,35?f`وh_G-U 0UH>FgbHcG _I~#LM/$%&~/Ш4hW 1I%(fګZgvz=.C_loNmP(PIkHuH?L(V$#o߂ڳ\惏4颈Nrp^)~N?_8ڰXavM֛0D$R?=B!N-|I$7͗Dʍ& M KO-Ԉv\OSGwɰYiLO 8fLZmM1kd`L4ӹӀӀ@Gm*˧j#NNT+xϛa7uj6?TMsFj #ٝ5tf9!?IqǥFI]c5p677a %N&nF9Yek iz>,ϲöIxJ\B@CSr IWp@ nw9 8 8 ,W p\tv <4Ė/1 ދ 7:CTX:dIPh9`.)A%VBg}e%ώSX\Xz0k%Α&z=\$^B#Ӛr[I+j܇{Y\4Бn;kZjƴeGJw!2~eʜ W"%g3ͮ cg~&L!OIg:BI2*1r/8RvTh& UHnɅ^^Z@v®k\Whb`q.wሿ .Uқb"`Vീ 1醪g&`[4q <"T I H0M)@lxˆJԒ7sqxL\ߤ _fziii`h۸哗˥h?]5Uѯ~^.NE?CDF1hVatN(;1t /s6Jwڻcj0{| DF=Vt-0" ~@ #,+ng8;pD~G+p..kNȕy?cט6#hdFT"gA#l'TOlDhZ)4qE<7<2ygM>Q 8!،DgJdgbRvG_@{ծ71!"&|tmžGF00 aʮC ddlěLL*zA/i%#-΋,#%-{D_xWJ 0444 5 =2‰xhI#,:>{agG)i;H7KFvH(xPE%Đɨ V/}ݪVfF?' hNC舡NXC:jKُ! +8M6CƝp5p4p\[k[zZmʮ#J1=ѥ=Y1yh9+揲"aA ]n(#8̇кaqh2 OC~&M;u/ cR`:i~.>/y[_֟7.<_#g;g O=cd0 R<**vA<.P%!OFTd9 ;Uˤ=.e/.^'lӢ_p6ΐo;Qmd vH=,*1LHE;0Ӕ:4:V/{⵭;OVM 5la'LLDvNk`:eֹY_zc,NLq#:=yy~)jջbjڣ'<VoZb 1)t 8rH hhɊ r"3Qi>7Z>Q 1FW+_E2*^4FOɨ,#P9>  {~xml:xgѧK^;fL`ZO GLdd({Pc{P:W"xI v`&sF&$5`:dIhZ 1jwX_AxEMGwp{Tb~j6qdw@,'.iGspޡ9BbWSeat4pY?7zv9 N`kcV I[W?۞[:%YvR ?8<9m# D6PRȪV$ M)bKRZ Av,[S2""yv(" nOW"#&C]5*aKCLb3_Hx Qhʍߣ40| 09Qo@}..|ϾOJ\scfFy/u텝`&;WºglQT0h9u6Y42| DiC*r7̝qt9_zU[t6LH(0NS**;~, U,W_"  = `%M!X4&+Lz&Äev^eKg4w-{ rka"0LT\M mNlO\FbGj`Pv=tq~͋(XyjR̍g%+iii` 5 q}COV%?iV}Ύ;Bڤ#FItIiƖ烣8˦qCzrR}ObWs{ Eg,Ep1!VÊw=!yϖRR ?jӿ)&7(XEe8zֵ\:L|s\X^Jrw=s|P[4]PQ9@,tLtNbpь3ܡLEQy=Hi̧Ӓ3hhf& 6qrHLb3_6qʔXϤr{dZN589$PDC"kX}oWrJo~ˀkj`3竵^pV< cT #9@m>P!HH6ō ]\I HnG6l9_FRU6v2^峷~}e+|}ucBcP!-[V!?"CB'{ w- ksRz}ʠU[OqΘ1EwTɝuXt5KN¤

Ī }-bMˈԍ D'Np<dCުp_/vS\:W~5UAHE-AQEZb`˝_.zʹ*#~ns%&N@ E֔CA E(+PLెY0LgwSSFvUQ3 ų/f ;W8^$M~^˴yɓq"C2Efn7J|y@Qf ӗo$~ƋjײM$a.@neLz\t4`S'qB 3 .W(VcܖhMFwT0Rtv M;8GCN x^t<`j6sۼR_ soŠk] 5qyńӏOlBmK?{lȸ{pWK?7ג/Wh{fY_9~Qn>@LP- ?zI$HtJ,vvGai#ԡZ )AZѿ}Ԧv+#Zgi-Gӈg @Ɉ"P9@Og%޺Qjr97e}yChE/f.#Z奝kpv gkt`[Sq^FZr roj+وWj_AjCy2JQWL B=T`tN6$0;Gw< VN͘-m/XNX:E{/Ob1d4l}ݓ{u+nPnWl'щ M~贅'ƨsmq "X+)w 1Mp8E.㵀a/PEUZjpN9=y5}f~уkoJ湊9nZMƯ?n(n.7{bpg alOm=€^M*(9'P4@YLee|GPU#+dNM!a.Q@y0ٺk,Md7|DO6 ]e7nVb>/xpڥ sTa|sqM8lURfZj]èXbHn0/"iNdT4=WchS#.~_ЧN@]ɥvGac߻tpbi Kc xxI5{J\P[[:87t>St= 7_Ȥ9P0NIxRW Ւx?J.{ˬ-Rf0_(fj~Kw_Q]=ķ ޿i73{`k'D!#4K!.m2ˁ-Gz≘<̵Jx \o,d@CF/lַ` *mI\Z)@֪e($|C|dI`^+h[>$70BtvZ1=,0\`MQcRF6OVٷ̀&^Fk 4pH2 8`+LdtL4`QX*8Lj2 ab|'U+O xg,=,-ǜZoC[ծŤ\-n;Mm $[[8ޠLJVfZ l@IDATơa̫Ldp2?7!:nj P̄'^qii z?ά:fͳ=058/e1i\.RHT83*^z`f?rA+T^Y=Ƚp "d5T)Q0jC8 iuF50ʁ.8 b: Ą-,+i$Lx|fw(*@ԾS'(ak ۔%nMz< eN΀GWww@Պvѧ`h㵀~h3W!!&P.vuZp1 [4! '0I!L,014_;z+w?7~b谿ڋVn'LGٷ Nfp:|g=.Sv9LY_-oB~'m~j_Vz3V.yao,O@vl8Պ"߰c(k+2…-iO&or8#\qj6)OfDx"X9?frڰ{%jc9]_dTV+4Qb4\%+o.&]=%LkwEr.֙8xHگm3n6WZMSZQ#GX3n%*}i١P$B>l/Ws#aYZ~L3暖tX{6 V.BL]@ vYevG4IĶ# [K77aNiĬ.)ݱ5y{#ݼx^/wyr>FTh/om| ApE?]U??gN`g8(uĦMQ=wkgk3q јo&yN*Z+!R=o>Qfr7S>LgރH`JC!L,F7duDC'tT$ 1$ 0pxmj͙&6/~WD,TWl55Xȼ+Қv)iG pdNہk2M)}<4]*s^ W2S]RGJ8 f"}6~bE9.-K7h!?ۢ-U١MU]'" F&ÙdHg G c=m܍Lm}jv>׆f\Ŗ`+<b~)s S<&4!'X| 9Sz]CAO׆`@m[:'b *Q4נ@ !'!pG@vkPPd/6sV,xL8QNt̩ E!kvmy 3L 3m(mbf]_Vk S2jJSFjKc +`!Vyw " xwAKot{7:ubwD-lti[4նqE %BCp&Ԛ?#E>8\72[OIzs>}5Sja)mL.o&B4lQq9|C)8͒FV4T$"W.j8mp(>{Ok6gܥBG|_R^7W7gƊ!xs N ]V<]a~Z ;bDذtLqT;8oK]XZH)pȫ4UVI )-CRekRE׈݆ܕk ;M9&[$r!c AB: Bҿ(A8R7CIפǙW^qDMx3F]fM-&1y=&LIawz[Ba'\HGuJ6㧆1xEr/,:z{Z%^h( #*I GBA\ra7H+W/;wj(g;IH=2N&m\MRP{N1_I* $ZR)+ɲC~a(UQXJb9ҝ NBt\24b2|K\B~.-i/io78o- u8>;Vi0RJWN5^6m@1NL[YMy;G/rp4^ 5#)$YPwqq~@*Ph-:k .Wq%~$Ǒ=Z'2i>p@8厲R0gd tyI#OD Հ(?#:t0EF4 xP.@BK czqLOr ë4O :ӫ|=&Ɖv; } 8>0nEILBK'NgҋݙktlUn%S p/^ ~{4BjV')u8x]cׂ\j>x}J~jHtb$E̴nGt%Ԃ6r8MpMpçA^3V: r 2lLB[ 7Pl?og8:dh,%"/w{!;Tɉ$'a@6HRj@&Mn0VhjW*voTqY&8_AH0&jX[>x#&tm蚌 I3w9}򬈲0_ \ϩv7(8(rPB._N&*3!S3abT*)4b^+J-),l($p2t:>6 ;_٫j ,~0@K0je%U})t$Ajֹ<#Rvo(A߂x `_IEdD4a&@K jWeٸ'B_gkj|LX/9Wd*tNoMd%3.`SQ ISNCDc` 鷪=&mS xhicRcᘐ]5/Sҽt^dUgZPqyQ3\grp%&k۰5]xM1E9W^Iq v05`[q^ԯ~R7o`844n,z4_H:m 8IUbg^*rWW[*y}.*i&a kgs0o5Wr/:>߇PWWyxÊ&r⏠Up(h41ervKTdAkM?B-ܶ X'`W^ʃM!AF.j}~jBzQ%ª(Xjiq\ϤD[ou *[9!>i{8Q@A|D#x\a./t+q0lMP|IWhEbV&W(iꬼH##u/_ l2/{L`+/ޛ|586 캙MD ~k׆qvcyΓKehn 2>+MwwIUK0uV,n]QU*.uv,0͘py+OcmӪ7,[ j/_jV 6IssgFqF8$W+N Sst-Rs;&nAvz 7ЗoYJX%;{ Q04ĪA}s!p rOM'OX!V<4lW*y6MLa1_h~'<ӚX3NAשLDtQ2ٻ [5 f*Y>& 0& hb@M$x-Tacez[嚠[#4Q0O %d~5j?męb5Yq˄ʔ VT^2Φ].(\ 87@jo=F`c1B5=pҍ=S!I$ Ԁqύ`6ŀWk[F#iFzӎ'Fz*{%VabtU+.ҀwF~`"9X2/ˑ_%9iI\-: `fQ# >V׎efY t蛏ې8|h^9':8g!saS-Dy%xiI4JgsԐ*U"aQx<C|"%ji;V%ba/a]sWkm^lGTu3wV$>!{}'dc័b_ C@Y`{2DctGS>93CF2A'MG ""|L) V/!XJ+uJ,|J>sQ{& -q 3|/l  3vG}Jfp1= B%aD'BJFw2 KK~\2Tcƒ03b_ui}j}G(O2ث$x?Ug߳QՐaFP[wR A })`th}2 '6hr ,Q\0FY׹'j#N57OR% ji2%6&ܶ!/JIV8*Fq Bt~fDoz#?w!#H=nl|+iiϝghזpC/q>CEG >%`P,cCNl_Wtq?>↩Y Ń(j%.INH- 30rtMt/ 'Ԉ9,bLn_"7:^#8Кa }I,Wp-}C ؝*FqE L~%.~#']UZTzKxwrdhCpΫvӠe$RG(hD0\Y |Ry^q ^zlFUbZ7O?ޅGͿ&1"ШwFf_5DsBǫ:63i0lS͹xbQ+;KmDc.XU DH~q/5rrhĿ/ւl8|7VpL͝e3x]C;4S@'R;ҳ&y gaӟB @3l*|ֈx*?}P&a136Sa*\#?,.pZM,ST73Q柫O& d^?`Ԣb%&o g_5mQt˜rN(?}:25@{EF1` nrs *"ȩWNe)5 eM_8`F./XZ.0D#K i߮O=m2@r\$oEӖ4z|6XNks4LG+*yYèx x<}-jerL,/=0S#uj4H$BM6R-tc8Gg~aqs*#i`F@ce0<7%Z՝2Vk"lm4.F/EC㉕,kFe@/֟`_qgn]=V%QuS_0t[]Y+= {F1 B`J]T.de퓩8$Skn#^RE3OHct4>f͈sSwuc,Z(cw0v~sw:yع=om%z| NE/3wy1qڡG0 ͱha(qQN(=,ss)d9=8"TQנl'mY>sd>7lm`90Zkҹsnca 8A&f؛ j!?^%N0K+>~%{),t>2}'<=j21k㑳i1W*홡WPf2q06'F8<4o^ 'S LS ߗ7 \!3 .֞Ǔ弇XbJ0v30|]ZVKJpK/NG[?("^RLaF4XhdF"y޲6aPwe[ 壁C, SॾnGQG%f,k^ʗv[7h>Ab˝dOE$CO>My,L oBz R5XїSĦf 2qF\Ɨ,H`궅zFذs?|F^SԱC"^)%^ t#t^|%qU *d'y|5W;v(W1` [ Ws&³t2Xof|kM 8( yΨw'J`֟zu$ޱnlt n8 ū1*Epӟ?FX1p`4=`V Q腏נs p3MTeJ=k>"^9{u̱;l+4GYxws@Suy%E[.QwmV(-A#C!00}[x}}.j;͌6IEo-2m= i{Ï<ܯ |CN/~B;OX*w*6G(Yf>` ƸUwẗ́ZwB48ƥk14+=@(gyI)T<$Ċ8; Y6F2DwKE{CNƳK5~^@(:')_<͎3ٿ#̸l_ lp6w>#݀!^ar-<|iRmx1߂^[/>6M1駎QtƛiЕfya ra3oǯ@+;볱r*s>Vac0U߷g gG^F_HAP;ec04ٳ~?^3nH60rt1ft3 ,8trD N\:,0=o:";X. 9 eL诐Yan9k0d/[^ʸg_kӘ (HG*Bp\CX{O#5hti6~3 rY:l䙷TKbzVcp6]i$&&O4e/%1c~dͱX:lLJ9 kTÐ3#MrrtEnOA\2g!O Bp_ 1z5(u0ag3J9"@#ݭ@kZeH?. n-"s5 B\θpr2OVxl$z;?ƳxT=>fYS%2Hg: _H3XN!cQeyv8M<Ŧ`{3 ^ku_XMyL񍁣MGv@ъp$ ӆ,_rl^i*[8*ƞrUd&{ m'ƳrΠ_4>l-v͛e@g!Ni^1H.X|-FfPޒ"$,E[D"C {>[Ȉa#Giq,l퍩4⯾^KT 6\p#f*lz}$%`B8YMN38>!ϣ>y C47b#֒<}a4CKmK|r`O̖;#< vxF]c)CJ}6aQLBȱ'Y~:JKd ?˺Wϡ!`#ǩxlrȷb8V(X:{-x0\9̱f71iUVPvX7 5w\FznX8CN&yaGh "xgI8ou_*eƷ%̀ytď-,*id-4Nx9l:f"uF0=cZety9&aZ&ɩl?u>3ȪXQ"FDr[t5=|-Rd "l(C]0e} @#0ZB]й }6K&+c .sjha1 RGOЈ6 Ԙ]bE ܨKcTɷCogtNt`24K&4 k3K"tT;~GUE ѹNAt!@jrb00w=3n*h[QG2Mgf +Ǚ]+oy!vzy1nއl|M0ВhS}ٷn\F<䩛ь}Fl/IŻp#@?MlX=Ūl܈A` 0A0~wGu ˼Z- I!%.7ѿ5QΰG0z@5pG +%*)&JGkӍSFO1Jq|H(hFĈ}~ o|Hm}ߙ*bfC0@3klGtvƳs,:zc Q?1+jt?t4Y3)TKPdYwin, D}Rʲchm?<=⊨104(#~,y/g@`pYgMȳZx1a_pyM0' P՝pvV#?GZt4v;:3;}uƆSp.=KLC2?Gg2,ehxЗ\^jHocfmtp@B8.(tHDɋ/ID[AI?A$ptIf}s'E#` L հC&$֍7C=tO~cMDa?J"DZqs,u>{˝P@8q!8T"si3d03h_s4q8D_gVʇТQu8Ds0t(!RnnX^=*oǨ Z돗,F]bgV>jE/B<~)0 <=dh٨h lvq6:{2S,σt+~! Xzj 4:+QG?`&G+Նm:@l0s#.I$Ri=Q'3:30*l/IEO4:u)O{P7O7l]$WPR=6t<(>97aU> )+Ԩ#LW SbB 4'<_YJ8gXUf"?m)/FOp43=}q3O XgWCGᮆFzdJ.-&͵|8dxvu?!֘ c_)@IJXXHAGE,kY1 sjt-=ˇlt ]E+S䞠|^]t4fMh,> L}X*&daX}qx* z9ǗrC/[gV~Վ g_G%BW2'|CRgGsnCi|Nˏ^l̼kbH\ Կ{ܸ/\%oqrJ r_eY*jeSOߚ7G lg GP[ /LR 4m;\a039|RQ~mX1`LBŰI_^AZn <\'L<>#%?( otgRM9  ѬUT&5u5UίIl®c(Vt"򀙓LM  ι:ac/9i84ď= 9 *ql6v*yjR(S.=~eх4`mo>*Ћq@#6<\ }h`qV*( \ެ0"E.I^:6kV!ax5mEΚ=|BX4h$?{\C(`doBz4XPyR+iSg `X'8/OSi hGl ؄2IB tHjDDt.{ !SRPjnX1pnLLQC:1'g;E$ZL=Cwa߬+wXѿ?0lhw`ۮ*R9Yn h=# M z:`Cv1Iya4l+_^߮Y=4IjoN&ec|6Q[z"4 dX>L4zvm4_irV (r,R; $c8 y?x8.epdNĈh}Uкd{;/%vfghIp)`?8G ٖ:+R>8#Q(wOew*#F[jHɅA$݃l7;ăNF|~L"X53DCy'bUu Yǣ;yߚ O*;'8O~~ 奌e-Ƿ;` &%vG`QEW@?+t,s:O[+-# 0G"zޟ FAvB'px4_銚QT~f@nC6{݆Qz̝cve٥^=k\w1:fO@^&;t%AHjRd8ϖ)]9 {?PI|OtZZsl[5ZϏ$OQ8s0ZZcH7TI,[bUb[ׅR+. BRr䃁S,{"=Y΋/9gDcS9 !p8՜`4CkZu m>/p? w>_fܵp8rrh_Np]̬A(9^>exq]b;UT#J^Trh+ع=l.n"IA#ӦXy16sBDr:e-St2"v|G3D͹"ts Vw741q":kkBb:/Ztƨd=2I9${ cϩX}7FQJ^R(Ty~_Ӵ}p8.>+2Ēovqef2AuŔ#$ 3B'g>o[ԀR&ymv:N1ЛslNMHz9\Dcчn"%/8^O۶刳ǏRxiNGЪVCR'X-C_-t <#7Ϫ*4DIC  2LgsR][H>0:c 0v@}Qy m O*a{q*vѹ4`QS٬4˃ plyx띹T\fs5(#zB^̐ŽN 3ToǞ8s* PnRNuCq(| }zF{PCl5fcX,y 8~ȹi\(F7$ۆ&;3 s qip܍p݂9)FisW"J^CRס#@E.!ewYޟ @`Y6j뎅|tFnJ\8ȅ^_Õmd1kƪc2pb3[')ihb\_ <_4dgө'W:1ZZӎo1N{XK  /S!{ $56z6 CPa:a(aj3@Ix[p1CHW`IT,6RyNj.'ѐ>?ɍC~sK$.~߷Oa+UZL8/_Oe`h"$Z%uC ֠<5Λr_đ4-u}wtǢ Uv#EWe>WF'dpI6܌T"1wyssV6g[mi\ta7X2^ܽ"8ͫFa:o^XG-,/Fs3aA 0ɆqXFu|$: *T?ՠmX |@i;}6кS'NWb;'`&%'3<1A v_[!]-- = BS`[=lC@ѿ8~U`E>HF=BEs\o>C Y\wcbxkVæFE7~06;mx~Y$խ * 0{zc z֠͘r+ ^OV@x2dt˘5zظUz%WIT_@>ypkA MX4r|d}xXO 'GCW_"NVRE:4[XQ"@IDAT>8Ʃ7;/&QͅB2%мQ0p bo[wt; &%UޮZ{7 p*Ӏ:=M :'1 ܥt, %ލ@w7N)x aUi,HᏂp^F\v{iY̩HGA#ҩ/9󴴣 cb܁!5Oi#D)WX.$ϥg1XڵXA -xqą L4n n@毾K[h׍sIOaA΂3fD`x諎]|oiY2+ !esWGrñg\p7V BCO \SH#8? )$po`F!0KG spS7Gc1(m櫲@Ml_ c?Fw'vhϤI(R "?C5r^,~lIh=% A_~X[OԵmrG22A ,%٘>ki1X 8eAub߭>zյUS0,Œ; Ϝ𭈭 +?#_'d|- .@bdКd{҃=y0 Bf&@0!:!wpg#io$YNof#^ 7i2T0Z,6]U]}H>wFFZM5"?(4 Kױ۴tj&F?3blUUmc)7 Nq܃eC,#vBt(dKxfO_A `h,>nv vk8unտZXBԥ*!ߺ-v*,ks_+s«?>^ɷEڋ.0mNt TW13TXC0?`ni~h% :Օpo3Wf@ԣR\wY!bнc4ع )̦7.Ћ]y͚^t8(L?$cloܽ5jHGO dpx%ίb3_/ ]3 ;Wj L'?H3s:U ژQu2Ϯ!@bL,6;޽M%'MgZ)˃/84\шqO0AD>1AHHp /a, -DtgR -T[1\n;bf~Pn>Mz \ɉGxD$WZE'5&3zήxЈTP`8 Si俣*3"$.?3qH<RLQmMlwVl!:5WTT9 -We'cB0}1R}j*` sOʵr)ӰN+K$ouUɧ96X}y1-wA_9QMW&YeSBtz\#o0* U_w g_Iɉ8o5 #٫HԢ|%E݆rC;հX½G{)Hֳh`sp0Z,2U`tウg෬`QM)dWĂP'A YaaN5nb1Ԯ&O2VQ%gtLt/h/MeSf*Ed.rg3A5Wp+13?j5씫 @`qZ(+Bظ5בnלZ8᜜XBV瓹W͆3^x|Q5nɗ#;VէL.I‰⩍g2>p D -R !7/4u@xڕ`<2N_jdܥp@ 4G B@-̥OvN3"o.ɢR 63j@4eXb$/G#k˲1t">}9W2PwRh^\ @ld"%RAxLR9B#T(RǬ<E7v~i~5̺89 eK#G^x_p=ЩLʠW#/ 9V{ Bρ4̯l&ޔ[7$z7|/ u>=O8 UP-vgA$yIȁLIpdx FAܙp!°-=?pxiW0/( >[Ƶ, K648.T.YuS`c^GRRO1ШWX)Lg:|g̊FX-2M17F9 'P~9uoqYk0 W0>|HIWqk*6z,|&XH7^A PN:VQC,/]Qzv5,wQ]rCo0`Rjxf"b]> uGGκ"f-e!~F"0v?<_L&8ynZ gL/N~ǃ\1oj*^~3a 8#~ oN?SO֢[ɪ 2 pI6gF;~7kh mz/|6:x|v{* %ϳ܀p6t]C,yКdD:Lt݁Zܟ>6F'CӤ7xG/Cp]XmaaO$xyȓwՖp[$2)`7byS݂Itr%R-ضGï!I<^FZ+y9f[Z=6Kw1>u8xs n9aU$yurA4eJ :1zew#:1R3gA P WGs}1lx*{@FUSkk]%lC@8^F~ K.caoM!87Jw zd&y8|74F[Dp'X Ƽ)y t7 84sjf3nsy-FN66^B6 bS [AU+[0O`LɧitIϷ`1<|!0ܟ`!!#qwnJDK@s ^o3E@ZePyVFf=$AC_* |꾨O]ĪPJ]& Vo+lӨ:4^Ţ{*ϛhܕt~o8FxvG+T #@QM1HOArxxt`L<]35H7A `^|N Kv B0s&Nв-2jz*C4zu\^Mï,?/"G`AFAp}8a FZ=o570l6[./8sJ0ނ7kGD /lf{Z0ƈ1ǧ0=)?\jʨ?]ϫ?Bcm7ڜD> m8MhҴNw=/|x8.$g4 ~RSUl)vI(ft ̏ F!a\mAñY/xP; @y1jqR'Ɣe-WHO–1{/pW~>EfsCN[a/O-:>ƜB`p{[`X.B@_ 5i,2:qK=qZzqVx-6p}<Ө=|[r3\ \>hD vX~8L.M1Eex\Jqx8 kŖp=Obi9c\ w^%b3@2%w7ul`wO{8PI[ĵD&X0?dFjOQVl(#ӌoFh."|(^/ ցfec12|,@[mkIs],SM9ճխ$ SWc{bª2 -6:la/;c8Q'膽!A2jNʔBIY]z 4j{͝Aka0 ׇg~8FFrCц}7FoÅdm͵ŻSalZԌ %U0̌p+ +mtS<&#p{F0 ~ w6 D_ z_5d7DN6k2WҌxgؙxL:rG@Sec% z tϸm&H"@>A(l0 |^m`@uX/6 7/=YA aK$r[ ,os+wH6_|= {8 ͘/gOV:ɼ"T;+O\ T>)D;סy|s̲Ʌx @3FDxfbA0`ƙ彗 *OFkӖuOeݝ??R Z'@wR/v! 0BN#;p4_Rvb3yoZ p)uDNlOLA@ 5ۜo>fdG#бatc4⏗~x3'Gi4BSO~oOA_txVMG!`Ø TFcU]}$cEgaVp,9vJ&8D_9tFOɆ`}BA#-}Xc׍xcK5gA `خ`VPo9h&sCqؕݽ&w@m󩕽"Sy Z#qkJcܺJz5zGu{©Sy3JL,8o-C6^s0Tq򨛑tP6ăR~;x|p>s%we3D*iLDTXO˸vvϽh?vO' oOA{z8bիtӡ01NVzb8v :KϟNb8ErXg wQ$ .S?%&ySE|SZXߘ]2-cIx3&L s2" P STQ(iD8:O3 ݇a gϔ %#Jֽ:Cf=Q0@Gqd}Nx`ΎG[;.Y>3iqoa>'cKR`66W IFZp%fR 6h/N?> k0TjP`oЮSl-Z|"{`033P;ܧ~Y'~pC"^'[Iɟ:Zڣ9I{!^r7]E>U$DV%Di첂IΨ4}UNץ&OܞJ$>t]/lȨ0FXbZq#.HGAO 3z^&M2% ͗0c:X^g+Vh`vw Y(,y;ۜ 3!A2ΨTԋmP P/CUBѥAd@#C]0S9 #J-MaG Rr Y<Ɂ6|pau)g3}p%nKOZ"^kA~ nCst_Iq;"гXr:JV.N` oO񷛉ʵ]סrrMz g-,孧a 1D͝x &mC[ Q4l(ӽ^߾"d5W&h8aDO~q`$!Hyd;3^*[:_Ϝ4RVgTXX*=K;a!stʓ'lcya %_=@\6  ^D>J&?=sJO-ßŧN}szi%ۣؑ;cX: {n.s{tg0hV&c4:䳎h3%..yxQs $));P(`p d\#g:'X?( @x67F0br7@*H+oG]fy¶(q zxFG^'׶kr=Gcɰ쉲y0<7tq"V V[ 8.Sa:"F4蘼σONӣQ&2iXŇ`l>.(;XAP̣J!!O|pK', #VWWwDEʌ b|x'/U#u={13MOF Ki3(`&_ֵm7Sn'#[r$u2AU() yBf8Bn[3SFP[`1NshGGZYflyG$nH}m0mKO;+\[hnus0tÔq Θq:'#6tx9azlq tnF݊i J/:zdCYXQFS cC]VaRcuGol:u.&p/䇽fOfQ&`?`}/ftDihۤOF=R$P|T~動,Y eA#>kXO-!=owOOkQӖ9x0-0^D <.^fMܨ^ 6|.*pKi-- iG鏌Vp>򿜌kuxQlx ߷&|><?@* 78mt| e`+Ϝ뇂R6퇀>׶_3#.\I3M^ "i*8Eqׇnu"pL?Mi~g trڱ}=G#_!`BMG1~.K0?+<+zL#Ø>Z.{f |i+`EϕKGs.t\]W8'W!PW(6SP#R< 9*hkOfҔ \8w9ZtQ(=6@YK5ljݤ+#@WO䷯/c(٦%ʯ Jj `X&3폀>u]d&s|U&wF-T5,ZLcs&rMPqR 4i :T 8] V:VGj[fmTA}er<Kv=vig7cqL^1iܧO* 8NׯFu{tg2w /٘:%OIOCȡbZَM-GS Р7]MXЈ&k0#.7xeI =%aRyl}kYNuI  EZS?.C1c*#^:6s0~oPWx5ν^"۔`__2 !v׃m haJ?v*_qؔzݴy|xND=r GeQ- o(/ MO[6]mlU3a#@OFђ, h{Ja A'?Mp`e0, =.\̹x9az8)Ar&:?ڷH :t흩dbI54TǻtJ44gat:UBQ2#2^9Hp.Th4abwdwy^]V9b_^|s7]1Uge1[iwQA2٘OEa `e ǓbRuUB?|^WX<õѽ!L*%8U#!Q GSsסh+>y9ϚFԐ 6;09IPYTKc(OJ 图e m{;ʺ}zєs@it!z`j ne= :`r 0`6^hxi)"O&vrIan\Lgc!ӈYg`Gw~Y?Fḟd"7"tմHXbI.t)NTr8kM?"1g:wG*rhY"7l<SGtwlX%oɌ)Cq~M5N5h@H%o3rhz۟{t]8wEYWF´ cZD3C^)p2^/"u4[QE,ZrOsWb꼾RsЕxeZ)r*=rA"!lK o[P|]H*:Qo5&>>3zH~VM}ͅv6 @-T1{bd;7i}ZL"`[n0kQme)-h #b_-7gtx`8? Dۤrli̭F^g_숋hi>1pTcԏ\,tuG揌7L(8yR"޴i ,OaqY]}?j>%0?M_cGϛ%J;/2ga,M;f,zh)R*rx܏Kv=ȵq&Ҵq~@#:U%fMSƶƈp+U|)E{.aSr4O1"btiL4) @mNhnW_-JD&K n0uCa; Qz2A>Cf{sg*\T^9D&o\KOO<=u_zEL\ʜB^q^JR%)}&qUr' rAe%:U0D?RZU}x{zu6!栳vB6=>Ǡ!:E*>\)$E0FX%hI p'á[9<{otO7Vꨄ0{>w%ko0x:@K0 `g| lJgEAųl|lhpAjtKօ@ Q0Qj7}6/"X_q!{`xd}޻?W,4ș1 LEKT%bk$1?;MU%^oִ^'V{UmC_"金M=¦=D_]7+MqSקy^S_8-~KUzN/UO,o7MG7ȯU(%r/ސE%~%Dfxi#V k1݂.|]Ҡti2W 3ES'֢}CqƊ':큊1V4 ʌqDCm RrFi"r]l&@M[uL~N3h&y\P:ޣy'S@W1uԍ!8?Q\qeՃhhD,T=&gǶNL6h_צ1u5m%w d>0i`LnPl,ǯؙQ}Ea@zϲNSjl19QU&E?#Р56mS'WܴwM$SShԞA1K*| ]kCFINx p[ 4n#?v?S>Zg~Mc+{b#`ƗLQ~vE#q AP%sM5 )KHNZySB^g?9 }i>KA-[×r IIt|Ɨaߘ0 oώ8~St9˗35ʯ3mhI_mJ|up8wU/ FR}Ÿ #@YOw;`?NcGF T9xU H7kePQNp\˫RDOr}R^>{ CgNc2xYSN f>0;3(+}aX~gwt/pARr)u4^Vue鐯G@I ߗSܛXh>9\k'?NC'VO['G4:\2zrx8'W}w1 Cs {%x՚p Á03J_%Q^>P9BF)Rfdb֭>fڄn@e&|NLx fPqmh) mNBzBFϢiYp?#Y-"wm:e!VW#5oE gAK`~)̧7MbeR%61.ȴQdWVck8%^Zi+YVeGw҃b letg8P)vۍp=r"ץE/ςϞ?e=kΌUzC<6*H/G=;F%9ew@(qO1:uLN6R :x^O]ҩ//pKս-vwQ[o+4ӻm Bݸ 6% $G? B ^hbS pÀ)k;Ѽ4ew|6s^I4T7 L TY"!R%b tjͅhcT` ;ݣHRagE#ۆ u*(/c4+XwЄ{@ C/`ezfS| G#syC#@&@`{3Hߢf!UIJ7/ПzŰ8so7 Ți7/t`?_{όywz5d\(Bj[q΃PiD|: I`#NKr$I̸<4i;h GX) },? ӻN!3 fNfs'c4q@IDATnW*q,Z5S,)R_ e=K_sg I&GM.'ӁiM퍯?Z}zT0ƉC@tDp[2_RȖT)x?Us(;$*yIRMe|)aj,L^\RY!,E* zJ-1eat胨JQPm=gG}<#o@g,Zywc nFwstMǏ uJΜ֦ R0S38xM7u<j g!޶q[`h53bV~p"FPИ6*)ʡJ$)4El(77=tĻFx @ LյKRL/9bEnBXCjU?CuQ`6q|'".$t|c;af>>cgN.xiMRû%sX Lz\^PQ$֯_eu#*/WHDQ'4!qQS_zv9kO'{C0t0HtV\*}H_WdJ%0@7 yOGdA}$q5so14Ow'^jN+'^#oTkW(.=y^jn XSU?8@3N?j a_ZӄT`6XXH0U-xğz !z_/|S2qxW0 WLo>:U?NBh6[x)܈Dkrx80~Gad.zxM.7>ujDlO _ c*~[f):h\>D#L1sY iM?ƈ{>˯A}\JQogQ7)ҲmB@AUҢKۉrooޅFfC kCcbڄ4i&YT&.~.u 0,W-䃦CK F_p>A*'>K a^C˷"#@< [ںgN L+!|uz'o`2 X?e.9x%/:6nWjZk\-աx 8) ^̗b|IzD3).T B4ڀ~#Jx)V1WGuյ#|m0L) TrxM"46C9*ia<  V*lzBƆO}ujƦ]k3V/h}Vi_L3cYz{aKqp[IN+%)p%MH]$C+(%% z`u=a`)dވkU3¿Cu v !!x#¤WԾT'~ŁZ{@kxDn<; 8QfeNIEL`GCʪLS&U@9)&&>77N&3ܱ/4K:~"ǀ0~IK0,Ap/MHyJ % X ku:풭:eshZ G#ڿX-Bu)I1y8g~A'ۥ]؈r\K2&\ l#62y3x2ť4|ϋabu ムj/KJQ)aDA^iҟPD21V")G*/sȲxe0i-{ʝDf=;wh0u% /tPE#<oP_XO{ڍ}"PrYS3ב=1@h$"1#<9hMU}0Y! ,W3;GMOz:]lHxlBljY?ͰvLm: oEȊhrRN7yѓ0JaJCqUM&h|AcDt#tlc<$A |?`g'جGwJ)3 7и >EtY r:/֭O?E)7[]z: *v{?<;ŀl:}yQ w!+ݛ3;'Jvs|2+8_ qfj55/j^h/ “T5gp偹zpzMʥi5%D0ӛ?CךO,sa C8J:S>J!\R|$T.7Qz p(8Q /gIq O=:/]}J:ePUϿ#vl;=Z(:C/ծiڤΫQmsf*<~^ozϓk=At lctf*_7̣D"O#;ajݫ #VH߁0=CT\`=K7&~3.9x1&~_xag^ۥ%{%A)a鵑qaAp$kF')LʹFP'i$.#RaBcS|ȅYrO&3uBC%4)ö`|oxk]yxc4"I*c,UKHEΦS08C̞-UYne[gs;% >8ſ'&1rj@㘊Ap9T aB$-eK%e05zJmjϥre^2r_*?IPd. eV@d>.H)ΰAS a W@qMW{t0F }ǰO;/–bHh6GԮڤΫQkmwl25]֘Y|Ҹ[p4 #+wkE4}ruI Bv?0,TU8.mFK K֏&¥xe4z@pmI?JXtn=ոx6yPw*rC>Y5vymImg~FqF]6R* MHd5f_GL"̀')[E[0xTL&1Jtɘ DD]_yB#jA-ieϦcO:KU\h$#{hl: "\ϦR3!sV2z}Q'-:s&[ijVUt~!Eͫj>?:/piRU%gDYR\g>ŽC\0 8!_d'Xײl.K`xNZhlO“뎁C8yX }xPwju#|n|nzqtIq ' ae% :D/!,ʴtg9Ҥ-~F>`f>>Og#qN0!8s1 ]ǶnZ3a:xEzb/I%0$ʥݧM0FEEm>{X߱Ʋv`oΆ8+[">U>-euI-cwm)!tȘN# /d}#UE42sD@ZVbKMAeRŅlϓ{ɉ#KKQjAA<@jPrVVV%GW tLK85ul= ק0o._Fx5:%j5-t~c CiK6{4plxl54V`ci"4U+[i2|'O/@vB!^rր~B̿k4j5&.v_B^?d0[K˟1{k4UsWw?\#Gtb2F)!rX^ާZ-D#a¿'?76.ǥ0ή;e扂gဿwաֻ pڏ ,EtF5Ã59/as?G#X),@h`KgB?(sdJ']e \,F2#8 ?^V/|NX99]L !co2IoL@Dp.(JsJ"Y|"$'3`q6fcoPQ$r mZ@e?6%tYPM^@]p)M)tVɻ躆L*ߥ|[0袅?~Wޭ҇ QJ%:fw1l܃wAf WL͘"]`z:; q"nQ1-a0g0 ~#i"gX]=d|yy&.Mg8HR4=yk`oBUVB+j0wMZB 0\R@|b,_qIŚd: D!Wks-BGqȺa9p Vw}<,̾ *)O6RYS/.d yL2g)VZ}p8`ڄT&k`\ W΄At35gyhM(IM6}'/쀂G:Kl- 6<@8jڎf]ȫkl( c<`L/B+GPNf x .G/))F\Nכy)c.Hjk9f>\}6pS #@adPшs蟽s"ꍛ~GaUm(`w<'M@AUPo%҆~cDIR5__OpgVѢE.,(ǭPJas52:<+ {wδ\Q]4Kb~m8MDܖgGǴLC4 AX@ɊǾ'\ J岫p_8Z(9̏` :[c0*igԍ1VbmzNyh %W3.ʘA#TxZS]f$.Y/PM<nGŋEZ Á$;܎yi5&+$Wt^"2F){Fxd`RhDrL |,Ҁeh_a&nIXx++AS@W$,i~pCδ? ^ w"0%dO&+Π4=<< PF HFdr/uD BX铥Pz)bStY"ü\N .V+hc`7Vj ULF|$~u"kԦ.eD+y֚dۦ?ExF6#&ypxXT+\& VBP@7z9p ?^2t].޺Vż0|W)iwrrY=fOMT6m_)&Cq< S @(Rgܿ+V,-&a@COZo07ioòv_ mnO{Ni l3: fZdM%IWWdO…9 b,& *<<6M5h@ҖŞAcf+^ԃRB Nf`pIƪ%ӹ \p̧bFAUiԶp)X1?$+p: n4Jr#J_);X'g`50L[uo1TMA񻵹,}X N )kpг5/\o:UlWp;hC1hfdP6'QW=C>Vä\qXл}(_Osg>(OJ0D)\;FT*Lu^pxHyaA(%Og}"< ڮ+%Oכ+D_M,K>1|2-b=[S{E ֞0"tECv[~}U^*exC6/Jg8%Zl6Y*'I~؂|2 ހ'`Xi ~}oȼSGa @_8m_eY`9LWu4'kz"ֺHd K`eݤ0Xz}ค*Q,<*Wap#t##܀`X@zy0)y.Pz@C[za$΂!.MXdMJeXq[: _KMel@`b \޿ hZ@wY*,~f~jpomGh{S U0;?͝A/;P 6] bKHI˗Äj&PO`ǻpp[-5>SY$:5I[cs, &?ZȽNP'\n\|iEֱ+Au "Iz%ᒏK!~8K"&g04ޚr+(/uLđDK=c{M+zJ-<FF 14ۣE_3sk&t@~ t4[\|W"B/{P/FfedhĻ >!Gi|` Fգ,_6*1|~Y[գG 击L| pKF8?,7Y04vp~(K*,K"S# #Z. & `_Ch®qEcɈq6^jږh}M-ƐS#] ǍGX2 Р3 D`c(mwLb 0'~|BΕVG](‰E)O&O&3 0PU4VOo)=c׏Ŕ M \fޅaT*|Cy .h<Y5)҂)!bs7Y ,x*D?W~IksUDŽ?Ela߲c>8s0[0 9[S*DMU[pbwB|o'8S)%pelL>;}4s~OhN|sx\#@OnZ FLW@vU'cMFh P%t*^u2)(0|T[F@z'풺 כƠ$<#F?DlWji[5Զ| &wf|gL%Up?p/ s>c{DP$~C=T] 1 '>>\UhL60?+{:V05;SGP||XϤ fٲL$Q/A$L$oX4B+ɔ$ee.7ݚ5`+I&c~vAgSB{Hb@>k@zo{m k)23N6N 9%!c~(cT#¤-e-VbSFԱZj]ࣄEp4٫@T]d%\QexQM%µSNkU9F^@_B .J^ F׵c 2ʹg*/ B*畺 כƠ$<#hka궭>fWI\@OA5p?Oc]#MJeDqPtH&x%!$SOixZ)Z3XuY>SWjUqe"@'XyXF"v?[!7wOo=<Al2e `$[21n N8]\z&9c? ÄӚ\xAvI >o$&UI4-5a P,vGņ7DGmlV!@VN9=_ qϯ-mv!_oڣNk=j`Q9Fsm'z}nlpWZ C#u ?֪wG9h(YXݨ FӳJbaXȟ&3B%FҺ  Y Wkd23F:2u _r(Qf{ũJz}^tH&X2wNfJ94;tݎz ĪxY/O% 8#96gLbr?W\K6|yȺ:1~hr^vRȊ $RD.2/I!ajH. i R濎ӘXmĀ֚* K<ji5psw8&Zzwx:4A)P6۪lKRX ~,c2Q GnӜB]é?un?xYO/O4~ML0%Hġz&c0ZO0gFH==;Deѓrsp>._xRԟ)'^<$RTLhH0 ɒJ,lS$}%"J/K'Ϣ_K͘7eaTIY L P ZvXDzqFUoٔ[UI#Vȕ\~*/:2 |:_H$f( u0/!ʈ MM'9p&!uM"kjObڼoc+$ t#/‚ :e$$#DF>^ɦLgVT?=x}6&GuX!DԺ-OiɵZB~>uIm3HrأYP0{O &/l"xA6mjLw@=>VoСG{GO^\dȥAZ%,sv@@*`A%8tRraJTWZԑK7!JNGN|ܳL«WFkh5ƨ30pVF:9'7`?+FK{z{ W:a˥/C 0|^~eOSs^Z+CIiٽaxM#@W@tN}zaxMo($dd!c- DQ[ ] b?m>Úlv(|Z9"w\z$`kc?ɔ.Ni <2=+C>߱$&gzlVUzuS6lN$wCt*yZ".GVj:ޭ! *Wu*|,Oprn,ȃJmMqvD+b<\kUu5-'>t$!i'De#wٞ3@yQV:RA{'UNK%Cx}Oso ,5ٺ_v~_2F=k.X"P d_i.+_t4qa?놇7Aa%iDUR7~->UCUW DKexYm4kblRܙ_@wGwAvI ` nI@*cGRZ3ƞ XݹZXWvI!*k1hOd]r jrqNAHAuThՉ\xt >] [~h?"+8Ji&LӜA2FWϹ iUc S;#/ }2<p`~EXT^XV+ *֢~J4OR\[- a, VaOo}tP5ڰs5p&/gW4߈zUZꯌ_&N]bLCa =w@zup@ZuqcEq!UQ+gUwu'/pǰq!OsRkr FNRX?  2Ŷ5UwugB ܍|ڴ_8t_1W}=@ "O5V\n oO[7L 2 b]7 63}&& &ZMLu&Gs=\7`" 3}d ~ohBXVBJdbGTw8?%OހDq)WI+;d*=g\ OcH\Wc߿/q뽒 h<^A~ɼ*o0Qo'DH:ݰ9:F(C^/5b"opwmܭ4wCNy:$(a? lZ?hTm.)c³BSY5V/Qy*?K: =kg\DKP wӰߏ ]Ǵj/0ځ+]>I$ K P$פ+w;h*505\~3z`N  ~@1Dȷ%L /Cka`,Ûs7c~<|Ojkzгҩu\@uVi}@F8U7FZ@CcFHqFcН;p`)x3Z;]Q$yLɒߐ lx{q1bʩsK`.a: GNF ؞d}PNG51i^q 5$ "X1'#A0N<+Eb"RR.S% Q,&/$ ZRe owYwUe"E J-(&p\AOWC0|+{I W+b!~WmSS*]8X{Bs様\Z^g\?y/O9߈] y6I2h"J:7퉻 }oܥ2PO!;^@`{]R-F/$E"lVPVkH6Z ,8j'p*v5${.t/"P#0z#FK.K;  %X} 0P;j1p)ZN]F[51g"9$Ndrz. j,I<,[FF8u4VnJ':bf+;  π683!=WJѓ& Nh]ԟe'yܾ(/֦^ބA: <=J|mHʴ/V\zUZQF_0-CIa!kނKA|2 #fx;"mWVC08%i$FVWTN() f9&7X50[TAiXѡa,tIho VZfVprlShxLb~cR3!J-3m|C| Mz5X JwE@o0? o 5Տä/ƫ9KXp):XmqT&ޱ:X  mCGb}M`OAWwRzXxmgIyYN2i[y[%S{^:nvEpp I:WBypڳ=F:*/Hc2tF]^>Z?@Q@py#_!>anl4R|b!U(rƟȸe 5 X!!35г{e3'`t||LxOOvEcȄ"zJKHtA DsL::^yY %k!W$X~ 2g*bHTڋJR%0%e.%P?ͩԧWso/р@%mZ3vĶ]I8+HEoX ں)Ʉ!`0su.3~!`u[N VL+z_$OF4韉[h;X^0p#\0 !k]0 wG@Jt*^a^|}fSm0?$2Nh3wWʟ6*d-LTj5ΜpKK& NAxBIGsV,^1}KD⃆trQA{>e4`4xkYɚ8}gyr*jB<PcT"#@}<n]ۭl RT+`0d2K*gY%u*yCEF rPno,:5i//_:zRnEK)L@oVjkjc.H*+R6 )Xr~{b)  :cd6+fzEbѓp2T|CIZ m݋h 0HSiU\zCOCF DJ3PܻX(ϢS}/ Xz:0 tH]+.θ&C?aîzF2*.X5R VX+Dccsk:wz3` :cU:g0 B$ɚ^R S㔩Vi$=_F,LI֔L{O~t'QFn}qp,΢yK H%^,5c;vIWAL Џ@Cm%B[u70<(`"\Н4C/$#^0U׃N{fŚTlCΌTu u |X8p~t+i/.ގ.'3`:_L#S 'cG.yj' Z \ DrՔDGP.Pʁkq0"vAkI Mm6E,TR:> QI"2}V|,9uH2р&w/6H"CθnnԳ ިtV:?~RW{-@[`+4 rN/I2t:*o܌'s`8{%mN%:i'%+DoL^bYV2DhKNs߭a9@~Qb4nX0}ZZ7bdݿ D`>vvI!RQD##D2D\WzBX|`;d2Nʼ4O.ӘLp~/-+Ȥ6J 9mܻ(ػx1>! C@a7ĉs.OBBuJgTW4x7x*3o_pp66ؼ*o+?qPӖ_"=?p%: EbtAS|( 0s.bú1?++):ސ%^:poB"pohoN!Ig6n6XȖćIHEUʒ+y(_ŗ`L"1)yĤ|2р@UiG⁖SX><zk0хR1q(|~􆢕4 +8z#\eՙ䭠m_̰+?=n_#/r! BtF!W!m.E<$_F- U%+P/ުxbL>N{?2_|ĥI o ~a{skO a<Ѫ|B'}W6cN|R˓F?w<֟POfɩnWջթ㯞rQX12.;U1xeYro{`.?_x{P[1I.DV|Vs291y!s  t ,Ln L~a@݈lFoxAl.U*ޒbsΏɟ?}@% ^;NXf ߁k{xgJS(ڇ7ZtNJ S^&.Ni"cXY9,+w*ۤ6fzf> *R[-X/l%"9OnYt'ʹ hCiSܑ񼅯M<l=CQ${Rw}\]ڦ~ygpW7^IHVROJz2~(%sT10жH0E[t2[99&9UF0%hʤWAN24@Ѷ )Sɯk5#wz'3*Ή{V( h40wy1O]?^S8/Uِ u/ w'P04(נMXK*- 5 \<ނW0C Sys{Ii^hJ&fI?e&'s70?r!ppF1q+<  lڨ@꣤Pɞ+Pf݁LZ&hHxFl1jkWoR \pBD04aB\렁!nl98 (<1N P8[Ԧ/[@-h< 1v%7fl\?:+{a0v13heI*N  &B$:??K&Vox߱\ߥZ≖\~v>]֣,%*T]]?qc?1iN?~܄`0FFY7yn"3[.+D|h1D邑/ *x|B2h " '/JӠL俫F+hA@2o9g->p̯L(x(05tdvygnxѰ?80i )z}sh%Vht ~`1񿿹fƘÐڢ ̳S.{[*%/p ,QkfB 8īQ.&5IѪUN`Jr?րb! >M!?GKd%3oj-) k _3qqDgID f`'#}g]y˱@e4J =y &-MCP9 #8ʲh4zʚs!tON)5pťǛcDCC?n`p{}bG94D+Ǐ[!Ǡ'\_$ΦR3Nk{1'OxK!W~VI[3 as̍l3Q{P =rLhhh`=i-x#ϟٸ5kgC6wlmXFlP@: `gPI"-7ţv0~F0OQ%5 79 ؞dݶJcqqE;1g,9RFsqpay.D, P r2mҖd Tdt@?~ŋ)SWX1D-!^)B_0ZX<mxԐLYY~qЧe4`4`4A5`Ȩh²YՀ8hC6ww{N+D6f~M_q /FbJ s#|#/ke4l8 DޠDV9lmC2`+[wt|;",航0Ϭj?Jvki[bѤR@Q_K$JPƴ:Ld9']q^U3V.^-h[y9If+ =7p 6ud6Nq;nB;ACO!*ǎ9440u/Nﰔn[ _ihhh-@a(Fx&Npی;u se5%D5kQz6VH[磱2V?YꨍDD^.g/J|"\>QKRC ݺ3J&_$w bFs5+p/րO+-bKި翴b¡nuX FBBNóBEǶB<njO6FsvF["X.~2 KM_E#iS@rݟ8e0juCde#v1KSߩӸںFO]$;V3/4ua?VX=2^,=1A| B,LX6W4- -į( Z 2a/7XL:u/IOcg8h#D3XPc6"p/ZJMl;vv`hZ4x)cVd6{$;wc>yq|`5j%STrlzMǻzLx:i9(/:Vȹ{{7~F3рO0-rUCduS vg ^;dd cgGB{0 Z+4?6^r }90ƢㄶB` ((2ḍރPj N/ù* >P9O+I:X~2/pm0nՎͭ`T#RKC@H1<\\69Sk98 w=u 73UZO4yKSV_onapx:o-;5po WnC(*Q>x+<ΊOL0ڮSi4`4`4`4j4ۛ-pЈvhJR-ɚh3~e *4w>ckd!  Pp˜/:919ru*"hW> x5¼g] 7 4>h^B~9s62NE `)P)O :fviK.Jsu5Vweb1)?ş,ƘGiuحB{<: ?IBH^:+J{# 8L29ݏ7[T¡kҤY =?a&Ѭ篆g ܉T`ȢS*ObW`B= `kD8tE8:Gy|bMdm& wPWdDDLzT*y C/taUafq1~*vE}&II5meOOz.һ\ 퉂 KG@?Nr+S^h.4oS? nbl";u,?GI  T<tOfbGLjAL8p0!WG ,$:LqӀ#\Qӆ&pzH[gdmbٙ@5p]f ~GM#6!톻v*K,,1m p+u)qy&h ,G!xZ`PmTpE D,Vs+怒ﰗg B"Yȧ0Os U;}1v<wdzpb$vvn?/~ս&K@HAT:L0Uḃ4`e6x<O o?as_)E&Ϲ6KcrMc8Ԟ'0n;!lQ7mi3L"wt< | p)R%g bҫ&_ @=%}]$I>ɽ:;< F|4!==2乬P_hʣ 8 9SiA6$yD-X׼bF@0 #Pf_.}>`2¹Ђ*NCسnrǏLK4gsh! s_0{fjwrL I|/x]В_sV|2g>"}zMxϘ'$P!dK$AǽߔmQ140k0$R?b&'cq<1/X"BsO#`^-@fK4tzōn̦%_ l2{Sw `=h"#LۀҭA!ǣ `W¯!q H@^Xj'W={\FFէ|-r;B_c(I9ŽQA@x d ̭@0@(.,6eaapڡ[')IBsC.ŋ8k/*RzEDg>A]_|lwE4Ob({m[FPvpI%ƨz#TÆ<%) qJ #-ͨ]'d24\筷5M\FFD+D?/1GYL6a2 }c/wFSP:Y,lw<~F$x)΢dJ:rB\zT?؆q!dԤ\4<gMѯ>GX 04W A?s  lyG"܂7{G'%)}%Bz̿ 40ui mcg]!M 6}H6;r?qZhtmm+5׎z\,R;Rq_|Q.K$$&T͖p 1ݭ'u#&Q{Ldh;Ԯ]6EAUu|sOXѩc`7/hINӡP5fF&3J~}rߧ>&{A1Wvˎ&r5x\0N.@/֟>Z? *Hc~ >v[g4h?!) ,lXJX@FjtC-Dc>5CSDk=h`b]-Lޢhxb-0O%B@6fn\Y: F^9V%,CB/Jhp+} 'a7"$ wR\y&`ػ{(Ec(X@Eh5ذD]#6]n(+{owޣ޽ϛ363)jk`i\—1XMsT2aiN1J51td0Fl a2'F0-_H:y28W!\0yt#ʺI [%9XLЋz>BϏ )GZC!a808SŘXp)`F{ &TG%mw=L(X[.@9 |Ꮐz`[ќlvRC 0J{7^ ECڡW*OIaE}!jV8/kBv6qʾsFiP&FZW@Ha2S228N8yA}Q%/f'A(oj&Sj9g~-Yxş?c j LGwDƸu0:☡ӑC4= $b=imsYL +`(HEٜ?mJ: ayR0x0;>G|2 dJ }E5k`yh`ڠ3i :WtQZ/Lȉob@5?#5ؐ?5?];ylAK%T2HG@Da[a#IK3Sy'.s\%SN19oPwn#(:*8+A@,2k @=HU@a/bry&&O$sID=P1E"l E)CD2E.Qgy-5q1tM>Q]|ʹ2Y4(;Bb ,w @G=ׅDx:'NFk#^E1`X ^ GF0ش,jN pf跋0XH&'y'pם|4>#G`-?ɿ8 sG IBsM3wG0yEА߼ZP_h@Yg1ye/05tXq`?l߫G. zZMՕNNJ4/p$ówɛ[ R!H˻`)/g΢g)\.K+t$M]4!EC!E9~}hԤ>1dVE wq8%v7(:s1&@0 |}onpl|!'I+"c%PC῅>vJh8Sς@  ĬsO VNO+S\Ӵ :b0uSE\E{ӥBwS.76eA"T6oͶj7Xm ބKoQf/X,K°`s94Elo'շ@}?FYoΒW\}šX+G7R)f?'^褵D2vf+!EY.0:#DB#}q(=[@#=!B+!3^4ƒ |!JXF@=BA/ö<4\* &%nU䏰C \vV\ C&dbHXҀ}20oE6ith"Nbq8ր_ p/0~g&?7%~\*#Bqne2(Esث8k`i(h;6jځiM 7l83sz3 vqrh@OH6h @djIJQ$gx$/P2nX`DCbXdz~8$Y@*+YYYѦJo;n ]2NL(>}B ׆?ArX&=<݌2` T+/ :3u2>ύq/,OO}\NSLk,v tdi@DKmv|`i9~Y+lYq!A*)L.N?ץK׿ r&;? 'ڐi@Z͋h;akc Jɺa&V.(TK550e6h--}0gԶ?3+ eL壏%e P9)Yv@K!T"!.Es)b#Zv=9`h]Q]:m R>FNoU7qo'&U $OLAQOiRqQrԢ2꫃N#n7_t#(vo$@NT/;aEj 7C?4zGYc~  d8H1: C8'Ϲڲ#@X/x:gfpEgc~sFx+]( !X8z\\5?BG8&~*S^Z0\qU &φ;#G$Z ^:Ŷt|t\qbt%{p̏!|!tځ AL0Fv <>m8oihdDžQ(|o]AaoKyMM]z7?]j,C 2^hzQe.n,cҘDv l. &cjuO]( ƐXF?mdk[If;"ȣ@{ʢ aT0e" BE[Vje >vN͜ @IDAT3GXzLr50$mXwRZJ̋;_;MN!L!0A0e" BVjޒPwv/"Y;s*n `b(?9R9 9m8pT!xlԌϚ4n hN&>5? OC cO`Wʖ qw@P5OKFa)چ֨5g~R$ bӀUcL#hޜsh^B_LEmx:}']󭀬``4/):xl)Shr'c;*#|vJ|G1^Cdz&Ǥ;wDjk i` {voXx/ {cҿ# t5~ ÿHÏZ`?[t\)-")KgR.EAܼ)#7y۟ʆqy|`DY|4E)b)AZ`JiLnRǔ\ cRLaWl$OL>z$NwM|AmP%䵁#hp fJ-&[b4gG &50)} |wFe@rܛXDɵMgS H@b x4oUC.khGivɠm/Bm2VJ B8; uj+`4IM/mmԴo1o qj 4ބ16EUZә~kЙ(Gik25}i*ޓ'\-3J.X[.[Z~jݞHU54>8cˑeM#>OOJ`wP6rptQ*]L+d rN Y>?c]b0/u(CtZD V/c 6/+"waX~39Ǣ%\| _–tzښL&Y.USlAǥum;4^(da8T`LOQKńՐyHq>ɩd%N9TP 5k`h`7Q[[E;r 'w ;"88xDYD&xJDXt7DTaaha`N75LIpĢS<,47SE,-D|̜"F1LD*b .ߵmQՇ|w biV' >pD=ki@0h' Nk}' 1Pm7]Pb(SE?w!]/cP'@W6?a6<}S-lէ#k/&< 벴G谇-T06,cu.IZaJNQ._屢KLB3얒s&?̒'`6&4oNCWRJ1.JC߼&r.+l? 0&#CRY.#-e5%hdepħH-_t|G^-C(x\&<bL≏/+)EP$s`jaJ 2kᾀ#au^Ӧ=v9o5{MvNPN YE5j1z5`{ 0<]F}'ޤ4/;Ÿ/k7{ 2)3@+ } :&6H$77筺gjjMz o ٶֽXd" E-"k#E? sa~r+@n>L&]bfԁ2,7}Y5I~Fk*XоԱb ( <5ͻbRr0.=XՍu.OzQVp+ t|,({~ĝ :at -D{Jԕ1/'I+Řͨ.YٜeJ._!EM#D!qx%i;N@Rp%= ҆ _"ts:C.Y,3omnL?? #@EլLonM_چ/ЯH ;q$S[x[8 ͯ* 6Dni}է^F˔;?6E#!DrM##Xr 3sіd^ ݷ~N0sGB o%KzEP&˜* 7x|O*'}x |0IŵKqZZ0sx2[YPRBj⃼ a0U!g&,&̫u<JP &<}7C`GtL0$=i"=d<_Grc:/;c|0)c Se8GdzTT2'(|A. g&=ꃥ)s5> /E;O6VǕu<4 ;ހcA:چ?!&G4X7Y:teOi>lp4cYiw9G2hrIZ G0zڐr:;4aXYcӆ6,뿄rWcˆlB<0ױ/?cGxQ+l5G0O~;01j5*j!k 9zJ·`w7k繆9쟘%Y{s7Z(슮}X0ҧ\MCC&Y$9ai0\,eII"!”#P(:<2?JhކV[1hC Cm؊qVM2r4j !zBA0)I $d [jC .' .c6aE4n'O\(%2Eg( yKux/:gG'Ն(8۹ Q<ᧀk Cvv8\0*7ngzzbgiA2 GGƏYʴsk;F*ׇ3a3mW '= Owa `M:  <]h}:%h:G/.Z6tG+ =Aw.8987/2<YoUtk|yQ _)?,beXin!0( FO@ދTu}6&/ozqnljz]򅝕BP|WU5*H]F> +BcE,e${,>KzX&m4ALǞK[Ř-,H0_ " tjn*}<3[vk2 ݰ_y2tj:6ctI%&Q&4A Hܒ\l@SHQsA:*5R'FU>Y;\hZ004z/Nыo50?aLzE5IpqMv#U,'#U 1j\Ήoohݲ-h:z;X+OC>-Ry֜ۥ%D4bXrmۿze^w \fAqpyh#GFm0썟M҆-TD9R ZRŀ.BL+|WtǮ50أ̒|`SdM_ZaOEYh(8-OTP <5]1 cJ^x0f39Jr%RЍ!GLiK9 q"B-rᏐqsؒ'I-F("\Ws=&ķ*]mojviz|sa0##`8X#]4zm].F? nQ[1( Y0?9]ԛN[N(mS$Vwi8hDz7P0Z ɖ"9Yv$xc|ۉc~ʈcSpqٺn0؂r% `]<α}腋ѺF +^DƴhVb 8. OӍ=i1>>ϫ.3'yyV?$= j˴d ^~?a,U4.`Q[رfcefT\&,I2&X"9̴4y8Šdc{Bi9Eo*HO# ۂ` ,¨S*7irj˃Π kofPH4ꋅaƀ-a C<>@GnnMTGy;3 `X㜯teJ7H TCp?s>2z2zŮF/jؒd!0(CcyKp)8jq aOzMKgLaeN瑹bLt[0đNK4cCI݄u1,ڙ*ԑ۪Քdi|@ke7524-8񼛢#dp2؎79O\ P {tkGNQ~iCGu ^N1mДcɄ 3_܈/9ڃ#[ZFH'$  [ZǤEY-QNQ^Ǫ7?/oC*v%4A`}Q_}|?!"h(q c0YS6DFßo~] /y)e0L(V<x7*v[ZJtRDQ%zВFzd8]^w5T55ŋc-; QYϡt3Dw[0I]g2вh੓ίk,6gǪ?mJĪv,y~d BrC(觱M? g k z[#!oqߘJĕO0X%Rˍ]F~:CƀK`sl$H4¿LD~X(#$qBXeA+a9u `+6wҪx]M+ @#d_*B< <bY}s3[N_ct=0`' qj~w_,y2jQ~̢62 hp[8>uCcӕG7fHVUՏ?Q(|1 P Y^*=儾kjҀF@CM[^F`ETlp2T AY.DV K#E'SSG?d_nFiH}u!+?@h"M|w/H@3[ ۴ 0 ;n|ky5 7x$ېeMyA3Tf0wkz?xUMR\X+^_3H_ Cp\TC^\G!0t]ƴui|Gۋ]]-'h:a y Bg#wDbݕ7Z%l|j92$20QjA [>$.{$9K#Ɠ~:{IjJɺ1 E1`O.;mtjL=60 Rd T6C >O 4 g.J+'=tmeYJ'|6\U^<YPu >nY^@-oQDHۼgh$yfV[q@2p=z57}Z :Z(U\XOU ;-t9\ PYnqB.C> xoo>$m]x mmMX/itcox;5D4;Qs0@*D4u1?ׇm_KyYɶ)6 TWiq0wjH0ia jmFнɜTC y4gو},GdrDY@*ɉ/4CLUA 12'#vУ9v⫯X!ATns 8]:DB֭ h 8gJLIU'\[߲MVٺ `h&>F I>Imh@ꄪstwḺ5k`iӭpd TwOt tN(: #Ng2S9q R/=w5lӆ> bȩ'%* FQNj?AF8-MF-74ퟌ?3UB{kYX%nZ>T. 3Ckq2Qg% T1 <"# y0oʒdV-HRx1@bh3l/ P G++5| EQa| CQ{Rkcu2([S`.)Y^ܢ(cɬ5po.\Q1SdO/ ,%O0fvM=8Q¡ɹc|9X!HtN*-JfKJn=nu5jZXOhLo _h+"!^gh@Gj> Wt&`D"biBX;-.<>x/liJ³ts^E0N6- E2$q~z⠕Ş:7Mjvj.aX+YséhZ( vcDgúnB.:4M;B5 n\Ɛ 305^aIH 8q'*6e PI@ڃ.҆D[ ?ICEMJd~>]{ڒݴB[rrbό֨d XO1&Syǽ2%&:Uㄝ_|xlrzp[cxs3hgjXD)9Fs⽡r%y ?#M@ͽ4W w>Zd>`8gȟ@Nwc7Մ>#_1s)N O;3h|Uj cb~.}#-TE*6uяJE.f'SFE nK@W]vaSG@Ab To(}2;Jv,kFgʰW x!҇]t1z1kKvRs'knԉ PoU: ՆS#N Jye <ij(NEYm&YEy;\%lpUJ84pqJ=TW]SDWܚPÝ(F^t#hn mt(Dv/)1-Ch]P0om(pf*ߕ*㖪c']Wu/nyW\F|2Fv+D4^T4>/g^t:}<5 X_nU#f>3z&H;x `P Laz#%J=99GEZd!Q..`+Xs0I'B@/t{ s3b>zVN~=1}pV&Ԫk ~$l"Okc~=XA_;\Sk XUe;aP #>d -S.C0my*wWX-.>lXU#VP,)׾#jn.g($:S܊g`?cD%T\]UN1H]5tэƜ,m2#5%Q2 گSc9!PYixɣnSEx.Iz ڤ ;d({\x]ɂu#.ݍ@+U` ["zEZm 0gs%"(Š3R ƊR\va-LaQL[J]csr솆OEQ,wEknK]E(OFeH+ӳ-v; ~ikE A|tNߏRy` 82 NTcΐ'cǸf^'Ei D\vo oYL5N 9tFcҹŊB~h $ö36yQQ'cם䬎I.i]] ]]^%(JKrB1e`8t6ZMͪ~}+{jW.cXFS?>a {`-I(>ݢⳕtq'^pe^C; E䣎E0s7&PZwwMqyg}ɄoVͪ?vV;gf6qJ2tvpHB}nΙ{;a[J炳u+]RCd@AD3\#(&M۹:sC EpPΎogcgQԙ/n+69&~U5evXd版'ąP2v%Z%}M*c=Ǚ5 4`n75%ø$U>lW&eRb-#4`Z*2lT& -X?K)X7?g*J:f՗ɮDz2A .;Fs^k^{Y qOf\7on*BN/iU$ d(|pyԈ/uXGԺQ2Mmvki9ⱭI0kwc7 8i+nLTsIw  t(|=05t낡BePVlcx׌> O.*J>2*;~R -bnrO1 Ϋ(u NPx$6:FEwhg2J&tkϠ =LE{ד^ylbΪyUҿgUFyq"tu %w%\#V,ߍ=D64N|Qv|ٶӆ~8V 40 %|ĔA#O}UZP|2 {?osM|_UF>typC5_w0vUѬ*a %[ᆀh%,桝]0T, Al3h ,vO2Ά&<=z._`hL!>e&oHS}'  [C%(SP2Ð^yWA 7'M8X~@G. U5G,T}>6}2pLpW!ݯm ?_asuwX+Usp>O,H5@҇T Y2wQ0I9b ]N|*G_(S?&I##FhKeޒBsۓ!DvgLbRY8+55ᇫNoX2v;E?cl2Kh$Շruu_o𔐗\ώ-~d ]?j83Zd "w"Ee )K)򂼬k֌`c︂&25k`5p{ &.XE1=Sdtevv'7!V l^-2O[w,KP!JI X].[HE]x.l'[--4byme0GJp-Kt:=,6X |9HeN~ۧk0?S :?H?p͹Qyާ,e Ғɇ;ll\-'V+ -Uk!6|/(g;`_œڎڥZx#׽3/_ 8~d>Ûp4wb~+ a9ΞzP%#ac78Yn{1]o=wmĝ6:s?ҭztn0u VYO}ڕP͎&? "|E^q>]E5tcBmcWVO*FkJ cE!*1)~҄md{oDO4чN`U9Y0|~ㆦ.pifݔ[`u8/\sJ fڮc.2wlC4 #P~i'U֕)^>rW4hZ /%o?($HFH+-Kg LoS?}f㪪h&De1(j_h 򪌽Di, .m:g;1˱pPb9XfKiIZ}vi}}۱&X3 M$#^+Gtxkw.rp]xun/n.V`,%u#,)%cmr(oDVE{|hW`X+[_yT*Y(eaײ:>yb;nX.!sT@IDATJpߣFiL}j>eXN>h@LƠTV% :FJՊ%&BHΏ-J (V,J81$~54p1moٶQ8,16Z4I RHOh`o9Ohwϩ0Vl>2 b^  3ףqgi;4qw R yƬzG^tGh&7>zgy@9g A%ZE<G*\i-iE5/vz*Кmf>&5(:>\h3Dw)pph'umm;ra꿞 @@z"HGrZB:>C!VoRk?Aڇ<7s aX^^;H QZ ՐML?g( k[ |fwT'>@=>$~5uӟ/iƘXVv ȵi a1G2p| C6Y "vݜ~~@^R< Γt`'m5[%pA"GvTvN ҝ {f ,c Ԟ?[CsL6{.@VJo0i?I!Nٶs0b{'gknc^k/]Y[0&@&~s}OK7X}4r1Ӧ7]ߢ()9Yo bch9Ӌ(mϨU,3otXnS9 YiAFqCG]:<~O Ux /;[5l{LdVb#DЧoY.!;0G,ⳎEZ)L'>b[mJ%Ir:;N\]t?[)U'k`ic~t_dT!S)s20q]4:6Z_ ҅h^pFmc}xS VwǓ:_MG9,m‘E]+l 89+O숥6[LGw(0v|ֵG'OlVy |~QK*]g9xra:/~wj>C+=3bt ~: Ǫїpxf@XA`;@:Vg0qi2~^Gg$ck @ h cX4x2}arA_xJߨI ȸ61DυbD  CvG! %Wx仗P'Hju,PV4B W1l]+'">숭sSblSQa+N_>j5' ao&bҫF t3K<ئ4&i5P>/r߫˲rE,K>-4&}%Fń|")kz-=^q^t$wCm`|>qh|#J"|E/AZcanh+>.JCtD i$(7@^/:4[DWOgKz{TRD6_ο|tUQ% %=yE1/h"\#>wjJDbpgG 0iU bVg\Dwhn$4zYlZ V?h4n:?OzYw>;w>`n K U7|$j0J^ nQfƜ nI uS{ ۋ]X@C[uӴ~j,7ǷB 4Flxc㚙ws7 iv5dZ<:m+)k #5ב~φǤ۫b[}|Zai4qxlv.J당'Wk.Wu$h$TБty5vD;IOU|EuI8НJIo|qgVD v艊y),K CV[V{U@ CMC"޸<JQ^^Z'l݋ۻ[sai]?e w\gI,0+V*҄yͼ)\xऄH[{,h2ݛtf9ԒHշHL2o, 0zbW. ,}ITwSRR/&j<6_UL`_1[uE*`"EuIQd6Q@%sPP1g3ӝb *(*T $ͻ3랚ٝݝٝtuիWUzFpUC#DF9Ֆi ={5߂?{Kࠦ1m7ykhct1XIOi )" ({9{PHPzoB?gd1v981_NWAd7_~|<ꙨPaǠvgxtaWF1 $_KG'Pǃ@i,τthV Dx(wBf\ϕ|*_!$L@ 0s=(򐀪ۙC^C2)ή2V]((:yIxb>x1fU/m:y >-Ê|&\|)o2V$M؜\fOO^\@Ja]0/><͌-n=$] bi*k)%EPIzGMp ]AX"qBggPdK/x3G=2ȩrSꠘ sjeVhV jտ PW!fq kIN!G/%P|oהdb ` s*q9?n zY-S6s[v~'@ ̱A@}L ԑ]K",]zPU\ u/hɥus8sDS@6gCgh霪PGA4e!Z,%V2B %p$2[N>r~dez\DKX/$^FCWbʪoGщ'%ΛH $;kWE!Uv2$WdM1VɑO`cþw,d^7VM8I=t7foI7)/x\E)I!aOhVp9çkӾцE:gkW ^JWܿhE}&%D(4-JZ3 zt.#ll$FD"߶|=q~~$.,wNI[(̀ ȺV# A4:ZN9=$Ir) :;gݽzUx~K߂/)cgԼ7ٽ`otfHTN [,!Yҩ~G1qi"857#bMqL&g5(|/4V?]Ɉz]?_ 81bͬmbD?>6o PORiX/DaJm ]dVX?)=^Fu4e(hQN/ĿxqX; 㦖 CJ8en?Or_srߺO4ɱ3"rLS J0O3Nye-rI1v¬Z_ĖנXLa+ %}}'h{#tZeX *މt޷ ZH e:X'iYVs wwʟ$+Yk=x4 %Y ڎ'?f3N,&1YIӚL| "t0VZMXj3ba^$f_vA[*ᬇW r;oH0?=l>f}KUbGщ'%΋3~$谫_/"Ec!,Gdr|m\kc dî(7Dg ƕtyQQ| {'+ !@[{bg%_&n1۾ Bp_x̼Z+<%ȶx!UFx JWs'pi<;pfDGz{%)]@?CU _ ˭Oݾ'Af ^|Y_'&tq3 E<q US1}Q|yKi+T@ŝ~14à{IeO{ %`"T'/fo<9L<0K~ xwFkGOwyTTBA* b-Xzt՝Hc"Б:#an9GyvNs]!=1(T|{txzia4).,&]J0lci{*퐓oA#t*LL ̎+ki/^p|6Cn47F{-_;M/sžu\`|h?-ZosKFSTHWsW7KQB2}-G` /-7\ZH5轇b 5MXSY s)[{c@"p S q QS.R1x&o<]+#M {4HEw2,ߓ"z lč *MAEdx  xb 8@˦}Ҁ\8Gľ e=|&8~ZɇwCa1&v%pbjggmfOI.LM7a9?IQE-+?д7)$hH 4J*\ۥ~h hWJ,8cN~G޴`8h־y np-}=EPsE7~ߧ1sEIA])pZ#*c|h &UR9G&2l`蹃=G?\.lcP-kpz>C-l<[#n2 vYYZKkP)3ƞl^d@ @_z] :ͻI9,(~T:-(:sh!^H-,`+q/پ#h9b(ILkeA>!g/T`ا*SƩK\|x_R+Y=XwY"wnmREYJO5~2m0Mt /T(H4/-\`"ŀc.,ihr\&1rxGa;P`uPxzh=q;]WKxȷ,PEofG6,׊!rиW̩sO s>\)a+YA @/KZ9Ǽޱ(HJ%УP~%m{8q').ȳ tȇsb]ִ` ݹ37h [KU1un 0k\qlh1+e5ޛ35A= 8{9焜+Q@C/F uo/5>X>4XCy!3רbk9)ŲD\L oTջKdbAzR[D<$-)km0x_u8t~/>2!ysȉ%ێw{Ue#Rb妕|X!1@3:{=K."+BeҶ*S4%ۧm*MH)N~ͻ ${ `TG{iQz;hKXK7zQ;;]S8N,N~=/zhѷ̡iT9 akɉg|zz8a#nܡ?|Z^)'~n|9ӂX~3MX/Ŝg)՗9ooQGhrzXm篇 ~:=j {H? (хE5|]ˡh/"Ĩf&749Z4D/w5D>V'MIkB:/|骎`P)_i/o.o{]}Ԕnr|x-~7B \ PA}<dr|gH>2l}TS%\`:.*VPФL ZQiK=k"3v߃P>_ 3aO헺 `qN~ Y [4ck"Xĵ@}P\y(N\Ch4qOgߢXI%3{iO >Cn2r~[cqw P:Q田1=RÅXlX,VP0 3\/8ΛWoRk[_1QH~0`;eStXנr04_G"_|a*maӇ_ϼ%RȈ$=1y,*5)ZO`WRYT`u] J}0tic a{d{b>/[(tzrip3nyMQ4':Mh=AF+* %+-8/ Z+(sR%#E@ :C e6/X}r1_6%Gu3'k ڷNV :OB;a#Z6`Ch:ďŰ+It>M m߅‘yP?du11qqQ״8+&Gsa[\p?ʻn?4x9N MW>JJ2+$*Wp"烏·guU|Dz)LwBPii=%lFe^:Y1h܃.]Q S13b\҉ ]eN(b3_]b ʃ΄Ԉa+qޠޑZ5Bf-Фvz{ؚ2 =J5A 7> "ӷ]tyvs@}{+ǓA5vl}GXm :D&Rd[_?&?(͹$n[?,*ilc]C}YqFO(HpNi׆8ʢ7iki}"}gù9_)B&וIQ8q ` 7QV^50 /i^^xC]\<qԮ˅DՍ\]?9aYK؈.GmTӢ_6ķBwjˑoHH݋ e R "O9%UZ]>SnC38/i? tiQe:U[iCEŏT~S ~@P^l(gi@ '&d崐 _b~p-\3NXw?Kb~X)REƆ?cP fmj@[TW)r(8Jg@+{O*! Te+XrW&F=j-db p%X3hC>%Xͺc> o;fz*|ܻ/|dg|/k;%Jl,mC P8ڭA|K@5r%ᠷAAz[%|*hѵ+@(A|p ˱W@Ҙ .p S(?_`';6QG%u^ws. S+g&Z-\T lӎ =~t9K9z$p- !_(?r@U;X^1Y(8R*l-쉇fx9BI0;#W06wiYï)—=x'0,)">)d:5*wH?/(Yn8dD~Qr4r೿]*_aۭ:rR9ZdYpkϥZ,Ń"Y- -U? >a|(+5-*igJ i 0[ @Dh{4X 2g9quMu 'x`8(?&bT$%@^lpթJ&gXh&Ƣ6!\AS͑߅9x8ҶR,EXKXw[@5 2 @_5x\ xkyk):GK'òrژ8i7YfLo"La?6$*ހ`?`"ۛG::S/^Å^4('l(Yy:{stzfYr f@[Si_ A4c&A>\E@"=:Tڞmx9} Kλ? @˨YZ;q`Hs@`@}=9zmz,Q_'~ɉhnp(/TEs0_[zu21K߂3v9+%Ph?`mho߽m -!W%Rc"MQ h?qܑ001-ϙ{9سc} -KDfXdUq|$e{{9^PXRތCc kN}ֶ #KE ne4XC&zOXtงt dKֽ|Wš*U O\-UGCKco|Ȟ!:RSgS*|nsU& p >d&mJFD>_|~5`%x=?s(/kY[:&d7ȁ,M} bl%Qy΅bT6XR,iAϬciOD,4)k"hfu:ED)X ϯC |iS{a8Z>52sOȱWF-ɹg/e(LxR PZYbOAݓYL" gH @E@_`ڋz ^{jNA2pqg-RX2Ѡ/`lgI)뎶%@gqQzfX'! ˠv8. dqC1d,.^e0uî{hţW9‘y(*\`Pn"жrŸ^thoPP7^Z"m֗oW>yn^6G .5 ((H# )%tgX`S&!YԽ쎅 _Ur &.b`f|sͼRKh@fVd>iI|*E&^1I~j1Q<TҵGϯ;  ]^LJP?ԯ#wk'lbYT)Uݴ/ENS &t&"@` o@}A4J8xXg}C@e $B >4kb{NYY˰qY44e<,g/ҧ+"G=~)]l:a#Pd>(JV'Tgp%  MA?++)}y@(PWPt4$j3n,H8 t}+y1P,Y#DjQ@;A0.4Љ2SPN`Z-|,f(Cx,'5^fvYLH3ut 42erl/čߛ'3.F,n8 =@󚱳61i3YeLQ-88a݁> jݦxOZ*t: _1iyX^Xjrѳ&%pKT=N2ĭVCrt;N⏛8dMqQм?!(ށ b{ `2/Q-$ {`𒣼@ŰX;о sNTv(Iu Kӳp2}~: hޞ7,!Dȋmp\MUCq8h8ȫsj@0} Go[8$׀E< -AdMCM037 ]ڋPA-@$"=z絫n`b"Zc ׯ67$G%i,Cīpj&/,9n7%}ð8fMZ'$!͸gzSZZ[Wp5}玙Bhy ]_K2q|7}OPzgEH`?ۉSP+U5Ay'4wrlf:R0eDx) "`0DFaձ;ָ\3 fO'A!RqoeEx5i#n(PwDDn`Җt% xZ† l ?;w_yC#펙Je5|_bs. k {͚]ox`sVCatjckOl9-Pйߣ7 \'m)&AAc@t&vr&-H @;-$Z" ZjdHoh=(w(7Yx;fHD1%9=[\yr_/(2֢[5~͗LbGڏ@n\9"FJY]3)M$0!Y)2 dΟ+bbnj)T AԘsA@߀H[٢Pp҃ D=R X\R_%EH $_Īج̫!-7鞜)ø7z8EE"?pW4kvFIun1gXo MY]M. zb(a=bpڠqo@7ێEC!By~^ &D, {[2  w bQ5-D`Ne-k=-$ұEfv_5ݴs{ikM{v}f (2<}L~1Np8'`v/-2KK= vTHTf6<%^{QMp{=F _pv|,0Ky!JV5YIU<hʄ^Z㷝덜6eWLT!E "kmx{u2[WMI}Ee3h4C(pk%.HTa3T<8_t73)YK%1VгP伒8lVn1v-wDqU(9+Z}6DFmиgOQkS1@& q1ČQq=J;u@bU`O }@'XWcRX(j 2:4 ueG ? o I @ .*<xk[.`M[Vr\¿,@ ,QljSJJ4y}XS6xmBR$4~‹k+К X#r?HQ?? h "8eN\+:R 'cz ;ͮw2i# qj],Ig7u_Ilj*xЖ&8MB%Rv uPV'Я RdC"]7т>G3w5tEMq1p ]2F1s7X~aѿL _V}Q­ޝPoQ^pX,a]0LdZˁh푊 Y >Ki 4freBa|`(Й5JΆhȶ ZIeAN[儥u|xQ%/ JCXSzbѐ&G"H-o5o*}An#B狊dMHib(ƉF.4QVp\˹[K׽ru @&!/i~d*(ʸr|f˷bP|%n#mα@@V`TA).mEO͂`9;o f`P±4EE2wXDZZ1/HƗ!npx` ;]8\Wa(3 J5K~4Xݍ87)VTdyUU]28[6mR9cA4Q,-x4 =DPGHG p]b(p>V\/PV t]@)5]<[ҕOM5XUl 85-l-e`&^}S.z! 7p5_cV/b7U1dp6$ Zs@QeA1|*rsjfy"^7;WZ>0_79yO+D BXJ]G;ij_9\B|甍.Z_5b_椚zbo4[bOF` /C *Yz4O+IWi6&X,N'O e4w?}‹䥃`C/TDhֱEoĹ< "kmڣXmm t"DzOٽ@AtpZw,:L-0nQ-%8i75L%(5]׫(M~SMЀˏ u8}mY2NK;,_ȉ>W8e9Ov)v=axQ5srZQʸ؆2NZ_d.0~sRVsϏZy8mSD!@EJisfx' xko8`j  "%t(rzQvWR_.#7V6dU?Ll8}ꕎza ZYWT\sպBgiY 3gP 5*Jix\hw5Jq-@`AYceˇ`‚Y0vR TP >1Z ?"W E }kd@/R%L{OzZ|*'{W4nFaf1`0nA\ka"'Ki-(*΃w늋mɴ*U"_)Ң?XSᅪ(؏s?Mfrq|S#'q>QN3 k6ț.bq4͕9yU װְ_Ӫ6}J ~ҦVNzAEgErR@?ŸfJm9Ҥ+twb4 S>K$2^&K8' ;mp1vˉ=v=VKKz+%89ESZE,W+P< /]q']?O|X#' [ -\׊4 E ÷L˵ݵ}ߖzia @#넗a<49ogϭ\ry:X4 `n \ C⍥I8X+\6I; t<>zu V[G[@sAڅ7Lz͛U𢗸%X'bunm E*jNڧ"(Si--h/1 hdL*.2.{l6"eKD M;HD^jV[ʒ)y"G +YD/=]@}lo9 ژN@'Et6>Li@QQ/UÍPYuaC.s }gT ,aӣC&pJg1IdlVVdܴCyRZYj3@錄&CGMc(d_[TݎQmJ(w#!E>:W—c-ZWKŤ$"\=hS {?V}qIhq;N? /N;*n%dH03Ssl,5r`IJ4flOZ͟= }xի 6/\kx $ l7.} l% I(V/ANrRZBCpGo ZTy du~㟩1"r3h7WB퉧smr$ Z/6j)SVK@O,c;h{C^O[ \TE.z:eɲ4M 008 -hndW niry[sğHediJ{h'4) !PXԐ3NTTIS k+8GҭX*ykvg N1sNMtc>)|Vk+Юk?JZjsaPKQh,*ǩ/spJMuf=lo~7oiow+-RBLw~oӆԂ+ P@ P*Zw X@YX=G-06B &,@rPV(A^g(d2Q[ K]BQ8V pk@8Bc N5l cmr(|ڋ2ԅ2aKT+%# q0rGP/'g? KQ"wbBC%d&UdINQVPDa,X냞ܴv!wk]4h3>[!,2NR/ɟ4u@SWp~;\wr͟~Ԣ5 gkDZ?KZ,mKaF=Lqp1dPz|Z" hf rJJe 2V={din7m P@ @ Ut=(I @>clrN+s; T %$(rr^D(fRJk%4sMt4W r8;8QErт'Ncj8sd'Uȃ>-eg)2MDI2:s:tJ?4 eX>'*,r jĵzUV'c_Ayf,4l G(#nSovX*v/j,A7[,9}sWLMnEwgʵ;Vv(?9}Z*( @ @9?􍵜0Lkh %@3LkrQ4o1KJ3܃aPlOSw4_<MKG\+nH,{]%~AOHqJܞ6?QdZ8jc~x=KyAA\<7y&nm 5,A.OǔmG@fB"TdKJ녳e/gz[zK$E hm)x Q.̾- 85as+ l!+]ntO5Ozc;(M(=^(:4We%,m /aN+j2U}=mK˟u( pG %}itf{XRsXL 8DJDh wTҭB!˜eG*ҁ_hΕsfh. 꺫w oNk f-q? ^ ֖.*&81ś w[9NW͜u8`mX#+fz!]L.OQf5qR,Vd3K=N~UtR0eX1Q+v[6gCR7uZXz97Wvb< zt7^sX,]gsҥu{߯XRyrGX1~3^\#DƬCgweE+==)FgNZޅ'v諮uyF.- (0( 7@ ЈN xq#Uf3z:Gvĉ]F`5kP:] MYLuj+N)3jH*>ORE6m雡GR&̟H:7k>}9gԫCyY;서r[KY`b)p)-MQ60 hȟ(l /u\ޮ=&uyӤx9O!OzK@7b+x:F?j#%Xإj;gʻ4,{Ku v13'9 +!q%)`̡&1ڹ3&"D%@>mC t#]zzd0 ;WNWxZG`/_]vf\r,CU'[꓄$F׮ԟIvM?k@.Cȯ0Z6 .܉ n!IRY" A4GRr3{" @cr@9uЋ3KܴgUwKo@veM![Po|r# V[V%4&mb/d%oKޏoȿl `RKӴg+Z.ߦx|AvȖ^l݄EGq"n%t0$(wC469vg!UHɼC]0ߺ`=/U9o׈=nC7^?MҌ8&TIQ+N]y口}u* ! t$`@ԗ|=3)fZ,2+@? XBJr:&ߦ̖nܝ8g=l9rgȢ փ~+-b x?qK+sRo5XtB\/-"șQt 6`ǖ]$)FV?mm+c;{&Pvns-5JZ`bY(xY(Ƕ+ +Y@JA|f/-}/gm59_ݻ,0, dI؝W$=`VpۓOzW b|R,wjj&ZAVM|'K48K%)*+U>~lj)l w CH xJF+s IL S'^׀?z0\0` ><<fH>Aǂ^̍'2W*߂,q ާʟHR2j-2C!c3z@ yYRF:HR|U,-3h*K֪R[zPԃhAx:Г Z$a-ਕ=Z1!lJLɝ Υ 2a?b4h4Mq=?w[ŢImEkޯV=좪Iׄ#7oMj]hݫu|xl DXZ31"a&nnfGT&F_vP5a3/WtBs.5X@4J 3:ld)گ@||"K8Ky#d-&Z+D(9Ѡ@߂$Pzqr;A2{杜#ǢPO/@A.݀PzI ;ER:O/k>o-)4(wLNրeʑ$)\PPf1 $h˴'OГX/b಄Kv&W78%}%Uoi8M|o)'﹵W#/=^s |U|8d3 UrFhxv/ժ(:}V}>fɱ]@@EJcLq賂FL1b)?A8ܰ/a90ɚ\*3R`֗(܊tOQW33w)H xJm18R}S;o쒰flKSdž"Ek@qNU츥50Ǻ46!G]<0ic@} "Pzˀ5xLSP[%=eJIÿ5е3AA_c_Jn\u E?E1$WduoSeȆٷ5,q @@`Os⒍]28>xL!p˸q (Ֆiʼj*ksC_>vQGvk*R@"%ˠAk1$-ccXT)Ƶ%@{m%9yX zA" 7#Z@5pkQ6:CLYg{{ߥHnP?[hސϦrؒf ֒,E^Cn]sʪ5|*>x Vl K (]žWP9"*F]ա)dX@@"%JOb]v"!FhAKgGE|p4-pux{U I/>#qSmA9t:*G5a1z@⇅265VO'wYe֣߁ad5!ߩqcx1. "ӆ^Vvǩ_礋;ܭTV%3 a|'UI\V23erNVUm ijAw&ƒvg@qLٸVf-r:Z^sFֿ@_]:D6 aJa$Z}yM|R,fڞDC?UE'w((&mOhC aW"OZr,g>rͨc\F_h ҿb7da7Ceh P.漃U0|TdlIaT?^Ǜ;NE+_lf_AXaor3^4GkA8LtI&fD/5n.pV/G| |j]wuw%uGE1i,<{D}k [(k3 ˀpL  T *uo"\̊cR^,8yZ[.4`iPmhD:w,s(M;w3.Net'@3Pإn&RsFEV#wȂ>>BʣvvsZO|F.0Mm_gkI/uM4 5mԿ\)*oyNtWc*Ţkj@d(N\kD뇽UجnjSQ>qPb:L5 Rȫ@GGхE7]@ $JwZd-zʀpU)A @ @[AaʋRt,t)qJ_"o-7ܿvREe/DzK`w3}W0eԨNMro * @۱|ce!&v6wL[JtznDC09LzF1tӆ]㠊CcNP(w>nлV^{ZN*+[I\ZWVʯB:7iiNWD֐t HD/@\.=V)BhAgh$h]Jgw}ܩofޛy3fx-[ϹH,>Xqk,[ˈѠ[]l?7tMkZ?MWݚ:Bu&vnz``l+/lYe'6e=UG~\@B7@J vHc #7+x'@FeI|`( iQBr:h҆os'dm^2xz7/FJn*d()ceRIS=LU%LT:|Hޏ^v3K5gIvi]QlxeD坔r+J,hn~&2?D'"z^;+vkkBRdIye .+QsMF׹4 LZ,fD6He$Рl[iP'u[7):d9O_k):*L\hvu>R0%] '|2n "Tk (w!?󷲣׵nݵ-ݑ3˛(Fb;`鈅?];u@t͔!ѥ^rR8p̲@sK οvORp+%y9 F{1tUh='@J$98$3l49<1!KM E<4I.CW0,xx ^g2HȔ|٥JKo>ȴ{N5a }0NF˂&y5ywG Ѯb@|` $ڍ  YHDOyCz|C>E^`$̕0%7d[Ŷ 4A$p1֠J3Y:j7#e?6w՗PF_yvi2%2l<i DeG2 X0l 178fgO}~ŗ?Ht t㥋 rOKp+$hQFx+HD6~OGCYeG)K@$I] szM %`}w`h8irH<$]98@xf$<jJEgEJ ȳ2GZC(-#sTvi-8o,G qZFZ IhxLyԯGYS.93H?,! +?M0۞&l{dUG_ g3D^h]>xUkχ!RK+8D$E uݹ^t X.9!w]/H@A"6~a@. G(q$>d̹)}tXMb^vzSS{^gP 8nPXIZ~ְwB0"~/"7pX=G[Sʳkik ~˟H#;~:٘P(q'%/+v`+^dB"d9΋2lƿdMoJ䷳_psaN3ź6XE#o?p oq%𗷴U+RC@4@Q_ 9К|2 7m١sp\-嬴 * ; dmdP󿀝lTZN1,&C5^R )_212DCfkdq3lIq_/l`})K` G%8l JvS*NcTFؼ c?KfDjr`߼6 k>cQ+" -,]?4/9hUWTxiZ K% MULZu1hX#/Wզ9ɶnARMYb㞼n%eP)/ UHc]\6J);FFx)g?m+M ^r͐Ppූx6 葛 H-}'[<[䐠R7  z}D| }rcc^I"tp xuaSh,8|m+[{?{g˩l.#F>; k&{Kt/_z :֚^3;a#zu08$E' athpҫ']y>$ d/t{0=NY #A"_6+ *h7;={ʗdkdeqVvc%C)a<ŢxhnY#76h( Xmdˠp8BۂcV-_Qc:D{J(r zdP䩳Hr z/Dgg`^@;yvQLF׋?8gDW_9$ٙԔFkF>JK Řei \ #v# o/7̵:fd>|.c`/@,G۲'#D'#3z^a|.W1s\(H4 Y0}@^e)čo>gA&l.Z'{;:>4ezV= r%P |py/%&F λy_s \e\ ^.=یF7 uw Ϻ blni(LpԑɈp($Pu4P{(%:e?ig0ɍLp%̗XIVis۩AFf4W|EV ?ᡥ|}R~j~L_(5= JaF#0@Z#-Hcuxmm1xRu*}}CЖy_`p_6QGzs`^ƺ%.RV%J5wgv/%wwC^:뛽=[o#[*,/ Mҧe!PMnK@@reNyZ2CSO-F #NOW#8\g~ 멲Y2n@}8j2R N|XU m@Y3A@KpU˷!A|X+x[s/ ƒ!ՎLeӆZV@%߻uDI7TM~.EX0Ԫvr{&~R̄41s±r?8ʿ椉zW"p0E1ąhؕ>B}v}S$pl-6&R.x3؀sM2H7 9үSGQ+皴DjP:7Fdtrl@Feɣ@\?~mt(`10hNH4yR-Rj`h(Fc+CIM?StT!كʩ*I)yڭ\bd>OςI\F) \h$ظ#,xhn+5O01#3Z~eRLJBf> (d$rd;|믩 HRIGpO@^'a0䵽r 2*3cWl_y^}MTUIFԇ@ܠk*s1IAƄ$qh8T9D|pƇt}$phQ&\~d°Շ^*1K kG\5_9wDXl Ō廤qo:_R &vj bP(4]Xb[?Q}JJv]7[;ꃲ #$30u麕ޗ$3뤝@ƀ1 ,8/ 0 4%~ <&H n t!.0#@"dnƞ)n[6  lP5ȭ^^ `9^3qOk!XXo7$_脑]8UvpϩW&h批T=PF3Mq! |i :ٓ^n_(\=>y3^^<ɔiOvx̉jE䵈b N%_$⯉`pЎb2A3?'?+ܚ_Ukxgb/> Z9Ť*OQ;³ay5g ͖5hA%"y]~AJi`nUn9h2kf\aa2b 2S?:ȓ 04 8Ua#0pedJ̜N4y9O#]/ң052Z$  n `^^8\?2m!Y<dp} 4<3ubʀyZO4#Kc~BGM12H{'ϼ=z;~/w"^))xќˢ+lWdX4J[,} 4><ᨍc7p{3hLH3+CoktVR;e>| u1s7 EwlԮ# [3UJ̹=ʟis;Tm852 Sy މ]hO.qi<.W5.jT!~NG޷fțw1/.c^O\;$% WsyًvvvJ=Ex, AÜ '2|כy@R.n)OܘwR ԿݪPQav!, $3oI+V૰4|#VeT*lƉ n&$tڂCy#`$} H_/БOgɹ鯜OJٴ9НJCH^Wv?Wqr+LKX%WH0;)4ˀR;\TƏ^-SmpЧ8CzC8qUJlg72y4h$N85gqw~j0'?&'v%odx)No21F H<| jY$щk5^EPOԮ`@9# 0Sd7o$B{P}~ǒdz(_ydB@^jӚtT*PP_OOM(tep4ԣ^9|/.hn 0S: \8 N]>YmyC+wxlI?& +1`E x80{B'mP4&3O>,n&umr5g):7rN=ޠ/{n䔳 %G7vW;IKIxQ`o5dKMj@f C'iUF[[Kl3 ,]N{ʍƃbH8: $PU*>_l[X;48lPJLP5'!?PK}Sԩ"kA:\j - ,ޕŤߊ򿨬t-/?> ڡK[ι$-&G7w\J$W+|X@/ǙQq|)^iء-yT}h/2<[x FE|@XJ/n(3KimFɺRvA#[imzHP{+^LF_8勿ThX}HXA"6f yȳt%Ut4b)[b:`fⱽWոKӬ3`ty-!2Ay-  O8e2/ϙG`E _3'cqٌrNꔢ3&8 3_˷|y;Pc9_ZƞiRj̛%QQ]  q%}*&c`ׇWYϪ>: #Do^;S[b:!>)% ɕnTF8N~|it|9ׁ9 !@@rYO1 f'#9@*9$a}>Qrlj;OR ˗(ZUO8r?+|Y/𭀶h$<_m؈6H枣jc#TD&΋͔Ef-"=ݛq7d ?%PPe .\%ә]0pXosh!tѤNC8haLa.zԂ p5j+59@kÉ4qeW0L$ (ek1ax'83(swg6d+F(n*j!ҫxZ)Ow/!wMQs3x/ꏯwCTVh |@mZ+'=Վ`v`/ E*2HU.R5=b::D1y8AQ-ΰo`"Yޯ QK=s g]xsp'7ιe 4X%P] $v[&rMϬl%CF`&IZe{(\pfT:svedop57&]?G^#<5A}rTUԯr8v&k/'Т>_ 0ȥԧ\ $<L-;3(-֤zavV⤮_wЎav1X{]&p#q@2~yX*QٌAH"["| 08ܘD VПk/S x5ԟ0n#Q B|.ɊR2F%_ 6=>m׷ּ+ <ׅTD@;1h} 11 Rt?2"fd} n1n愛Q`T!H>xh Q( 2ubws JH xf%y?$_U*Fz_(g_ h2ƢEzz4wxv5{{w*@[Ke3Efnv+D[z`lrюxNM} Sm$v hOp&;"d:GĄv~o)`ˤ=H'U6 9H7)(:_(RAޒqL״Uӥd g`W.s10 CcXѧT[ga>^ C=O;Lg34o9wv3hqK,Ph$*=y@??u9rΑӁ?: iQɣ (_bc@NOlH7*ˈBFȢDB{0ߓ!C:w%F.o;Q?]WLrE> ԿAQ`򹐄uzgl @ ${ 8]c`7 l #H;9mQ'2aρkv5ɒ$ls(pa6]Jp6xL4>_!`8`ݦcz@FGyU6T>s A C#^˘o#-BBMrp8׫gaFL˗y7\.]Z|:$@@RQZkɨ|#>z$±}9d,!2VfCe-j_E)c@ȯ IҫG p0F@>HIſ[: }TRT$J%D~`O=/ksN8j@u>oZ@> dLzGƦ ߄9( O@F@ode2%*#LDe+|UZh{,4`r2,tE#|u|֝`^#  =噳%+nD7@Jrc yXzt!`J<"#=-ʋ]X{Y GfS,!e-& F5HN(R?Y%$%v=3nG-~vn?{c ;d(¢N@F"TYT$hF&]"ʿ5/Mp:sTy/ [*%i)殓 sPSCޛUW֬jVLs!EE0˼ Wk_]1 MOh Rۇ6ǂ0hsvjSΣ qowE3"\>(Tfx <~4X[`a۪}tWdH6Bc1>ؽscؿ]PX/tyHLJqwtƇ7 N>jYD. 2( ;nHbE`,ү]#F7J y\ @Uɝo/셑Q&m2-A&KʿÆ sZQՏ?@Pj_$Wr̟R^ Rbhט àvnǁm0^,,ՐƏYJnw끼ܡ9e9#@y)ýT0,&}bh8|=CNBQ*]ɶG%"F@GLS'w@w*մ5q%n'-^k48Oѓѱ6֦%4-[VGH$2 kd'J rWMHPq&ö JK0uW#+F!I49(` 8͕VXT_{|LF_ 쏐Dj8ܩRp&&vGD,NWbU' kw w՗DJ3*,SgT+v8B6^GE.XMıv?7&ƏY@nv FGz,ԎVC@V.[s%/Yw~{^]X)Lb$!$ߏ2PS?d].V#h3ցNw a,Pq>Ktq MG3z~ NeXl@21p1#!I4-:_EW-t-G 'd6E{G _uw8 ]jlv_k&V)fs`2ux-n8b;q`?Yr!D˸><>{`ٺEtR`MExq>dȕȈy `5L>f%)W2X^2_ Hw yvv`h]J7R M+K cO:+i+.^TV>a$TPb1yŒO}"Dᾕh  X:)hRhD%x d$=%P"Cu|. 2oCSZdu %2ʿ)s(hp%88ZHY+D?x+XҔ9Av%{ J˽yZucJF0^F$%ͽQIxJ L S:W$ K5!ڹU[sKScU17v[ڏ bo3 b#9=/Q2Q E*`+{o*EAx `}{ ;ހ eꞞp$=$oŎ~$  Vgx N A%®< c, KZI;n$kѕ1"߯SC pWh{. |È;c98+lx Qpx4?l2WF[pp_.TFe'Q\IaW6/wGXx68ȕLꑷ:c~9ےZQg |=ׂH<[ 4>i)]LTBHTr!WGe^~,?ObXѪc"-Wr9P QqVYU `O^Yczg{Ȭ@mQJ0>9tyڭK^=l oI29/̩ eb4OLxC[)Q>54i1ej5v%ʍ5=a gEnqT) $ k_7Hַ|eJ0hJW*U8^$r *Se tkmSf̰kv-r8>nOc XQuc@aP5~H1²-8VM1݄'9d9ky)c20^'\%)s; QaWr ~ dYra}OS-;O~&s`s#r gs_#x 5urS@QVײK߭9_dm?ɼzZ4On{@oyvkBσ~ S1^dY0O%/BZJpRa 2h+% 4 eТ'H C;i@$u~-- ?1OLU#@=c)OSʈ ud gv_FuPb`k+7}EoGTS_x/@ wxsd2auT|s\=hEw.IHQJ3:לqOͧ(p EeBGNdy cK>*_ + ocVbx2o~PW/c #7bƞ>~o%n%5+R┼dx ~^'*:s'q Q|(xHE{KNyUz=OJ@lhWMFWuZBu}]n{3c.ZF"K=2aV㈽pH5Y/*f+1 d]3 Nu!#\S1Ʊ COuGIͶ.ddlѝR6R(Wg!3]ɭ4eہ #/*8fg]#_Q5%vQ 3} ZRGtVW𜩼nzwZa|,@ƀ m:6ً`B|hQP=[`5aG%Ȅ~ݔ`cq5gq;eL')Nwe)+M}(d~Q;< fO\@k')A1e>fjV6b#=>F50BF$=3C#bd>7! "ĝ{o0Q F;(9r a@X8)=C8&P݇mmm]dQ8"[FT`ݼܭTleQ=Kt a8/@.)0OjTaǵHQ~-V{eI8HiQC2t'zjBZ̠]í`uU?j q%DgnJ% 6e'bULu#ia"v^RH@ϴpAWҸwx;=)| C n;@u/A׍L+y}(*|rFG9iWƏ>l[UDږ^ҫ? @Vӻ08|`D2Oَ<vKUCKz8`r4%K̕yj}4dC$^>Wwvn/ӛ@hVw]ջtJ9dyX?O ƢՖ)ukW9Y^Ykkpn4EX.U! !RB-kő\!`o@U?\ b aX>`X? {|mE&])sU'@} +wOnZxS!r+mU43 g)@fpX<Ձ+첸˜D&YY;'[?`x7 _rւDR-HCQ9x؛c֚ |2wM( Yn7Y( M+` P"ԌnxdW2xaF G;ՌO ׀= @;Lr"xhqg%X}tFU+kWM-Ơ1~gHvWcx_ ?#s@U$Kb݊ax#@\E6LSNz%Wvɦ!`7;\g7{< 8y-@e%} WYw OJ !O`n!< ՂOun=@_CnX,+ӳizj܆ ?jm4:Dz0gє/n<`ޟDX2+&PX}5&>qԑ0\Iw} 뵔6`SG)WI_rbl8 -<7DIII4ݤjr 2wMGvNhJДr3?|FIjn4NnYeZʿ$~i4jId׎d`{<Z0 ~y)+2axƩi@ y^i\;p#S &ɮԋGq< a@Ff%`-͍ڑ$pv!t[x gvAƩYiN͹>/x?Y.$c5T1ɒ`[^xMѻCp7:eeO˨OKM[|sSaMxF7ի} 'TV9Ur7~hߣ !xmS̳3nBP8$ck ɑf8ԑ̰kW^8hv|)үR&Yv5Z8a^7);b&3 \Vn/nєZh_Ӣƈ ropkf(Ӓ&Re@NWa@},{rÈB5'3dٯ | 7[?*oyaw*v8 9s)@IDATlcFz#=f`4F)q| v4׎#ڈ/ Hvb1Fo(=eQ`b4jV 0CVTc2< 웄 ZXJ9"4et [Pw3?7OtJ=RCUtݢ)s5} ߍ8uSd5I~ fKqlع9hJ}r# הzm.x<:韬*4n6a>-%@RTdzx1gZߌ2Rp Fg9o>O]< &omFIoa ዬ˯ u 7) M'0- Éy^ {FSb;aкq v]0]KgW8ڽ6 c{znd'ni]_ Y(zok-mP~Y\d'OcoYГdu0 y^N&xy|d ]|P024?Ӵ[ü&yX{N~Y,늬rInеi_tyOgh΂!.\vĢT 2B*n 0 l[&ҩ߄hb@ˍ}/Z'vQ@ vR?0 $%N7EѮrؤcp"_߶VdC</ʿO;edЂz c@TڈR~bveO;ињ$?#8yhG<R b@FR@eܵ$-PҸ%Y^Ln` rmX _Ssz4z0ƞL)aJt͍Tl&i3}K[0.BM(ܷKˉEm"C Ԟ=] ']â &zBbFnn*B,ݯ'u]I+7ݤ=`K?t*[HxE_ @0ȫI{8J&@eξ~7À\^`aU~ZHQ<4릒2eڌϟczvIȺ2+_$!tCN+$k#J2k G,qWlP }~ИP.2c`w^y(=6H;H'apg^7-YS6(4?J<|abث@l h.&`ʿ<&vj OB#dY'ҏE7z~Y2Hj>1}R|0O5@2j|Ԓى`^yהǃ-x\ԧ`brMpy/E$PˤR:IN<,@ϊ(iE{eZs[`ψڢFmܗ`=y*DIN̹_d.imu`9ef9?I70+Xnf<-MKG~ۿ&M(6UuS)*J>°2 L a=W U\'^h9=ʴ7xL~Ckx\EWĺNz5`؟P,ˢ`XY)x-R{;ohYԸ6|qގ/x<ւ7gg6Fd&yRN׺L* ʘWO>ECdIWX{GqJdAm"`[bQ/pH>6mjB"!@'. \@(󍀸71 |5Tm Cg)3N-WZ CIs׃?? T>8W;jS2*琪_Ñzwr:0$[8])m!e2{'e| dH`菸 ~.Y!-[pl|O&@0&@.1U$<;g]4 !ks)5J}`9>I7݌QI丽nMթl)WI( 'u#@JPudgRHq0_VVBJ@?8n\fj&@1?{h$u4ʼ7kRSx$L&da˜c)ޑ`0R1J?  3;hp9 ϱ^!? r9d%Yl3;ne9m唊@m(RO)#×vWFAJÍ(i\ԩW,?cAȧ:t|&[ƮU8~^om(a쿍j=!8,;*3:̸*h]5̫J$ǾkTK>δ;k%/ u_2Y";p>Yg;^Y?֒L%pXlk󾿾0pnԁ R+e-_ po0 Q! $>8FįxS afv{e%rJ"y:֚6 /@E?σo Ň@5 %?5tIeZ@zOVfȧv#+ӏ]M >5Zy; N|lzá/ bl(/R7-+}5 Dcj[[83U\N3(Z+Ig;4r[,UKЎHDۧ\ 8wGn}h1&|R%QQPC3w/gALԂ{bܪ92~ ~0 O*@kHօXQ/b#i`[ɥ`#ݛ+k\8#˴kXWxY-Xlyz$ UpH^T@>;Y^.p]WE{/ ̇a{OJ$md*ၭyr`|xExVsaZ0ֲyTFwZmkeռr1ԗL -ufQ$`OJ a8Jߚ+_Rn\ kYu+2үxB3>1~ ׸r \oIÂW,/tt {3=x /o$3`^[Eշ`X 4Y}L\nIu$wҽ*i&@_?B+sk_9 VW)p; }tɝZjG3@ܨ\|̣rp) 1?%Pƍ^H?@}` ~B4Zd>ߥO;nA Vz=ds.^%8[w|YeU<* QoGF}Q˦֧%m _hmkkB= DtXZ0 Fi #JpG՜Ykˡn"ɫO`ʿ,^%){tc7K>Pξ.GHƹZh.ǁ^6+&C-F| 'q]MΩ(1?x4/m%q<!J Et̗@%0n#@psHb2HiXC{2ުX*Csf |jq/*Leő@Օw x#@M@PkǤ|u-yQ {5I X+E3~; o $&+υ@ |-λ+8Ga0H^ #y10ȸEð$%~a9!w ;L@XUq+_{LbC4߽LTZl ۽<ܔ@+jll~MϋW$qjt{n =@7:Mg, hmjmu'%% MR`G0l'YJx@c#P&Rmq= )Ga^GP`Ɏnz[c]Dƴ@UwzgZ.ܪ磲;5?{g'GUJ@XC6LAW ."Sܞ "]vHD@YD}$} 3ﯪowuuUwU53u>_WխsϽܥ9V$p,q>z2ҊE_P,85" Z*Rk5ڣ1BhAh{!N7i=_Fvڝ HE/򰈏FfK3y@+zQSL@iL01 GspL(hn%JCos-]O|蝯z˪:e*U#0uW^~wHmCzɗ?mK$w2=B1G tmuN~067yGoD| Cg,\ķrIh$L箪a'#9 z-vkO#1pCpNͫ~]Tqx'Lk8[AgY(z=!-.bkwML]i@j@285D+6sJ?:yzN6>4Y"GȰ )2wnæ]dNncHX]{/ A[!0!&.9Фڣ^."c!u@r=!o&2L#lLGgD2^ZO}lxWvV,aV;,֩?[bʱJx]W0ieKh$F?[3ٴ}E^M;?R 9ob i"w<@ E^ 5U[~LiJy VpzBd*/[+Y/OhW^W vCFhu'1` [5a2 ( RuUd.:L0Dӄkg^x4~x ^xĵ{V V6 y%*Z]wgg(!ީ&}5^V0BAH`[o΍6̣:Rә$pte.rإP]6|hfG&85 I~fT%@y8ÿ;6DpQ2qᢉD9(-6,= GrQ+?[ , '-[2~TsP@{]nzr?ЌVApr<.ޝ&i9h7h.|(/Zq!+|q+(˩݅a~5Ƀlha]D"Tǐ,;^`2E T fwvL?k/4VԍLz݄zkm}?(tE+Y   y2QVхR$= H'yS#J1?#(I^E K9ݣgqǪζ(@H;kn_gaˀ)@.ؼ)LُHi5 h'8`UȲm2r{<6.p( `%QݡWBO+9yĴ丿+7ʠIYݥ^]bR,XNe/l- f`*!l[wjKQX f/wt˩\1/ p_ٶv-H#?r~"Є%dž?.\4h& 5j7R/5i?)Is7%G9ZWN XOԅd4-AY%XHFi`v}pn-q*oq(lN3.]}.="I4 S_@Τ@vJZE⏀;PUNːbڇd흋hen o?Q$ҙ}ٮh@e}QL:[m;2/A/PDO2>Ҹcσ`1Ć?ڨ.\4{> F(GfIsr?ӝL֮Y࿁OzFbGy~N ,e֚X?@S4`@;,г@G!h_pDnZY-2]>ͤa$רlfaҚ_b,ޮ)w\_@4hs2MW$RP݋a<Ӽna@}X"ֹ@>1m++j8t߸twtw1 B(hQT"$S]~*`XBxނ MPڕP_,‰A3VcL4pQp}h2,'@퓄vas>ƿG9+ǂS7xPJrJ>|%)kb]44 '.8iOm df_:6b{,8l9'[z&jIf9O + MLqb˯g̗a!\p#J!Q |Qw#iv cÿ5ڠ9 2@:^ 69u+d==+>=4]ߺSںvpy<FLk=J:JV &eZ>J+cL@v@IuO?Yi9[7a`PZtSmbGK1O)@^!`.ֳ@C1UחeR~\c?ѿ]`g06 DUVq9M{eGƺA5 9T<Γzo >@KRQ7e?IT43Ǩ\CֽIt y+ۛa{01mŵxx 7u% +Xɖ1D-*0:hZ{gouPNwq੷׸թV8`!8h;y)ƚ#6&5}%vlV !'?ο">dˉ5eW;ocn=ʹ-h`zyb16SrQfNa'rkGp?K|UH@SYs]-1r԰fz׹Olݴk}Iۑ^ TNG6}TP7UD<{Q%MNeɀ͝ZY^ܹV] ~ŋH^H}v;hvL!JHC<+GHmEck_ik2@pYZ3 ?gl\5SՄG A2;r>frʘӸj0s{3f8{5joUTA8'@>X 3R%HU)@c8 z/t? sT~ 2\U%|[X2EnMp+B[,LidX+Doogf:5\;;6@MKK%A]0t.U)Bho̍32GjVln3BcB*&;S} /)ky.d;e՝b@U<j;k X'`gɩȪW'yt J G, GxMX_bj0]aS~Fؔfi|Nc{AtK_o"L9QJ%.<15`䧁sȰpa ۃ@mؔsҾ."Վ \W}5 穎/@Rţ1V#M; 5N@Lr:H8lɮJs4CXx:+82! A Ug "䠐Is-DwMw-L%iOKU` K1URHPxVJ ;2УuҜKB[Ȥ"5iO٬ȔݻT 5v y`F̺&61s `лW=8'=LyO%RI@*ϙWr*:&yeL-E$`3`ErcJ-ˡojR x_L}gP}f?17;\^G n*6p[+4>NrhCCm2BG.k\)@0co5&/@S@ͺ/Gmo*Z"M/֏Ƣ#voݗ~Gmp] @BBîc$t,5)V!]:6,}>[MP1w]375$ˑ0ٴ#G@5b *jKd{VPwk̝GgwkJ8l&3ё"` ɢ)IJC8߃^py K@Hz25@;Nbڗth`MBc#DXקUGs>cPepXljdV;2V/P cT{OW<qU?B}=4i¬}9 PkDBV@r.E o;mj)2"x0d;Vp q(ӟ`*Ɛl'84VF]Q3,Uy{|Ub/%s3,ߜ0)$-x 9`PbGԶ@;S40s٫f~|J=t0%3h=% >H•w+y @}!TqJ,ЎbO7hop5i1 fS)!I_'?0Bۋh%jhmߐ'6}r n:w!MkZ|8գYEd:@Q0m&=@Vg5 [(N9~ 2P {:ONpx:&X'Q!nP5*߰}"Kؾ]vPΜ^;{JVǮv tŦpj,XZHzvD`M&'-1EH}=k'6d`CЧsO%4'Vq}'ӷjjr{1q(ѷ;X^X5v"}Zu,1dVͰBP䝼hh#>d||S2¤kM.g_qp~M`O9/DܫF+8Nd< XQ ;8 r'3J@x <O'w[j[2<+P(|P!іܞ><;I3vvcM_rd V:֐rHq q na:RH(LGǐId`bk f\sQ_{}l%ztMHB7g%l&wvҨlGN*h,7@ƿ&;3$q@ k&4a<2P%),3?[&2$G&CN[xf.lKPC+ahGp ȀO,Rgй>PU>*O3 p"3`SA@'9e p9n0IcZ hB5ܭYyq0DCb!(v=Jb3!/Ggg"ZQ5_s p#8fn 41 JhoxRհ#1Pd7 k;T Iŝ׻Lf!C=5A1q&V7ƊkMoWURJjuqOǤLK+LE;<? A.La0]s @#hס)PRy`p* `:h~1>;"861esdnXLְIk{;l.q @+=Sz(0ړ^ zZ"jVΧVM5yi:#?AzxLj=1=:mԛb7:*Pvv)ӮP}K5I .^! 7hf݃q{\X\]4DudWX!Z_])k{O97ʷcϯ:6vhyu! x pQ (pp>q4\\#M =?Ѓd`𙭺anOOi1ԧri7rBl $~f.vԨ_a1'44̣4/B'GhRkQ6a|!M:+clOMnKh iv'N .WJ.~ &Rmo"ke s(+k @OobLֈA &+L4]n σ/e$Km*_VmC/s$ F0΀|`O:tu `p| & <د&7V<}c*vW0f?.)/nڕI5gж+Lj#V=|e̘{2G@՛:fxKC[^'\Qb2mVrd=ɌU9p$p-eڲ*HWQx,:`Nn`$(!/nLCa1 x5\gn;t127TUJ[ė̿*P2dog<ݑH աk˰I p53fwZ *LZ$VNDc//|Ly/ MTT6\̹ưdڏiO1=1@N#편j.qLݵ'4}Gb4[Ip'NZV]&D>x|˃51RwiG^x$q򴨶(QPBQQIId}g3ZEr><*gG c$ Y ՗fz9Lb,mg{(Co%GJHg3to5yf[l;[ nV㬄SzÒ^о9h+504)`:BYY|/Ɔ1Pp=Y.^ra6C 2htAapK? |4Ijs݉H4աi jfwɱy=8ԶͲzѫr~} :sV CGe**P:j HyW1. O؀z8Eh,$^p(Y_OGłfՀ-a2k)@񃿸=vVf],_@y|?^t_fJ.0|Ⱦޞ;ŅtDUYhhoCei/8qA@Yd0~"w3P[6qxE9p6BsPO>q~#C2HKh)O[0߭( 9wVXIq;4yudx#&Lߊrϱ#@t`쮕Bi' zվ L_ς2=ax<V< _vKSak{Ӈb@\R@IDAT10"DVE#H~"zoz^Ne @͛:_xc:({Ɨx0-eWJ^>M'Uh蛡*n;n@iC8& w#VWVHg/=7{G>w}fK&elS&Su yOZXxi I~`++A?OaLf@qy;Ïec}Ơ3Xd&/{zr88s߹ w? >&$'gccڤ ; zB].ډS;UW/2*QgQ)d;nkjQX7p PQ1{9ZIHWr6إxIouƿܟ v京scGoy5`o촶vvS%9xh'GQ<_f8 əRqsе흝sq3dMP܆@IC4j!kdNu7̈&M~=XH*/9[ n~JN)z0~n. l58CAtȫ#E'w9ޜՄje|u[(`ՔQqd]nE](X1tYK|.7RI]o!^+K< _v1% [s̑5uI  Zm lJVEJFѳ! G@@/Tj ,O|v빾 Dp4O/܋:sT;BJ(vttKfz"ECM9d#ٙ+._;:;U;wU+xSX 0p  þmcxq Kl/^aHF9<{/0k]@Q`Wn+'F %𳹲#sK$2ב"9L}r6~`WIW>aOfwe88<6zYpu3Yc^È:AџTDy%1&(I,/`@IVK*m3UgK `1;ARZ1rG0eOI~ ʹ'O( =ρoTd`2RV4q㺝W`&&ҙv#;*ǝ]3~K;:;No?{az5`c5kdr}O=-14 ǃf?G!WOa'LַЄwu9!FQ=낑^S?O` K` gnb8*>Xd+i3NɢjS*S`3&vI,.cv@n5i<8C*SiyL)Od J|Ç]8JNj=gʯ9dt-3blV眭}/ga ͦ)>L/ETMUw@.M[4isP2{Q:^q[izĿ~3fhi@Nz~ wMrQ4? π; L;5,'XLf(#tR8)λŭgҿADl ӌߜ8+VKȿK`8J M=Z^yfjK%))%<H&f fF||$%e2!UzYjLozC2bʤ8svyε,1gHB<#UAq:j#0x4P_y p/ y^2JN%qN[3_@g1;ixY͌X@Q4'E{Z7.)P]7s 'Q&9K Arevm:he*4t*AQ9ЃGrx7r1|l=|l<=2 Vv5ʻgU62ni7 wޡz#Yx_}+Xi༅SMmȧq6jrUI 7`=Y~?=p8|1h0lo)FG 9p}+]/ p'@5_[N]d<4JgbUw*5)Jcu*c`K ̞ݵ'?`6Oa? WiGF#Lj]Gw= 0/fH-qrc 8bYg-sp*f?(J Rmd>wMm2]Te>h_GDO;b M]ƻ/8J$G˛e:d1: Zɧ97np/;^w.N!\OFILͨe/7D vYA|c!Z\IZLy GQȉ#D߯&j\LK*йV`nWj4PWdܶISl3`Á9gvqjNl?#.PXd= !M70Eڙpg"0n'n"7@DrO!nJaB;ZFdBu!c Rc<^cJe8n^;73$?cW79 FEj̓ӶuDӡx9ͮ.uE],"; 9)^+&N7oL~T~.C0 Ch*1.eam¨>H8q N[pȑ~@ƭ^`i)i}`!Vx9GF˥c,_5RZH8#];O;Cp)Smlh ȧ֊wVR͎0Nk'K#r,9#Gn~H@Ih}_ g֤;UT6iQT7X>Q,Ӄw_!t-N;~G@$;D`I0-$ F9O( _ pw)X50[CTpW9IsL w#ݗz[@yVxʼn"?,iKX[19 :mdE:9 80 dRo]i!V!8n `MP$a p ,e"u# ~yn \dei@}G}6"ҘQr#X֥Qi|T3งM3_F¯o)|+{“>Ϫ/'Z9$$޾7+9<<+|DB͕SEM&My1&0;ʪ5(yߪ_(0}| dqfgw1exwF^oΟ #(X4/4/8h wh3 pk=_̳2fnd?}qRvo V+(0m'Bk^29\jXO ѬHLn>g@ h, 9 0y]A;Np&g]@3'r|ȑ-_xL-j69D&9f"G]?P9'4L3M )};b{ǵB5n8rXvkQi;:.罊Cʫr+V$:Γ)E,`N 1=Lzg MңQw<_zߎCi:{N2UkJLy&=;cȽ_p0vHk1UKҶHI0Ic-s\r߳n +8F|؂bDVkSseh~a `?'6 RDD!px?zNYS'r*q΂O2el'o֒D>t_9*Y?0hNNIPv]v 5N/FrZw6;\ Ewf&3ZQZAJ#qcd]ץs!89L,h⩼WtuˎבgL k=72%hup @&'GP*c7ݖIgF'V w`̙ (N+ٛ4G{ڒ(vi~p]ܝֶZ@rÁMXD>|p =fR[U+W^50{љ2:αi`K0׶YSNCYi7rh?li49529'@KݭzcOO>y1eqx=K?VB5:tƒZD9nlbUK_JL9>Z*::`s}!9}Uji8Xʒ]nm&s')ghгʘܿzjQ/!ZO.'2̕)@us@Rl߆ 'vj-fYP 3$vT̳s' ,HzDu8 ST/^?hs{?AWRq$%Ŕ/K6}LcPM1kӬjȴIg{Tpw(&q72~~ .2@0 VsK?PK' Z (}foБdpI9-ФпθY:`'>K96^Ι1ϚmLsq\$ϑ@sw]Z{yRךܿBFRUM_EÚj+\p,ǀ 1HrQN'c9ߔֻ.f\*]9?=ɔ"@z m<;_wi$M^`nt8T>U.繮#ͤ7h_Oap6V5c:֪2%ng p %##`g0GM4Ц6lG\%?^_9|y˦l/r:2 р?ǂ @Cke 1 i&-2.'Lym@fM$fM].$|2 Ct$A+?h.Z.W<.CXR5W>'^ |7}PlԌIHKjrV[ӈh< r>,"Y(%[/j33Q`mԙ}:hgrUnOdu̦3C;?u1@{氼VTij'@ee8:agXY^#Fw?#NJv(Fe&h7{q<hm{]ڙW<~ꞳZ}"xzGP/簲I%p/X50[qd0Vi2N'3v"&`Y` \ ^ ``4kzvkLDԔR@krdWlU #|h)BRtmŒU'G _tAtnG9b Eg%j*5' h0s,j#JT.K O0GUs;f_ S40SV,N2zq)И}1ЪZdh|\LXVUc#-wC@imK"P5iLw ꛄT=IW*/^*,= zEyE+0ceʈ8`"]R=(ӳ~5c8xoxif{_f3'1D)t_ymjL($YA4R>mȯT╠WAJ[%IF_x /9;O@M _'ILf-i}m7p _ڐ(\NT>x^ wj|8-=Xc5Pt)8 |h8@8N|󯁇0dž@Κ*ꕉρVfZDLU 'ؼ_8쏜]O~+Eu /IX04fOA$2@3R.D9˖5 ZxT? Sw̯WdkG;{Woz N>9qI\l:HY̮_3ߕ9g+ +UE>Sim;+eoz@FL y%v7,wB)$0T œ>$9Q{ВKCh4+p9-J0j/"SE\(\pS$OWz9fM_kfBċ)@AsrUß9Ja'995i_1h@̲ޫט"'Qb";9/ |S#WCFwػ!r:k?ylH8K}WYAԬg8ҚJr,rfa$Ho61ZpXpͻa*{=/+7Wxɫ# Ȭ[nПd{z"d[2 `ft&n|Ư@0N; nO //Su|@rof8ⴎ5 ovDNM5_|l|&aC3HX}'*]''A3ƚHg{p"ٶ+c5 !\)wIc5k3Rwo2.ݍ 21rKm~E9ɦlM9{@^Y }}sF0MkU˝l&B`?K5F;NbZ XP5"o+amT!+]NI@pQ_9!IS4Q?Pl,ք`*Hב\wp*M2īwtnk1(;9"^ao8z]HPYuQfa:{np+50[||9m/;TB-p-XU}ZsI皾%h. ֳ>eН^`3|0@]P`(/Ȳ(VWbnU 8hL*.X.'E[pСR0P..Ғ gكL&47m-XMke'DNwRr5ng_1Wӣ"UyY.<&)h6:ӣSTj o+^3(_ǍbbyMGnCviK3@1TJ4aܯWfZZs*5$Kjip38̤,plˆ~2bSX l}h%w`3t?_,~HA֎wKdů,p"@4S/J`ʩ vE/p lhh%Ip:2GF'i[w,p)G"MΖoʀe^;256(_[W4ae rt@3 ryq{ F"cFH4rn])n" ,>fݷ8]q52#J_QE4ю[<;pć{ vV`2ٰ>^?cK^͏#Im|)UL:3 ĶWȖ 6n@炏fajPC'}-@MR;\OM4-^~,^'5]Mj%8n >Z':}5m{R06}Mlq`8c6ՕjTg"w g})cld8x}/^gxDc<c|Yg)li`3#-dL*(,DXrR{.'D3vis,y^hE_Т`,L2mw鵬ʬ)7"޾qO~ѷCHiQ;xk>"ervLEq`'p2W٣uIyIȏPݕ0e(z0w 3[ĕ'$]VXr P+pKc/_*5ZF?Le U SWNeZڏr)Wr8_ P!rڡ_5W: a (:G4)>h9:9}bN݀ox'@+|?Gc7D3R]RN4aՄA ]l  d83U(šg3W<&uWNJ-ۈh GQ-F| .W' ncE$Ќt>(ydtȝd ƹ9Y$d^wQQ!sخ\x-yP\&Ē#4w (D1lr(f'@#@[8}`3!Qd[5^8 _fAL!4A3[ɹ+EQG1oSE:'ooj&z9$٨ s=N8o{G 6~ 9qor}iAwRYUN; ]=-Ǒ8>͓0gP;d `d;dT@α Up4èSg:CHF؅8 ɍ+_$[*;$M^Bs18H|irA-%S9 ^ [`2(.Nf4nJ{='BޜuXU5>sO%OӖ@i h!IOMJdԿ.3;ӜMŗ6w 뇁^!\KσR))gN ]Dd4_LLjǷ Zaiق̅RG@Mؼҽ?T4R!sǩ)x`D{?s1m;^s\L47²m݃Jl&Ukݵgz;( / w6gr~,9D^mɑk9ݒ; 48h0|<e2^_rR&*ڢ5O m[kJV$'`Orֹ[Zˋ: `> _8r=}1TgpR0~aF8 0 u橔[w$Ѵj:x\_G;rSK5`xGV)_?r5~6{qw@ch4p #f,^o(,PQ rh~ ڂD7#j`@]~ `y T᭺N%apdڶ{գa~F!%dFp6 ajI s4 M"f`݂W+2p7FTN{Z ~ !fj~S`{Vɷ㗪%ߦ@IЀ5׀k fC%KrCBY_ $!:?8`%չ\3L9ŭÚlN9_^Q8mT\պuId#eo67@U5 SZ5!x#x?vTfę5]|`HÓV{I=+ fvM, %e޶^ `}t(2x y^h央|`yZ?S6ߊ47OFCRP}8Gi@<o<;bZϏ`[ۭ9 Ct[d9*;W."ۺ1Qr7tSEQ|ps`[HF M볘pmu<&3Z/m۸#:gɶ;CR]/yn AhD&[>v|h3:shBA`ԛ]^1!<[B8Bs1,x|g7*+#i*"2 eA( ?&,,М;|.W/[QB-9O<:o Mri.Vr9[I`*1X[* ~{17M}U[$X^y9R,^~rג fߕ"0`W)[ST(GEFf0Gq,;[/?m8@Qէy`ƿߒFR%զY,!?=OB|9 |_Уzp؆ ys"1oxA2qsGsI;Ɓ:=84#e͘'Į}8(=^=(PL/*;Toלc23']t3^GJ2*B TzHhLl,OX Pt:b#1`Yi=7ԕSG6Fw>&rʵCJ-X21qSi{T~/8DUFY ^"G!<-pfT%Kg}VG^3LЦ:>3wœf/Qiwt8<ض7~mcNGNryg:s549e+\l~Sƽɐa#Bu0x:B.ih`tރ:נ#h +G^b%*^'0F8/`4߄Cpa!Xg(s+*GPK^:\Drڒ#v^Gz?[Ap,~K,g7s^ iJ+wh\Ms|68\UNquQ 7a,gF$ ixXp7diQ$gƄ:#k@_(a#BfbcHk\cR&RWPZ 45:UF'"k6桦Z7*Ph6c7ԗc^ۖ_ g}]^d;l:lkjU6d+cϭ.{zm?Tr9km;f |k8DM(`.P=jr(L/wK{397 Mr2.X1;ywАP;=4So˟'E =m; 5sC2:N,g Še :-PDj&Mgf\Y_^Q|tK9oq1eD~񯶱'8|0om8Ū0֝J6+UZIAa?&3/RI!*.;,دFp&?R`E55N P@ydk zdOSFřC'- c)3EsfC:ہ~E9GdZHPS5Lyg"b/wPh#j#V:lx_ĕg>2{?NJXmmm@9"w`ᑗ("'@69jKcޣ9GjSSRm|kkx砿yGT0} #2-t4s%O^Fa-'۰꾜^F `x-~#m斮7g tBy9 ]Su0(%w>L\7y(V1r60pń;*d,c2 pL܏(2XOb8[F!y2ȟxq 7{GZX]H30y(Syx~-F 䠍if VFuwsٕRbO9-R۟SƞiI"pfſo _W?/iGES9@i !OXie+atيQ17mgSTzڪx-^Qȭ$T\^%`Gp; o9G!^g\){52Q<caW9̎K]S[]l#yG SW^29K.hutiK?OM+ʛGLl$[Gy 8ǏiOiim9t]nՃHz2\ F%;.ʦ@e㛛ե;/K *$;@"q V-ҁƀ#8JƠ+Xu4.t P[Y(D !rlWC8j5| +f=?R=xMv{}o.[nu:6HXƿYZ0s'޾o{>&1CF0d'G;hpr@u:ATTzi Q-&gV>oF#߄΄yţ{JR_wq8ߨw:ٍ|7&Liԓ)ks0'M!G ɩ:ZSf16 -Ķy~-~lu Lzwֹx0CkKS-m&92I{PS>}֟Ѽ]92|5VLZV0I40!q[oK3dLр@~@#ęQ7{ QЪw&LLVu3K^i; 9{!2n@̈dX.S@@}nwPj@!sm&\GpyN0s4̵3I o#yJϙɇ[G96d\MgH<6CkG5UN_٤!`+ѣZ%b(UwRE.餮^ʭ)GUںqh`Dw[T\}ʤcVsʥ/7kߚՉWQ^VocZf-rVpxױ1X[9epxµ؃j`nW .- Ahs{JT\x Y8tON#@&2V؇.X؍\MUq=(j P׺)_z#p@y"p^ ,u Mԉi%=#,>Kz Ք:@cd_h[8G/]FQ^baFwNntZB-<T8_xDad7 ;d# ̏M}HG0&Io5x+Ǯ B/,, .We2rx;$#zf6S<x_ --u@2ou _.}:`5f@~;8 [P, ht*w9'׌:ROk4ʝ3 FA>&5|_S:[w`Qf"$4|^ ˀMtuO\HюWRt%FA< K#rW[Uv RY+@/ԯJ6^rT ;Bix0ԭ.8^Հ?N_Øq@ h JTH]nX~:fZK4:|AڔbEmu^: 6o<|UL>d~3\N=ڀzoWP|;@S8|aITTCӀ\ؠ:u@'[5^r9m0q:f)x:z $R*`V$W"/\qs/pMƝ,63w 0I z_r]E}"ti횯Ew .ň5fk)@Ž@V|]oa)@T^M`['tHLe:'-?ᴴ:Cޮt3PplF~,!\oG'9G GN HYOz%x%N;D|V$Λu -3Ph)]b44>aGi$rB՟?hec4L^@BgGOevc/y(pqTJֺA R;w%-ׁ~Oy\5u<>4`̊ %5=q㟋 2 `؁7{ێo_"sʰ:w2cU}M; v ȝu:H#̱tLř1J|xwk:@"rPpH ϕs4xxRj#סR˕zy>Hf:*S!AW ŭXood"Z;ZyidAav#p 2aè'|`I]ʡ-I \]w ^O;^(5eHEc4ɑ~Pn=Ui,;vg/YpEE&Ɇ6.w>L^ \p9 @7w|]M-i.|.wǑ(`D.4pMfn$m n,=%7d:2HV8R.(l`w 'uFu DXA0ES6 xtNޕ{lT%29- 7#0gf5xp6xZ ܷf"ZsZ1 v끻מƪ$*:wCwN"cn-XT"&|XȢD8\,2_Og0-"x:UCNXt= j@׈-&Cjֱ5-0[Swwϼoܷ_^  ^.>®LK%-2y^:~AK~ TZ ѹ&JKz]UyoH k_}Qn};~7f?4sVcҺg.$" $?kJqC6Aa/򔒫i ؿUu͌hudH [+P]xU ׁ`.$Ahdwu rxy "O#L1@+H%0  K8t+p`'pp`0$˽oiŒLb=r4]^TV'DZt ڽm* rMf'"9D31֕; =`8vkPz!k(!z&}'Bx쿴f$=̄Fn,B'vjPP :"Nh* ^|d`.N^YW>Ŭ#62 takE? kMm4SfVXa 75btK >L 5H4YAh;hLLTw0:=vRwٟh` B*I@``\?OP#Sa\ds{9$Fq;㣂;޻BЏ+yޗĵZ4(''@A h 86V8~ [-BxpC 64rfr/WYKKwt9 GeV: aozܕA^Un'1Oི\7į@ZNw]}lNh:~FC⥽th",4? z GxkΉƒooό2jL M{tlBkx38Q |<ʣxR3+b 6`oduͨK& ,Zz>xm {d ;,zj͍sߟۺ$kX8c= ӷ/J8?$uN[ W-IkB @|eCI"נK(S3_źݕiڽ8iIϫ^:K'K5G<NJRJ:MN>؋Gn̯<?YT v(yU`ii NcaZ~ ̹6%2gz" -3#C 6~N<G &H;=p~2.XIk*v՝ ]@;/xh#6 f|k}>_1|\m͗}XҭEɲvI~rq`R7WOS²:Ky"xn?sDhѸDZ}t<|YՐu:(^q es@IOPȦ)ЕTᕶJ<Fqh# 4iN[qpgPȭ^qlRaeO^W70u5>q6y΁̐cMɹxPM4fip2]'pY `qrc9NFc)/*#a@Nԡ$yypDً\qr ߏ[ DcOoY~R}>U/y|PIic =nB @Q_[F dD+~Aأoue!3iv* z ̩' 6Ltx4 հ4A[X?xx `5 1aАBli,yNgudݽf- "jib8ub nʍj/ƖLqp3:&^>ú*:r> PNV'ู#>88<=N8s~}s' ,V4Ivu^B ۈ\SAh$ú,Ҵ24^HWsڂkxN +^M%ODWB:NDy}~ <@\ƿ9z4G-O~KRU;Hkvq^xI#dx֏ \w\a0q$¼W } ]Eb㮔L*%0':inP_`g' 8|5^xaP "g7^4$ʄb!\ LڔRq\CZw֗13"xMSN@;g&6\%KٽԸwgiW-vCyKնKj?p|!VmZu@zXnO0i X0?8}s:+-t<"zCFAb;$}g]d0ZwG^S!|??>ơ\Ce. xN3NNnHyf&BG/NY,":HuZ0H &pefk(%RWF m"Cpus4cnYcÞA>yB`7DLJt7|#W0"9^Ae_Z.U|,3Pg+ct i_ 0:ɍrx8w8@᪮)b'Pw$L7g:.r-Hsׁo2|%JI'rp.\JG*W}H:n`:P/[wCw8G.\XƇנl ߅\X$Lt زIk!Gw:_RqRw)i?{d 1C#m'3`GV'z"h|"`ä9Pf>0|0@nn+0"~yK4WNGO2h^׽#X}*k68lk{: ٛZ_B9Ͼ7,xu8 rZDE8M}Bqzk#arJB'i|.Neq-(b;5epʾN^SЂ qa?<HK4}BΉw]߰6kq{Ur?\2\d]&y6 EX'="yGz8{C @5n|_xjHer<ij FT)'EbpbPh;< IBN&lrg7zc@/7ܲF: ;t~XO0F?_j?v4XއF 6ar2`ÚLH^iyI /鯀_?F`h|lu&ѓǀHLh{ׁFJاAOcÕN F!E*'(tl>|p Y@jwl~ <6 {!u*q>Fq;w6{ J R 'A)3k_''Li\5+?XD{Ga&*ekƛSkJk v,JUL%RG&bd|zfSiu9( w߁O4ۏ"r)u6/t^7 XI+`H1$0?I )ԧT~E|gK}\w4H~ 1~KvWG;HFۉHM"r(yZ%=?3\q΀ 5;#Gt(TLƯ9 ,'Z1Rs6{ q9 v"Qrj`q~3`²'?hY+_(aekT::jG2B2R*1 .306/pPOb?lufm|k`9p={DeN }ڼԜ"p}%{5!Q@qi_o+]x$N4#Dx8J?>np:ϝ=o ';4 l"q0> ہ7]']0uF/OL@{[xH\%|y?]Fʟh 屟?ahte8VX95&2FcI`*vr~K%Wi1B5T&SQk ;phpcPc=A<_q._ j$=OkHLgLZ]o=? [p,'D?q~ _#@QLg;4^W;a6~^ =~K? s8<aoW }PӀA;: m ķT|-]3t.pQ7Br"B`EK^8> !i&a;P#.̟$&Z4"l|ĺ4>M)@:7V$Vq3z9R@Qy.2R9#/ΆWSx)|jVd֔*1הZ; Z4v/Fγ:g[0 mIR&J}Pmk}xnw\EcT๨; H_ am68?F-]eiEGw]?.THIJ| x-pX0 =%F n?Z2.TO&a)(kH| h6 +`}@ _z+vYg`Ѐ \<$JJέEA{:ZIhvQ췬Jm$Fe0soYy:Siz!m]bx8\V[/5#Q[Y3 Qӯ_Maowœl7 7={O$tnCtOy՗o^ ?D@ _t70Ѹ^0x2q~p|P} n@.Ϸ0Љ~A4U w=OlB4 \y9- Aq,{i$9?0@HtpnJ64( :jWWڷ#'\PءSؔ7P, aO ]tE j" F +`Zl"(IUs&9jҧDFIAxoOr+ /[~x7([{aUG}? Jw]IDqx\ӀiԌz LGd}KpA\{i͇N@i넰T7E*͡|hMb4 Ba2Pk@1=EHp\?s pⅥj%tЮH. S* Zt ]Jԯ9# c+Vo@=LIñU:  ̸~5mp.?.p?8)=V'psA@2yNrʝg[o+:(p!Ч[0𗩃l~f4:D]6"{xr%aG|3=><턂.:H\39/42c`tӗNo`3™2 k?.{a~ gթ8LO}ю?79 ~ n;cn/:^u0*A p;)j04mzXK#x.= 4]\n6?yIMPuT@ܥxl/@`w D3wң qJIJ djpұăGv@t+_1O-6|6ssP(tsLk+I _+K`va3*\$g-*^@i` +7Qh\9 NT$IәV0e^ ϐ^=sbLԡfwk-VI!x6WlܠTw}!d3w0?"k;mu&Q*T#cKܹl,l.\Jak0lQH{ 9eD)64_R *š,r/At|p*F\q&Π7) ]ȉ)cbgG_RyQ$I )@K;:{Ĉb֯&5~iL޲2_LIdL7.`5E0rT9'7>LVv|w.]M ~^%v;x܍/З :>I@&v5^Reދ4_I Űm(e0i}t3Y兤V<>v&3vtt4uZj4(<#UrElƙR\9ptT׭8nkPdĥ8n@ݛ3'b+o܍fdl9jǶ]1jX g :2H'yCvJ.p>0z8R!0:h}yt < ߠ%G?t7 Ҵ9QhN엍Jb_quIa U1yf̠xyAi4WZz `߭TʥX]7L^,kU9 oJcp"ִD,͔L)> >-@+ch,&GIX~ m+OԚ!O๨.a: Sł)H RMi>p= +#z(OQJ;{23U]sa mS [p BÕDX2 IsnX݁UV 4Ώ?N0?EDӧHHJ߀_s6:9Ri8DJ{ ڼmS  %*gr%u{!TL^5' 9FFpxG Б{?Ib:(ZG))szG+_)9$Z.sKk@JAVFzKD>uethM`M:tb[z)e|o\f1sC 1<,|5:wu+z5+|~4gT]tmdL-V L@<ך'Li*N(7&j?Ҍz;z /Z9UCPpApKEoo^'Ms< 8aKےe@kNwvSȰ!|lrkb9DFvmW(mp3|X ۢK?*gURȇv4>f@-e<yĽyXp6vraŋ?\Btpo wDY_1lg^ [MuJҼU>P(G҅xpst\V)aSihU>PheP[4e2 Dh?m~lL['S>tHҨ$zzUNBt9.NR A`Fui hɪڌ I KQ~*9 ~nI.Z@IDATIwex"`=2!ĆAR77W" bf< '&8 EtܬVWF~OG+SN5O]iC{7`pEp2X+3Ef R@:aդwFL|RnWtmX_!d97!I2@:Bh`OW]`p.I^B3Lo`5w%#2A26>c1q5磊)B)e> bҖGg0tF] pEy4oj\7e:f8'Pt;Oi J !3 SoS2J Dk qU O@Pp@/N)au!KZ.~'cLbm߂j> yKoJ{ǹ7ݍ"p +\8:ZF@x jE`0n5m]DuBjd mp3CIKh?ri1$`LCreFNZˋI6)CS㵀>$E?xL({Q@/!'}ˑ`㿏4,>ؠAfEǍָ&&@ہ e8xw~/ V yq'S_<|fr܅ 3|KT{#C`ßG dCF3jhhPʮ ?P%f`? O;eŌZ@> UO,8XxņuE~MOly+KŲVޚVc O>՘,q|ةg<0\LP(䷎*֏w>|P i ,>ЎZYot7K*dؔO'}U$t5e*^'8~!"p6;pol `ի '!:ZY-hYzj%]- f]i8Oy'CtCX+G=vaO\ qdՂ|$BG88~pl5`vI} @^[ B~+,{椅O'q8 Rj\ҲNԀ}޵9!߲:-"I2!貿~-Gm~ /-B,s70y(U^Tu'~˧}ڇ6LM|WriNuW&g.yB#@UIՐhi Jl9}sjeW2B΅P`"m F ܾu Xn?vv 2Ϝ7?<8 Lϫy{@Y7/HC H.{&ɦdaB}=м,Inٛ5s؏ `._12P⩇!0iѡL_!](Xc zخ#86&iov5y屟<e|+ ܓXuXzPUupWnGK`P(!89lnU*GW˕DU N'@uCұl9?2~_1GzX 5<]wq 3`)D(G'PY6)p" 8nz9ݸ0U<:L bAS"c^q +tF9U?gKlfVsiVSS8Y5\n>ǓFO+ ` kPcOEk֟ciGֹX!X>1\13=׺ RI^(P]_!hi?<;A8.`]} nua~ZҀCF0"ҩ2*it|}RʆGRU$ 򹱰R߱1󣠲uj:{M]r ^v˛{/_;g΁Lfw+W*W&x-5[>[pѝWmUD>7dzLpfy:p19ddjEn )~'dK1׮:0AMuqL-#1Di>0Bwו{Ctq|,~ ?10C4*;$5x(Yp|N&Htv0ib4wi;I9Z`ǚ|5JkT툆U?Է?| yXo]W]zayNvORiibO$o _\e`#rlKh[Pb7szCYK9MT!j'!tOqK:P*yv#PlɕJ5{ţ:N_>}7fRBU޸f! <8Y{.t@I{dϴ$,JVnd݈WGh1U;@碪ʢk= FDd('a&~0"9Z\:btQ4?ܫbFeبL"%#}@,# ~@m,$:K F[3Ϻ`1~s; ބc&KA*fM ? L~ n[(.ؑ"n7@ tH?:jޢTC9ܳ@8*1GyZ G3b "7g0 xa\m?hޏ #=V?6잁f@e˖~oǎS\?S~jsճSW߸f6zϑ(ڿAu:E1AGg=E'3@$| PKGj|«٥3r j0޲<#?^΁>a,Dg7Fj7BusG##+22OG>KgY4`˕l,;7=hڛ Gg8i\xG㩁A>g8GLϽ~(@O¶F`J[6Fꘞ/Zn Շq -y*XEߘm=*M'Pr[=fjM/cY-IՋhS*-wPɨqىᤤa_z1gouN+N:-?jԻq,!pJGj\353ZU|XE&E}nnK.qr>I/t=/2{0RW h!0рz^f $DPOgudi /`? ^Mo>珢t)m  xv0o Xy#x0!A' Ó o)S~ g$h GfﶇHnsWƣTXm2NgK^ ƥaBKIKREsyyf VFyX\¢-: \y朵'ouLM?H$BPV~캈S#ReB^),6byU>`2H^-R>? zo#6mN"CHOTX[@*+χ䑈:Wp' ؂k@nZǪh6B/QǢ! .VQ8:2L)iWi\`seD8Jtr`]SD:͝L|a24z~#v*Q\Jy j.성j/B_es|:r]< WT.N/x @`qW;N$i:Zn'.]ޑ`aw~[+QYy"݋s?RjZ!(\B׳;Ko\|@Hyݍ? tR)Wڶ9WRaGZ JRQ' L OĠwi*%N4`{f{]i zT}./nmsTgz6#zs1u[0amn"\B']p2z8u!y7D4Zu <;Xc2`"u=DMµNPH_ /rw# 2~uMճ#@ۮ&$H0lA~==n9_p0㟻'?:ry)u}1և؆C-O<_9َ8li):bzx0$*]i!q JiU䳯Oopc0^QN#;7[ tN?S2pY˾! $N?g_ V;۶*@X߲&/CK«t bJz:ŭVR1LS'0Su,lk 5 0`: :`8W\,*,$3ƉT5-B8Sy~Cn`{OcY$lnG *o>x wx\޴f2kj17wezB`^=]/'WyIK [Z\uvğt v>_vw['/iKu?rP w+ǒC]\^,kЕ;OÊp^8nBNt|WʸWHHlCi<ɂttIJmʔ`H;:~bty avmY5^^tXH.8U%]4(HӉ:,GRrse@-=r8PSew+Z+9x1"CkgџZqj%UYw"$5.y@ή7zOOX,Tr:f ô\~X f/!_׍upʣ2n^t-߂ah/sۖa UTЙ@MHOu^C3. yFLɨiP mİZ)&%=/=mV\91sj i  SZ C;XҮ@G& o8PZ"Wiw >_98yೈ{w # t rZ}3X[Gz,pobRAZ^7Bc 5YA=e?Q_s+@5~\:FUzڷb\iVQ20D$-VGfQA M`imDTٴ(dW*DclR=+Q|Lambsy| Wp5/&BZ݇0Oshp-k9Og)_𛀇}w~bo# xeH:]Y+H$seh#+O$)Rj8?;HCu:U=tD N#aatߊ~YA089@:W!:x޹ѧߪXu{'a`AϙNo#9L!DRLCo;LNPbS%t.W 1*h7`5ms:uO*-Dv:~_ki״B7dB?^ 'SN0/'@O8sN0e*,}Q+p\d 1^i]CeLӠW:ah#qL/&G@G|(Wdt04AfSqx ƅ*o!]N՘]3d_w CОGUAXO^}4 t-=was}g . ע爿GtVKE%pWԲ+``i7't"FX<i*^By  ˵XAa`OtUV:# @WlsdE)R< !tWj()_*S;hwi+pt+f|X.͢h< qE .:܆F*id:P^#2T;|Xo*]TFQjª6 l5HFҪ' {|%`,UjUte2Eb@~A}B~-Dh+sF E\vA!zs١)#`Ja;yFxtR=g.]u+<4;h? XP 0>| wԷOWwLLc/i}W+acsL}xpPPwзIOwISK;W."~7a>7Xɹ'@fyQ(v ɃC m)׾ls`܈N9]=k'LQ|<L3$4T1&k;,"yPKL:I!t!BMA)"N/0Ӓ^DΫ&F fp:&:Uci `cG#5P>txzHoP~ts V@ [;M >bElyl_.מ;}зvO_tRpZPy'0-cƏ~adWe-mxb 4Ή?\nʯ{zsp: !A7{d +YA'<_ ˖.y:Yg?^hz(+p&: ,3ӺxC 0W[1Yuu Gx:)RF? X"Wb*fKn3Et^e )HgAHE" e%e^cq5pۓIӥ0o.jQFP~=^J٩^vn^ %?}U鰍PO"@n ӝ.8Ln|;1_?'b\3t7XU<iOծb[2wXw:vpp ue%96EVC*rf\DAx;?G>ɥs}>vaw[^w=1@KjmNX p9f #AM,-W*YuzrWD2A, 4aol}x?o=c/m)+{=-@1G9>DTO{?WZ ܶ N(b]p;#ߣo')'LOiNCˤ3`Iu6'b.BFaJ/<@.Tlw3 ʫ{öGMoC҈ "FBN.4#]a|R>ŋ?s<'F\ D|/aCTius89 t Liv҆. 2$ιr< .!OիIC@M{Qo ^} H޹O ȦXfi6BT}+D)A:&zE!_J@e@> sj'\k E QKhCcpg_( NĠRs2TJ>I}4R7]f cۛ+ :'9⬛oHo5Vf><|\1[(e%g2zfR}¦x@7`4QW}|qhp RL}CѴANܫ8gv84Wv ˬQ8 eed Gz9|pG"\d.]K=+.|rc 4ōy?S,o2kr僇u&p.p6pn!3S\j9yPOdGhYat_7ą(G`]6-"TtfpۋH?9{z0Ž0?y5&Qos gc|ӁL #t6Őy#jY\ !v5:uxH Iw_.2Va} S-γt]Nz)@x5HIٍxJNMSfDc 2hds mKfUqo~%,baaneP,N+\2%Ii݄ =>(K)Xu WߘnKc >R9j7Q[.iuL*xt9i=:=|O~r rqGf Y z#K _:0[KT4AX8SqϝY.wD9HJ) 4BP9Yp)ҙ4Q{g!yx䧅tHY'GGx?]!Ў/:hrZ ۆI`9ې7E 0uGFݟ_>;Ux G},Zz57A`i(!WzsSkPEĆUR'w7C['f$*k.w |H!oK(pJX\L??!l E R{1~ O͌XGUyFM aykHߌ_{Z C;ҭՒ!?Y@]J 6,FaM]K{HzqETzn3OT9;4.wѶ~o@X ;K3RiСGv7HXvs\`mۜ+ΘO]Rļ#ru:Yx\<)TJ^:L`ÅQcq ۜ+=QY.lƐ[p$i<.k&w$Gklёi~nނsޯ;χj%w9y Q(I^XҤڮ#G?ڷ5:MAMΣa/pWRǷl?\vQH/ C4,8&~WzŽUr26{ tk_ +2dFyIchpfcO%xC@pe:k0;jU>?0JaUW:82E.壅_ Nru= 5`Y۟>ɳҺ8E\MgӛR@{m:y9L@PyUe$4 790U<J9Z(߬=Aג/ OhdD3}wyw=RЍ} y` UB(UWRgsJ7 'JON}kPO,z`0AJj`{?FqY8a4DY SXlzv}U^[``f#SX!%Ahk wd 8LGO!TR8<] @A8J}?`犅L4ƏXxC^}sHoP S}U-WazL2d4TX Jt"Ld( .ԕx&G!Tf2# K |SGs [An%xi?1PW%U G-b[+ꞿ >N܋+B7:io':/XdE/r + qtۧC*8dȾ0oRhwtKjv$`V}\M@v񷀍V1Pzd4Ϻdv@#M^"$6M@b\у-}?xr&]X*޳m{%k7$3˰!M:]!RkO \a\a, OĪ|H~^18uv5Ձ7NM0&:iD_l՗n`A0١t.h8ϕ2X@9.40KT~3 ;{/I` Ƙ }q? bjPm}|hTAJlC8p< R_Zaw˺S0 @Z&h Rjt0IjzVhh1~#is|` l~!_^jRK1gP$ *hE10}o|MtV.KVk)G2L"eq9ɰ6[o4]}x/zTU{18p4IDg.KPɱ3z(?vMΚX9k҈#W7T`%}17XGĤ:wxC;I#CR"kux5X*X3fOߓʎ߮yE<Ne(I+[2{0Ezu>=rQO=r&_MUA U_Hpc v %~ ߃O=KNGg;$W+(Z\mc`q&vQt`' XԻY8OQ ԙz\$> 0(vu^vntl"76!x *t&<de˓\\$CdkHa:6hL$FkU":9ʾӯK()O,yĆܠC(/,l*[lW,fm7U(\/xEJ)۞|:G]QڇNnTKwӈ#KDF=0gM7bgEtq|O0_#F$^? .@`Dt Qo!~__RGg,$FH@}e@1˜eˆN%Gc ^N6rNOHׂIOFXS.QM_a2l2roZ64vh C\]9 AYc5:4^4K&c.ȕ`ƫLA*ymAL HR@Sס][Um "PZog@ѫ΢'~^3wr8,W*QدϢYS pA$ &Խ»;s6@ ?z%~Doӗ&8XGB-Gi7эhR&mѩŋ9v;i2̰zCZ"`zuEYo;_8rWB ƧQwMEF9˄č{gօ/'KW'&}J!P]UyɅy#{ '7= t(\F( &ߒHg]n\ F:]z=쎧+!Qj$۔OdG:od#&_"auG>= 8ޅcխÿ|<BC|50;qj:W$^ڬ"&n*1&w)a2͡!Sîv^1Ļ`tOװխ :<w1H-Zso[ŴjJINc^`|(F''sS=.P&e)ؚ\ t0fڬЬ[8r'c ) 3}(G?ypty(;U.7^,bzDC8+l˂k~Woel 8 b91ω1F&(ڄ13.vG@]u`!NOVK\Euyc0a ׀4 Ň|)t? :g( j`-OEw#z/)/ iU':3!񳈿#K] _[?O/E|[XMizbu]*;h|Owcp}jeVT1vWr: NI|N?X~TIN0vquJ1I UBLM2}a @^5Ķުq)abO_ijյ˖ #Lg]>l浳"ϬqHi~gsc_mљ}4<4Ŕ07jAz`6ZH ԖC9g9{p:zUZ_7yC|Def=ޥwFG#t\<*GI[FfNI@GpQF!f`8> 8_Qp ?u#p<3AIy񇊗C&\oT}+!QFْ B_Ot|.Y%=`F<&BƆe" MG*j ~f#x+:kgk`i%eTg3 4Ơu:)Mj[;`Nr/8fo2xtZ mO;ubgMEh;A?8@+ iՓcXQt6h6?p8c?wã?Éy'-J//N#[ fZ(Ӭme9U0c32Sq2ݪ~- %@@!^h7aQNE$t> LGK0e:G;ţWQH_!V?EpG܄5Nt 5dvߠ<3#r?S^ p#h3 w#p-<7;quESQ !H$(عWܲ5{ea&fB; ,e$gc!] q-EŸ!&BJ!d4;|_3,NLT :Q# [D LRbjo3/c_O{*dg$Qu;_̟zcr?omI/;Y*-A_oFtٚ!Ci&.a>u`K pYsݕzC0D5(FE;&x2SE*:H4>Gю$#{ WKA3?I l"(@sH-\=Ks o8@oX^B4߈<D/ KGfhy^o:ݬzKnJ+ռoh= iHl"% Rcw3HO4C.ʩh$!kאA\mկ m2_]c*YQ_mV[AY"3NL:RidѲÎ:4gcrJoQ@o?}vscەR}*Y0F̀ER<Z]RzG( n oj]>3w2L=D `(#ij[=FG?Hxq=}L}sX.7H_j _ĺ1f븬zQI;ׯʡ 0|=ⅈ".8 6@$1du(w ~?,*w1i)!Вbj ٌH[42 BYnMyNW/0?WN≐ܛ:v).QK~]$Fm'4+өrq>WgC!x!T\y;7GǾ["p25!W n(!n ZyW£ # ?V]z$"r{Q]vyT$M/2]\^\yQ%3 rA]i]2Q[ۯ^,/0KrUeI]#+x;<}ކkOC|. 1(AGrT1F M(Oߴf]}*Vxb''jpQk]4g،tkH-؂e~gDY"@ $ةx$"~>G{(x&7m=?S{ofA<ލx/>g+08zQ.U^&+>w#RU_:]A|zP= \xDL4jkdNk֥RM ROe Hu`z*6qNp}oX(b;"V;`NGSq&%ӂ0uۭ)7щŢ *c0O "lUP'Kj sTuQ8&ƏšѱN^5/gM+W6Liz&A94?@l=Ƕk+;$?q|&t_}k%Oj>IU_\"F|ѿ,t@0Okԁ(,JULyHYodi#@_뿁9?N1qO_o=0u/J4$xd }֘Eq@FKLlQIe8Ӭ8hDva MRƜr](UI\d{>R !bJ!%.E8Kpe9ڀ乲0m*h@΢jg_o{gr9?[~ӿs{2`6ؕ3'J2V1,TrnªʃGH'@NkR w(tǤE[u\p;j5z I[ :\`.hxA'邯ЄxqKs&N0PD‰nqz5\wiJ WB FXY{ ⃻/YݭYPM<ǡ!_ YLNLz*S? qwkfĒܚ6orH O#p];[G%v%zKɘL+ݘ>E*Z*V\P ^<Lj=+]{lrltO5pղ Xy ?˭VmH dH4|EO@1/޵?htltMq{*3y#+6jw7YQ Qm -YK9\Ul<&8QpSHGvLL^g /&m=O*m7W5ӏg>d^əP+F&Z1|\F #. t~W;.Yݳ*_xBDx`Mtb2%a "~ X4ʬHfI,z֫n(Vcen97مELV[|rj}T VU"#?A$,yb)^&[յBtY2§9< `VDEDd ]@F| ~Ly1ϟчO<<1W孧Z}dX.ϩ.;-2vA*V8%X ZHG;  !`PˣƦ$c Y?Q07%v>TZh<ܵnCni[7=eԝ?5Nz#+D,i'Vqq#O>5G}| I?q*{9 @\e !:1und 2_烈7! Y)E+u!"JE?N8.sJMRJש3()q7[mTS;5PŲ}YTQ&$wh7%5LI*^,Hƌc晉J)U}9|]؉W0>zoܺz||t=[(ЗϟO.KǕ*!_&qoK~. e z48W< ŎrDu`&my6yo:HӎۆGǁuc :s {P^@Ig 'C# 8g :\`U5h{C$OG-JTDQtIC̙=7Y|RFRǨΰ:XTV:V*? 1̢ٝLAtH`ֆi}V]tt80K ={| rUWZB(/ &ئ9 $Kt܊$CwI B;8 {}l8ہ- Zj=eZis_]t˘/߳hF'VL/ + yXT/ ,T<09@RMNox& I`ƵASopuc3hd|4 qn;h {_-ehɷnz>F;/A떯uGʝcHTx=_ xS;/^Kܰ ?w)K1+ûnm:?D`? gwZW5fnh5fccK, -Cጤ{r9JC?M4yO/cpPRr l )\ ,bh iekec>'ybYpЩ 4]({ ,W^u̇Cգ` Zm;p ,+Wm>G 't= -^] @<Q5M ~%Hkʱq ؔd[HBCo.g nB1nn5( i6Yss//E:'\nM87r1!I``N\io|+t;]Nd!^OmN=>e鐺:+(M`7\z9ݺUtlXpns/n.:zč ?/{g4@ï=N/DŬtUX]@֢hs,wk%YN:zzUWUǩ(Γ~Gki!CW</&ԗGϨCҡ[џ94ч\aWB'`BPyb evn)E4l7yQ1{v'X{qp GT*dsTeưb۱Tl{n\`ly. xd'LEjz:?68OKE#^<߅n|_xB8M4j }蠟/e&P?`:8^)  PeꖋV Tt9xTDӟ q^3 _ wT͊Q"( m.Djb $rY|7 Ar_:X9P'I !^ϥ|2^]6mSCRW4:`Sӎ "wPwre׍Ͷ+>W& ZUˎUޭ;w~ǗSGOU*KJRq>~q`.V̳&ݾ ?4o?8` 8t!< S̃,9QtVK`p?>L! eA7Ss>t^pOAxo6;6G=8})(ۂ[61 ,u0 pg~d*1 ^AqEXz:`xňl(]t-ϵ˴ 7$nG0,$zf3ኳP&4WBi}wH ۮik1[['ښнK5fkˑ FE[$X خRw-8OA@]}XKSg #~۲@ z U^C8&Gj FH/4K8F?k.[A%f˱}+7 ˉ43sqTң\,߄h`4mE%͂ ö>ķa-Z,WjĀq[eJ8ؽ㜐jeES/#>̦)0UaS*c?δhlb/[FeZ8ᘅLa ~ۦ{EQ'OHQcaj@GCwȨRrW$n3 ;B\\S/kd׳!&iiić$-&@,BGTdrG8 ơ@BT2!&<[4 qyJ}1?8Eg®Ex+ ˶XRuA Uq n ؘ|Cm (WdgTR.sQPjVf QS'ݼ*N߆D2{Ub{5;Q,):<\B @Zz+ }0A`ԩLӟyl iC'nQ~\yUsFAxv m#)麚#[|\@c=́31m`[oX!qWnŽʏ{,׾|IS*:f%޻$OD0v}Th3aA2@f2xL i7q'r%+~g9#z:x/A> <ޅ{Zxx! np*$@ߴp}4q6dW?8zjɅ© )揁{h_B/iiy(5@44pbVLb["ylVeM4i::d(L VYp6[R V|Yvl8տ-@"0֔O!_( #<59k?n_<}/ U3<3i2 tEO}A|/:3$T3]Lxq}|} \I; x^*D6xȮ{4Wg~~87M^SpqM[`I @uBݭ=^hʚx1S7%]5u?} Xow|XwrrH57>i S0o#OzT :2Lf~:Ű( ? 9_Aw7;n>32M"n]V$vH -@0oW#kēpU7ǥ;|Є"N˄A"$1Ip As0 )qm텽oCzXN| ԆS MSi ]j?f5%PP(Jm c,+7m:[^ ޫt 9{p vXhR4:D@ 3(gSd(3u!V`WƬBgG0P)J^)q#Y{4m/@s@iE0ITVR $s(&g43o*t#P}1- v  pJM>08n%2qƝ#1i.WA'z}dP:ѝ+-!F]wh '*ZG@}+,[3eM!%KUu*0tD?3j#KoC?gкP%zyPzhmD,_JMv '6\Y#hZ` $ 2?q>ZW1kKDEp[n#Uy'f[=59M 8sxy쳃1NH*a}˗g@W"y5 rebͷQt 3 d4g}<2zؿD"KW2C\1:LZ|7IC2 <<ۈBO\R ڣ?E<:x3\)b uHrt?ԝG#f5?G3i DKRNRF|AgHzcF c ]0R!93ލ`.^(x Z L iGh"gE !麁(\YX@kJS}"6Jm-4:lz(HtI:_'sfe\g`sʗb<~<;f}( xNQ[ {Ů5߁e3nN@,< +}x043@{-A\ShYH#Q6R*a,;=4i1,L=Wpl|`% 9RXFro=93Y_J L^xl=eDI >y:EoFOCwpHrtrNHY0J3_ o}w#Ev8P퓧2@u1@Oiଯof?r!Aw5sCkPa Ů02@`3M.BGw$h| Gߴa1~: "U]H¢QjPE =D݃_ 8nlMj:=|o?咲f83 lJ:;hnWK Q7C$BfIXH.!3nڷ)IJE>3/8Մׯ."=- 롑-r b/=r5_A e Jynαn"3t uWfuad%ɧ!ags4뽱[ /cX.mqi?bjȽXH (sTP:Es#Q2Xse]h$p\㳞NiEb{1d@gP*YAtn:xi]ЌpP֊ܯ(-IE A|#"{Lc= c,/aC:2.U]w@a+il;!ʼ5'@M (CW;{i Lsv`B4UɽYIl9aŀa)\u8g|r9r$=;|fތ ?gC+Sw ZדDŽ)o ?8"~gX_ R̫1M +,]\ Q>.쾏Bl KZWixXkJ-mvV_j+>:PrSjFBvӚبB e ')FrXXݑCQ(Wߩ]jQm-ȏoJp2@J "c#@Z4o] 00X# @:Sʯ?a?G7+0X}NCULI>RP| qKWjSK+.$V ݈Y9s]VwR!jD, #WS:/ai%@bnr9Wg=zIEpa{DqKk)Ao= 'M=/`7 ZG@-pgEٍ`ƩT<p>7 ʎր jL3Ggc3Qމ/kp7VZ @ ז/2ǁ;}7&\Y +%%/^I{$Z SMX= K\ƌa=V{>u8o`Pp`mp%@{ JJky@OJ`Vpuc0ַq+QفFC78Rzm,HbN\et$gЅ>LdW*%x{D!CIl(+c(n  ELrE)p9n&#ɚK1F:ϧz(=ɌLW//FgWm~@F1>04+j @l~Gj$w*\x\KJ ߼/Ss ʨP*I!HM7 }7P=WױHC5VUVR:4=v$o# <:6kT x7fe-C * SXwo2~=zӅV ìXW+`cT] yjg"@O ֡7_s+SS-yЍPUŶɩxeG~Nn-@W+wi @k܏.I蟯"9ׅԍ{N?`[jG<)aO:OC:9>Q.PԳ( @+,b_'afϭi8d]\R+Q JҙO6lybN.L5V"WDTco`?;-Xnz$!sHAelfha pݗ/?!<]4oflr (G@Oڌ8:t0#_c\1<~W?pa-E9rB:BD ̏u%پa:vA9j#eH&4IL8%M!b9_6q= VX a܍el(h ͭ(P-&3ZpI`W?;JjV {œH;%axgvoHG ].:@l Jp(Z#ڝOQkj2@j"c$@4bD-!r@V0~FWHG/|x?{q}.ѿ qOqC#hLG|jg&1ChEA/G>K^xy81[/ JϕU FBҰZtk Ot}?9X0nwRL ,?*9I/HEس{$r*k ,Bh4˸8hT~|ٶ\`HG_vu,sxB"& :hUv[dBR d2 əW g]m%._)&4*R!Pk53E <%##H~7"kVܲq/x tcS$'o\2c /T3`p ?:φS9;$+XG^v 'قW _a+r@[+ֹò*;<#p2h-X{ ݐ9(C,5 |VW#ȁfƽt%"ܴ"hҰC-G@w/X.c0,A(reKD%`ʁdU!L9q1,G҈*_+fD2K<~hs FrW7m]WډW:= g KqI нYYJIPW' U 1+p:=Z2o u>:{ZFUd;aroB9QeܺFfM\R&nWO;؍Jctz# OA EO4u=u hm=F;b_5?_4nkDZ.a3Pww.0@i_+\ѥ`{AkUx3Άn:t-0u3vBCc8bU&w/8sVTVlU'Wq@̻lKY.#r a䝁ʷB(4gtLgdŖ-/ r)h?}JF7c</9+:clPP)_E#p$-@QSc[l~@ h W 'i tw*tt=E gz~:2κپ]U_ Z^Xldc}b  @LZ{5i\3i(XLU pC6>jhDU ؍s.h{/ݗ6*pDvW ?/ؼO:0|_Jc4Aip ֔S.Os:v@,˧mdU H-I.cI|ri.~`ICB*&*{fЄe{d/ q1#89˙É[.O~;w?~ӍofYzA/~ ^/C|.fo(+PGqAHPd>ƥN;n. kK= ~~Wv%M}߁"j)߫|8ާiIe%0ܪ5~սf4yY<q;"eXKj @\|@#jgҮ_Ǚ!9βZ?G #v@IDAT8WB{"uTEpRQEWl(xX_Ո:©,o9O|K ^}Ϝw?s3 x7p왈>SO½sbqt҇ff`~wv0cn \56v"×k@]'޺?CWq)S%2@Rz=05}֭03EYhODLZ&0.,6#]b-ׄ\tx"uz~B%n^@s.iF愁Kw%&.`?1bDUuʝb;}]= NgR)8NуK:pGqM9m?XP!Wh6XnA)z2$\5G@c泖q+]W 璃߃U<>s4PoK&,O@ZhhlUc#,98O9X.?Шs[?g ۟}j h*CN 5x OE\1"#LU>'uH~ p\½b=^DJmI/3݈w*:iً%އN,7h|q&/[YXJ' wCAU8UxRtSչh+dNk@߈o@A 0az=b8NY֖N+{퉹+Nһ48\6V0B#w L3tAerRNq欿dzG>ծXtDjƛ?ib az_l;sT4$[fÏw|Q0x3߫+ԑv}@J@IDyG=jjEks  Tr*XL99UK7nL)<9U'TXoC $$5PzP,Iʵ}ڬJ{A{_w!r+Q!^Q:>WBq Nq8~'c,4%tvz@|aXVl;/; r{~ڏ6JUW-ut"`pKŧOCp||w]?) AJ2eb{n*c2y\TM"4t}s,km dJ/.+WNN.f5z Xry:O=<6BW90`y6$`/Cx՝[h= G}جszd;Lux&uȨN1t]0]O5Toi>g] wl3uJ^ g='^lybHɎWi`"w'xytr36T9`;v=1wMp8@>nX KCe)LPDP! g7v{ ֟_Gۛ}{Mъҳp7 N _^K?^YUvr zqgV`o*8䏳p kNz< .:߿\S8x`zT`oŏ KʥbELGY6xs*jO.Qvα5nq*8`q; xE#_ǃCG'36Q| VҖW~N47Bv8/986~[>/3CUG; HvvG|)~&"g^.4n[QǏmI5so+wo?;ŬOuW#^=_8`%+1LLR1wSA0awu \.ig߀x>ƽԁ&#p pi\ 8R3b\&2zP%MG{>x;YDdoVe[;Aě+=$szq`ޝ|7AŮH 98$. J@ I0~'pBUܿ' ;la'񝷍J8 ;XZU|~,SRYq *"|<ژ\^X0#(,QB2@pt)_+Qi$UӬ߰vOIܞdl㾑G.wY8e bNPRVZDi.4L=:q&Hs X:OFd@rRb%"؏솣#xPytt#͜1m:h\JeɑU:~XEmZxk/bG'pxt}S8_ EH0"?vKn+L#"nQjC=c|"TDiQ8 W8E6IzEɕ%9 Fi@W.{y} an%,^e(}g#r'>3*zRd'Aǯ9_#07qH`x=*f)K')l*i7"k9ʖHä#8PP獤?gSRDu^OMyD_xpL piu:j\U0Hz 0{'цC 4:0[1(< [K6"-8蔁ʲtvRxNb*vLf@prW[*6D}[4v;UR<ו}c2],[. 7C>¡)~a1$j+EC %+'!2{FُM-X5J;ʪWM^d H ϥreA)< 㛧p`tb/o>::3wm2TlC޽5nbЮ8_Hg\#pc4nTp pWȏphl?]04a#G?wy>F}kS D-g > ;z p+Gp&{yKhދ;w=K~ϗܻymhؾ uSdHN9ě7_*?t瀯Kk( YܶhMg%W8zrl,c☤*pMFZ8M7OȘFW LwWakKs=ao[߷uͻ_7{nVv'4l*H93Rz I2BML (|fZ 'm߈Y)?MUɺ/"j-Cʖ6ns_BqyQBW\)&=!qby#pn#1.3F.6{SiltlsE.chO#o>;rX;]O8?|tp f ǒ!xvՐ.b+LJq06\ĝoZMNrRk^k!%]/T`AG: O=Z)"_`-`Iv! ~LĎU@*W,G"ߙ|:svn[sv!eڿ{繻˞Z(;)0Tρ*3 s1K܅@<=Ĭpq:܃x >@w|@J腢'Z^2Gr5 =zݑydvߵUzV/7mXF^7l?|pA!.뵹-@h ?ɗ ^F  ԏ|zR5mGduѺ:?+pfqá?}KHuY4`pBB Hy#bV]@e {V5{NU*ɫ=`W|T{Bq'q'(w96RK7>g]uc|zPrB \ |aMGu Jfh[uX$~*jR8WHʷ] O|/t,Lえs(abnϡ]S`܁K6/@Ag;o%`ؕP4#X<#! ts/&_(WI\EGCq]}8Mlߝ~ۦc7B/7ibDR.~& 0$[ Qⶌsd2N9$l^-N`D6ف tAm}Tl\~S@ihUfmޕn 9X%GwKOP"5eett6 o7~㳽J`O0c=fAC} N>9+OcoC`} Vy$^pVX8l lM\s˦u_S?m6\| u1s@_8p{́JL tf>w`Y@0@deaL`xswЀ{+idr-ˏ^<8gp_߮#b]WI2\pyш<kp={zWB}zP T K gAL&i1i0BRx9 w\ 㿣UpAIʙ.ї_gZ0OL>\2d5 }p.d+W, fȕmKl.txU-5EW0{ eCJbӈe6 4w6Gڵ4e,8hGqc ,fO>˙ߨT0amjaZ}}vU\n rv:g;>c\ *0w8cab9+Ţt5ߍ75d=-]U*P۴q-e勾4sʓ{N;Z\4s(̔oɡOEuUAgkX7܎Ff \F ­@T`*SBvNX)P*;&S[Ʒ&GP>x^_;~U bUFgDp45b8oܻoeɲsm .s.Ye -ڎ%x  b趀]W҅7&520D8h o!?;7x훨?+gEr%Lj9$yN8C9u=k/\%$Հ`y{DM{3af3y&rȫM&[t@j<,˟3I0FGTJ, [xAi:j(|:C2sFv]nIyЧ~O0bS{`t TQi\%4WM<> · w}zşCC2EX)0PKJEή)c88T{'vwv`oN-sNxG,yr&d7CJR6ml{vSmRyK|a8U2-):b+_rl$g-]-:*gjƍ]wLn O:/Rc.?#s?kdHvl>3ֹBI}eɈ]Wvm rېv9oFT<3re$b\`L v4$P; Aj'at"{=j1AB+M)˜.~IҚی&%>* X$ #,y` Aqɧ@OGͿWݽ\}XDm70c m^Ƥ(D:kVTe ĸʧDH@p02CJ/;P:F Ӕ#| WfP,7orB! V}\$P5ZmJC';/ZFuIx|kQ8}g)ПRRsQˮԄߤŒ%h0f0G0+~:CD\)L_}nDΑ ~m`o\tqKAh|}@:_7O77AOo5$U$||)0F\^U Ѝ]Nj17o 9k. "pyve4ʭ*_4;@t(DWDS@$nW4@fB_HUX nDqUq^pI_&=O\X L{:NAJ\iB.TisD`] Zr[Ade8p},_1NG)&^`ހaCc E#-u '+k,=V\q|D BǶ {0֗S!{PCEJW~G061[VK$ʈe嚈ŌפAZ ܥX'uPJqϤ%>xÌP.RҦqT^S Eqr%t S10^YtÃ.q86=#+X0A tn ߩdDR#ӯ|u˹8 `s|DBѫ-u*0Iˁ0:k&y>ELKJumz`J>0Sozx`}k`4X)D?;DR͐<~YZ΢yjx&7r] d*qE&G]'؄Ap;mʽ$:R:` ,+-F+–F)L~\<  ц\紬berr{y28k+ !80)&CMcø<9qpyP]--i>91j0m ̤:3@>r]}X(< KO_7y#VȀ?#hJ\ƽSt~j1x q$-£u\M\txOJ3u.*e~`G "`Rv]p6= Gf_=-GN% dE0wFW' غ8'Pa:] ބ]0'CաatSSF1arbӈ%03.t;O=@S)&MGι.#,0JxýGtm@LM>qoAd [&#\u =թ "E{V׭oDDAi0-lNX&ln)QEe$g/lRh] SAqvZ.Rqz߰6`?yܝMVk)G$YN&)D ge||lF|%1s&M̃_fR%2֜%6.濽@w|kVJ>01n Ht7quG# R IQ0"x@  :8\u5T1qI/7]4`Q"~}m.wx_*o96f otiA TғS`C=AMmfτފx&u>cL*[*^C )s2܀_i /g"Z" ۑ87uH i0ND{QP;s;?o{. `?k CЁ#g_`qG1.m@&FDIKXF\/NF87 |r,k dkɜLO{A'X8[p_Q-GHt7+>`{TDQTV]uw㿻ˮ׮r#("} sGOwבY"3""!_wTfx/ܔd?B(4}ПqAcŁ2>X /}8;Ts:cΌo@ǻ%&fȗH{V(L|aD FMCYW.}5qZ=:b!Nّ'Xzy9;LőZ[ x$+Ad&oT5:=׿3nwN"ovU`:bڊ,J/!NÞ/Do;+_L,>w1:2x eϼ(i"N_:AY?d<-E؉Au0zq:Kh) 潟:_O/2^$H bC@gA`\*u ?_vNG#xTWm Kni y|{8>,6V]J& Hԥ4S;=G"ǯ_ `R_U^[qG")ߌx(dj8L3"GC !&4'exU4|E5 V_?qXӀGT}m_J&V_\qwy- xisQ%S 㙎A:N^j盽UTjЁīZWWƏJ+ǣ_Qj" Cm #va$foXƛ5~ %T~xu8`JAdyr[cQǟ 쇽? 47vikYFpY)3GK8$N-t#Hr& `69 yJe87^Uuɿ7^5Xa Ir;vGid!p"靔xm*'S_̠,2t  $g5Y!xW*d''=;>/ wVPxa~NcdCNԖ jwEϿ4 ΡVpYH&0ê`Y\7>R9I ).OuL@Fk$=ޛ{NtgݭQ+d*/w20h D/iϗOO뺷P4?9<;1Cf ~_ޫzI(S[_'+٩ؠwm]Z2T"y>Ҋܒzr0^A޲['u-kyOs$/ . [*>y5%ڈ/?/z5G@v9(K#$'82x_;n9k@GZ6G(K{r敚72ec<˞9*rOn BӨ2OOG8 A4G_ON٘EVIA֛u=yXuV޹[SֵJ/AHlئCo *?A$4(c2A&GxŮ~kE)_K]O,DSO4̥<瞇>ֱ7 >2ݺ}JΏf 6YSjd0ƎDG+'vEM@3ă?RNּr358y::2KQO]H&QߣOlO5BѸΟ/#@́f$ƪd؋JO{t=jMAL-6M9c  0ʌޯN cɦ`FtbƀV|1`c1'c6N9{Fk߂cg , Gsȧq]G83< _ g/y/Y~ކP)>S $)!e8x z">*qJS3JoUa7'cl|cY!tbd0V+Sj#‡Ap*CBFWXk+FC @lv7T]'b o3{`֗5Am5WmQkmбcD ~̤| Zuk'u[C:K1~/MŢ_d# G '[e{.~΀כ`R}D$"_C ")D8]t 9:B-Rө<\":*LS+s о;U/E+bJs 09`1c| ThOv4r#G8Dz6-td@E7 &`(nXUi@(wu6nȲf˩s U<ι8?Fx| YÏr@5 "E~;n:pSmꚊ_"trD5I$ 7D.=}O%;̲=ԫ(&\qFT:{rnP@WgF[+s`:YU)[l֏d]?Ȳ)YvFw`;~xWCIxUX|~mNaL&tIRɫ`~Vy$xoܳ}m)2NU33:6]o*T)1-94Q}o~N8*}=R2z phxh \ׅʡ5@WSWy@J>Gߵj?=i Af|۫|Ȁx_/;\rUg?:Si3zW\{VPQNޝ0{H GuJ+qx"W#܆)o4S2QĴeR)Ks /cjSy(盐)mX`s[8ԑtj'6۩ Sykնw]`Ɉ M.Pw݈CѫIO4!:΀,oD`ǰDY)(uujW&Ӹ7ꚛuA;̓To`N&{zkFXJ:.b27TPɲ ˆĶi q۷mK9TWB:R@; s&7xifr]̜Eowg|ĈY%snNS7nn>U1`ufFDf|XlG'O ҕh^7ketV(b@V,Z쪂Ryk:p_}oUZ8Vܬ*d7[Wnkt!TrZJNGʡ(eԵ3Mk;:9#=*e{9X{3"ecnBp|G&vZ)vzN|㝰;όF]6|@`˰H$w sUC :ʘrAޒ7q :J>X<φdG@dGTX)lx<۸5O #vA$& !dbAuĪe:jWYn//a0?+b>BfB)_/3tw|A*c]߇2+',|0hMk]j`zXfFRg,TVhCCG1 /Q!dP4FGƞ^eR1,w"+qq,ɽ \KסV3bVſѣ/J+KuhY)W/Wr_"y)R$F?B 0&,R1W'^xC/ulLěr2ɯ3޳ƒ'xx跌W#znPpŐzS} K䶨,Fz9yD98YΘ^W<;&,`)y B3S(atyDF;Q-~6%#} 7_# 7} b zO 9W^0[L砤#9ŎᴗgKQ~ׯ  :8QW9flv6?欗B Z8{'On=UI>/>\PJrsY\ӹqٕtue{>:oa#Њ% b6@_oL aNɃAfCW՟;#KGxۜ*2% ^HDZG)9&9OJ~ߕ cT;}i-P4Q9@(3W:ZY|hC#):6`௞N o-lS>H17  ]y){RFhy/! i>!!fόr? 31 v|8y pk׿nc A^ ` -JɲY($j;t@Zs %~e|؎g?9 2Us;!8!Ȧ&0,w]cF{\M?3*_!0-*Y(/cnxōW8Ni+92t(lD3+No^Bͯ'vHBgX#p|t RÇ.NJTit[ֈoQ?xVfʖU qhEs!:`:~ekvQ\kFڧJG%]EKTqB3'+?V!?>> =X1/6u8sT%CTV }#mЄ&Jϟ@7_Q.eR}}93`4_xsɴf1AEJgOӁtcaPvu*H寒xyNB眿IT^6]/W㚎#_ljlȵ.tq5AWj@IDAT̰BيXNݘ}#`;ΚaС&7S뢎?0~@矍~9qZ&eKuKŋڲ b@[&,R |T_JQ#XN hD M`]MZ߉38ݝф=Hg;QqB؀僛hʬ)r[O `6q'" P<(8SS7N,⒗`V eQtwn~:bTzY6M@axd&6[+QS] %~o:xB66:*&6Xn'}EIyWl`prl`L8P3}ߤV'ʃI|4緖{r4(U.>R([(`X{9DT_o]Дɏ%F _"hH2s⇤rUA+q 6:]*ma.MnfS§ {;r< v yA |?EX<ˬUuK UA2I?^՛ @Z'vOڗ_:@$c=t6Cxp[a/B ރ#?yqE ӥ,Θ>H,w \)d~1ߚNqF3)8L4 g| hPt\.E|1ٲ0kC6^3L>l8FYȝ|ž7z`u&fmd([yHˉ澌?fϫU&Lj#?رpi |PԘƍlb>]ʙ>}CJ0r?)#'rr<܉k*V/@ )b>T oz̟oG"7C\{ֺ:yKI db|{n3I#2SX뎘6t2`_MȷW}K/+t[Ryrlf7%I~w%,s)>m9^}OvD:u/:Shny|ǎf-`cynǺ7{3aN-ƧS,o-,L@<N}pBKbx:@g gtjxG=j&zX;9^骺y fh) V~mܮLou*ݓ~,2} J=*j :Y~ By䵨3j~Eđtj-L[gOn_Nu -@v:$/b?tU;Zrqm$;p ;6Q'xGf0J 6AKv'+ P뗏`e ȜaXiTEjƅ{%K5nI$GsT6rÿa< +)nzt]PW:~  f, $P|nNwsX6{_O|">i&F7c7}ކ"{#CWzj;X Aiz ?KpVoƓvپ5JױvN #x\wG8n?΀aW:5+ʝdZ;bi6hl`O:myiX*8PQ{>xHNh:D>4/EC |<]N;pLn0/}&L1l==}h"=N=s8VS^OFj%,Pg6@ I 7>ur-U<r̞c~<#9q*5@:vzi}F]ҩt:k9Ʋ-Яn9k8_\UMi#B\#7_@]Vn0Z←t<:D J YSwmpf6FeK$6` V/:WRʒߘ S\f-sT(7ļgRݻ~m mt0Ǩ yAY^浔3+mxMu$*q؞  ~^*3vo_[BowΑїGv&)@884>Сmim!?ķP'Jbg6DbJnr"yS' ";6 ]+M@\3D&8vU<- Zḥc?q|#.C/ Do6F#N,1S6JM _򅂨@U ֹUW;*TR>I繁&Ry{pQ'tao-Xx߰e=Nv~ݟD[dw޸u2p|7B ,2ԩL>ī\]}A :?<G-(^p/REQ'80cla'&iOYU`PNo@`8G=̀3*1s=@%f{APhhyʲqdyBe:8˃,8R;X/4zP>A=UǰoĝA") hr6L=#c@rv:CΎ>($ceN޽|K}Y%u'ʧO2$1MX!CG,d6 LaYjr!IV0E7g; @s$|p06$2b_! X'A5"X_[.sb}F;mg㽽;dp!Ї&fx .)T<')S"5$ ܡ%W$N?T:ʧDVPЂ\eZxѺxi]̪l"G|ၢYZKv|.[c fh(c?3c󕁭kZ≓xc h#h%s u{ :1j'Elȥ~Kp4T1UAE54bSW0l_ L:!,x#@ylI|T%?b5;Ƚ]Ypj1΋uA[Ѹs lzyPm_ه!xfMދ?G(:;m#$f9/IG?*x$Hl4R<\忇o )a|<{ڽ7 -*~X7Vq;:G.ll8)0e/㮶:t~EwpA?#1NtvQ2?< .--|a%` A^ˣUI䋐 #{ykyTYKө@J'D; jH G+ZD|_.$ϕy| @{_~Ln&oItlލtg#iztqS2#|e#=A$ Zuu[P_:626(Bz_qlTȒVWM_c'6/X;$ ˆoGO(K, ~-_N8SOHj=:tBiLA4r9R:8Ǥ:N8>JeU*bFg87͘o쁝[:G 'ǪD:CQKdf` _04<54?_( rLdSɃ<²ʇ-sAT*㳃 F:'YV}P$?ytE1N_fg9'L*=/aOG8ŸI$vbCݽܶ/ ^iݏ/#ܞ@\諿Vb'LΪZjTf/q|;;x:0e2PЉAK0GpPxUF ȲHk'/sfN/GݴVD3J8u:l^ڎ8 @Sjv$>dPQuk(z; !9ec?vu#hsG! ֏⼈*<&eׯ0$V8ͶH'Jm%f>8}څ?[v1#ܒ.\; /ކӽSű`F?is?n`^C[(d.w μ7PS7{mGV~ m8'|G>eG rgE3ESux.yEӜƉi:n"GG?O2;ί]mp1^$SĆ_ _5Kc~l*;C?_<;+g!Fn&) ;x"wO#90ykq [nzK=4,g'p/`$ !~)в|j6 `j6BFok < 3iT>h9:ض~#% й zv¡YO)9|FwrC{zF ؝o ЍFTb~2Xɹ{Ϟ![^O!G1F-#D0qv ʩ;%RTf./o"8Ѓ`$Kts#5n!I)Szfiy)su7>vEp\(+NU'vctpN[ҽ̿j!쁻)7RgR yhjsŏ1)c{8joW1ƴ@Dj#):۵`/:ҽ%a@dY6p`ͧzT?*y/ 1bddπw4Fbp)\3>V0C%Sx> Iayٖ9TFX0B6ȧQT2~zoo=|!BnnO`|ej>#B#xۆ.B#XL!_w?nMo{Cm8D#|'3ɀz *Ƨ; ,ڟV \iñ Mx魓B0PW:^3#aA77#'ImVFRh6lɅ#B۟+]VċoX!ktٮ Z,0`Xbia)l/{;!OWJ{Tx]"n,Nll2.v XcG+S]],0h~ B73#im>Kq F RQ5bVSt)I@Y~ u߿eyfdx(kf*[Y `9AcZItR k}7VPk1_㍙GwYd"ϙ{qdР&"컼7׽j"<ڙ*f2{6o.[Rpmo\ޱmf`&@75&n,'{z̼֮+0%~& 2oFVhnW?ӆigٶn(۲)(-@Ldw~/qѱiı ٙp$!TDHwX j"q9 |1+_M#qOff0=;~%91%kgۇKVqPq3]OH֙ @ՠ UcUA}/)R?Uo -NxN42ν~ѡ|o̵ۗ@V`<9$}I:}uAn Q~(̻o/*YbVw⺴qL fΝ:|u R 9sɂnV~)<%a7vgTQ*0@ye6Bk:^G@d<Ϥr]p, *Ev۫TH^k@: x,A}a EVp =(^ws~7hBg.F8^}Kvp ๦V_2sZsY}T]^2N"(#=⸏K8}>(}ol~B 3`pze4d2{h1kl[4kl %ѝLw)1o˹g]138j\PSpp65):S& 34+pгnL>K:~Y.rpL=) %3kq fܤ:eo^706r 'UF ZaU 0Ʋ6R@2pukSM,7xڌq\ǟ^Mep/͵mҌ5 zs$EE2'sɡ/ U?s!;3dގhBvϙ!)[Ud8"if0~mot4?}-$lnTYlzbf߂F2 {D+kXY -y܈㪮ގT.Ųݮd!xON܈, j,Y @-?_E"#k6UU$Ή=4`[|#|pj'ف] $jxI y0^B m؂[V8z 4,G;:H(2Q RB8:#8U()Ϲ'[9=c[`W!%ӱX&7vZUMOmW]?1ʴs8jXх3|c5F_Je/$SZ:bY @dX7';GpFwXAL|NUz>8ux# qN}S nmzߍ/r:N.#m%<$Gw8p,C6 s^EG!PUE7$MT Zlls@DdXGACkD_aݏg C%3~D(kzt }C<NJ'N@%e5h -oAxʅ"6h\A&CGx:hfy 3E^y';԰)=`8SЛ$5dO}2sS%܏t,*:lh/ˏ?UR/lh T_]Sw1^;n?Sgc~t NC71G(^&H;U(< @߸kT ]ѝ#PtP8T ]2Ğ [ka gPRyEB JmTʵjzš|7SՈJU4:drHL °9FQ$dxg#|Q0PW Bo{VWy9(oc|Xak8{'ع3@@#N :iQa矡 TRoKa~$tM'@mtu4bOZ~G ߷mZ t>=ԪM*.[zo?䛏,ɒU /ɺWķpZ0C *_>/67/ɳ@4`lq,Y`,p8 8|%$Ax-[ H0[m vgs"d4éݳIƍq쇇>r7H'GM|]/U˂YPb>]s30 #;c:xu}} "(z &A.qw~N@8; %Vq>),Nw#j'دQ)(< g ~.ٶ;vbs9Ǒ5<\Do2-w|͜1%*? [ f,~~NppZy.}<)] `)p[f]}CGZ`8:nn$ȲMyKlID AdBo|뮁gڣ#휋nB,I._(5 mH-fξ(%f(^rUg8u)*q"Źˡ\v"B{2x/299Dblnʬɏ$˦9C.wMwvNחq36JьS8g|3Wں_>db+wd}g}ṵ  r$;m6v&ܗy?P'ĩɢI@`,Y5?0ghxb9<|ųJŌ4ЉhN/`fuxs#) A˛˭Ѹ#\8zy;/k8i?=()ȒC)HʋOpݳ\̔Q !4G h [5{7k]Щ Z$<&To4\ rK]kZ.B!yH3q&2L"z:nOg/H2d΢":%TJz ivot"yU,.ŝ#JsUtݷy\ttfpH'@KlZ/ef̌f<7 ${i]az,[fLˊ+G@ރM|81;[VOnb_:@dI |艅Cyhо1{FyL&1l̐D ߊ 1-_:TC4%!*-ida~ R޲%_Rt*eI#@8zI,>Wǎ*Bf0+7 +>Cg 0bϦ&">Jx"Hn5N%":m"@ .@d,!oxټe}h*- m$fm(f{Ƭ#:q*_\*^(ڐЎwhwlLRɰh½ZPlj%SNڎ4 %Շ}FCp?U{5 ʍԑ TLxMG @3NA=.\ ja?;$nzsw3ZVB\uF k &#7ss kZpv(\gFScYRJn,FkHL_N|ᙶe6[t(9;v bgC:>]{on fM+*H9^Ydo7zھ%VT|)Z@q\H`-+V޻+fTY]`ЃY)t `lJqN!_g{PGt/}=t+;EL?Ʊ#@GU y+Ē&H[H|=G qG,7GC": jZ?2҃J9Vyz-TNރN?7sS+\3JOl)tݕt9S*=_ZbZz'\U {kbk*Ȑl:Û, M- @.ۏ'ҙL ~4[Av,xM_[.1ϿR97NZmkPT11H6X r-" Dh{J.>]( tФOZ}JJC'0fEn[`πp G9;|U: X>OcZj6;8v":GtHza0Tؔ_@y 8;԰5\N;Ne'~,E=TGgGG,w @S(ڃ`jhI%_AxŘ`;d92ke#s>:1t džwlbR#퓊'Fu.3wlشh5捘;Cs-w*g./+K25EGz6I)J/aJbB@#nJutuy:mLOH$xcbƔKw[p͔c5 "μH |gn޶`//*&>CmX+r9.I#>iqۃi7Y2tpT+^SRlwv`C'A!$d/mdtvV7 $QrKaotS–3׈#@\!^Egzώohm$|*Xu:Z5<bt߆sx; 2c`_t~NpJ2/e썚lyȈe‹JWacZ*7ۂSʅbV TFp❅BA;-/>HFy.Yx/=7 վ%@%[_s=j"~@ݢT" _u[/-K6t PJ\mfI8@Ѓ4nZ#h/!}`L|UHxHoy޼InRɃ0IGS~RyՍ$aS_MuH?G> atnGgLY%׬A=Uuaz??]HP%0USP_%z8 ZYnűKQ<嫸h.=2wacs>v1/Fk>tai6 CKOl*vM #jm/C0D a#e0oNps.|ߕl$,; J/Fƾp h̑%s|alY*oǓgY7uk)wէbih={E,Ybv-6_>`YeGreMsA0'ΥUq^Oa;[g'/6·]4}W3Ki8D @iV.ZXP̧iX?+`CkL7c2n. :|=t#sˊl\ŷ)} ٤/Yҏ锩!jJK-N|/S6ށ2vS:Yl(a<Ϥ XDFXSe=\y^V_./dzQ c,$%'!e[3ݽ׿k ,f%'"9" -o=?oKEz?LYA6-IvLq.fWa};CFGg7 bÃ؉@_!vBڤhvYC5s$g[=Ⴅ\Cqx3:Q&NvFb|Db"ccc=2?o 6BK\/JT y.~ iirNk RPG Mi "ڰe>< NA&1=YK7}}Q?ac|0̒86"'.(#iJONcġQ ~1b)5括.H]u7ߌs}ѽ۾h8ô y n'ޓuwdKM`&D,0 |'@+F@IDATǷ{adϴʕO/M_ /(8oKb~\0Jݙ]?My٫0/Fk#څ#줨 i0 [sDW`_ȏAsdL4%l 2-NHO" ?GS(5oyM{pFx< -GWEC\d+߻mGH;%A-G(OZ! i130;x""†e|pL2~ELTKГL>1յiMmTh1*6 hQ8ϼ֕d8:uJj\gF*YK4:1L\*فY/@WJ)7 BБ,* 'v_Tm8mz8kQ}<};G_Cu~~:XƦ@-t=y~ $D"3Q6tz.ޘb*F;6#{,wmsJvϩԌRZ*8c^}LzVܔ8kJ~V<ЈMU^yŦp\>u|, !M?ȒN |鯾dZs.0&H;6H|J&|v{3ݰd2̡zA{%`R-{C3#7mА U$a@h:R,|ଲii=Z* ЍL_LҡYEvQ.:i"Bm)$r$jdS|M˞/zq*&ǣVttXӲ1kO*F]pxMiսpPvZU:3Ŷ!-a hG KIƽ >U* S%[PfaCL5 0~ JYb<۔ʜg F;GI?JxH֌tOſ=†^N&YrJegRR(d1R+4T'*ai>fSu"~&mYe'DY2IuB5* 1. 4&(Qdj,P( %ރ|z_* /=]SIč@W}ly/Q~|g?)BxDŽى AK a`AFH LAN2~M@gSQ>?!DsG^'d~ 沀 GJ;Mǿo )` eDGZ' rĮY]=OY|Gl 26AAf'3{$?3NL†m첽an*Չ&$wo_h$R=yH&inFCR E" bI!kAR!#RcsKO&5#xWM7w#\aսp[t}Ox#˵i};YUDZSl9*_{$܁ #=s)9 hqPˉL+x:9k˙Y)[t5 O}>dUDg@(JY %܇liloB ,?~' Ao&{i&Z] uEhl\ӷ @ .zˁ 3o%Fv$?%/_' ߊ ˞c~S3YB o)c",'>D00fcWFpȠgKP?ťJ7'1'?]lG+?: kNt[ $ҩPmXG(j X@זbG"F,0-o4/?t߂a%gzx);6> ~Гά+:ozS#{ΉFϏYT eؖxcM{sԥZ\߀ÞӇfy3ǩ]Λ9v vxh%ih31@CLͲ(,6(( -Og@(dOti _4:kiW2Yn^yȌcV甎L"1V~K@NѲ]hl+p"O)pV1vQ:3i/7wdwhmA<<2` ;|nc\Rb7cMf[hj/Z -~='>0@񢤑" TbmP0$*^nc AmSp/}*LF*GN߮\b '9vZa-[tm%-x)$Gtrp`l,: bp?ق+p@M7\v<A.FVn:tHOqea~#)1ίCE2~ ԋ kϲW}tys PWt:\;^(AUJUiSɏF/K j[m|e !K%Cu3go7$4cpE5giޟ ͒v9p|ő5CK=;'n0qF" DhLCl\S<8*-_NB`b8:^ޕ'KOKo~֟dFa([bASF'c?iEPR9P58/cYXB@g3J;uΙߔ!U9IFlYTZjNG NqEyqa,Ŷ яBȲoQ*l7=ΉEt~e4NQߠJJ, ōxiZWKc6בo}G5GJ֛WIRT8gJ$t<޹ #Gc1i2jLoI w:C %@wR!Bimi`^lӍV+ξIΝvw޼y޷'㲆x,{L{P(s<}7@]= `">B܀e܄%VVSG1z q$9mO+H >>>@ T5L=B:OeϟΧ:J!UNë` Xk-YʲK[V'Ǎ Q4CGwusH P6d ς:n} y7yb0KB5 :01n^qwG)Fs~z jo<4uީg&/דOg1)Pk'210>V,+ܽb4$IlR$qDa ;-Xi@zDzsq1cS S7ꢵ(RXEF#X1W0 ~"f/k{mEh7=/<$Lݘ6|q5/ XVP>WU!U@u#pϩ[$T3C?|.RfdnvXc<1?Z؜qՃ%taOt7$/Fsӝ\+!Oe8ah,@P/9!KXzEixոݡ)>4\xEEN|0Hh _?6{:Dj]ǰtnԲ&жPIgN>`QcCf$‘xŌy?Iui}4X8kl]i) BZP N4 뺱IڰhLcW[ޢEz$+2ך뛑تǙV?D*90F:.$F0x}Y WYu~FHg@4L;i{ 4·3=)GѠvE,NuͱW>Y';/5Xm&D,.H60% EPhw\t Pn'g FSFP5UZŞk td$}k"AwWu $ʊs: fLE^q;ObNǠXy{ThX}aמԇC)Rq{O62יӇF,{s,VkJm'weEXwV5=8Z?N8s֎㡍,ҍԺ%cz:1 z~֞/ 6Ֆ[,7 X.~@H|>>}}߿^;y|#U,T(@[лA)pÈI}*z-}&:eႣt}ӶC腙4Ɨ+ӹ.6|l?J~ڻ>{.5!SZ 9 Sv&ݵT6b8i;41BUx(&0c_TL{r\:ׁ9)m3Q9 ht]NanʿjP0R1LS#djx2vHِN(C(# }kPjJmz^H_:K\[ <>^C J Zp~9snݼqڏwE g ޒ!םZ|{ wߍ4X"$ ( Z)TG`EV e|bPJlaJ Bo$ZG`}6v@'_Eڴ*f q]ӎk3DMwTwGȝ3oJv]!W s2/hE5Ғd7ҩ5'2I3sRi7{ \EɿXultr rn^VsB k/ ku =oLNi^i0VNjti}5 סdZ[e֌_:7R_n(w9n5CӶs;W14E Þ!`R- -p67nI=|тtjhkJZȐerXD~ .sBQ =^ſxf3l; cLlF;.+x8OUQv4{E)yZp2#Ale{q!:ƀ"/)9At'"tя:oߊwf֎PmC`;&1WA3|F#&5gHz+<KjZQ5%isgUok+F)S* RKR>FӱhΚhqFx~ pj8w~^_Dࢻ>TP2+WEya55vFl^[+4mEKuCHP> mWUbCS{ZxI,'mO7|ᡨ[.ړͼt&'SC?6)'_zVuuOwXi!L=r@tpilڗN7l2DMxŰL|9 dC:,Vv m8l^ xhM{Q,P㦉~40He`i{0l._ zog]l~UOh ꢑ'?Jy5>ixy-_oOauy>c\m9_, Ol,avL . En.:zvZbtѽB&y91a\Vo֙o1p0!c)";yD;a:$Mi7ɲW _ل{fsi\UԎj!Ty޻Zd]T[ 7>yr1 uc&VD*)\Ifڲ Rt㭜hVҭ۬. ˓.agK{rgM77-NQ# N, KʋCq0baek ;$i1mvŋgs ,T~^QsGsSZ1[. 9i_T `ZQϿ<[Q57 Knљi|*3?O^[-0~m<"EgaYV=v2l!:͘S"0љ5Vh4`VnQOK!ɶk1P+WEDLN0yƘatdIP[H VQiz|HB2A蜃p&?3棳[j $+ߵw5,{;;Jݼg 2I҂Nߥb<#!FפNt$H_ib/߃SeUYmG;z`~UW>E 8^EL,Zm"_ DXG`.GShV#˶J-X!~!-ۚsϽeڎAYYTe!U^2~!o]QCKE u;oNjڐKम5_o5pIDI/mV_~aS=fYtMۿ=_u絵ёֶǼI^GXpWЊf̋պW^,O5κ1_ &Kv,E0GC62`y, ܣ;;vΙ.ֺS50Ts[omd./@4FqpTX akxݳd(n@':]hjtd +2;A 4}Z_roWzk㢶 tӮ-%IԻy2 1,?[}Փ 7ɭ"|'$o!9ZL&?~~;S.)xܝGPO$1IVǞ×`[%bv%-$6N&Wf榹y2ّAeMR(mkhHQMOiz+F,XD^zy s-X,r CN5~R' Th5s÷铭 wEQTciјQhF 3/*Kp= PoƯ? ü٥ }ꂶ7w5L>}Y$GW!yXnV7'>V":; \ce:cJyӈoOlI~a؍*Gga"nHGuXA:{9 DHcAef ρ,v7vۢt0;s ́y@eԱםrVn)j~5?c'KS;ҁpÏ12x8 wK*C(;!Aim';b6?-9k=`蠦填Ob*~x}:*yMB93 q#3W*|f~Q`V Usd v*~(9PQ:!>m4$Z:5Xx bUU,S:1~ѝ(``M}(YXi8k 1*$ƺ?{Hx"[hHiS&] 8 S:A8~*!M0ԇ%sGˆ(4b캴㭎Tn|U UnynfkoZөN2p/(-#]/ ֐4D"w5>vl48XC#[FSԍ>f^p~H y,V%>SMEv? wߡƦRA!6×egcX?#CskC761+G1ŲR%DD%B/#0O]Q_M"qxE  ,55BoQb4:s12ЫIˡG+r5R"\ί=2fl,8 ygkCC?G lq iب;'r9 Cr!wK(sDXy ^!QEP;A@pӝm TQ'G5 9NgYH H$ qd`H?TgPcZVtr|g>ͱQ#9/:Ш0{Fh5>-Gۉ3cU"p gڞNz9 td.XiH.\z8=9>IC'Ѣϻ.=v*)e_^xC_wya{D[s7\$(9W]D|I@>ݲiU=^:t@"FY䡆g)dvEnw%S,ԭu+z=Oh330M9`0L89:ǔT$4 v fsK2~eLzɞr-Ƅ %h0g첈q6 +1G{vel ]MЪ*Ayd#!z j>/XYYdj4ZU# Եtt»+Ntcx ]]Vh?~IR\5O d;s1P.^NNa]4Co!jޥce1fy%pv+a[X[:ۤNqQ4AT^>D鉭f?NgYttp+* 53>})x=q6Xic8M |4B#^'?6Nz켃*̥7t-=ha®/#:l),H .E ՙO_QHArDž*vyL]rŽuK5픔aҾti?/HጼՊYu=ÚTLAY=NXc3Zr0)qY>qgD^&tr2 q?G37DM`j(Pd3w j.dyһʤaH 7ϡx038I^ƏkTdr4dRI }sitI VU7=յ>;MHy r0#T=ia*C#<AmsIua @w3|NFP?"DEȎQ#KD!R:S!BX.1ALitTJ6,,0./hs?Wg]dJ.i[ZpRɕFD:'FðeW<zj>g]+}.JѰ UBnϱ;k|XzZ DA',=5 !nirԲ š8'.ur}yO1L)n+ kx7RKj+"P0Ź̌B0H n<'\ |i%TUj-2l3u{N n[xs/}p$Q4gzx48TqȟGӚm@Q^{,-Coa߳L^oVjC9V97 XzBuηoΉi'/PRwڰڹ b̉׸r]rAiϝ5z͋$ܭQq.f&StPxtd2DL++Х{y[\*Tma[:}ak2#U>(M1Sg)8znnJO#$rEUڛ]U e.N&O7d9n2#Hwկ;p. O jgI3a{׍̷g#FQ#9H mfeoPXGXcW\]6O5ao5mtG";Ê3ߦ,|хbVU+-KNg*}βdm 3$Ϙ؉Sy507DX0̐~9fEVf]~nbX'ڥ)F,ԑ29Doƚ'5Ŝ%CjPl{gS]{qM$l:ȑ-<2DLgxvxq Wy7TT/a>8hzGrE[wmԝISCK_;UC5ś&_"KX9aUqiؘ;w=#!`exstCC4[ oRÙ1Ƚ)_vC_żpOU[|~t[a!8~JѰ;4*PY|Lk/}']ыĖ{y3q̲iF5WՈq9*Z:B!m| *羔]˲8;E6!E=ڊyw[͚Q(UzA_ҹ7n獟L9=g#ꛟy5x@A>&@IDAT.| /!BI87CE?.Cüx6R> c+fDĔ6O#4umcZ9?4W"t/#PARxeMt7nBNn}GປmZD,T;TXkZx=[qsWyŋ.K~! G$wuh wzG wB*KԽiwÁ3rbaD/o,{(u2KD18砢C7^!V))h:ȬsЅȆ1Od۫ŋ7+&,+i4bUʹ)B}KSH!y3`:-{ƄiÅqX.b;Gsۗ uR8tQ gaq^p^*`z"q4zKV{pJ:k~ōX4I^X yM kcx>}}|#P =˨=}2b4OHO(*{zݑP1Scv+ l9xP|/٢\T&Ceﶀe%]rãR"ю!K8dXgh z S*?F.yPv‰Jn;b]ܴ;52bFcp+O4|_d:^γ93g gK/U}(qc4:Fi|Nm4\Dp2$6g@!,Mpێ-&S5"xPYYUy  ,F_T+bޕ8,΍$yhaYB y[#>":˭F2ȗ&#<}WY˫p.9vc1vHE-w~lR\EQEYT66b$.\"Bz#yqbU4m8V *g[Eռ'QTϋFDʇa4D(|fDV>UWw,+b[b3.W견d8ݼ^8y(Gc~qpXӜsYSn_n|4qvwA0!zv‰it+pWcw܁Iۢ?v([pz(JM `ސ$rMͳ#W&㠦g0衐,^P;h%e%N[;A̙pIu-*겅u`nJ@Â)aE/p}CvbVJ7:غь_Vy@/?>$EKwk[F(,d%%V\`9<ՉW:-^!‘!U~ݩ.r(ft'J % ..+rKg4@N`=Ey< Db^wO+ȦY@"z X'\SsˍD_і֎]J=մV҇WF\N0Ê]~󏪪]Hf>S7藒;n4(.s9.4,H(.)iF;k[ieE0=4:ʊ3++q~ԕGo`˲AC}`Py 3-bv/^g B8=\ 92z%['^zɦW/v?oz~!#=)"t0{(B%bcH(TU,AU]gT?`S. xYѝ/WXJ_1{/C_+cH4 < NDwD~y>"?Qѝ>X(\1_.(mUpp]/Nt/L@sn"jhVC463&q=?vcmG\>d~1zwP% + i6U_ן_m Е1U :f ] nN jp:ucgêjQQ=wS0 U:e㜅s#7,=P R0+XqL,[B{]W\؊K0mZqI ^K60蟗%#W pn4ޅ)JkVjR]9uh+Anwa»p_(9o1[/|Bh7 ^H]~Pȝ>k^:U7?)u%Z5{=CJ^iigދ *mPP覿\z\αҡkc˿u萭x!̋\n;a͒!1p`AOR^nuHY vD0YJ$˯jOaZ\fXgEOwI5QXC$"W Um?4.v)Wv KF#DH ,S)k]3(>@|7SXw0 ^rF-h)\t^T#n^D#W[LG#(nHy?`Ñwjp'=CcV?}ݎtԱx@79\Ʋ ^t/0,9*Z ^q$޺uSoҿZJy*In4s3^qE"6`AEcʢ9PdJ}ۛvb]\춏rl*y9G#@<&Ka_7x0t`).i ۻݴmvpf@؉n%{L_ ן]#UDïyLOBEU5iFB ڰ`L%՗F?Xp·9S*<`NٳGc-u?P5n҃`KOm4>;!r/LS?+<4I꾏4{=x0R낱eƀ-Ӛ6E(21jeikAX0דi|n.S8it]/EK#K?"tOBB||9tYYtkT>? ^󈄑ujs&SX5 qZ&91e Zk7FiyXߥh.RMj^2[@#* ;^g‰2X3涺hUI:w=bnJ;`fl(mm5Gl{Fcs7ǃXgOݹފq]/奝#Celɷ.8\m~EZ֐duwBD8/Plf#ns|xoX lo?A=ty~]POq!p ?n~7tJ_eiwH t\i @[65eW/!ba0>D:[.ѽnDw{%\TJ<݋DazN#jÑN9`Cg@\u׷Դ {!5GR/UH$D*K,&%GUEe%^1WҷwJ?m'ͶF&Id+Ds/D+'J2]`X?Iӊ{$d >Fx=ѽ Ќ{֞U1ˮbE'n䆫kUglzW:_6@L+L",2gkئ#s0#{w+B Kِ1YowƷH0dYR# . s }T2n|kAEFk{G4liLE5XAɊʜ#c̖ĺ\ [ӻ%d8EP7ݫ\_T6N|^LvQ:ȐjŞ׆56cs其M5҅9w+sbC\UbKQ^r4;RШ|*^ףּr#GeưƇ# hF im''tc}y9=d9qJP\"J!^~**mGb%wi5>dقçF -AXlD:FP\0-#?Vf:žCעߥ $y&FL|{+;@3w-lѷN1PpgGnߧ="`5?7{4!5=2#VG4|&cPŬ!ӧ*O+w?̚{:C>oycy FYXdn;ꆱt>X,..tyU KAȡ8wQT^rndH##nQgxstcFN?h V >MwK;4m $dDFl3cc* ؼDTu^]$ f>xGW\Gc8*h +Vg]4028TX8:޷'~RP-\\p_v&w[;êLAW-Τn@p d0bp\ EFB'R+SfO# 훮 ϖ%lp7/:?{H8 {sǷzC`>{:3qX^29y6-m9.6&ȻiR0@NӉ5~- vUU ,MvR@a/B=ikijn9.0Ų("u0UX]( J.;@Rava;y͓A =X )㶅5;%`UiiYC4z_P l?眣*B(n~aXi Ӏbk;݄uVQ~U1{ջm,ڇCs[.HO76>{9p1{98E/=(>2(bxmwhEmgb>DYi\YW(ƅh丂D#@|ȊBcà8rS7$b1W<1|j[ǞmChg|Dbȋ/hIQoJ !,F7VDmcei'eqz05`ypH`EI+d?ږ=/*z~ 鉶1䨏Ls\j9c{EfZ\ *brGZ Ukx"pI&9oݙtsTguhi?4MZ%05(;%18'Hud7.-02gC6I3"zda^ bō+D+'^-IF,[gʦDar!UA{=bHS<*s'Gno?->^&.:}+]t @p0UE}1 /ʨO;c01])l\j+VAcD q1C;h8~[Ō{'vYd㡔[Iy؍;q:qkQqIR&]1Ek$hHgфG-d Ή>VebAn^ɒeho@3^Gom /rGOiW.X$oۺQscm{u~ge*sF#Ȝ#\O'Hݝ'}YrEwBRc ?}>Gx"p;G~K&NMJF,i4BZR5).*Zka`$F MciuV+_sc@.Džs-~r|]O1ǥsoV>&;FQE[u±{jŶ~!kfb˳9aUt΄5A7vZ[:} Sz+Xć|ty:jѩ!Ͽp܏7GW?4xY*}Tj<ҿ3-΍r^`7#nwb;~՛aRfOH5 +Dw(tXr\Cg':=lVSm݄ڇu+q끻3>a#8-؞/s# t#" >tbZX z#\ x*]*/ H$FmʳsoQ,G Cbjɀe[\|Ǘd'<ˈoוPM-CweAoXEfo; ,cMSbaD0*!ӒR 5##B2/dYfL1anʟ+S@t)Ceb(sKr 2aq1ҡ -rI-= TCe?ƀ#NPm //]vt#:QqR N q0d(Vǰgkoo6grP7<ѵddlXR'6TCXdxcT;{יLfNd cĘ_9983łUQ+=?g.ef 6Fnz&&^UV7\8C +YH[H14N|9-4QF@;5<[lN-[30N/ʔ h7e3uLC-={\g‚za thX[`xK2P'l(UiXUbqkEu F?f0lՒ,Ųኢ*ڈWPqީWq &JѦ2Vvnhk,࣡Ĉ!\6]N`nB:QnǪ6O؎LN-tCzuUuT5 Ncv2][^{OvOim=dY봤o%g?&V"J8#^7,⃛ -Ly)5|~?syQ+m-\VM;WQ$'ƩԴ3`,)Plê>w;;^ } Pyq~Ȋ dp\&c GE a=j't2-4M684N1xZ@Ɵayfkp4F|{y~2c!`YVhQxtn'M%N7sʰ_u.4*c'^ZyIJKhgG;W6SRT=|N&+8T_ p ҰCiXO@ X,j ٶ|oۨӮTGMv&? )L@?Em]cp ^oN[$AJn"p_2eo4x4֥4 P"zȅa^wel7Mm+:{hт y~!sGϋF@|^Rx)h PF<ںMeh#cD F8"Gpx8f3riMwD 881%^'b:1m{_}mGՁ芢{~ؕ I%EyXdr-0RwpwHxTwzGTƚ|) 6~eY* ޿ èk ]+o&?,;KKdX($@- kXK^7WCȟwBSM4y7i>mXe=:daW-ԡU+MlM8D5b#jpzVW?D1;+oWڣհ]l^p{U;FbuuRe03w*|~1)`AwR_ȑW_EG -]_wF/[:Enac]cm(4xLi+(ɏ#Bwn}||V%|dɅZalI ˷s>7h,?n8NaǏ2uM;#ec vӊEkB:.Z=6Y s>ӲrMv8L#ݍÛeƦ> G'KBZ_/:2eZSѻ >zf:8 $w<*30]>Kt?4ĊJY"j@7?rE4aqal,ue 4|P;l>+1R0M';6Sz\Ki@k>(BQ_ +?G; ||)w>-=,얖`]5c}/S@ƕ7\`,puzCu6 Oٽ9o: lTr:3.)itMØLh>?z1hc W O\9[1Y#I1ENXh!< =>b,p3;c0m6C&Q s_;b5B'.g HJgs[~,z`:(jBV{ V6mFza{B RPfǿWze}~%cc{*᧜\4n'iG3n]k+.P %}|Vק< ΐ B̷+]T\Q|N~G6ѳ˜ijsQUO}$AM߮޻Qa0C0`1pdR܈vbo7럻ĝ*j*ۭɝߑImϤIs#ʙabudX >b2zaW=ηmG51aJ2eF(.~T F[lkϨNhd.5-/U9ZؗFAd;A}xDP^٢0v%~MeGcd=y`5 _ =)懯~ 3-p!pMOl=1 ":se+N. D(y3xc>H0{)WTE,|U$: ,߲",˜|tD[uaUy =|TD?똔eeG-BL'+in4WCLC@s_V;~EH/u&JV?B?f{p8`d^"FdI"weysݮFDko >ƖȽ9WʩPZ_)ywvna胔%FXo M9Ѳ%]+0HeN$XmB//Yȿ@![_Õ㲄nSU*$܅ /r'ޓ˒dł7 :N;+eiWm~8 0rp"){]T0e|᯦ ":#v .}Ig>lEt/7p2: =d[)Ij|vC"ޢe#K<,ʁFEKO\fo( +ZzK4Pop?8(9sMyj"퉲JmQ#2ޑJSQ ,C?71FR2 mTm'Lq)10c_9B1A>GGBK6Ül)ucAO5E"P7vHq-KnMCEgD28gʡ'=Gyp08.}xKSAnjkqHڲ*"&"E> #?3¡#Hݻ~sE58~݋g67 ;vf uB6+<|ẘ;,+KB;C +,h[XI5wR 4CDlz×͜y,Z *XWמ G#?଴T>{&KJkUB`{I×#3~@>>ֶ -F_d0/X8\ApW,%v7~$B_g'sUgS/ݧ5E0o=X=1%,\I1~"N *J=]^)Ǵ~lڲ7"{uґm362K.Cڡ KF<('9ЊSoLڡ;adD۾ug<8Q\ѵcxQךB zg:(tOMgg8O<1`fQ1`8EEΈ9b@Ą0'@E%.y'vy35== ]կ^UuwNULjUZ&O8T#߃ d3G3et'4y:3L)4c|&R>"`Zxs·M'Q4bZ5.dC]8rp>QS3LMhdyGh=h$6C  sÁćW'[ ͒LtX[/Q]9k~ &%o>>jK̋=)!VRJxcD#XRyй׌^Gt;\'\ύgDT`rِ%:^bH#?PҡK$'`忲 ?7%گ9t: #ƣ5F̟U1cGz: iAge$,Ɔrxi[f)ݕ(,9烚N׎-q#noDRO>mp. iCvc!PO?nmR<Šx8r}H:Gsppآ2mVVo<& kb4z?TLjVm9[/|#<MAG.?"5C$fN\q%aIbSaIǞcgq :"HGՇՑ#_+uC0Dx}/9O^1V|I]4v^TQF x0u7΅].:^p?#?̺ns N+R/|݌ ?`#D|6%;(0X\<I!"ǎ4J0S<Ϝ\<#:l3u$;8#V#ijqYޖOՖ)ޤ''/H)2RrpZ%|'_wjIzW\~S7ƥq1M#m?a@\V`ȥ:WמV6q_*?UKShW4|H%)%pw@( R bR9Ҏi|\:fjw>^) H9g5˗P[a/^eM?z5oP'@; t{!0{Gmݑ0J86"Ii }g'j6`ҐY$s] 8$_铯=i]]u3kqQU eCj I6C !q8:?8\V1E7vy6hd"Vb0!˧!tq6 =;E/?ٿǥ`p̢%" YT~P1%i9RO/w {'5Йpߑp,b '6c#\t •rx,j?Ǥs`=`vau!,`3압t< D${j(g?.}Рj>X;'܃_z:<<P‘tPmd',"-q.z6|vU{ PxK!>,wg9 tw'UvF`o#CG(Y5G;ܠJX9DgiˊNF:0XW> gzLLk>|_}<~iHE}6aK&tk S,X8?؍4EOu=K'‘1YNGرG4Ct ^/zΑ;lSu  `Ms23#0fBTmד9"r vȥW  DsRsbȑpߩpؙYwyEYآSm=4=Ez s 5K?SHz <ez Ika[8N^z[:ο&m]CaZ԰$#tĹѸO"5y/6D08@81̊a\v_Ы?>ANWԅCO㿜ŏ'bY [e :o򞟃w}osr^Rh#+V\~,7݊<: ԕK wLo5]7P\h }%Œv Hmy979;϶WX7Y:$kj&K#%s2aL/~ю0C~We姝>0mCh^Mxqh7_]x?9"eUu_]`)632H d12ͼJ |mS\rw@|e#iN~Wm$r؞LrĀJY e=K>@M|pWmޕt$p"DEhEznQ'Ptҏ x>%%-9!}4;Kj_ =@~g4pd^VS^M {~clӹә8J`:yp|%z/f|[5Zy(orA UuG,:`GBվ1½_䟄hcߡ?:*8 #AA3xOU5}~O㣊<\/< jS)a$巢%)>VzEגּ{DpͲ`.REu4rf},v}saeAH 3,xَ7}Ft EUȩ4X]Y79E^6.rV$1R fu={p7)X0KHC4?yx!7HU ?V5U^YW #`ou]U\śpP3At0(߅U xaD^(pG0]EkAgsnA;9^PT+xjp.p?=Kmenn#LRkMfB(dO.5eͺ];<;$|;˧ы-ѭyZkLzKa~؁eƝlu٥Uh*sF%f\ i P7(+GOR|-N+/-yZ1? i: pgu71i$xC]H8LYj8?[ #'򀈬ܠj^_FO4f-.dDEa$ $iJ0S`Q)qK߸^[nR1#  !hkcAn j W ܺSOV*KH7< 6~U>c-?=@,ʹEGΣcj!GS<b8~%Okagbtwޯ?W3>YLy&-Y%z7bc hqwXM@ko45@0=cD10:|;UvT/:@&T@*NMr0-z;lD*g\Ɓ;t£>x@`/_a['P:!vppȅ{s}EIC8ڭ>=H8?08F-h&ҐD#frwx-2ȋ XsB0gIC1U{5'b$)6D### qM&ۤEf ̍!0%Ox`6u+.{x5'ԳUճaȡen.o; #ԓҠΧ$gnE%\9]b鞚" ϭi!+/ƻXZbdb9C+_-ΰuxho Aۜ.2,-\ HSf,ѕi*7/0 `7‘?C܃vRs$;g42&ئlXÜmQ:~{Ya lbr`4j0#eeɂ T=~UaG)_x~\HvKM0;ik#ޣ# =ă:sKq쪢M⇊wrl|:6qx`;E׬f㷘MI+2J6Ri8`9>,ձ 8WskzV?+r!Y'F49}jʅuP`xuA@ DZS,^Rش#A29*E%[e~7s~lv`̤rt?35c@dbaŁ Lcˏ7x]/**i: kSbגuKFKt??8b4;;I3\1E{Y\Y')G)be]9MYZ r=J= |7pI-r7QE’+nBo( zB i: r>%%/ycBHZ]/gyEVx`X]XXEtݑ7x{π m.n+!4oV@ɴ=y__l3gV;a͉cH Mۭ=z2É7Љ f?o{F+KT)TZ>532_/4-n9Mݖ%|>#HIDѽэ><VQ5~nERf5V2h9d LQNz'n1imw)å!H8?ańS&:%Mn]FZ?t#d@ w~Q\9*{ut@\SGWbq0LtB'hY*;Α{KX;p6RLlg}Y@#Vw#&#fU0LwAK7.埡^)piY:"\Qo'i1U6ĩ[DcIOÖg,^-I´`6;KM{ Jq V45E>DU9Q\^i_g;7ps\ vFoUbc4;+K3]W㹒@pҀm;t'CBUq8q2waEH)I'HZbPss>0Lݣ<SªQaDXF1j)brzF.SZ3 lWWUw]sRAwO)NƿZ.+i#Z{qFộq#liXaF)B$ʶMbQn=F ô٥G`;V(ݦo tu—T/x,#,hƴ|y)az%哼 [[M3֧\u;HVgX!o &iGH+7๘3Ѷj6b=`hHxAxp*27ZH6)b~| g^?SOr_kb>Yyƺ`1|fb!E ˻X񀄲@<!}eija}J$|_øVpÁէ=7 Ne&ᨿ3qgvHfJGs/6ܡ\t&س3:B,mF.߉w>Wº#6}7g%p"LYu]7M`= )-z-)}r\j'y"(Sae*yɀR~\ 0aijY[tx"09˞P,vQ FaF?N!;h I\]EIS0j,4oqŚgكaig{b|pETZe$NU=>nY .ŮUIJ&EM|'Hg;XC XK b0s='y~M7;/Fzݘ;f캺qD,7/V8QρUGQLYdf7 77)o9Q0v}OwSǥUGb uc P6d1G}EǼ/-`k)iGO6 p#`Js>wgh`i $~n4̍6R{4+:e':YفDu9Lf WF6(#l4|W\jc0nwHæw5bPZ `D6nH N)&1(3aȬ|͘_yr2i>.2FIhvy1=S1TCEYe: =GY'Ǎq1dr8d/z^%-A1 j@Ռ)x^ S 7zz Set͉]n>uF.1Y$IG@Oxk ClHf[0Tw´֪{?Q;q X|ZIMRCj<:F  ߬ <_/jcM0q#cbwܴϺ5"#qXHK%22pYLXX#KLn/Omʿ[PX_3&(wPtly_‰N_a,zk]o;B N9χޒ;%Vc\J,v,=dVbL5a[y-n?|r N@W))'=#`ј+.˽؛p(ڽy;h(Q7>r hUW ffъnF9 A9le7׊niH _V~W\ vqGK.ppkO56r+ulbKˆyѕh:s ?0Z.x9ەlf?x3"!M3{Nd2L$ / W |&zSvF>س$]3KJQgx Cge7oV`+WhwK0l֓Q7Vl'Y+;xkQwoMK2cEg a=^SY$n'j˽c[R)Dݢ*P_ )N PpE` ]L)#.r(=xBrsR]'uޮb0ajZN pjHWa>x k19+:6BQ(xPBqhH! $2t_eĬ' 4 v_x7Fo'O寏Foîq]H0\pZ1H[D3N=r2l @{c~VIͰ?ơ\FsdlҕA^„Uŋ*V 꺦=Tpd6o4rmzN@lGA#=Q$r| fH+_5FoQyIzǑ^A:RՕ0e$#Gt ũa wi`ggŹz]vvV2x+!Ň,`$>8BM$a? H Gbgȵ V tؤ l8w=KU,K.IVƐKQ>G%4vmK" h`\0~ѴF(]y2J݈n\jҽacjFQ2Jn&K[ s96jmz7r?Y[NFI]$rlM$z=W0 YmX͊ÐY^Q< Sb~!XcŤ2{WB\TWYz6Ho6ΦOʶ `ѫn{.hz;Oc#r6'Xݳi!2Y*%^D:H }e:P3ziouuÚdyW6.f~|/NxqAȁiNK;2~lBQpZ:?כcʻ%w*Ql7fgU;@A erdA`+FTE)eGE+*+`4;C q$}+뛻}8c W{m>jjEz&g072Pf +edVyC]LIj ñ~K|TOKK^qѶ|wi{5% N F^yL#,r1:( 'z?n,fw}&R^Ά}J;*ie7҈nV,N$ *qu^{iw}76bM3ff Jz cҍ=>2?Qm 6Y8$C} ZXygq{uCe;0~ \f..]۱9apaYqQ(=Jt` #C}a@j&IKq),??-;qhFؑ ``\x>Q(;!j wUMc7)F>Lu:h6c ZF#SlseWFL " Y$3tA2OΊa<0qHLIWƐsOt+*1=sp 2.2;t&S4?#̏2`E| }za ; 1m,1bg7ʲF.`Ɗ~=ŝ؏6#*)֍:Qotf<0 ]6=>"=ψ5` ==mѹw¿;lMeu{t,NlupԙX9SG@ {!,~ђilhBU;+Ϝ(-_o{d:w~Pk8_?`rDߢ嗫ք@ch"# @>O)KrUlCe#7,^q3okz-'s?WU1>*lhXxZ[I [^IK1Q?}nߧh;s*7(+74moc pcf͚2>Hc7/V\Xߞ}Y(?%]COP҇t{+oŋtt:{~{^?cgy}Ш=o/ H$f ;f9Qyrng,+p]@>vNZD\R- j9bsXMXا 8w-ٿ98$I҉:[҇CE:=JMIL)&t3|X*CǬ5wu`4+.N4JtW2nS@DkK`#ʼ2fƳh)ȸ |nh,{@r#p"IHO`[ht]:|tHc4UgO̥ 5_Kto<ખ:+l1C9Xq*<\psPM{ΙoUE,҉ y8VM|{("OPDYKp4"kga'~NVz cI' 3[8O&k.,7#>H;/^V Q[IT]!p_Yw›c{ki2g8>#| wس=oS (c%U+ nY=^Ǩll@Y2v ܐI_.MۜKSNV4m5S佢-ٛ#A`FزѮ@ԏkBȿbE'c"aVe,XX97V4gcMY~VU+:(8 &S)- tQ.VM?o뫏j/ኪF!~l!ʖ +'n*׾{p]l)w Nl㿧Yw'=Yu:3x0 ܲ2}-K!iնO\ky!ΊnExf:ʁ#$af{+f}`Qr"=uGwe$@:0 pjwA-ݟ͘pZ Gjc*m/a7 @2y1e"Dmj3r'6sXӁ\=.F0ѬeSJI޴I9MfT"`EF |_U}y9Gn#ʔF0{os 4T& j߈gml(3a/A1t'[S.ixc\lg1'#/({y^SUMY97O[cqn1tk2kD(Wҝh,7JNK 0 uKʍǭc/D?i Íe':Ctr%O7Ϻ poXq0w\Dny`W}gxhLMӶm9Kq_Cd'$ о8틧#AhﭪޞfoQ}2e[߁]n`2!l|`67 YO#2P|٣Oo=.9b9[c]caI:AN5F:&:0>OaTG>sEE7z%\o0xi?L5._}݂ϺeIxsc uHgHN$].FWp0q3N@N@΍!p?]_մhI0qf70I3SI?Vmm 3gK޵tZYnN|X z1q /LS~Q .a-ou_ٚC|^\Qj0pfyX~IutTGX{E-:_}o?/=YUV+:KC͈ Y:c 7 3&=脱\}cdoXt(^Z:[,pbilÞÿ Xx̐8m+l?jt%=XH0[0.}MT5d<TS6V_{,~G@XL〪]KO=.XRRct Q}ang[(Ț>}o)a'AAp:RG֌@/.> l7DXw}*#Z {-G7 ~J\mSn8{5>j0gaOaD+`3a3v˧(ˎN;:6A:41>ar墼}'g|Q#ɓ+=N72MF)٬[0WR^ݿ9C,PO=PXV 9`rlX,c@KX#(=,)!ϒ(FX>gO$[ڸ2Ra6k)PɅJD*mu,G6H0_AyEPF~ϊR 9.QԊ=5^=z.\?B%^X,uA[Ȏ"E`-+~PkQްF`sv՞~46*{.E f@@V m ?ʌ%}3_٤*Y:1dmmFlYBa bȆ_Bmxs\NGagZ|ޯ]~z?˫!Ž%^s=Kgnצp?zP̓~|榛7GdYLqo,O|M([ЎY>{~6ԟu/ԇ~ + @IDATKGbك·o$[vQ~s];fĮц%q `>qrƉ0v{܂w_jc`W [oX \s>\Oo: @V#pYqRv慏4?׬s)5 btCg!&HYߜ g~PғL@ /ɕ&;~BDA8{o:`gϛƦ"<OEc3.IftC^VJNdQL?FeӲ_k\U0U[l)zq% d D,C,1(z_Γw\2@NϾ`l2%Y ; R'+*b nތa3"aN>ۼF[:r[4SѳFTCgKw%V8^y-p:lY,N*疴G%8jvd4Ѐts#9F!$$ÊƆdZ&|Y iͤ;tK`WؿAk?9p^{M9ܺoo:gg0q%EWj4ʅP% !npgX@f3\tℑ|6<гk/@av^5iN4.,+c$U+nMlr?Klpbq |& ⴇo>ݶ%bS.Qkz[BבI16EGT'X! G^SVGo2s:ZΝ tꦦKa/֊Dt[@Jc$ D:/$X2wsLi>7jfB# 2\E[^Y=B-pvZP<胎r<;ag`" ?] hbf%͞ŽI>+,fƬ(nkXy7WYnRH7VolL # G!L,xY?]57F =']P?Y:UFMAǁi(v G,:%Ķ I'S I&Vv+x=UQjW~ׂIdc+FͅU{5EcaԿ* h(7]_ 2eXsl.=֜`t.0m}>w_b2쾰`gt~,FDë43QsJ\0s6K|dޭ7ӎz*XRIQ{tW?iX9hPS}?sӆ˺YP녓_uIg]8|%l"96`u!=hT`$^tACA"x%>>.9' P"enzC2PM9}7lGvc1H*l? PC w훞#AA8v('[ 7~5%‰*_ ?(Pݛn&FŠ4-ɘNbYA'fHx[{<"Yi<#dHsmfn*îƥ}Ԅ1OebXҐDz Ӂ7dd^{(pa݆b-kOv^{쾡hXl,X,0Ze-)81]0fOz}3rDuUkN@6|IO.S0+L (fz_ʼ޻{W\0j7s;ۣiPؠf؊Ӓwlp0ss}Gǟ&wK<%{##a0l֛6J0A pl"ҧ;87_Lﮩy"n\ 2J8>>{=VAA 7N@nlMB ?ij TEK8cˤ:j7Xɰ =u h1:h䯇u+^7WTVqIM9kkO]{`FP,9ʱ*?ofE@eMi&2"/k}e{ƍe/v3w(&]ƱuYUb|>LzZZ?_&fϹC>L@{r'?#ٿ7 ߢqy ,JM&1r&z񁞀u`sɀW\G\o{()WGdHH/D`).B:z߆Y-M:6㡆Koh||=-z1oE)G&Wa>|53ĹspRp:t cYހ \aIHfsаRLŤffI Wpf^0>6_mW.h +;"[ZCujڦC\ĆJegp$fdzkj\2Hy^ WN5S.kΔ'X쐆Hcp3_E:bf 0?OinU6f( zɲHvN%RYn̵Gbz6f^uom,zSɦOcGDC9,:t3wQ\ QsO=%/r߂/nH+1IFV4ă ?++ˏB@R]y;uҥݫ_6ߟ*Z)Xf1|eK V[. Fp 6e,jd4YNf6H2x>}01| 쯅 o!w5U.j}Od%ۆ>f]$ #WF%y'ϒl]zB̅׏,i~6 לT+x?l_}7U 04ȇ02~pLdF}7W;0m ]GrMF C wY,팉/pU9[F8c xVO:bd~L:"%@/ϘtGˆ¬"I);ߦ?Y].w> cK\)Űf`SԌxOlkSut98@ p8了0[GCvV#m(b៹L3\a.f8B,h`W#z^H aL k`%4ʜ,&D`c ݍpYCsh/(˚A0;$,Hu3訉:ie06 SdzR.Uw_֎l˂l箜q=,`+q"@K$9&^M9(;UnO<[ј/_YbQhHLuE^IB) S4kyEwk@N/[LF=ΚFmci; ѣI2;bN<[mPg]o(i,: g8F[2d~pqp Lug5bo@8H 0^E-6k,hmwm:!L -1qBoqB?`\L/qj|,H;o{߾߼ #3=`?>7WӂL l8;luhrAROg2JnqѥBC:P#HC+胳b~닪bU~[I x<E ޟqkVe \;euKpBOypb/hz/9i)yLvTD(tMr.NV~;D$kY0Y<ܺЕ[g_tԲb6>x{x;5x׋/7'ӘX`}u*/%;ѯC瞺pJ&Sj~ Ek@rg0 fpZ5IEZIQ/ {,|0GDC0W[uÎPH5Г=a~XRޏyQv 8 }IΕ36Dl Vpʈ(IUC+qCFze7'/dҍ)!o+]x.\g`~/=k7.?*{l Kxԇ}ce#4Ig{342p?|`:v*_<8␊j(iI$TX,.rcg~2b}[MF= FV(@T`4\UߦƝ'{"h[!R(i&ޖIno?&X4sjZOl+-M#UBCAL l0; gZU=ӏ $ɻifcnGCt5)UjdEj2_EϑXrq<E[>3lUIxի-uy}oɭD0o遰L׀M;b%ۡ7Ub/m8v1/(k#fhTįisWLH?iNe2W6%'U1pѽ*gM7,LY3'0Y=|հl0΅Ư`>3ĀF0zXѲƀ9u~x*mNI[)^lglښJnNoTAìſOXҜ۰pjQUY_U0bn6ʽ)\-{,OOn*dǟD~ӭbpre =mv첱b L # Ȱ e/՟0__<Ǻ"t[c; KVܷzJ0\_GgGZN![wgE,8DR?+ez#[h=ºk mk4C5o@ &g+AIAjSScO@p0^Sţ_1sT~5MRٚuX3c/ ZZvx}.pEv8ҲTi)*7d/t˜7R4K&0R@ 008YWei*{Rjo+Ę*nA0)?C"e'^Ŀ]g#@9?P'ZQI8zCσ=MS=ϤSdE HlsנAv/WCXa3Ot~Lbd렴8C?L 3օ}@{'N`yb=+WYUmE,qji0Ta9pD|mБBK_q")FV, jiy㜪lQS HgnjM&Yk޹2;P"PrˠkQ. 䴃MhQ[{,0Lh§P#Gt:cƬyԓH0IB 6ڿ#Ʀa`ÖƢKɧlUh˙]#C9MӖ X`S9!MgWH^t:Af[d튴lGV>w/ִtw39 ޴k"oƲ(^Ϩ`73l 0NP Paa? no+@?[7U +fNhCtLI V(YOx5pzpZ߅XqU2]VTjR4?:yO(6P2-=BaDݰ _bK^VFRSI^ĀQbm[Q0וsI/^8,d9cၺ0^EiU56,gm)"X U3 Pa[|Yľ_;QѦm_3`tڟl 4Wo?k2&PJ*՞!N?`L`]垷斨H|=EVԜ5L{/h px$8DED;nvQgKb7sJvh |3vO~5蘪7e aa9=Os*Y2(Zr(puHpYYV&Z78JU>,jm m H~8rL|q k~YY3;>84Q A#LSZ'ʳ1{4m9땊m2/wIDl$M+Zа~ eR'Uzk!{l 06p9 0&L%FjX 0/8eK: ?Fڟӱt&l>Qb~>k.l~QUXu]"I} 첰{ů= p+3.ni#q*4$+%k5PYjOTIU|=QX 0D:0&\yr0 RNguWWgb?K5$\eϭ?t bOM.()PC=<ӧwϬ%zi'ƚ6 N@2<aPmQqŐO2?\5g+䊯?֖4֡8X!˂GCVCUIJiVw#OUK{;,U75mC `-jOׇΊe?,º}Yt6m"7S gzn"}$cLU,\&Z'poɪqTXOpaJV JK;mǶulS:-&~12lvdeT͐Ǹ)3E_c0{s,Y .eՆKދ*4Ôqy[οWUG֩W|g|\:qZ]C,zԊDt6K1KO,7ߨ(h'_c\TB{.SJ=eF/);vZgtc؉3zI!'קzel@%+pUZ ۾u _NԜU>Cu:+ tsm}aor v5\ԭsivdrL,< wu\QO|x曆BKe~WuløS_Lxfd8}z\[u./ԭYe)XcXj[%a0nsȤ~ Gn;%ʻ=W1"J'g6R95IQYBs[`L p@5=N;`L~1qR$?ǿ/80ǿEU00zxݖhUa4/զa'T~Y9{4KR?F|މij#]790[=8_i> ~Gar2#nDL(sJP *P ).QUT-$+?tܼEy{(ՠK壒euӦ9J7}`ؿOL/9(LL2k8S&U hr-Svf矀WLRL^2Rm 'C(rܯ*/uV@}}xqaa@G{337%g(ڲvz٢oHJZ2WjܢR`%0`zkmq`7t̹dG?'>PJT:J欼ؖ[%/3<&sڧs!Mg^ ʫ{|L$i 6{ȡ;$@rQdNBmaMï4?mӼOQ44UD`_l 33&[,dEۑ]+چ;]}szխA,V_j狿Wn^k.<) S|7~ZlXMɦOmV/TZV'mK CtLXp&nX; `F>U>-i<&i{}&QN FY*ihܪjFKL;mӿTQx5u.x;;U}ol4}!8ہHn3 "4(Ï]OzN]woW`kwtP_ѼS靖ŷqUyl0Hjfқ!Mݔ$7(ɔ -)#;,%l6a}g O9U*!0jIg27+8& *JsH՞ ͸d+'ۧع^_<|kK՘y_k_\}-kouװmL\! ÿ S{o&r&nX?)L COi|w[@KV 4n%!Z%<|Bu# "rF0|T7,?_zQ OKK$~iB==3OxVZ~m9kD1~δ(Ηy,˞0yMFQ^O<_+0Lsc1') ^ς͵<8ˤV%)^SF %}[O2SI>q\HekJ잠l HF]I^KRZlVV$;{Y///;&:3noGD{zjwNSSW/fݮW-e)g[פ q:y=kq{QXo׫>y_ң+fukgVv fh<9HoG^e-}Aͺhy7M}G|_f̟D]ʂXdx]NNa.Dz]uηyy^$b-2iXhOXl Gć?>3l["^LE}B ?|.L Tko,=~.\IQ\e'MmɋDGCrlO~)I /c.4e{_}sD0k( ~ޛi}7جq]r9%ytd% ^w+N8i6b&R桸Z!Z rGem -H*y}٢[w^5^qΦ6OV;BIuIUgkuMQl&Z"0?MV%)+R6X 0@:[<2@[#]q} ݠ>U݁/:Ww+c7Ur JŖC,X,\ڶ EWG⭦*0b(|uŇũzǒy` ZNv8M mP= 4c'}^e9+!ppUHэ`]?I{;f:(G;~AK+i>>]8I\XZYÜV|žFrΫ全2-vဃ9Pcn}ue-gǓLzs\)ٙ;3ХmE;ݞ NY#8OU WhmD`?Gti2eDǜR3^shH&kStT{ƯU{2D]&^02#nO,).p/gý6CJ;{<2 4'#"5ݍzڨ4&6<nS@che#Th*}eTJXS,B2:ST6<K_(ʈd@\t 4O ft Ϲiz[bFj罔TPQ[Kx%"EsAnƅX0iȧ=znI A|A{B?,ŹD[}*QT, ƒ0 Sy{~m뿭-@$ r@U~Ɯ1V[eUVL,LS&DAפ -y~߬Pp ni#ZUMzx^`3SK`]w05|Q;DAPl.YGv4E^ y$9;'xnLTEˎME0ec Sqc&#űA W0@NSMd$cW@C]3çD`-k-2'!V(ͤUFQL$BFa(@'he Ka'mU54\Bg-L a2~2ԣ;N~G6` y}VEYMg&:'R8L cx[JehO%:Sys΋-u(#D[*& ;]k{oN'V1mD83NoVce!2ZLHdx6( -~l̥GUb^wiy 1]?0.β@eb|!*gyASFA =Q~E}Fs}G9dYӡy} )?SOsW9^7ht .|^;Hā=s{Y 0K:3#p_.m=zdSg-&ݵ\$7Є.H5~y[È!=?B`3f ۃYݣ+.>A-<;&qѿT6Q9HzRSUNL6H4QRǸU_L?Anv_9~$ϚQkuԆY>'zH- RkǓd͟{.-)&: n/@KKboxa?V*8Gkg^QN| #m.~ q1`U| fw tA]>eAiMs_=0XͯH'gMF΢>,4|=u S>p v\is-v{1b9ȥetgKaHKD}Gzi^2=H02I>uua7QuًSTIr˕XimGj{ȭ{&6,~O6lL t*w?Bt:w9X?:T&x=),fp[B<$; +\{pg<&|it ?5;<=z{hdҸoCC6c qXk bŜQjB Hsq T&;v*0L yNܷGW.;>|Z6$㛴&u0t* ȢlsPӚE]_zbU4dYǀmKSfo?JdloI//--, lP ؏zf}]];|tc~9mO)e[oXe p[ֱQ|\I2o!ofTC:fx~e3O,̷$p!Nd_Ml3(0B}< .`jxg=IDAT|3w"_L E`[!2aL 0%1ifvBm`p''o۸ au:u`KdG&,KXKM_ >;C?.zhKvD'auCg1鏲j)Clt١ =oK 0I"߼E^\t~ك۟[o~e7`T&l"vU\P΄ZZ7^s;vjj.uV 3u,\ <`L$#=,1.,1kQ'-T鐇9+BiA¶V*)ޏ=X5:F[[;4BأHe Y tvK T0w䐳Xp1>ԋg 1L KV$!C0(C92l$Koa]BgG\rQ^ kfCI}?XWɑC$/00"-u__"KQ OeӾz}ys[x8&RZ>/!wJ0j>иq_U?7=j^=/KU۞]r$c3ԝy߅&;?(iH2y$8 7Lz|/ܮT\pӋa&+G)q0:(`:*IdNtt͍ r%J)6ë}ST~ƛm'*.Oލ#}pz|T*{J5 4xa?سƀF?_ ^F׷9&Qq/:07&'0x{a}\Ï="$WyA *:+;n3O*-}˄m$IVo^U8>W4G׍<9R07un N~PM5m`Q&؂ atu­%بU=XÖBҳM WhʡG4IH$C֓,OdB,LdH =Yp: j #$$< (k?Xg]C>+.;"Gc\?dXllM`g3z.poF}#2^Eۧth e *yK1W0X2X;a ,V F.,Y`_l M)z)+#OO3skO6k@}[#GGL~3# B+C`"SڅX4M^ȵԤkZ%/.dV,(]X1y%~aЧ=[I#z~bJE)LC꘤ӐrrbFYaB(1-H@orQv3^8 1px߯ tF^zDE΍nSY 尵@m8[d<HVN7j̉~hX\̀_8,6Uh,,yO "tZxaG\{GTJ/9ΥϏJx+q {5oELgpK;_4L!b~1o@.J,s!x†#}UŽ_vZű!$5%L !"?B$#ƨo,eNXRJeݏA݂7' ?N9Zb3?l1&6(AÙ #ڡam\<#` i)JNv QSb *CQe闠_*ʣ0?;YS.گ:`sXbX/0H4%l~>3 vC27(c+8t L *%ginNďFXpеpGQ *NN& Zx]} 6:՚{Guj4,JLqkd :q$.Q(^NU$OFД;"y/urv.9 0&P\+x\N`@8{E73s Tҩ]egR/_Y9FT=8:D4廀O{ƺ? =bt\IZYpCy`~NgEc B!ӱx;2N ¢/ t &Лrq87TFj+~Sk2q0 B-ޙX2QN<0݌X2-RRfR~]Dž7H299#9kK?wS cb@<3-M\wG0+NnA5>`L T:n7cw^0yčtܱ[yYYej_Sp=&8o:F=WF <zRM!\ZNP.-pn(1H],GeTy MU? i!,&{a aSZ0O椨b0DSޝr福BK`1-dxv&rjU'Fj ?8sr\.N[bSʝ^ 7CR+21&P/:P; ~44efzBbzAC= ߿, ?(rTTcع{>z'H S-.A-֔+7G  9CNbm8G<^MU :,%W^)CIɔ3Su_>(w" ,f&7R{ygoDvQC>kY1M@z o}3ۣX`L"p@EN`D`9;%`wSc9%]:Sׄ~l{5净O}1$K^56?v)nѷϑqifC","X  euAy؏o˸`*rdQt M hs8o'Jy`sRQOQ9?'TDaRxeоAdBCW3X VS^E$6d7e'~#Fά\GbC@Q#EX'dQ@jX+N4N|`Iq@&гGmbNYK9lvn*"Q0Y48`s ż)BFOG ,f%_NǒzNtr0ۮ95@td][!3lyeG:͉ 76YO6S4NP$&893r7œF&TILpFwFKJ;5DZ  :3){̨x-f\,{$G{)(RSP.OUyg&P5:O -cPPX䳒yb*qŽ?o9< ~0*IUGF&~.ڐ_r)^q<94z@k q1 n?ҳ:(PKQe_p6rvQ 8m {僺ZMQ;hʸzHVS+g+,ĉtOgS!»n?ZΗLzU~dr4yFS`Ν4!ĨІhaXVޮ#1&@%.v^Rs&6Bi$°^J~L01z՛"-yO",lVm a^uϚ¾z֘(RvDH 8?nk˕bz0+zoKDzV2g>]¬,ς4Zޙuu>##T؛(Rƺi^ A b g+6 [oK/'B0̶f_)}oX3!Ҽ3`׏{UV_|lO24wĒ3G+rtcgðQ}weX&a;E{;*`DOwkA'& x@y &Q \qN8Ƕ9/ߦ>*lHF '|>A2|R4MX84̀ =xQH ӑ$r9 4B@ ]wkCKαx2;.zl0IO&e<ߒHt|Qq;ܻ#;E<Nۨ#Zp8/Uf*bcSGف(|"?E#ym&DkO)Ϸ>"ˣnfL 0&P7#r&*sw QM[;X /uv>fZ3LЦ]O퍽懣KEg?nNgW ]\DS~@yeaGXP0|0&h/nh/)cL T(+/Ohl %=8:Um9A!ae4iި.%T ;7rxEkHRea?lWYXy ?x[^!:֣0 ,=z(9l)Y5oa{"ИH&Vr)IhG6( =e#UlT{x`L 0" DL 0*$p??ߨ)6HL3Cjg['G~ˈWqF0d5E" =Ͱ8TQ7jφHxbl -yL0)Q`bI kpə( S(w _5`\v"tzk@KX@J:!?XQefHX-9څ s$ c]TE5>`L TnW fL y+C 3}6̕ިěA5q Q' U9=Q8: #%8mUySkt@$?XC4_J1RNF. 7ŠԈP;Լ=eJz{JK4xZ #0p' SG!}Ez6bm p1ZL~Pf:S v>`L TnʼneL n|kߢe-O;ȡ{ R+ P:ܙUȹ 4nS<:8+| w. Ax3饝[≡d(pc-p!N&n<(Sw!uVWsZid凮]aN_Z4ō-DuZŲ]ÙOILl;eLsJDਔk7 >j_JL 0&7T2&rV4N*:npܝ5V%/Q$t8/>m"^3E+f1B7˧ K0i6UwQ.m]9bwNK׿5lj̫s @aL#(+9E:QX.~^o]uѼ_1&@! Er6<y#'6*r8]]Lni;xx(fڠqlTuQ J{¢t#xV͂BءQNqSHtݐc*q~bL 0&`ՙq &#pÃ_.izLq:AnA#d!UјL2pR}^mY,Wws t&%:Č΄#'+.NȋEޓ,*;J~z~Vj &GR7.% \atcN&TN)љl;C"^ wL~ܢrz,gL 0&p@Gx&: an f0_ PYr!rx]NtOg؋Ug^nu/O癩Z%uX Q {K')*etY+UpX'mի;;H= ..;] XB)ϕr-%v >U}71Z^PS$~t$_V?Y2r京n0C=QjkFqǶz1&#U`,vcCu_$p }; r .:PՔeYz*>kn_ 4KL&SvD#\:X%(p{1hB/~]'_umJ>Yg"i7ܦWwFvqwӇ2jZ CQL 0&: n,o@ *'Ћ֔!rva츝ѶhWSڀP{1_cx#y=?㑊2i7Hmb?C_bDB1LZ^/fW-7~z& sX*9!YyxཅÑ97C/6@n Vo^qE 0&@'" esV~~,{~j/pT1G'DPBK.8L!mˬ^U{?{;p~׼Zb$Yt7Q̧}OR{!Q{i-ѐN*f翽owqv\O} Ca3ٌ\c& F({4 @lU[r @>E ;(vs `L 0NFe6ހ|[OQx1"(FԃQKTEy6xMu&؝lǓ)vjN•%+I&rkX21r.px:8a5;mof:gw|wq<,V[zqaƑc9vQ[Kmz|鴿&}>3&,8L 0!0Nōlh^m۳=,܀ ?yo?(ȊUWjP2ݟSAޕj4XL:S|^@Qn"6E:7#qp;};瘣W6O5cFCe\yΙ8wn l3mx.\#n;|H7T,*1y[BEA~ylҭC\uk)X/&`k@=GkYl 0&.jVWLg2Mt&]HmIkFҭ>7Ggo;~'t9i'?g[Lڂ4}#)M$f: ο!sqQG,hɎM(-0 F, S{ևdI`L35:3&PF]G>bˡ 'O\aGu %|{5:_=aSL3;hsrp%(\knAbdb]JM? N ^|utHa:Oy%"{KBuɁ4GxFۢ}En]zDUlQ)懯`L K<`]eL 0uH`w\t1ڪc龎EǨ\R׿z? }OGGWU>O<5~q8yh[ E#*C0`;9Qmɀ?>|e%U5hO: B)W($Mr 8=L|O$3`L 0&`. L 0*&0W6$3zd2_['Z%*^_ u|ULب{?ffsB$|S1ܙ T`Q<ٵV k/W߮  ϻ⣍\PU.듮K"݈'?1lL#haYh`L 07pI`L T9Q! Yx>{7aᆑ)sO30ZdZa>y8M7^B:>/ej{BF8 kS^n~;?C(^;ĚBG55boE@Sg뻅]0OBdb#2#n2mOC^^y^Et>L 0&@7X`L \yKcޣuARS34mlRayȞe,}%0|{d8;Vr%)dAt -'Lvwb-yZzUdy! Iʧ{i 8X"TY .l8)b_ '`L 0p@[t8 0&8Y;l:3b9.^@ErX,,mv !;]iVa|HoNA8YAeuêSد]ӣ6ڸKpEN|`L`mE0&'a췐wΥuOBp3P&9YkzsWU~|ٱ[c|v^ȉJ,DvX@3%VY-5u?D{|`L ' p`L Tp 3 o*%?m:TmԤaa_J̭,5t|kr2?qfeYZ^O p!f]_3&XW}]gL 0&.9SK>I$`t2-G3m:N+)C(_Pa7ceEZ[(%/Q-,q8gh)]C>7]~hCA0&`mm@&6>bٺa >c~f,'w >v6mvPL)c%V-~puCBnk>=x[<1&`mcP&`UB`=ҰӪ,}N!&P!I%1d7}|:8a¹{"Wy|gvg/Y+J)}(OK X՗Bi4E H (T"PVZBU$&i39w'߄3s.|;w2w9Fd\[׶7}\jߥ?T:L?46SPn`߰- 0^1N|vrlRWe>S/gfLV}4Np{6D+9_)8i/FOj>m; @H\2 wg?nxZZ>5`s"Mg&$pzZOX^,9GaO{ 6˯=2uO~ ' '_~ pY#\;"@׸O5fO;gs?o>hѸtlykL@W$Hݳmͭqux;|@nXy@1YB (c6^-f X,U˥71jS?{S&Z.Z#@W/Ql=[TNM6D4FG~gZɱT?୤_e|<,`#W?^K=1|#Z  @ ?j. p {j/lwwl&Z# ޏ3_ZG@tXav^[x>z̖w7w]i֟Wy/?zOXnϽ5?ej֏d%#?'+{"@Z@ U@A৿8V?{~[۲,z۽%L# VnRNcq_Ё?MO}ww.l<>ΟvN/ۑLER%Ő<_P|Ћ@Ǽ oTc9~{|M p H\Wy @H'^8V]=:X^'כ:R6ύ5͹ٹ"+C W @`3 {ߍ–pc@5`\֪f߽cNq3G; @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @?[ڇbIENDB`ic11 PNG  IHDR szziCCPICC Profile(}KHQ?cD\ AAԕJ. B| 'W!\&I Bp+Tv㣋n]Vւn ]"s3)=|s3g߱TAvɉE~tmZE&o4|>{~2r#<ZF&SE ᰥpUIi>~P/4'<^O4=s$I+m[ Lse6`ʞr:cIb$(%$ۢU(8ɐAD%Rb~!ws{u ~Af]Klk=;жe:fUjK{ybɐ7}0 + -zu/\ŻO0-eGwh_ae<8eXIfMM*i  N@ IDATX y\U}oSVQ15( r((JRc`$*X#<BĭPDSY}ι2鿙ν{ιgQULt/;97U0HDGIo0b٣ QGtWjû"^g e{e/}c!Fǀ.0׼Ti 1)H5NJJRpg!tT]K'< 2s8qg}UЬ>fpxK@`|a,#Cm.̨xa6 :Q80'8/0i/_?t%Ȇ.SJ1Rq|"= dԛ`q#"^0}rE~[8ow. 9Y&VqvJ7km代o 4jl(A_ $  L_d@&TH+UCF H~6d+\78D|tOTxq0՞֝Ж#`k T>v(.gJW:Gffc'ܻ[턏nW.݇ +0Yg];6ND._83ky 7=2"Xd8+ $I6LvyZ+X^L$C}B!26Jȶ~ת"]l_]K`1)_+ʊ\u&DyHg\ŭ8["ey ^ЫȫMbo(7ї~9<9_pPC`V6)5aۏ5"%`<7QxɦwCgƌ%T#Z@s7ϴP*3,ú&ﭿD]*3RzBn N}]]M![rɘ%r㍣CGk3.E/Ƙu`a D+~-=4Zgxw#MȄLI!d2,+ƘF2gN1*..y:wed7ѺGk ,\%g]W!";)r5\9|ztH&X#1?瘽"}U&M"VJ58f3g]^_Laf# #2C{cS~50̫DbPO@7j*e 1{ VX8ֻc}UCXnZߛ97D2zL #V)0*t 8h&|K$36B&A-K<09 R5w)+<ȍ_;)ʇy=QMPG%ՙ?m|uH\U9m bNeFoIRjF;ڒ[:huFFR]q憲,/xۊHvJh'†)].0 1FYP}!HY`1o(u^6s <.ksWV.?K 4>G F{\Y)nsDڲQy$(W^oC>OuoNSw2[L7}=Kx{K&*oSbbe# w0p7$Rf\·AC!vHlŅ_[>+3zH1,"%ĦH ˖UQZjZCIH$Z=XP鮡RH~8dz+K{Yr J 3BO3 bGI9)x҅fBJYinآ"2"gmu?5߇}‚IENDB`info>bplist00 X$versionY$archiverT$topX$objects_NSKeyedArchiver Troot U$null WNS.keysZNS.objectsV$classTname_assetcatalog-referenceTicon  !"Z$classnameX$classes\NSDictionary!#XNSObject$)27ILQS[ahp{$time_decode-10.3.1/pyproject.toml000066400000000000000000000021121513432141600167450ustar00rootroot00000000000000[build-system] requires = ["setuptools >= 77.0.30"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] exclude = ["debian*", "binaries*", "build*", "dist*"] [project] name = "time-decode" version = "10.3.1" dependencies = [ "PyQt6", "colorama", "tzdata", "juliandate", "prettytable", "python-ulid>=3.1.0", "bbpb" ] requires-python = ">=3.9" authors = [ {name = "Corey Forman (digitalsleuth)", email = "github@digitalsleuth.ca"} ] maintainers = [ {name = "Corey Forman (digitalsleuth)", email = "github@digitalsleuth.ca"} ] description = "Python 3 timestamp decode/encode tool" readme = "README.md" keywords = ["digital forensics", "dfir", "timestamp", "decode", "encode"] classifiers = [ "Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 3", "Operating System :: OS Independent" ] [project.urls] Homepage = "https://github.com/digitalsleuth/time_decode" References = "https://github.com/digitalsleuth/time_decode/blob/master/REFERENCES.md" [project.scripts] time-decode = "time_decode.time_decode:main" time_decode-10.3.1/td.ico000066400000000000000000000250661513432141600151510ustar00rootroot0000000000000000 %& h%(0` go>‚X~WjaglVbO}g|nTzPzUŊp oIye{fin }hVxexf{Q@vNwQsÆj9imੁq_|f;|b{bʟ|gye9wcNwMbsFtH?A:4457)65z25U‹t{ nk}j|j~ldy]КxZ՜{^|Cs@q9u=JA4404=A65~/328ʒyimqѣru~l&zdʘxazb1y^vUѕuRɝ~X |>t6u:Mu? o.ߍo*77&/305Y<: /3-3܃kmGn}lܛzjzio|lw\uWxY-wYsJsFu1q,u1p(Llp"04Б-34;04l,218 UF97D=?u{h`waw^Öza|ctSsMxMsI=p9s6Qx3p#Օoo7w147-2.4T59 ,2-4fG<5436CjRp~tɘ}uڒzȓzpNye tW؏tTȔy\ w[ qDԏq?o4n'v) p!Blp3o6o.3ڦ-3޹.4ݖ-36514Ԓeɫm~q{plzo|zn4|QzX!wZrLsHqE5q0w0EoBlnxk lmŕk05I,31839 1765|13yHzuNQCE=ҡ<5K&͙vΙ ޣqKnq lsi}7<-3.4W87>1359C8=9k}f:{d=zf!xz\٧LE?80)ߧ,ߦޥ .ޣݣݢQܡ۟Ԛho %ik/.3ݾ.3ސ>968>< 2335BA7>86Ƶ[%~]{_y_w^v[vXXR}L C;2+$ߧߦaޤ ޣݡܠܟܞ՘Ìi/4ۏ/3ݼ;624Ա3425hE;74671V|XƩ{\p{b2|lyi šZ-RxJD;=/'ߦߥmޥ`ݢݢܠ]ܟܝmۜښښ6:m04<6v344435ׄ9555UB 91)Wߧ!ߦޥ ܡ\ܠۜIۛښڙڙLOXGI<6b4455Ҳ35֖9555lhzYCyXʟXSNG@B&yߧߦQޤ QޣݢSܟIܟښ9ښڙ ڙ~ژMOPNO?8Y5565Щ55Ԟ:565{ƇQ yLө~QϡUS{NcGt?6.&*ߥޤ ޣ9ݢݡܠQܞoܝڛڛښڙ;ڙڙ ژyڗOORPONL\=<75ϫ55Ҝ:575σŅPzJhƖQ-!$ߧߦ\ޤ ޣݢܡ!ܠܟܝ۝ۜuښNښڙژPژژٖٗPPQPrSOlSO85̷65А<595̓D'@k91*c"ޥuޤ ޣyݡݡܠܟܝ4ܝrۜ?ڙڙژzٗؖؕTPىUPؾ:685{>6:5|G=D?81*!ߧߥޤ ޣWݢݡ&ܟܞܝܜڙ@ژژKٖٗؕؕTPTPVPײVP֘MF:6[@6;6nA=863ߦޥSޤ ޣݢCܡ ܝۜۛښoڙ,ڙ6ژژژؖCؖؕ-ؕ ؔؔSUPUP|XPXPfZQ[QSJ1A6=7Zޢݢݡܠeܝۜڛڛښ}ڙڙژژڗ`ؖؕؕؔ\ؔؔ VPVPWPCYP&YQZQ+\R \R}]RU> B6?8>A8•BL BL^BLCLDLDLEM+ܟkܞܝzۜ:ۛښڙ"ژژژؕ*ؕؕؕ ؔؔؔWPrXPXP[Qq[Q\RR;.C6C;I>@6JABL CLCLCL0DL5DLoEMFMFMGM ܝVۜۛښښ ڙڙژڗ>ٗؖؕCؕؕؕؕؔؓؓYPYPZQӀ]R]RАU?YE7NDF:2A6I=BLCLPCL GMLGMHMIM!ڛHښڙژژژZٖٗٗؕؕؕؕUؕؓZؓؓXZQҀ[Q[Q^R1^R_R0bSbSScQčJ:G8]C6VLEMFM&GMIMINMPZW8ە6܍يх 'ؖؕ1ؕ/ؕؓؓؓu\Q<\Q]R\`Rͧ`RcS{cSgS]JH8E7EMtEMFMGMGMHMIMlJH ^ZaZߢ`YcZSׇ؆օуˁ ؓ]R+]R^RϜaS3aSbSCeSeSeSƁiSiSjSCJ8G8FMqFMmGM.GMHM:JLLDDA@AIh^cZ܁bXeY}m^ȂӃ`ӂҁπ~}}e^R?^R_Rα^RcSbScSɱfSCfSgS kS_kSkS]A L8K9MOEEB>?BeZYeXfW׻hW ̀?~~~}}RmM hL`Q_R͙_ScSɆdSdShSøhSímTnTY;KN8R?@AIV:h\FXCߌTBQBOBMChPGnNs]lU7lSzlRĤlQ¶mPmOnOqnO3qSOF PF gSmTsmTnTxUUfB_?UFPCMBKBKCHfEZDl[Dў]EL kGJlFƟYF VDٶSCRDۙSFgH%dFqbFϲ`E^E]D[D[DZC[C[D\DХ^FlH"lFǨlEnFŏUENSCRCRCٖTE*aH_F)^F7]E7]E)^GpMnG=mFƤnEnEoG=WGTD[SCSCUD׮wNtH%rGYqFØpFpEpEľpGOqKVE6VERIHHH}HzHxGvFuFsFsFrrH!JaIIIH|HozHPxI(vMO  $@HII'I'8I' DI' I'By'I' H'Db0$B@ @#>c?gGA p<C0?>sx?8(  gg~j1{T=vk.kq}dyc_xM1sC\34H34?28lC~nvyc]vXsJs0so%j686/3o-3R65+ni{rWwM/xR\BV.o}pm qkT.3s.4'34q@9}[_y`nTsުF23}iޤ pݡj۝po04n75M34n95czMUlJk4?'nޥRݢgܟoڛښjژoLMl;9m55m95lԞF(;n$iߧSޣ]ݡvܞM۝UڙvٗpٖmQOUOm=9m<6lh4e``]8ݢsܞ6ۛ[ۛiژpٗUؕlؔtVPqYQpZP4C7mA7/CL?DMEMGINwҖdڒa٘qٕmٕ`ؓ^ntY\Qf_RmcR!VDoD7nEM?GMdHGxGGHcY܂x?WЁt~]gQ4^RpcRyfSkjS3iQZL8gVCNPBH=@ChZhVdkSplPmmNrkLMdR%gS>kTooTeCWT:"UCPKBdJB~MB2bDvZDmSC\OClMCwODbLvUGwU.|TybGOBiDAUIBSJBvLC1bFeG^ERXDy_EUqP`VVV,_DUWDjmFPgFr[ENrFRhFa_E@I/mFDlFW VDSCvTD`aF:]Ea[DabE Examples'." ) utc_time = dt.now(timezone.utc) self.date_time = QDateTimeEdit(main_window) self.date_time.setObjectName("date_time") self.date_time.setDisplayFormat("yyyy-MM-dd HH:mm:ss.zzz") self.date_time.setGeometry(QRect(10, 30, 225, 22)) self.date_time.setDateTime(utc_time) self.date_time.setCalendarPopup(True) self.date_time.calendarWidget().setFixedHeight(220) self.date_time.calendarWidget().setGridVisible(True) self.date_time.setHidden(True) self.date_time.setEnabled(False) self.date_time.setStyleSheet(main_window.stylesheet) self.date_time.calendarWidget().setStyleSheet( "alternate-background-color: #EAF6FF; background-color: white; color: black;" ) self.date_time.setFont(self.text_font) self.date_time.calendarWidget().setFont(self.text_font) self.date_time.setToolTip( "Enter your date/time as 'YYYY-mm-dd HH:MM:SS.fff' and only 3 digits for milliseconds." ) self.now_button = QPushButton("&Now", clicked=self.set_now) self.now_button.setFont(self.text_font) self.update_button = QPushButton( "&Update Time Zones", clicked=self.update_timezones ) self.update_button.setFont(self.text_font) self.button_layout = QHBoxLayout() self.button_layout.addWidget(self.now_button) self.button_layout.addWidget(self.update_button) self.calendar_buttons = self.date_time.calendarWidget().layout() self.calendar_buttons.addLayout(self.button_layout) self.timestamp_formats = QComboBox(main_window) self.timestamp_formats.setObjectName("timestamp_formats") self.timestamp_formats.setGeometry(QRect(10, 60, 225, 22)) self.timestamp_formats.setStyleSheet( "combobox-popup: 0; background-color: white; color: black;" ) self.timestamp_formats.view().setVerticalScrollBarPolicy( Qt.ScrollBarPolicy.ScrollBarAsNeeded ) self.timestamp_formats.setFont(self.text_font) types = {} for _, this_type in ts_types.items(): types[this_type[0]] = this_type[1] types = dict(sorted(types.items(), key=lambda item: item[0].casefold())) for k, v in enumerate(types.items()): self.timestamp_formats.addItem(v[0]) self.timestamp_formats.setItemData(k, v[1], Qt.ItemDataRole.ToolTipRole) self.time_zone_offsets = QComboBox(main_window) self.time_zone_offsets.setObjectName("time_zone_offsets") self.time_zone_offsets.setGeometry(QRect(10, 90, 305, 22)) self.time_zone_offsets.setStyleSheet( "combobox-popup: 0; background-color: white; color: black;" ) self.time_zone_offsets.view().setVerticalScrollBarPolicy( Qt.ScrollBarPolicy.ScrollBarAsNeeded ) self.time_zone_offsets.setFont(self.text_font) try: dt_obj = dt.fromisoformat(self.date_time.text()).replace( tzinfo=timezone.utc ) except ValueError: dt_obj = dt.strptime(self.date_time.text(), __fmt__).replace( tzinfo=timezone.utc ) ts_offsets = common_timezone_offsets(dt_obj) for k, v in enumerate(ts_offsets): self.time_zone_offsets.addItem(f"{v[0]} {v[1]}") self.time_zone_offsets.setItemData(k, v[1], Qt.ItemDataRole.ToolTipRole) self.time_zone_offsets.setEnabled(True) self.time_zone_offsets.setHidden(False) tz_tooltip = ( "Time Zones in the drop-down box are displayed based on the current date/time.\n" "The actual UTC Offset (whether observing DST or not) will be calculated\naccordingly" " when generating output.\n\n" "For example: Europe/Amsterdam time zone is UTC+01:00 before 29 March 2026 at 2AM,\n" "then it is UTC+02:00 until 29 October 2026 at 3AM.\n\n" "If YOUR current date/time falls between these two times, the time zone will display " "UTC+02:00.\n" "Otherwise, it will display UTC+01:00.\n\nThe output will adjust based on the date/time" " value provided or determined." ) self.time_zone_offsets.setToolTip(tz_tooltip) self.output_table = QTableWidget(main_window) self.output_table.setSizePolicy( QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding ) self.output_table.setGeometry(QRect(10, 120, 440, 22)) self.output_table.setStyleSheet( "border: none; background-color: white; color: black; font-size: 10;" ) self.output_table.setVisible(False) self.output_table.setVerticalScrollBarPolicy( Qt.ScrollBarPolicy.ScrollBarAlwaysOn ) self.output_table.setHorizontalScrollBarPolicy( Qt.ScrollBarPolicy.ScrollBarAlwaysOff ) self.context_menu = ContextMenu(self.output_table) self.output_table.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) self.output_table.customContextMenuRequested.connect( self.context_menu.show_context_menu ) self.output_table.setFont(self.text_font) self.guess_button = QPushButton(main_window) self.guess_button.setObjectName("guess_button") self.guess_button.setEnabled(True) self.guess_button.setHidden(False) self.guess_button.setGeometry(QRect(245, 30, 70, 22)) self.guess_button.setStyleSheet("background-color: white; color: black;") self.guess_button.setFont(self.text_font) self.guess_button.clicked.connect(self.guess_decode) self.guess_button.setToolTip( "Run the current timestamp through all functions to 'Guess' the format." ) self.to_all_button = QPushButton(main_window) self.to_all_button.setObjectName("to_all_button") self.to_all_button.setEnabled(False) self.to_all_button.setHidden(True) self.to_all_button.setGeometry(QRect(245, 30, 70, 22)) self.to_all_button.setStyleSheet("background-color: white; color: black;") self.to_all_button.setFont(self.text_font) self.to_all_button.clicked.connect(self.encode_toall) self.to_all_button.setToolTip( "Convert the selected date/time value to all timestamp formats." ) self.encode_radio = QRadioButton(main_window) self.encode_radio.setObjectName("encode_radio") self.encode_radio.setGeometry(QRect(400, 30, 72, 20)) self.encode_radio.setStyleSheet("background-color: white; color: black;") self.encode_radio.setFont(self.text_font) self.encode_radio.toggled.connect(self._encode_select) self.decode_radio = QRadioButton(main_window) self.decode_radio.setObjectName("decode_radio") self.decode_radio.setGeometry(QRect(325, 30, 72, 20)) self.decode_radio.setChecked(True) self.decode_radio.setStyleSheet("background-color: white; color: black;") self.decode_radio.setFont(self.text_font) self.decode_radio.toggled.connect(self._decode_select) self.decode_from_file_button = QPushButton(main_window) self.decode_from_file_button.setObjectName("decode_from_file_button") self.decode_from_file_button.setEnabled(True) self.decode_from_file_button.setHidden(False) self.decode_from_file_button.setGeometry(QRect(322, 60, 72, 22)) self.decode_from_file_button.setStyleSheet( "background-color: white; color: black;" ) self.decode_from_file_button.setFont(self.text_font) self.decode_from_file_button.clicked.connect(self.csv_decode) self.decode_from_file_button.setToolTip( "Decode timestamps from a CSV/TXT file." ) self.dt_format_combo = QComboBox(main_window) self.dt_format_combo.setObjectName("dt_format_combo") self.dt_format_combo.setEnabled(True) self.dt_format_combo.setHidden(False) self.dt_format_combo.setFont(self.text_font) self.dt_format_combo.setGeometry(QRect(400, 60, 70, 22)) for k, v in enumerate(date_formats.items()): self.dt_format_combo.addItem(f"{v[0]}") self.dt_format_combo.setItemData( k, v[1].replace("%", ""), Qt.ItemDataRole.ToolTipRole ) self.dt_format_combo.setStyleSheet("background-color: white; color: black;") self.dt_format_combo.setToolTip("Choose your desired date/time format.") self.go_button = QPushButton(main_window) self.go_button.setObjectName("go_button") self.go_button.setGeometry(QRect(245, 60, 70, 22)) self.go_button.setStyleSheet("background-color: white; color: black;") self.go_button.setFont(self.text_font) self.go_button.clicked.connect(self.go_function) self.go_button.setToolTip("Convert to/from the timestamp selected to the left.") new_window_pixmap = QStyle.StandardPixmap.SP_ArrowUp icon = main_window.style().standardIcon(new_window_pixmap) self.new_window_button = QPushButton(main_window) self.new_window_button.setObjectName("new_window_button") self.new_window_button.setGeometry(QRect(325, 90, 22, 22)) self.new_window_button.setStyleSheet( "background-color: white; color: black; border: 0;" ) self.new_window_button.setFont(self.text_font) self.new_window_button.setIcon(icon) self.new_window_button.setIconSize(QSize(22, 22)) self.new_window_button.setToolTip("Open results in a new window") self.new_window_button.clicked.connect(self._new_window) if os.sys.platform == "linux": vert = 415 else: vert = 370 self.timestamp_count_label = QLabel(main_window) self.timestamp_count_label.setGeometry(QRect(vert, 94, 90, 22)) self.timestamp_count_label.setStyleSheet( "background-color: white; color: black;" ) self.timestamp_count_label.setFont(self.text_font) self.timestamp_count_label.setAlignment(Qt.AlignmentFlag.AlignRight) self.retranslate_ui(main_window) QMetaObject.connectSlotsByName(main_window) def retranslate_ui(self, main_window): """Retranslate the Ui""" _translate = QCoreApplication.translate main_window.setWindowTitle(_translate("main_window", __appname__, None)) self.date_time.setDisplayFormat( _translate("main_window", "yyyy-MM-dd HH:mm:ss.zzz", None) ) self.timestamp_text.setPlaceholderText( _translate("main_window", "Timestamp", None) ) self.guess_button.setText(_translate("main_window", "Guess", None)) self.to_all_button.setText(_translate("main_window", "To All", None)) self.encode_radio.setText(_translate("main_window", "Encode", None)) self.decode_radio.setText(_translate("main_window", "Decode", None)) self.go_button.setText(_translate("main_window", "\u2190 From", None)) self.decode_from_file_button.setText( _translate("main_window", "From file..", None) ) self.new_window_button.setHidden(True) self.new_window_button.setEnabled(False) self._menu_bar() def set_now(self): """Sets the current date / time on the Calendar Widget""" today = QDate().currentDate() now = dt.now(timezone.utc) self.date_time.calendarWidget().setSelectedDate(today) self.date_time.setDateTime(now) def update_timezones(self): """Updates the time_zone_offsets combo box to reflect the selected Calendar date/time""" try: dt_obj = dt.fromisoformat(self.date_time.text()).replace( tzinfo=timezone.utc ) except ValueError: dt_obj = dt.strptime(self.date_time.text(), __fmt__).replace( tzinfo=timezone.utc ) ts_offsets = common_timezone_offsets(dt_obj) self.time_zone_offsets.clear() for k, v in enumerate(ts_offsets): self.time_zone_offsets.addItem(f"{v[0]} {v[1]}") self.time_zone_offsets.setItemData(k, v[1], Qt.ItemDataRole.ToolTipRole) def _decode_select(self): """Sets the structure for the decode radio button""" self.date_time.setHidden(True) self.date_time.setEnabled(False) self.timestamp_text.setHidden(False) self.timestamp_text.setEnabled(True) self.guess_button.setEnabled(True) self.guess_button.setHidden(False) self.to_all_button.setEnabled(False) self.to_all_button.setHidden(True) self.go_button.setText("\u2190 From") self.new_window_button.setHidden(True) self.new_window_button.setEnabled(False) self.timestamp_count_label.setText("") self.decode_from_file_button.setEnabled(True) self.decode_from_file_button.setHidden(False) self.dt_format_combo.setEnabled(True) self.dt_format_combo.setHidden(False) self._reset_table() def _encode_select(self): """Sets the structure for the encode radio button""" self.timestamp_text.setHidden(True) self.timestamp_text.setEnabled(False) self.date_time.setHidden(False) self.date_time.setEnabled(True) self.guess_button.setEnabled(False) self.guess_button.setHidden(True) self.to_all_button.setEnabled(True) self.to_all_button.setHidden(False) self.go_button.setText("\u2190 To") self.new_window_button.setHidden(True) self.new_window_button.setEnabled(False) self.timestamp_count_label.setText("") self.decode_from_file_button.setEnabled(False) self.decode_from_file_button.setHidden(True) self.dt_format_combo.setEnabled(False) self.dt_format_combo.setHidden(True) self._reset_table() def _reset_table(self): """Resets the GUI structure""" self.adjustSize() self.setFixedWidth(490) self.setFixedHeight(130) self.output_table.setVisible(False) self.output_table.clearContents() self.output_table.setColumnCount(0) self.output_table.setRowCount(0) self.output_table.reset() self.output_table.setStyleSheet("border: none") def guess_decode(self): """Will take the provided timestamp and run it through the 'from_all' function""" timestamp = self.timestamp_text.text() selected_tz = self.time_zone_offsets.currentText() tz_name = " ".join(selected_tz.split(" ")[1:]) if timestamp == "": self._msg_box("You must enter a timestamp!", "Info") return if "UTC - Default" in selected_tz: all_ts = from_all(timestamp) else: all_ts = from_all(timestamp, tz_name) results = {} for k, _ in all_ts.items(): results[k] = f"{all_ts[k][0]} {all_ts[k][2]}" self.results = results self.display_output(results) def encode_toall(self): """Takes the date_time object, passes it to the to_timestamps function which encodes it""" dt_val = self.date_time.text() try: dt_obj = dt.fromisoformat(dt_val) except ValueError: dt_obj = dt.strptime(dt_val, __fmt__) if dt_obj.tzinfo is None: dt_obj = dt_obj.replace(tzinfo=timezone.utc) selected_tz = self.time_zone_offsets.currentText() if "UTC - Default" not in selected_tz: tz_name = " ".join(selected_tz.split(" ")[1:]) tz = tzone(tz_name) dt_obj = dt_obj.replace(tzinfo=tz) results, _ = to_timestamps(dt_obj) self.results = results self.display_output(results) def display_output(self, ts_list): """Configures the output format for the provided values""" self._reset_table() tbl_fixed_width = 475 col2_width = 235 self_fixed_width = 490 if os.sys.platform == "linux": tbl_fixed_width = 520 col2_width = 280 self_fixed_width = 535 self.output_table.setVisible(True) self.output_table.setColumnCount(2) self.output_table.setAlternatingRowColors(True) self.output_table.setStyleSheet( """ border: none; alternate-background-color: #EAF6FF; background-color: white; color: black; selection-background-color: #1644b9; """ ) for ts_type, result in ts_list.items(): row = self.output_table.rowCount() self.output_table.insertRow(row) widget0 = QTableWidgetItem(ts_types[ts_type][0]) widget0.setFlags(widget0.flags() & ~Qt.ItemFlag.ItemIsEditable) widget0.setToolTip(ts_types[ts_type][1]) widget1 = QTableWidgetItem(result) widget1.setFlags(widget1.flags() & ~Qt.ItemFlag.ItemIsEditable) self.output_table.setItem(row, 0, widget0) self.output_table.item(row, 0).setTextAlignment( int(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter) ) self.output_table.setItem(row, 1, widget1) self.output_table.item(row, 1).setTextAlignment( int(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter) ) if self.decode_radio.isChecked(): this_yr = int(dt.now(timezone.utc).strftime("%Y")) try: ts = result.split(" ")[0] result_yr = int(dt.fromisoformat(ts).strftime("%Y")) except ValueError: split_ts = result.split(" ") ts = f"{split_ts[0]} {split_ts[1]}" result_yr = int(dt.strptime(ts, __fmt__).strftime("%Y")) if result_yr in range(this_yr - 5, this_yr + 5): for each_col in range(0, self.output_table.columnCount()): this_col = self.output_table.item(row, each_col) this_col.setBackground(QColor("lightgreen")) this_col.setForeground(QColor("black")) self.output_table.horizontalHeader().setFixedHeight(1) self.output_table.verticalHeader().setFixedWidth(1) self.output_table.setFixedWidth(tbl_fixed_width) self.output_table.setColumnWidth(0, 220) self.output_table.setColumnWidth(1, col2_width) self.output_table.resizeRowsToContents() self.output_table.setShowGrid(True) total_row_height = sum( self.output_table.rowHeight(row) for row in range(self.output_table.rowCount()) ) self.output_table.setFixedHeight(400) if total_row_height > 500: self.setFixedHeight(540) self.output_table.verticalScrollBar().show() else: self.setFixedHeight(self.height() + int(total_row_height + 12)) self.output_table.verticalScrollBar().hide() self.setFixedWidth(self_fixed_width) self.new_window_button.setEnabled(True) self.new_window_button.setHidden(False) if len(ts_list) > 1: txt = "timestamps" else: txt = "timestamp" self.timestamp_count_label.setText(f"{len(ts_list)} {txt}") def go_function(self): """The To/From button: converts a date/timestamp, depending on the selected radio button""" global __fmt__ results = {} __fmt__ = date_formats[self.dt_format_combo.currentText()] ts_format = self.timestamp_formats.currentText() try: ts_date = dt.fromisoformat(self.date_time.text()).replace( tzinfo=timezone.utc ) except ValueError: ts_date = dt.strptime(self.date_time.text(), __fmt__).replace( tzinfo=timezone.utc ) selected_tz = self.time_zone_offsets.currentText() if "UTC - Default" not in selected_tz: tz_name = " ".join(selected_tz.split(" ")[1:]) tz = tzone(tz_name) ts_date = ts_date.replace(tzinfo=tz) in_ts_types = [k for k, v in ts_types.items() if ts_format in v] if not in_ts_types: self._msg_box( f"For some reason {ts_format} is not in the list of available conversions!", "Error", ) return ts_type = in_ts_types[0] if self.encode_radio.isChecked(): is_func = False ts_selection = f"to_{ts_type}" for _, funcs in single_funcs.items(): this_func = funcs[1] if inspect.isfunction(this_func): func_name = this_func.__name__ if func_name == ts_selection: is_func = True if not is_func: msg = ( f"Cannot convert to {ts_format}, information required to do this is " "unavailable.\n\n" "This is typically because the timestamp is only a small part of a larger " "value, and the other 'parts' of the value are not available to combine with" " the timestamp to provide a reasonable output." ) self._msg_box( msg, "Warning", ) return ts_func = globals()[ts_selection] result, _ = ts_func(ts_date) results[ts_type] = result self.results = results self.display_output(results) elif self.decode_radio.isChecked(): is_func = False ts_text = self.timestamp_text.text() if ts_text == "": self._msg_box("You must enter a timestamp!", "Info") return ts_selection = f"from_{ts_type}" for _, funcs in single_funcs.items(): this_func = funcs[0] if inspect.isfunction(this_func): func_name = this_func.__name__ if func_name == ts_selection: is_func = True if not is_func: msg = ( f"Cannot convert from {ts_format}, information required to do this is " "unavailable.\n\n" "This is typically because the timestamp is only a small part of a larger " "value, and the other 'parts' of are not available within your value to provide" " a reasonable output." ) self._msg_box( msg, "Warning", ) return ts_func = globals()[ts_selection] result, _, _, reason, tz_out = ts_func(ts_text) if not result: self._msg_box(reason, "Error") return if "UTC - Default" not in selected_tz: result, tz_out, _ = convert_timezone(tz_name, result) if tz_out.startswith("+") or tz_out.startswith("-"): results[ts_type] = f"{result}{tz_out}" else: results[ts_type] = f"{result} {tz_out}" self.results = results self.display_output(results) def csv_decode(self): """GUI function to decode contents a CSV/TXT file from selected timestamp format""" csv_file_path, _ = QFileDialog.getOpenFileName( self, "Select a csv or txt document ...", "", "csv/txt files (*.csv *.txt)" ) self.selected_header = None combo_style = """ combobox-popup: 0; background-color: white; color: black; selection-background-color: white; selection-color: black; """ sample_rows = [] if csv_file_path: self.csv_path = os.path.normpath(os.path.abspath(csv_file_path)) self.csv_content_window = CsvWindow( self.timestamp_formats, self.time_zone_offsets, self.dt_format_combo ) self.csv_content_window.setStyleSheet("background: white; color: black;") self.csv_content_window.window_label.setFont(self.text_font) self.csv_content_window.setWindowTitle("Choose your options for conversion") self.csv_content_window.setMaximumWidth(330) self.csv_go_button = QPushButton(self.csv_content_window) self.csv_go_button.setObjectName("csv_go_button") self.csv_go_button.setEnabled(True) self.csv_go_button.setHidden(False) self.csv_go_button.setFont(self.text_font) self.csv_go_button.setText("Go") self.csv_go_button.setGeometry(QRect(315, 230, 70, 22)) self.csv_go_button.setStyleSheet("background: white; color: black;") self.csv_go_button.clicked.connect( lambda: self.submit_csv_data( csv_file_path, self.csv_content_window.ts_formats.currentText(), self.selected_header, tz_name=self.csv_content_window.time_zones.currentText(), dt_format=date_formats[ self.csv_content_window.dt_formats.currentText() ], ) ) self.select_new_csv = QPushButton(self.csv_content_window) self.select_new_csv.setObjectName("select_new_csv") self.select_new_csv.setEnabled(True) self.select_new_csv.setHidden(False) self.select_new_csv.setFont(self.text_font) self.select_new_csv.setText("Load new..") self.select_new_csv.setGeometry(QRect(240, 260, 70, 22)) self.select_new_csv.clicked.connect(self.select_new_file) self.select_new_csv.setToolTip( "Load a new CSV/TXT file to replace the current one." ) self.csv_content_window.ts_formats.setGeometry(QRect(10, 230, 225, 22)) self.csv_content_window.ts_formats.setStyleSheet(combo_style) self.csv_content_window.ts_formats.view().setVerticalScrollBarPolicy( Qt.ScrollBarPolicy.ScrollBarAsNeeded ) self.csv_content_window.ts_formats.setFont(self.text_font) self.csv_content_window.time_zones.setGeometry(QRect(10, 260, 225, 22)) self.csv_content_window.time_zones.setStyleSheet(combo_style) self.csv_content_window.time_zones.view().setVerticalScrollBarPolicy( Qt.ScrollBarPolicy.ScrollBarAsNeeded ) self.csv_content_window.time_zones.setFont(self.text_font) self.csv_content_window.dt_formats.setGeometry(QRect(240, 230, 70, 22)) self.csv_content_window.dt_formats.setToolTip( "Choose your desired date/time format." ) self.csv_content_window.dt_formats.setFont(self.text_font) self.csv_close_button = QPushButton(self.csv_content_window) self.csv_close_button.setObjectName("csv_close_button") self.csv_close_button.setFont(self.text_font) self.csv_close_button.setText("Close") self.csv_close_button.setGeometry(QRect(315, 260, 70, 22)) self.csv_close_button.clicked.connect(self.csv_content_window.close) try: with open(csv_file_path, "r", newline="", encoding="utf-8") as src: sample = src.read(1024) try: dialect = csv.Sniffer().sniff(sample) except csv.Error: dialect = csv.get_dialect("excel") src.seek(0) reader = csv.reader(src, dialect) columns = len(next(reader, None)) src.seek(0) rows = 5 for row in reader: sample_rows.append(row) rows -= 1 if rows == 0: break except (FileNotFoundError, PermissionError): handle(sys.exc_info()) self.csv_content_window.output_table.setColumnCount(columns) self.csv_content_window.output_table.setRowCount(len(sample_rows)) self.csv_content_window.output_table.setHorizontalHeaderLabels( [str(i + 1) for i in range(columns)] ) self.csv_content_window.output_table.setAlternatingRowColors(True) self.csv_content_window.output_table.setStyleSheet( """ border: none; alternate-background-color: #EAF6FF; background-color: white; color: black; selection-background-color: #1644b9; """ ) self.csv_content_window.output_table.setFont(self.text_font) for row_index, row in enumerate(sample_rows): for col_index in range(columns): cell_text = row[col_index] if col_index < len(row) else "" item = QTableWidgetItem(cell_text) item.setFlags(item.flags() & ~Qt.ItemFlag.ItemIsEditable) self.csv_content_window.output_table.setItem( row_index, col_index, item ) self.csv_content_window.output_table.verticalHeader().setFixedWidth(1) self.csv_content_window.output_table.horizontalHeader().setFixedHeight(1) self.csv_content_window.output_table.resizeColumnsToContents() self.csv_content_window.output_table.setGeometry( QRect( 10, 50, 380, self.csv_content_window.output_table.verticalHeader().length() + 20, ) ) self.csv_content_window.setFixedSize( 400, 290, ) self.csv_content_window.output_table.itemSelectionChanged.connect( self.get_column_number ) window_width = self.csv_content_window.width() window_height = self.csv_content_window.height() self.csv_content_window.window_label.setGeometry( QRect(10, 10, window_width - 10, 30) ) self.csv_content_window.window_label.setText( ( "Select the column which contains your timestamps, then\n " "choose a timestamp format and time zone, then click 'Go'." ) ) x = (self.screen_layout.width() // 2) - (window_width // 2) y = (self.screen_layout.height() // 2) - (window_height // 2) self.csv_content_window.move(x, y) self.csv_content_window.show() def select_new_file(self): """Simply closes the open CSV window and reloads to select a new file""" self.csv_content_window.close() self.csv_decode() def submit_csv_data( self, csv_file, ts_format, column_num, tz_name=None, dt_format=None ): """Prepares data to submit for csv conversion""" global __fmt__ if dt_format is not None and dt_format != __fmt__: __fmt__ = dt_format in_ts_types = [k for k, v in ts_types.items() if ts_format in v] if not in_ts_types: self._msg_box( f"For some reason {ts_format} is not in the list of available conversions!", "Error", ) return ts_type = in_ts_types[0] if tz_name is not None and "UTC - Default" not in tz_name: tz_name = " ".join(tz_name.split(" ")[1:]) status, dest, reason = generate_csv( csv_file, ts_type, column_num, tz_name=tz_name ) else: status, dest, reason = generate_csv(csv_file, ts_type, column_num) dest = os.path.normpath(dest) if status: self._msg_box(f"Output CSV file saved as {dest}.", "Info") return if reason is None: reason = "Unknown" self._msg_box( f"CSV could not be processed. {dest} is incomplete.\n\nReason: {reason}", "Error", ) def get_column_number(self): """Gets the selected column number from the sample data and sets it into a variable""" table = self.csv_content_window.output_table selected_items = table.selectedItems() if selected_items: self.selected_header = selected_items[0].column() + 1 def _menu_bar(self): """Add a menu bar""" self.menu_bar = self.menuBar() self.menu_bar.setStyleSheet(self.stylesheet) self.file_menu = self.menu_bar.addMenu("&File") self.exit_action = QAction("&Exit", self) self.exit_action.triggered.connect(QApplication.instance().quit) self.exit_action.setFont(self.text_font) self.csv_decode_action = QAction("&Decode from file ...", self) self.csv_decode_action.triggered.connect(self.csv_decode) self.csv_decode_action.setFont(self.text_font) self.file_menu.addAction(self.csv_decode_action) self.file_menu.addAction(self.exit_action) self.menu_bar.addMenu(self.file_menu) self.view_menu = self.menu_bar.addMenu("&View") self.view_action = QAction("E&xamples", self) self.view_action.triggered.connect(self._examples) self.view_action.setFont(self.text_font) self.view_menu.addAction(self.view_action) self.menu_bar.addMenu(self.view_menu) self.help_menu = self.menu_bar.addMenu("&Help") self.about_action = QAction("&About", self) self.about_action.triggered.connect(self._about) self.about_action.setFont(self.text_font) self.help_menu.addAction(self.about_action) self.menu_bar.setFont(self.text_font) def _msg_box(self, message, msg_type, buttons="ok"): button_choice = None if buttons == "ok": button_choice = QMessageBox.StandardButton.Ok elif buttons == "ok_cancel": button_choice = ( QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.Cancel ) elif buttons == "yes_no_cancel": button_choice = ( QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No | QMessageBox.StandardButton.Cancel ) elif buttons == "yes_no": button_choice = ( QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No ) self.msg_box = QMessageBox() self.msg_box.setStyleSheet("background-color: white; color: black;") self.msg_box.setSizePolicy( QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding ) if msg_type == "Error": self.msg_box.setIcon(QMessageBox.Icon.Critical) elif msg_type == "Info": self.msg_box.setIcon(QMessageBox.Icon.Information) elif msg_type == "Warning": self.msg_box.setIcon(QMessageBox.Icon.Warning) elif msg_type == "": self.msg_box.setIcon(QMessageBox.Icon.NoIcon) msg_type = "Unidentified" self.msg_box.setWindowTitle(msg_type) self.msg_box.setFixedSize(300, 300) self.msg_box.setText(f"{message}\t") self.msg_box.setStandardButtons(button_choice) x = (self.screen_layout.width() // 2) - (self.msg_box.width() // 2) y = (self.screen_layout.height() // 2) - (self.msg_box.height() // 2) self.msg_box.move(x, y) self.msg_box.exec() def _about(self): self.about_window = AboutWindow() self.about_window.setWindowFlags( self.about_window.windowFlags() & ~Qt.WindowType.WindowMinMaxButtonsHint ) github_link = f'View the source on GitHub' self.about_window.setWindowTitle("About") self.about_window.about_label.setText( f"Version: {__appname__}\nLast Updated: {__date__}\nAuthor: {__author__}" ) self.about_window.about_label.setFont(self.text_font) self.about_window.url_label.setOpenExternalLinks(True) self.about_window.url_label.setText(github_link) self.about_window.url_label.setFont(self.text_font) self.logo = QPixmap() self.logo.loadFromData(base64.b64decode(self.__fingerprint__)) self.about_window.logo_label.setPixmap(self.logo) self.about_window.logo_label.resize(20, 20) about_width = self.about_window.width() about_height = self.about_window.height() x = (self.screen_layout.width() // 2) - (about_width // 2) y = (self.screen_layout.height() // 2) - (about_height // 2) self.about_window.move(x, y) self.about_window.show() def _examples(self): if self.examples_window is None: structures = {} for _, data_list in ts_types.items(): structures[data_list[0]] = ( data_list[1], data_list[2], ) structures = sorted(structures.items(), key=lambda item: item[0].casefold()) self.examples_window = NewWindow() self.examples_window.window_label.setGeometry(QRect(0, 0, 200, 24)) self.examples_window.setWindowTitle("Timestamp Examples") self.examples_window.setStyleSheet( """ border: none; alternate-background-color: #EAF6FF; background-color: white; color: black; """ ) self.examples_window.output_table.setColumnCount(2) for example in structures: row = self.examples_window.output_table.rowCount() self.examples_window.output_table.insertRow(row) widget0 = QTableWidgetItem(example[1][0]) widget0.setFlags(widget0.flags() & ~Qt.ItemFlag.ItemIsEditable) widget0.setToolTip(example[0]) widget1 = QTableWidgetItem(example[1][1]) widget1.setFlags(widget1.flags() & ~Qt.ItemFlag.ItemIsEditable) self.examples_window.output_table.setItem(row, 0, widget0) self.examples_window.output_table.item(row, 0).setTextAlignment( int(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter) ) self.examples_window.output_table.item(row, 0) self.examples_window.output_table.setItem(row, 1, widget1) self.examples_window.output_table.item(row, 1).setTextAlignment( int(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter) ) self.examples_window.output_table.horizontalHeader().setFixedHeight(1) self.examples_window.output_table.verticalHeader().setFixedWidth(1) self.examples_window.output_table.setGeometry( QRect( 0, 0, self.examples_window.output_table.horizontalHeader().length(), self.examples_window.output_table.verticalHeader().length(), ) ) self.examples_window.output_table.resizeColumnsToContents() self.examples_window.output_table.resizeRowsToContents() self.examples_window.output_table.setShowGrid(True) self.examples_window.output_table.setAlternatingRowColors(True) self.examples_window.setFixedSize( self.examples_window.output_table.horizontalHeader().length() + 48, 400, ) self.examples_window.output_table.setFont(self.text_font) text = ( f"{self.examples_window.output_table.rowCount()} timestamp examples. " "NOTE: Not all timestamp can be converted TO, as a timestamp may be only PART" " of the total value." ) self.examples_window.window_label.setText(text) self.examples_window.window_label.setFont(self.text_font) x = (self.screen_layout.width() // 2) - (self.examples_window.width() // 2) y = (self.screen_layout.height() // 2) - ( self.examples_window.height() // 2 ) self.examples_window.move(x, y) self.examples_window.show() else: self.examples_window.close() self.examples_window = None self._examples() def _new_window(self): table_data = self.results selected_tz = self.time_zone_offsets.currentText() msg = title = "" if self.encode_radio.isChecked(): entered_value = self.date_time.text() title = f"Encoded: {entered_value}" if "UTC - Default" not in selected_tz: entered_value = f"{entered_value} {selected_tz}" msg = f"Encoded: {entered_value}" elif self.decode_radio.isChecked(): entered_value = self.timestamp_text.text() title = f"Decoded: {entered_value}" if "UTC - Default" not in selected_tz: entered_value = f"{entered_value} {selected_tz}" msg = f"Decoded: {entered_value}" if self.new_window is None: self.new_window = NewWindow() self.new_window.window_label.setGeometry(QRect(0, 0, 200, 24)) self.new_window.window_label.setText(msg) self.new_window.window_label.setFont(self.text_font) self.new_window.setWindowTitle(title) self.new_window.setStyleSheet( """ border: none; alternate-background-color: #EAF6FF; background-color: white; color: black; """ ) self.new_window.output_table.setColumnCount(2) for ts_type, result in table_data.items(): row = self.new_window.output_table.rowCount() self.new_window.output_table.insertRow(row) widget0 = QTableWidgetItem(ts_types[ts_type][0]) widget0.setFlags(widget0.flags() & ~Qt.ItemFlag.ItemIsEditable) widget0.setToolTip(ts_types[ts_type][1]) widget1 = QTableWidgetItem(result) widget1.setFlags(widget1.flags() & ~Qt.ItemFlag.ItemIsEditable) self.new_window.output_table.setItem(row, 0, widget0) self.new_window.output_table.item(row, 0).setTextAlignment( int(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter) ) self.new_window.output_table.item(row, 0) self.new_window.output_table.setItem(row, 1, widget1) self.new_window.output_table.item(row, 1).setTextAlignment( int(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter) ) if self.decode_radio.isChecked(): ts = result.split(" ")[0] this_yr = int(dt.now(timezone.utc).strftime("%Y")) try: ts = result.split(" ")[0] result_yr = int(dt.fromisoformat(ts).strftime("%Y")) except ValueError: split_ts = result.split(" ") ts = f"{split_ts[0]} {split_ts[1]}" result_yr = int(dt.strptime(ts, __fmt__).strftime("%Y")) if result_yr in range(this_yr - 5, this_yr + 5): for each_col in range( 0, self.new_window.output_table.columnCount() ): this_col = self.new_window.output_table.item(row, each_col) this_col.setBackground(QColor("lightgreen")) this_col.setForeground(QColor("black")) self.new_window.output_table.horizontalHeader().setFixedHeight(1) self.new_window.output_table.verticalHeader().setFixedWidth(1) self.new_window.output_table.setGeometry( QRect( 0, 0, self.new_window.output_table.horizontalHeader().length(), self.new_window.output_table.verticalHeader().length(), ) ) self.new_window.output_table.resizeColumnsToContents() for col in range(0, self.new_window.output_table.columnCount()): col_width = self.new_window.output_table.columnWidth(col) self.new_window.output_table.setColumnWidth(col, col_width + 10) self.new_window.output_table.resizeRowsToContents() row_height = self.new_window.output_table.rowHeight(row) total_row_height = sum( row_height for row in range(self.new_window.output_table.rowCount()) ) if total_row_height < 400: window_height = total_row_height + (row_height * 2) + 8 else: window_height = 400 self.new_window.output_table.setShowGrid(True) self.new_window.output_table.setAlternatingRowColors(True) self.new_window.setFixedSize( self.new_window.output_table.horizontalHeader().length() + 38, window_height, ) self.new_window.output_table.setFont(self.text_font) x = (self.screen_layout.width() // 2) - (self.new_window.width() // 2) y = (self.screen_layout.height() // 2) - (self.new_window.height() // 2) self.new_window.move(x, y) self.new_window.show() else: self.new_window.close() self.new_window = None self._new_window() class TimeDecodeGui(QMainWindow, UiMainWindow): """TimeDecode Class""" stylesheet = """ QMainWindow { background-color: white; color: black; } QLineEdit { background-color: white; color: black; } QDateTimeEdit { background-color: white; color: black; } QMenu { background-color: white; color: black; border: 1px solid black; margin: 0; } QMenu::item { background-color: white; color: black; margin: 0; padding: 4px 20px 4px 20px; } QMenu::item:selected { background-color: #1644b9; color: white; margin: 0; padding: 4px 20px 4px 20px; } QMenuBar { background-color: white; color: black; } QMenuBar::item { background-color: white; color: black; } QMenuBar::item:selected { background-color: #1644b9; color: white; } """ __fingerprint__ = """ AAABAAIAMDAAAAEAIACoJQAAJgAAABAQAAABACAAaAQAAM4lAAAoAAAAMAAAAGAAAAABACAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAC9hGcXr4JvPgAAAAAAAAAAwoJYDrZ+V2qwgWEDAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAC/hGd/uIRsVgAAAAC9gmJPqH1n/Zp8bn+hh4UBwYBUH7N6UPCnelWY AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMWKcAy+h29Juot5BQAAAAC/hGV7s4Bm+6t/aaGpgW4KpX1o VpZ4ZfaReGaGAAAAALB7UUCjdk74nHdRcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMOGajm7g2n3sIFt4KmB cV+uiXwBs4FmO6l8YuSie2LKn3xnFpV5ZTmRd2NOAAAAAAAAAAChd01il3NG+5V0SD8AAAAAQTq1 DjQ0us81N8opAAAAADY1unoyNcxVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMKLdBXA kHsJAAAAAAAAAAC7h24VsIFriKZ9avegfGq+n35sG6qAZBqgeV3Qmnha1Zx7XhUAAAAAAAAAALZ8 Qx0AAAAAl3NAnZBxOeKTdT0QSkG6ATQ0vL4wNM3DPUHcATY1u34vM8/qMjjcDwAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAypJ5BL6EafSzgm38qoFx0aN/coKigXUdAAAAAKV+bCademTKmHhh5pl6YjGe eV4SmHZV0ZV1UsmdflgJv3w+GrB0Nv2ldTpNmHU/DY9vLt+NbyqYAAAAADc3xCYvM835MDXYWTw6 xQovM9DkLTPcgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+Gax20gm1HqoBug6F9bNybemr4 mHpphJx/bwadfGwIl3dcqpN1V+6VeFktmHdZG5JzSuWSc0aeAAAAAK11MY2ecSzrnHUxF5BwKEyL bBv8j3AiGAAAAAAwNNCRLTPY2zQ74AMwNNRsLDLd7zE44w1VRroBOTfCRD0/1QEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAKaDdQObe2hglXdh7ZN3XsOWemERm3xjA5J0U66Pc03glnhNE5JzST2OcDn8 kXM2Uat4MweccCPVlW8fpAAAAACObx43l3cxAQAAAAA0N9QaLTLY+C4031Q1OdkLLDLc7y004WZH PLIRNTS//TM200MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAu4RqUquBcJ+ffnTJmH112pJ6csyRenBOAAAAAAAAAAAAAAAAlnllIJF0V9iPdFTIlHlc CpR3WwuOcUTUj3E/qgAAAACNbzSNjW4n45d2KQuZcCFCkWwR/pJwEjMAAAAAqW8INpxvDxIAAAAA LjPapi0z3rkAAAAALjTdli0z4KwAAAAANjXDxDE01JIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuoJlyauAbbCffnF/lntwbJJ6b3ySem40AAAAALJ8 URmjelghAAAAAJN3WhuOckzkj3NIoAAAAACOcUU1kHEw/Jh3MEWLb0IOi2wd6Y5uGHgAAAAAj2sN vI5sCKwAAAAAqG0DxZVrBY0AAAAAMDXbSSwz3fsxOOEUMzngCTE34RIAAAAANjXHfDEz1dYAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAALJ5SHqadU7ysYxRQwAAAACzjEU90qE8/OCrNUsAAAAA4KgmoOCn H8QAAAAAzZkRds6ZC+feowcGl3EPS5FuA/uVcQkYo2wDc5JpAuOofR4BNzzdBy0z3fQuNN9XAAAA AAAAAAAAAAAAODfKPjEz1P41Od0TQziwFj05wRcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAo39rHJ19ZjqYe2Q9lXpmIZ+EeAEAAAAAAAAAAKl6XALZp0yU4q5F9eKtPzgA AAAA4aowl+CpKdngpx8E36caLN+mE/7epQ0u3qMIEt2jBvfdogRR3KECA9ufAOnUmgBoom8MJZNp AP+QawgvAAAAAC4z3b4uM96QAAAAAD45wxQ2ONQZPjzODTIz0/0zNdpCQTewPjg2xrUAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAv4FbJbR+XZSoe1/in3lf/5h3Xv+Sdlv/kXZY/7WQWOHir1J9 469MDQAAAADjrUMB4aw7oeGrMufgqSsb4KgkFt+nHfTfphdhAAAAAN6kCc7eoweCAAAAAN2hArDc oAGiAAAAANyfAKPcngCrAAAAANWYAOPDjAFpAAAAAC80248vM928AAAAADs2uY8yNNSxAAAAADM0 0+IyNdloRTu3FDc0yP82N9YxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvn9WgrR8WMape1xwoXti Mpx8bA+VeWkMwppaLeOwUnjir0rl4q1E4uGsOz0AAAAA4KovB+CpJ8rgpx/C36YXBN+lEm3epQ5g AAAAAN2iBYndogPBAAAAANygAF3cnwCxAAAAANydAG3bnADdAAAAANqaALPamgCWAAAAADY63W0w NNzbAAAAADw2u3YzNNTSAAAAADQ008UzNdeEAAAAADk1x/I1NdRVAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADirUIM4aw5nOGqMfngqSlXAAAA AN+nHCHfphTv3qUNhgAAAAAAAAAAAAAAANyhAVzcoADqAAAAAAAAAAAAAAAAAAAAANucAEnbmwD7 2poAA9qZAJHamQC1AAAAAExP4lhHSeDtAAAAADw2vWI0NNPlAAAAADU10rIzNdaWAAAAADk1x9o1 NdJsAAAAAAAAAAAAAAAAAAAAAAAAAACyhGgBoHpZQ5l5WJPKn1jG47FT2eOvTsvirkeZ4q1AQgAA AAAAAAAAAAAAAOCoJnnfpx7736YWUQAAAADepApR3qMH/d2iBVMAAAAAAAAAANyfAEncnwD8AAAA AAAAAAAAAAAAAAAAANqaADnamgD/2pkADdqZAH7amADHAAAAAE1P4FBOT+D1AAAAAD84vVk1NdLt AAAAADY10Kk1NdSeAAAAADo1x8s2NdF7AAAAAAAAAAAAAAAAAAAAAMaHUQmxeUzTqX5R+8+hVbnj sVN7469OY+KuR3TirT+x4as2+uGqLsPgqCYqAAAAAAAAAADfpROB3qQM9t6jBzkAAAAA3aIEgN2h AffcoABRAAAAANyeAG/cnQDsAAAAANqbABfamwC32poACNqZADvamQD/2pkAC9qYAHnalwDMAAAA AE9P31JQT9/zAAAAAE5M2Fw9PNXpAAAAADc1z6s1NdKcAAAAADo1xcI3Nc+DAAAAAAAAAAAAAAAA AAAAAMWFUAKzekpoxpZRHAAAAAAAAAAAAAAAAAAAAAAAAAAA4aotIeCoJLPfpxz236YTXAAAAADe pAkB3qMGoN2iBOncoQIhAAAAANygAIPcnwD93J0A2NudAPzbnAB1AAAAANqaAE7amgD42pkABdqY AFDamAD22pgAAdmXAILZlgDDAAAAAFBQ3h1RUN5yAAAAAFNP2mxTT9rZAAAAADg1zLc2NdCQAAAA ADw1w8I5Nc2DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4q1EJ+KtQGvhrDmN4asxi+CpKmPgqCIY AAAAAOCnGgHepRJ13qQL/N6jB3kAAAAA3aEDBt2hAcDcoADW3J8AFAAAAADcnQA03J0ActucAD8A AAAAAAAAANqZAJ7amQC8AAAAANqYAHrZlwDRAAAAANiWAJrYlQCtAAAAAAAAAAAAAAAAAAAAAFRQ 2YlVUNi+AAAAADo2y844Nc97AAAAAD42wsk6Nct8AAAAAAAAAAAAAAAAAAAAAOOuRz3irUTC4q0/ /+GsOObhqjG/4KkqwuCoIe/fpxr636URm96kChUAAAAA3qMGV92iBPndoQMmAAAAANyfABHcngDS 3J0A0NycABoAAAAAAAAAAAAAAAAAAAAA2pkAQNqYAPvamABLAAAAANmXAMjZlgCQAAAAANiVAMHY lQCKAAAAAFRQ2R1UUNkRAAAAAFZQ17JWUNaYAAAAAE1G0O06Ns1bAAAAAEA2v9c7NsluAAAAAAAA AAAAAAAAAAAAAOKtQcDirD2p4aw4NuCrMwEAAAAAAAAAAN+mGATepRFT3qQK2N6jBujdogRDAAAA ANyhAg0AAAAAAAAAAAAAAADcnQAV25wAyNubAOramgBv2pkALNqZADbamACH2pgA99qYAJEAAAAA 2JYAQ9iWAP7YlQAt2JUACtiUAPXYlABTAAAAAFVQ2MdVUNh8AAAAAFhQ1eVYUNVmWlHTGVtR0v9T StAxAAAAAEE2u+09N8daAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA3qIGCN2iBJbdoQH73KAAZQAAAAAAAAAA3J0AlducAJnamwAF2psAB9qaAH3amQDp2pkA /9qYAP/amADW2pcAYAAAAADYlgAX2JUA39iVAJ0AAAAA2JQAXNiUAPTYlAANVlDXFVZQ1/xXUNZD WVDUJllR0/9aUdMrXFLSCVxS0X1dUtAEVT6pC0I2uP4/OMU+AAAAAEE4wpUAAAAAAAAAAEJM6wtC TOteQkzrEwAAAABDTOrPREzp3URM6ZdFTegrAAAAAAAAAADcnwBr3J4A/NydAHoAAAAA25wAOtub AOvamgDD2pkAIgAAAADamAAC2pgAHNqYABQAAAAAAAAAANiVACrYlQDX2JUAzdiVAAzYlAAE2JQA 1diUAJUAAAAAV1DVclhQ1edYUNUEW1HScVtR0uJcUtIBAAAAAAAAAAAAAAAAUjuhLkM2tv9DO8Qc ST7CDkA2v/tKQcgGQkzrC0NM6+VDTOrtQ0zqMAAAAABETOk1REzpb0VN6MVGTej8Rk3nkkdN5woA AAAA3J0AVtucAPnbmwCM2poAAdqaACDamQDD2pkA9tqYAJTalwA+2ZcAFdiWABfYlQBD2JUAmdiV APjYlQC32JUAEQAAAADYlAB/2JMA8NiTABlZUNMIWVDU4lpR04AAAAAAXVLQyV1S0JAAAAAAAAAA AAAAAAAAAAAAVT+oWUU3tPBORMgBRjq7MkE2vP9JPcESQkzrAUNM6lBDTOkMAAAAAAAAAAAAAAAA AAAAAAAAAABHTedMR03m5UhN5tFJTeUhAAAAANqbAEjamgD02pkApNqYAAjamAAC2pgAWtmXAMjZ lwD+2ZYA/9iVAP/YlQD82JUAw9iVAFXYlQABAAAAANiTAFrYkwD82JMAWAAAAABaUdKAW1HS61tR 0hBeUs8xXlLO/l9SzjBiU8sTYlPKUwAAAAAAAAAAY1HEjUo6sr8AAAAARzi3XUM2uu1WTMwBAAAA AAAAAAAAAAAARU3oF0ZN5yZHTecPAAAAAAAAAAAAAAAASU3lFklO5MBNUOPpWlfgOAAAAADblQI2 3I0B59mKAczRhQsnAAAAAAAAAADYlgAR2JUAMdiVAC/YlQAOAAAAAAAAAAAAAAAA2JMAAtiTAO/Y kwB1AAAAAFxR0TxcUdH6XVLRXAAAAABgUs2nYFLMwAAAAABjU8l7Y1PJ2AAAAAAAAAAAZ1PEyV1K vYYAAAAASDiyjUU3uL8AAAAAAAAAAEVN6HRFTejiRk3n/0dN5/9HTeb+SE3mz0lN5WxKSOQJAAAA AF5a2wZhWt+iYFnf9mNa2lMAAAAA14cIG9iGAr7WhQD30YMEisuBDR0AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAANiTAAgAAAAAXVLQK11S0OpeUs+cAAAAAGFTzDNhU8v9YlPLQ2VTxgFl U8fZZVPGgQAAAABpU8ITaVPC/GpTwUMAAAAASjiuxUc4tYkAAAAAAAAAAEZN6HFGTedtR03nLkdN 5x1ITeY6SkzkhkxE5uxEQergQEHrSQAAAABoXtQBY1rcgWJY3fxlWdl9bV7JAsiCGgLTgwVg04IB 3dKBAP3PgALQzn4Cqsx9AqfKfQZlAAAAAAAAAAAAAAAAAAAAAAAAAABeUs8/XlLP619SzrFeUs8F Y1PKBGJTyspjU8mxAAAAAGZTxUNmU8X8Z1PFIAAAAABrU8Bfa1O/8GtTvwZdQaULTDip+Us5s00A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9F4RBFQumVPj/s/Tw/7ZI+QusHAAAAAGVa 2FllWNr0ZlfXu2hXzyAAAAAAxH8aAs2ABz/NfgV+zH4Dnsx9AqDKfQdSAAAAAAAAAAAAAAAAbU20 DGhMwYdgUc37X1LNmV9TzQUAAAAAY1PJhmRTyO9kU8cdAAAAAGhTw7hoU8OtAAAAAAAAAABtVL26 blS9oAAAAABZO5tLTjim+lI/sw4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAQEHrSTw/7eo8P+y5AAAAAAAAAABoWtMoZ1fUyWdV0/ZoVc+MalXIIgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHBQsSJsTL1/a0y/6WtLvudqTL5XAAAAAAAAAABkU8dfZVPH/GVTxlAAAAAAaVPC O2pTwf5qU8EzAAAAAAAAAABvVLuscFS6NQAAAABbOpOaUjmjvAAAAAAAAAAAAAAAAAAAAAAAAAAA WkXcG1dD4bNUQ+KPUkPhRVhJ1wMAAAAAAAAAAD9C6xw9QOxPAAAAAAAAAAAAAAAAb13DAmpXzmBp VM7XaVPN/mpTydRrUsWka1DCkGxQv5NsT76tbE6+3GxNv/9tTb7ebU28dm1Otw0AAAAAAAAAAAAA AABmU8bdZlPFcAAAAABrU78Da1O/ymxTv6gAAAAAAAAAAAAAAAAAAAAAAAAAAHZVswZgPpTrVjqe aAAAAAAAAAAAAAAAAAAAAAAAAAAAXEbYD1hD34xUQuHCUULk/E9C5N5NQ+RoUEfeBQAAAAAAAAAA AAAAAAAAAAAAAAAAbk6/AgAAAABzXbcBbFXHN2xTx3psUsSkbFHCtm1QvrNtT72cbk+8cW5PuTNx U6wBAAAAAAAAAABPRtoJUEbaDAAAAABnU8QBAAAAAAAAAABtVL5zbVS98W5UvRwAAAAAAAAAAAAA AAAAAAAAAAAAAHhVsVVmQpf3Xz+dEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVUbd G1BD44dNQuTzS0Lk2EtD40gAAAAAAAAAAAAAAABmRdE8ZETU7WFE1XthR9ISAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0bbCE1D3mRMQ97iTUPdmwAAAAAAAAAAAAAAAG5UvDlv VLz5b1S7YAAAAAB1VLUHdVW0a3ZVswQAAAAAAAAAAHtVrsNxSZygAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAYEbVC1hE31NQQ+JHTUXhEwAAAABPRN8YTELjnUpB5f1JQeSqSkPjGgAAAABoSMoFZkXR cWJE1edfRNf2XETYq1lF2WVXRdk0V0bYGFRG2A9TRdoXUETcMU9D3V1OQ96eTUPe7E1D3vNOQ92J UEXaDwAAAAAAAAAAVEXXKGBLy+lxVbmZAAAAAAAAAAB2VbOfd1Wy6HdVsg0AAAAAfVWrQH1Vq/1+ VaksAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXkTaPVhD3+9QQuL8SkHl+0ZB5qtFQuYhAAAAAExD 4TpKQePRSEHk8UhC43BLRuAEAAAAAGZJzAdhRdRXXUTXq1pF2OpXRNr/VUPb/1NC3P9RQtz/UELd /09C3e9PQ922T0TcaFBG2hAAAAAAAAAAAAAAAABVRNY0VEPY6FVE1q9oUMIEAAAAAHdVsoF4VbH3 eVWwOgAAAAB/VakCf1apyoBWp6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABV R9oJTEPjS0dB5shEQOfwQ0HmXAAAAABORt0FSkLidElB4/JIQuPVSULiT09J3AEAAAAAAAAAAAAA AABbR9UXWEXYMFVE2ThURNkxVEbZGldL1AEAAAAAAAAAAAAAAAAAAAAAW0jRA1dF1m9WRNb3VkTV n1xJzgUAAAAAdVO0e3lVr/t6Va5RAAAAAAAAAACBVqZqglal9YJWpSAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtG4QRFQeWAQ0Dm+0NA5rBHROIIAAAAAExE4BlK QuKbSUHi+0lC4c5KQ+BfTUbeCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBK zgVcRdNVWUXU0FhE1fJZRdRmAAAAAGFKzANdRdCRZUnG+ntVrVYAAAAAAAAAAINWpCiDVqTzhFaj cwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnR88gZETUxWBF1WFiSs4C RULkM0RB5adGQ+QPAAAAAAAAAAAAAAAATETfJEpC4JdKQuDzS0Lg80xD3qMAAAAAe0y2A3lIvi1z SMIobkfGLmlHyURlRs1qYkbPo19F0etdRdL2W0XSllxG0RoAAAAAbUnDGmRFy7xfRM/wXkXORwAA AAAAAAAAAAAAAIVWosyGVqG4hlahAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAZUXSX2BE1/RcRNjHWkbXKQAAAAAAAAAAc0vABXBGybluR8pvbEnHCwAAAABORdwN TEPeWk1D3X0AAAAAe0i8RHlGwP90RsT/b0bH/2pGyv1mRszgY0bNq2FGz2RhSM0SAAAAAIxPowJ+ SbdlcUfC7WhFyc9jRssnAAAAAAAAAAAAAAAAAAAAAIdXoEqIV58QAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJG0yJdRNe9WUTa9ldF2nRYSNYDdU66 AXJHx31uRsrtakXM7mdGzZFlR800Z03GAQAAAAAAAAAAAAAAAHtJuRd1R8IecUnCGW5MwQcAAAAA AAAAAAAAAAAAAAAAAAAAAI5KqUKDSLT2dUe+fm1KwQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABhS84BWkXXa1dE2vNUQ9vJVETaMQAAAABvScQMbEfKaWhGzMxlRc//YkXP4WBF0J5fRdFmXkbR PF1H0R9dR9AQXEbQEFtG0R9aRNE+WkTSbFtE0Z5dRc8YAAAAAAAAAACHTKsKAAAAAAAAAAAAAAAA a0fHSmxGxp8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlG1yBWRNm2U0Pb/FJE25lTRtgaAAAAAAAA AABnSMolZEbOcWJGz7JgRdDmXkXS/11E0v9bRNP/W0TT/1pD0v9bQ9L/W0TR4VxE0KVeRs0UAAAA AAAAAAAAAAAAAAAAAGxIxSJsRseobEXH/W5GxY8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAVUXZTlND2tdSQ9r3UkPZllRF1yoAAAAAAAAAAAAAAAAAAAAAYUjMD19GzyleRs83XUXPN11F zyleR8wOAAAAAAAAAAAAAAAAAAAAAHBNvQFuR8Q9bUbGpG5FxvpuRcXNb0fEPQAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFdH1ANURNhbU0PYz1ND2P5VRNeuAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd063A3RIviVyR8FZcUbDmHBGxOJwRcT+cEXEvnBH w09xS78BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAFZF1jZWRdVSAAAAAAAAAAAAAAAAjUmstolIr72FSLKxgUi1sn1IuMF6SLvZeEe993ZGv/91 RsDyc0bBuXNGwnJySMAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj0qpYYtJrYqHSbCV g0mzlH9ItoZ8SLhveki6UHhJuyh2TbgDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA////////AAD///Mf//8AAP//kB///wAA//iAj///AAD/+ADET/8AAP/MAaAH/wAA/4EAAgf/ AAD/wACBAH8AAP/4AAkAfwAA/A4CBJJ/AAD8CRAkgn8AAP/4iQAODwAA/BhAAEgPAADgBASSSQcA AOACBJJJJwAA/+Ec8EknAADAOIzwSScAAIAMRIBJJwAAj4QggEknAADgQhGSeScAAIARDxJJJwAA hguAIEgnAAD/hgBEAAUAAIhiEYCBwAAACBAACBPAAAAfCAARAMgAAOOEMOIkyQAAgEIP9ECJAACA IAD4CIEAAP4IQOCJkQAA/4wfgxGTAADgzgAHI+MAAOA+gBlj4wAA/Bw/4cRnAADhBAABjEcAAOBB AAcIjwAA+CBwPBGPAAD+CB/wQx8AAPgOCACHHwAA/DCIAg8/AAD+ABw+H/8AAP8EAANz/wAA/8GA A8P/AAD/8HgeB/8AAP/4P+AP/wAA//84AH//AAD///gD//8AAP///////wAAKAAAABAAAAAgAAAA AQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv4RnDrqDZxWl fmoxsXtUPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBjHYDvYVrLqyA a3GpfWSCmHljX6Z4TTGWc0NcMzTBSDM0xj8yONwCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuYNs Q6J+bnaYeWNdlHZYgJNzSoGlczBzj28lajY4wjYvM9ZvLTPcUjY1wysAAAAAAAAAAAAAAAAAAAAA rIBuaZR7clekd00vlnhSXKyHQlashS5vpX0acJFtDHGdawRULjPdcy403yczNM9xQDm5BQAAAAAA AAAAsX1bX5l5YG7BmFRz3qpGMuGrM33gpx9p3qQLcN2hAmrbnQBwv4gBbzA03W43NcpNMzTVbjk1 x2MAAAAAsnpNGbuRVWzir0pr4as0P+CpJ27epRBS3aIFZ9yfAG/amwAX2poAatqYAG9MTeBsOznP bTU10m05NcpsAAAAANSeRijgqztu4Kgkad+nGlPeowhd3aECdtyeAE3bnQBV2pkAdtmXAHDZlgBt UU/dFVVP2G09Oc5tPDbFbAAAAAC6lWg0ZWDEH2BdwTjdogRz3J4ANtubAFvbmwBp2pgAcNmXAFXY lQBs2JQAdFZQ1nFZUdNwWlDSNEM3um1BN8EvQ0zqP0RN6RRFTehHSU7ld9KWD2TakgFh2ZgAcdmV AG3ZlQBg2JMAXpJudFlcUdFmX1LObWNSySFWRLlvRDe5bkVN6D9HTedkSEfneEdH6UhjWdyCtXg/ V9CBA3TMfgNdAAAAAGdRwDReUs9wY1LJeWZTxWtqU8EzaVG7Wkw4rGcAAAAAVkPhTlBC40g9QOxD aFrTBGhW0WRrU8hwbFC/bW1OvXJrTL5NZFLHJWdTxD5rVL9vb1S7E2VDm1dUOqEiAAAAAFVD4FBL QuRkSkLkfk1C4TJiRNV2WkTYbVND21xPQ91sTUPdd09E2xliTMl/dlWzR3dVsi58VKh5AAAAAAAA AABiR9IFT0LgaURB5lVJQuNTSkLhdkxD3jFiRs8bZUfMG15F0VJYRNV5X0XPVXFQuWCEVqNWg1al LAAAAAAAAAAAAAAAAF9E1lVXRNlqbUbKUGdGzXJbRdROckbDUmhGymFfRc9AhEmyL21GxERsRsca h1efCgAAAAAAAAAAAAAAAAAAAAAAAAAAVkTZGFND2nZURNdgYUbPOl1F0mFbRNJhYkXMPHBGxE1u RsV5bUbGMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVkXVDwAAAACKSa5ofki3bXZH vmBzR8ElAAAAAAAAAAAAAAAAAAAAAAAAAAD4f6xB4AesQeADrEHAAaxBgAGsQQABrEEAAaxBAACs QQAArEEAgKxBgACsQYABrEGAAaxBwAOsQeAHrEH6H6xB """ def __init__(self): """Call and setup the UI""" super().__init__() self.setup_ui(self) def key_press_event(self, event): """Create a KeyPress event for a Ctrl+C (Copy) event for selected text""" if event.matches(QKeySequence.StandardKey.Copy): self.context_menu.copy() else: super().key_press_event(event) class TsTypes(NamedTuple): """Defines the structure of a Timestamp Type""" ts_type: str reason: str example: str time_zone: str ts_types = { "active": TsTypes( "Active Directory/LDAP", "Active Directory/LDAP timestamps are 18 digits", "133908455300649390", "UTC", ), "apache": TsTypes( "Apache Cookie Hex time", "Apache Cookie hex timestamps are 13 hex characters long", "63450e689882b", "UTC", ), "biome64": TsTypes( "Apple Biome 64-bit decimal", "Apple Biome 64-bit decimal is 19 digits in length", "4739726202305531884", "UTC", ), "biomehex": TsTypes( "Apple Biome Hex time", "Apple Biome Hex value is 8 bytes (16 chars) long", "41c6e3de6d084fec", "UTC", ), "nsdate": TsTypes( "Apple NSDate - All", "Apple NSDates are 9, 9.6, or 15-19 digits in length", "704656778.285777", "UTC", ), "bplist": TsTypes( "Apple NSDate - bplist / Cocoa", "Apple NSDates (bplist) are 9 digits in length", "768064730", "UTC", ), "iostime": TsTypes( "Apple NSDate - iOS 11+", "Apple NSDates (iOS) are 15-19 digits in length", "768064730064939008", "UTC", ), "mac": TsTypes( "Apple NSDate - Mac Absolute", "Apple NSDates (Mac) are 9 digits '.' 6 digits", "768064730.064939", "UTC", ), "bcd": TsTypes( "Binary Coded Decimal", "Binary Coded Decimal timestamps are 12 digits in length", "250506232221", "Local", ), "bitdate": TsTypes( "BitDate time", "BitDate (Samsung/LG) timestamps are 8 hex characters", "d223957e", "Local", ), "bitdec": TsTypes( "Bitwise Decimal time", "Bitwise Decimal timestamps are 10 digits", "2123703250", "Local", ), "dhcp6": TsTypes( "DHCPv6 DUID time", "DHCPv6 DUID values are at least 14 bytes long", "000100012faa41da000000000000", "UTC", ), "discord": TsTypes( "Discord time", "Discord timestamps are 18 digits or longer", "1102608904745127937", "UTC", ), "dvr": TsTypes( "DVR (WFS / DHFS) File System", "DVR timestamps are 4 bytes", "00F0063F", "Local", ), "exfat": TsTypes( "exFAT time", "exFAT 32-bit timestamps are 8 hex characters (4 bytes)", "5aa47a59", "Local", ), "fat": TsTypes( "FAT Date + Time", "FAT (MS-DOS wFatDate wFatTime) timestamps are 8 hex characters (4 bytes)", "a45a597a", "Local", ), "gbound": TsTypes( "GMail Boundary time", "GMail Boundary values are 28 hex chars", "00000000000089882b063450e600", "UTC", ), "gmsgid": TsTypes( "GMail Message ID time", "GMail Message ID values are 16 hex chars or 19 digits (IMAP)", "1969be0e7d000000", "UTC", ), "chrome": TsTypes( "Google Chrome", "Google Chrome/Webkit timestamp is 17 digits", "13390845530064940", "UTC", ), "eitime": TsTypes( "Google EI time", "Google ei timestamps contain only URLsafe base64 characters: A-Za-z0-9=-_", "WoUXaA", "UTC", ), "gclid": TsTypes( "Google GCLID time", "Google GCLID timestamps contain only URLsafe base64 characters: A-Za-z0-9=-_", "CKSDxc_qhLkCFQyk4AodO24Arg", "UTC", ), "ved": TsTypes( "Google VED time", "Google VED timestamps contain only URLsafe base64 characters: A-Za-z0-9=-_", "0ahUKEwilufv7joqNAxW3nYkEHd0vMyIQ4dUDCA8", "UTC", ), "gps": TsTypes("GPS time", "GPS timestamps are 10 digits", "1430407111", "UTC"), "gsm": TsTypes( "GSM time", "GSM timestamps are 14 hex characters (7 bytes)", "52504051810500", "UTC", ), "hfsbe": TsTypes( "HFS / HFS+ 32-bit Hex BE", "HFS / HFS+ Big-Endian timestamps are 8 hex characters (4 bytes)", "e43d35da", "Local / UTC", ), "hfsle": TsTypes( "HFS / HFS+ 32-bit Hex LE", "HFS / HFS+ Little-Endian timestamps are 8 hex characters (4 bytes)", "da353de4", "Local / UTC", ), "hfsdec": TsTypes( "HFS+ Decimal Time", "HFS+ Decimal timestamps are 10 digits", "3829216730", "UTC", ), "logtime": TsTypes( "JET LogTime", "JET LogTime values are 8 bytes, one byte for each YY-MM-DD HH:MM:SS and 2 fillers", "343a0d17037b0000", "UTC", ), "juliandec": TsTypes( "Julian Date decimal", "Julian Date decimal values are 7 digits, a decimal, and up to 10 digits", "2460800.1380787035", "UTC", ), "julianhex": TsTypes( "Julian Date hex", "Julian Date hex values are 14 characters (7 bytes)", "258c80524d235b", "UTC", ), "ksalnum": TsTypes( "KSUID Alpha-numeric", "KSUID values are 27 alpha-numeric characters", "2PChRqPZDwT9m2gBDLd5uy7XNTr", "UTC", ), "ksdec": TsTypes( "KSUID Decimal", "KSUID decimal timestamps are 9 digits in length", "346371930", "UTC", ), "leb128hex": TsTypes( "LEB128 Hex time", "LEB128 Hex timestamps are variable-length and even-length", "d0cf83dfe932", "UTC", ), "linkedin": TsTypes( "LinkedIn Activity time", "LinkedIn Activity timestamps contain only digits", "7324176984442343424", "UTC", ), "mastodon": TsTypes( "Mastodon time", "Mastodon timestamps are 18 digits or longer", "114450230804480000", "UTC", ), "metasploit": TsTypes( "Metasploit Payload UUID", "Metasploit Payload UUID's are at least 22 chars and base64 urlsafe encoded", "4PGoVGYmx8l6F3sVI4Rc8g", "UTC", ), "dotnet": TsTypes( "Microsoft .NET DateTime Ticks", "Microsoft .NET DateTime Ticks values are 18 digits", "638819687300649472", "UTC", ), "systemtime": TsTypes( "Microsoft 128-bit SYSTEMTIME", "Microsoft 128-bit SYSTEMTIME timestamps are 32 hex characters (16 bytes)", "e9070500000004000f00120032004000", "UTC", ), "dttm": TsTypes( "Microsoft DTTM Date", "Microsoft DTTM timestamps are 4 bytes", "8768f513", "Local", ), "ms1904": TsTypes( "Microsoft Excel 1904 Date", "Microsoft Excel 1904 timestamps are 2 ints, separated by a dot", "44319.638079455312", "UTC", ), "hotmail": TsTypes( "Microsoft Hotmail time", "Microsoft Hotmail timestamps are 2x 8 hex chars (4 bytes) colon separated", "07bddb01:aed19dd6", "UTC", ), "msdos": TsTypes( "Microsoft MS-DOS 32-bit Hex", "Microsoft MS-DOS 32-bit timestamps are 8 hex characters (4 bytes)", "597aa45a", "Local", ), "moto": TsTypes( "Motorola time", "Motorola 6-byte hex timestamps are 12 hex characters", "3705040f1232", "UTC", ), "prtime": TsTypes( "Mozilla PRTime", "Mozilla PRTime timestamps are 16 digits", "1746371930064939", "UTC", ), "nokia": TsTypes( "Nokia time", "Nokia 4-byte hex timestamps are 8 hex characters", "d19d0f5a", "UTC", ), "ns40": TsTypes( "Nokia S40 time", "Nokia 7-byte hex timestamps are 14 hex characters", "07e905040f1232", "UTC", ), "ns40le": TsTypes( "Nokia S40 time LE", "Nokia 7-byte hex timestamps are 14 hex characters", "e90705040f1232", "UTC", ), "nokiale": TsTypes( "Nokia time LE", "Nokia 4-byte hex timestamps are 8 hex characters", "5a0f9dd1", "UTC", ), "s32": TsTypes( "S32 Encoded (Bluesky) time", "S32 encoded (Bluesky) timestamps are 9 characters long", "3muhy3twk", "UTC", ), "semioctet": TsTypes( "Semi-Octet decimal", "Semi-Octet decimal values are 12 or 14 digits long", "525040518105", "Local", ), "sony": TsTypes( "Sonyflake time", "Sonyflake values are 15 hex characters", "65dd4bb89000001", "UTC", ), "symantec": TsTypes( "Symantec AV time", "Symantec 6-byte hex timestamps are 12 hex characters", "3704040f1232", "UTC", ), "tiktok": TsTypes( "TikTok time", "TikTok timestamps are 19 digits long", "7228142017547750661", "UTC", ), "twitter": TsTypes( "Twitter time", "Twitter timestamps are 18 digits or longer", "1189581422684274688", "UTC", ), "ulid": TsTypes( "ULID time", "ULID timestamp contains only Base32 characters", "01JTDY1SYGCZWCBPCSEBHV1DW2", "UTC", ), "unixhex32be": TsTypes( "Unix Hex 32-bit BE", "Unix Hex 32-bit Big-Endian timestamps are 8 hex characters (4 bytes)", "6817855a", "UTC", ), "unixhex32le": TsTypes( "Unix Hex 32-bit LE", "Unix Hex 32-bit Little-Endian timestamps are 8 hex characters (4 bytes)", "5a851768", "UTC", ), "unixmilli": TsTypes( "Unix Milliseconds", "Unix milliseconds timestamp is 13 digits in length", "1746371930064", "UTC", ), "unixmillihex": TsTypes( "Unix Milliseconds hex", "Unix Milliseconds hex timestamp is 12 hex characters (6 bytes)", "01969be0e7d0", "UTC", ), "unixsec": TsTypes( "Unix Seconds", "Unix seconds timestamp is 10 digits in length", "1746371930", "UTC", ), "uuid": TsTypes( "UUID time", "UUIDs are in the format 00000000-0000-0000-0000-000000000000", "d93026f0-e857-11ed-a05b-0242ac120003", "UTC", ), "vm": TsTypes( "VMSD time", "VMSD values are a 6-digit value and a signed/unsigned int at least 9 digits", "406608,-427259264", "UTC", ), "cookie": TsTypes( "Windows Cookie Date", "Windows Cookie times consist of 2 ints, entered with a comma between them", "3600017664,31177991", "UTC", ), "filetimelohi": TsTypes( "Windows FILETIME (Low|High)", "Windows FILETIME Low|High times are 2x 8 hex chars (4 bytes) colon separated", "d69dd1ae:01dbbd07", "UTC", ), "filetimebe": TsTypes( "Windows FILETIME BE", "Windows FILETIME Hex Big-Endian timestamp is 16 hex characters (8 bytes)", "01dbbd07d69dd1ae", "UTC", ), "filetimele": TsTypes( "Windows FILETIME LE", "Windows FILETIME Hex Little-Endian timestamp is 16 hex characters (8 bytes)", "aed19dd607bddb01", "UTC", ), "olebe": TsTypes( "Windows OLE 64-bit hex BE", "Windows OLE Big-Endian timestamps are 16 hex characters (8 bytes)", "40e65ab46b259b1a", "UTC", ), "olele": TsTypes( "Windows OLE 64-bit hex LE", "Windows OLE Little-Endian timestamps are 16 hex characters (8 bytes)", "1a9b256bb45ae640", "UTC", ), "oleauto": TsTypes( "Windows OLE Automation Date", "Windows OLE Automation timestamps are 2 ints, separated by a dot", "45781.638079455312", "UTC", ), } epochs = { 1: dt(1, 1, 1, tzinfo=timezone.utc), 1582: dt(1582, 10, 15, tzinfo=timezone.utc), 1601: dt(1601, 1, 1, tzinfo=timezone.utc), 1899: dt(1899, 12, 30, tzinfo=timezone.utc), 1904: dt(1904, 1, 1, tzinfo=timezone.utc), 1970: dt(1970, 1, 1, tzinfo=timezone.utc), 1980: dt(1980, 1, 6, tzinfo=timezone.utc), 2000: dt(2000, 1, 1, tzinfo=timezone.utc), 2001: dt(2001, 1, 1, tzinfo=timezone.utc), 2050: dt(2050, 1, 1, tzinfo=timezone.utc), "hundreds_nano": 10000000, "nano_2001": 1000000000, "active": 116444736000000000, "win_unix": 11644473600, "hfs_dec_sub": 2082844800, "kstime": 1400000000, "ticks": 621355968000000000, } # There have been no further leapseconds since 2017,1,1 at the __date__ of this script # which is why the leapseconds end with a dt.now object to valid/relevant timestamp output. # See REFERENCES.md for source info. leapseconds = { 10: [dt(1972, 1, 1, tzinfo=timezone.utc), dt(1972, 7, 1, tzinfo=timezone.utc)], 11: [dt(1972, 7, 1, tzinfo=timezone.utc), dt(1973, 1, 1, tzinfo=timezone.utc)], 12: [dt(1973, 1, 1, tzinfo=timezone.utc), dt(1974, 1, 1, tzinfo=timezone.utc)], 13: [dt(1974, 1, 1, tzinfo=timezone.utc), dt(1975, 1, 1, tzinfo=timezone.utc)], 14: [dt(1975, 1, 1, tzinfo=timezone.utc), dt(1976, 1, 1, tzinfo=timezone.utc)], 15: [dt(1976, 1, 1, tzinfo=timezone.utc), dt(1977, 1, 1, tzinfo=timezone.utc)], 16: [dt(1977, 1, 1, tzinfo=timezone.utc), dt(1978, 1, 1, tzinfo=timezone.utc)], 17: [dt(1978, 1, 1, tzinfo=timezone.utc), dt(1979, 1, 1, tzinfo=timezone.utc)], 18: [dt(1979, 1, 1, tzinfo=timezone.utc), dt(1980, 1, 1, tzinfo=timezone.utc)], 19: [dt(1980, 1, 1, tzinfo=timezone.utc), dt(1981, 7, 1, tzinfo=timezone.utc)], 20: [dt(1981, 7, 1, tzinfo=timezone.utc), dt(1982, 7, 1, tzinfo=timezone.utc)], 21: [dt(1982, 7, 1, tzinfo=timezone.utc), dt(1983, 7, 1, tzinfo=timezone.utc)], 22: [dt(1983, 7, 1, tzinfo=timezone.utc), dt(1985, 7, 1, tzinfo=timezone.utc)], 23: [dt(1985, 7, 1, tzinfo=timezone.utc), dt(1988, 1, 1, tzinfo=timezone.utc)], 24: [dt(1988, 1, 1, tzinfo=timezone.utc), dt(1990, 1, 1, tzinfo=timezone.utc)], 25: [dt(1990, 1, 1, tzinfo=timezone.utc), dt(1991, 1, 1, tzinfo=timezone.utc)], 26: [dt(1991, 1, 1, tzinfo=timezone.utc), dt(1992, 7, 1, tzinfo=timezone.utc)], 27: [dt(1992, 7, 1, tzinfo=timezone.utc), dt(1993, 7, 1, tzinfo=timezone.utc)], 28: [dt(1993, 7, 1, tzinfo=timezone.utc), dt(1994, 7, 1, tzinfo=timezone.utc)], 29: [dt(1994, 7, 1, tzinfo=timezone.utc), dt(1996, 1, 1, tzinfo=timezone.utc)], 30: [dt(1996, 1, 1, tzinfo=timezone.utc), dt(1997, 7, 1, tzinfo=timezone.utc)], 31: [dt(1997, 7, 1, tzinfo=timezone.utc), dt(1999, 1, 1, tzinfo=timezone.utc)], 32: [dt(1999, 1, 1, tzinfo=timezone.utc), dt(2006, 1, 1, tzinfo=timezone.utc)], 33: [dt(2006, 1, 1, tzinfo=timezone.utc), dt(2009, 1, 1, tzinfo=timezone.utc)], 34: [dt(2009, 1, 1, tzinfo=timezone.utc), dt(2012, 7, 1, tzinfo=timezone.utc)], 35: [dt(2012, 7, 1, tzinfo=timezone.utc), dt(2015, 7, 1, tzinfo=timezone.utc)], 36: [dt(2015, 7, 1, tzinfo=timezone.utc), dt(2017, 1, 1, tzinfo=timezone.utc)], 37: [ dt(2017, 1, 1, tzinfo=timezone.utc), dt.now(timezone.utc) - timedelta(seconds=37), ], } date_formats = { "Default": __fmt__, "ISO 8601": "%Y-%m-%dT%H:%M:%S.%f", "DD/MM/YY": "%d/%m/%Y %H:%M:%S.%f", "DMY": "%d-%m-%Y %H:%M:%S.%f", "MDY": "%m-%d-%Y %H:%M:%S.%f", "YMD": __fmt__, } S32_CHARS = "234567abcdefghijklmnopqrstuvwxyz" BASE32_CHARS = "0123456789ABCDEFGHJKMNPQRSTVWXYZ" URLSAFE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890=-_" KSALNUM_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" def from_unixsec(timestamp): """Convert Unix Seconds value to a date""" ts_type, reason, _, tz_out = ts_types["unixsec"] try: if len(str(timestamp)) != 10 or not timestamp.isdigit(): in_unix_sec = indiv_output = combined_output = "" else: in_unix_sec = dt.fromtimestamp(float(timestamp), timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_unix_sec, tz_out) except Exception: handle(sys.exc_info()) in_unix_sec = indiv_output = combined_output = "" return in_unix_sec, indiv_output, combined_output, reason, tz_out def to_unixsec(dt_obj): """Convert date to a Unix Seconds value""" ts_type, _, _, _ = ts_types["unixsec"] try: out_unix_sec = str(int(dt_obj.timestamp())) ts_output, _ = format_output(ts_type, out_unix_sec) except Exception: handle(sys.exc_info()) out_unix_sec = ts_output = "" return out_unix_sec, ts_output def from_unixmilli(timestamp): """Convert Unix Millisecond value to a date""" ts_type, reason, _, tz_out = ts_types["unixmilli"] try: if len(str(timestamp)) != 13 or not str(timestamp).isdigit(): in_unix_milli = indiv_output = combined_output = "" else: in_unix_milli = dt.fromtimestamp( float(timestamp) / 1000.0, timezone.utc ).strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_unix_milli, tz_out ) except Exception: handle(sys.exc_info()) in_unix_milli = indiv_output = combined_output = "" return in_unix_milli, indiv_output, combined_output, reason, tz_out def to_unixmilli(dt_obj): """Convert date to a Unix Millisecond value""" ts_type, _, _, _ = ts_types["unixmilli"] try: out_unix_milli = str(int(dt_obj.timestamp() * 1000)) ts_output, _ = format_output(ts_type, out_unix_milli) except Exception: handle(sys.exc_info()) out_unix_milli = ts_output = "" return out_unix_milli, ts_output def from_unixmillihex(timestamp): """Convert a Unix Millisecond hex value to a date""" ts_type, reason, _, tz_out = ts_types["unixmillihex"] try: if len(str(timestamp)) != 12 or not all( char in hexdigits for char in timestamp ): in_unix_milli_hex = indiv_output = combined_output = "" else: unix_mil = int(str(timestamp), 16) in_unix_milli_hex, _, _, _, _ = from_unixmilli(unix_mil) indiv_output, combined_output = format_output( ts_type, in_unix_milli_hex, tz_out ) except Exception: handle(sys.exc_info()) in_unix_milli_hex = indiv_output = combined_output = "" return in_unix_milli_hex, indiv_output, combined_output, reason, tz_out def to_unixmillihex(dt_obj): """Convert a date to a Unix Millisecond hex value""" ts_type, _, _, _ = ts_types["unixmillihex"] try: unix_mil, _ = to_unixmilli(dt_obj) out_unix_milli_hex = f"{int(unix_mil):012x}" ts_output, _ = format_output(ts_type, out_unix_milli_hex) except Exception: handle(sys.exc_info()) out_unix_milli_hex = ts_output = "" return out_unix_milli_hex, ts_output def from_filetimebe(timestamp): """Convert a Windows 64 Hex Big-Endian value to a date""" ts_type, reason, _, tz_out = ts_types["filetimebe"] try: if not len(timestamp) == 16 or not all(char in hexdigits for char in timestamp): in_filetime_be = indiv_output = combined_output = "" else: base10_microseconds = int(timestamp, 16) / 10 if base10_microseconds >= 1e17: in_filetime_be = indiv_output = combined_output = "" else: dt_obj = epochs[1601] + timedelta(microseconds=base10_microseconds) in_filetime_be = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_filetime_be, tz_out ) except Exception: handle(sys.exc_info()) in_filetime_be = indiv_output = combined_output = "" return in_filetime_be, indiv_output, combined_output, reason, tz_out def to_filetimebe(dt_obj): """Convert a date to a Windows 64 Hex Big-Endian value""" ts_type, _, _, _ = ts_types["filetimebe"] try: minus_epoch = dt_obj - epochs[1601] calc_time = ( minus_epoch.microseconds + (minus_epoch.seconds * 1000000) + (minus_epoch.days * 86400000000) ) out_filetime_be = str(hex(int(calc_time) * 10))[2:].zfill(16) ts_output, _ = format_output(ts_type, out_filetime_be) except Exception: handle(sys.exc_info()) out_filetime_be = ts_output = "" return out_filetime_be, ts_output def from_filetimele(timestamp): """Convert a Windows 64 Hex Little-Endian value to a date""" ts_type, reason, _, tz_out = ts_types["filetimele"] try: if not len(timestamp) == 16 or not all(char in hexdigits for char in timestamp): in_filetime_le = indiv_output = combined_output = "" else: indiv_output = combined_output = "" endianness_change = int.from_bytes( struct.pack("= 1e17: in_filetime_le = indiv_output = combined_output = "" else: dt_obj = epochs[1601] + timedelta(microseconds=converted_time) in_filetime_le = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_filetime_le, tz_out ) except Exception: handle(sys.exc_info()) in_filetime_le = indiv_output = combined_output = "" return in_filetime_le, indiv_output, combined_output, reason, tz_out def to_filetimele(dt_obj): """Convert a date to a Windows 64 Hex Little-Endian value""" ts_type, _, _, _ = ts_types["filetimele"] try: minus_epoch = dt_obj - epochs[1601] calc_time = ( minus_epoch.microseconds + (minus_epoch.seconds * 1000000) + (minus_epoch.days * 86400000000) ) out_filetime_le = str(struct.pack("= 32536799999: # This is the Windows maximum for parsing a unix TS # and is 3001-01-19 02:59:59 UTC in_ad = indiv_output = combined_output = "" else: dt_obj = dt.fromtimestamp(val_check, timezone.utc) in_ad = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_ad, tz_out) except Exception: handle(sys.exc_info()) in_ad = indiv_output = combined_output = "" return in_ad, indiv_output, combined_output, reason, tz_out def to_active(dt_obj): """Convert a date to an Active Directory/LDAP timestamp""" ts_type, _, _, _ = ts_types["active"] try: nano_convert = int(dt_obj.timestamp() * epochs["hundreds_nano"]) out_adtime = str(int(nano_convert) + int(epochs["active"])) ts_output, _ = format_output(ts_type, out_adtime) except Exception: handle(sys.exc_info()) out_adtime = ts_output = "" return out_adtime, ts_output def from_unixhex32be(timestamp): """Convert a Unix Hex 32-bit Big-Endian timestamp to a date""" ts_type, reason, _, tz_out = ts_types["unixhex32be"] try: if not len(timestamp) == 8 or not all(char in hexdigits for char in timestamp): in_unix_hex_32 = indiv_output = combined_output = "" else: to_dec = int(timestamp, 16) in_unix_hex_32 = dt.fromtimestamp(float(to_dec), timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output( ts_type, in_unix_hex_32, tz_out ) except Exception: handle(sys.exc_info()) in_unix_hex_32 = indiv_output = combined_output = "" return in_unix_hex_32, indiv_output, combined_output, reason, tz_out def to_unixhex32be(dt_obj): """Convert a date to a Unix Hex 32-bit Big-Endian timestamp""" ts_type, _, _, _ = ts_types["unixhex32be"] try: unix_time = int(dt_obj.timestamp()) out_unix_hex_32 = str(struct.pack(">L", unix_time).hex()) ts_output, _ = format_output(ts_type, out_unix_hex_32) except Exception: handle(sys.exc_info()) out_unix_hex_32 = ts_output = "" return out_unix_hex_32, ts_output def from_unixhex32le(timestamp): """Convert a Unix Hex 32-bit Little-Endian timestamp to a date""" ts_type, reason, _, tz_out = ts_types["unixhex32le"] try: if not len(timestamp) == 8 or not all(char in hexdigits for char in timestamp): in_unix_hex_32le = indiv_output = combined_output = "" else: to_dec = int.from_bytes(struct.pack("= 32536799999 or calc < 0: in_cookie = indiv_output = combined_output = "" else: dt_obj = dt.fromtimestamp(calc, timezone.utc) in_cookie = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_cookie, tz_out ) except Exception: handle(sys.exc_info()) in_cookie = indiv_output = combined_output = "" return in_cookie, indiv_output, combined_output, reason, tz_out def to_cookie(dt_obj): """Convert a date to Internet Explorer timestamp values""" ts_type, _, _, _ = ts_types["cookie"] try: unix_time = int(dt_obj.timestamp()) high = int(((unix_time + epochs["win_unix"]) * 10**7) / 2**32) low = ( int((unix_time + epochs["win_unix"]) * 10**7) - (high * 2**32) + (dt_obj.microsecond * 10) ) out_cookie = f"{str(low)},{str(high)}" ts_output, _ = format_output(ts_type, out_cookie) except Exception: handle(sys.exc_info()) out_cookie = ts_output = "" return out_cookie, ts_output def from_olebe(timestamp): """Convert an OLE Big-Endian timestamp to a date""" ts_type, reason, _, tz_out = ts_types["olebe"] try: if not len(timestamp) == 16 or not all(char in hexdigits for char in timestamp): in_ole_be = indiv_output = combined_output = "" else: delta = struct.unpack(">d", struct.pack(">Q", int(timestamp, 16)))[0] if int(delta) < 0 or int(delta) > 2e6: in_ole_be = indiv_output = combined_output = "" else: dt_obj = epochs[1899] + timedelta(days=delta) in_ole_be = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_ole_be, tz_out ) except Exception: handle(sys.exc_info()) in_ole_be = indiv_output = combined_output = "" return in_ole_be, indiv_output, combined_output, reason, tz_out def to_olebe(dt_obj): """Convert a date to an OLE Big-Endian timestamp""" ts_type, _, _, _ = ts_types["olebe"] try: delta = ((dt_obj - epochs[1899]).total_seconds()) / 86400 conv = struct.unpack("Q", conv).hex()) ts_output, _ = format_output(ts_type, out_ole_be) except Exception: handle(sys.exc_info()) out_ole_be = ts_output = "" return out_ole_be, ts_output def from_olele(timestamp): """Convert an OLE Little-Endian timestamp to a date""" ts_type, reason, _, tz_out = ts_types["olele"] try: if not len(timestamp) == 16 or not all(char in hexdigits for char in timestamp): in_ole_le = indiv_output = combined_output = "" else: to_le = hex(int.from_bytes(struct.pack("d", struct.pack(">Q", int(to_le[2:], 16)))[0] if int(delta) < 0 or int(delta) > 99999: in_ole_le = indiv_output = combined_output = "" else: dt_obj = epochs[1899] + timedelta(days=delta) in_ole_le = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_ole_le, tz_out ) except Exception: handle(sys.exc_info()) in_ole_le = indiv_output = combined_output = "" return in_ole_le, indiv_output, combined_output, reason, tz_out def to_olele(dt_obj): """Convert a date to an OLE Little-Endian timestamp""" ts_type, _, _, _ = ts_types["olele"] try: delta = ((dt_obj - epochs[1899]).total_seconds()) / 86400 conv = struct.unpack(" 4294967295: out_hfs_be = "[!] Timestamp Boundary Exceeded [!]" else: out_hfs_be = f"{conv:08x}" ts_output, _ = format_output(ts_type, out_hfs_be) except Exception: handle(sys.exc_info()) out_hfs_be = ts_output = "" return out_hfs_be, ts_output def from_hfsle(timestamp): """Convert an HFS / HFS+ Little-Endian timestamp to a date (HFS+ is in UTC)""" ts_type, reason, _, tz_out = ts_types["hfsle"] try: if not len(timestamp) == 8 or not all(char in hexdigits for char in timestamp): in_hfs_le = indiv_output = combined_output = "" else: to_le = struct.unpack(">I", struct.pack(" 4294967295: out_hfs_le = "[!] Timestamp Boundary Exceeded [!]" else: out_hfs_le = str(struct.pack("I", int(year + month + day + hour + minute + seconds, 2) ).hex() ) byte_swap = "".join([to_hex[i : i + 2] for i in range(0, len(to_hex), 2)][::-1]) out_fat = "".join( [byte_swap[i : i + 4] for i in range(0, len(byte_swap), 4)][::-1] ) ts_output, _ = format_output(ts_type, out_fat) except Exception: handle(sys.exc_info()) out_fat = ts_output = "" return out_fat, ts_output def from_msdos(timestamp): """Convert an MS-DOS timestamp to a date""" ts_type, reason, _, tz_out = ts_types["msdos"] try: if not len(timestamp) == 8 or not all(char in hexdigits for char in timestamp): in_msdos = indiv_output = combined_output = "" else: swap = "".join( [timestamp[i : i + 2] for i in range(0, len(timestamp), 2)][::-1] ) binary = f"{int(swap, 16):032b}" stamp = [ binary[:7], binary[7:11], binary[11:16], binary[16:21], binary[21:27], binary[27:32], ] for val in stamp[:]: dec = int(val, 2) stamp.remove(val) stamp.append(dec) dos_year = stamp[0] + 1980 dos_month = stamp[1] dos_day = stamp[2] dos_hour = stamp[3] dos_min = stamp[4] dos_sec = stamp[5] * 2 try: out_of_range = any( not low <= value < high for value, (low, high) in zip( (dos_year, dos_month, dos_day, dos_hour, dos_min, dos_sec), ( (1970, 2100), (1, 13), (1, monthrange(dos_year, dos_month)[1] + 1), (0, 24), (0, 60), (0, 60), ), ) ) if out_of_range: in_msdos = indiv_output = combined_output = "" return in_msdos, indiv_output, combined_output, reason, tz_out except (IllegalMonthError, ValueError): in_msdos = indiv_output = combined_output = "" return in_msdos, indiv_output, combined_output, reason, tz_out dt_obj = dt(dos_year, dos_month, dos_day, dos_hour, dos_min, dos_sec) in_msdos = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_msdos, tz_out) except Exception: handle(sys.exc_info()) in_msdos = indiv_output = combined_output = "" return in_msdos, indiv_output, combined_output, reason, tz_out def to_msdos(dt_obj): """Convert a date to an MS-DOS timestamp""" ts_type, _, _, _ = ts_types["msdos"] try: year = f"{(dt_obj.year - 1980):07b}" month = f"{dt_obj.month:04b}" day = f"{dt_obj.day:05b}" hour = f"{dt_obj.hour:05b}" minute = f"{dt_obj.minute:06b}" seconds = f"{int(dt_obj.second / 2):05b}" hexval = str( struct.pack( ">I", int(year + month + day + hour + minute + seconds, 2) ).hex() ) out_msdos = "".join([hexval[i : i + 2] for i in range(0, len(hexval), 2)][::-1]) ts_output, _ = format_output(ts_type, out_msdos) except Exception: handle(sys.exc_info()) out_msdos = ts_output = "" return out_msdos, ts_output def from_exfat(timestamp): """Convert an exFAT timestamp (LE) to a date""" ts_type, reason, _, tz_out = ts_types["exfat"] try: if not len(timestamp) == 8 or not all(char in hexdigits for char in timestamp): in_exfat = indiv_output = combined_output = "" else: binary = f"{int(timestamp, 16):032b}" stamp = [ binary[:7], binary[7:11], binary[11:16], binary[16:21], binary[21:27], binary[27:32], ] for val in stamp[:]: dec = int(val, 2) stamp.remove(val) stamp.append(dec) exfat_year = stamp[0] + 1980 exfat_month = stamp[1] exfat_day = stamp[2] exfat_hour = stamp[3] exfat_min = stamp[4] exfat_sec = stamp[5] * 2 try: out_of_range = any( not low <= value < high for value, (low, high) in zip( ( exfat_year, exfat_month, exfat_day, exfat_hour, exfat_min, exfat_sec, ), ( (1970, 2100), (1, 13), (1, monthrange(exfat_year, exfat_month)[1] + 1), (0, 24), (0, 60), (0, 60), ), ) ) if out_of_range: in_exfat = indiv_output = combined_output = "" return in_exfat, indiv_output, combined_output, reason, tz_out except (IllegalMonthError, ValueError): in_exfat = indiv_output = combined_output = "" return in_exfat, indiv_output, combined_output, reason, tz_out dt_obj = dt( exfat_year, exfat_month, exfat_day, exfat_hour, exfat_min, exfat_sec ) in_exfat = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_exfat, tz_out) except Exception: handle(sys.exc_info()) in_exfat = indiv_output = combined_output = "" return in_exfat, indiv_output, combined_output, reason, tz_out def to_exfat(dt_obj): """Convert a date to an exFAT timestamp (LE)""" ts_type, _, _, _ = ts_types["exfat"] try: year = f"{(dt_obj.year - 1980):07b}" month = f"{dt_obj.month:04b}" day = f"{dt_obj.day:05b}" hour = f"{dt_obj.hour:05b}" minute = f"{dt_obj.minute:06b}" seconds = f"{int(dt_obj.second / 2):05b}" out_exfat = str( struct.pack( ">I", int(year + month + day + hour + minute + seconds, 2) ).hex() ) ts_output, _ = format_output(ts_type, out_exfat) except Exception: handle(sys.exc_info()) out_exfat = ts_output = "" return out_exfat, ts_output def from_systemtime(timestamp): """Convert a Microsoft 128-bit SYSTEMTIME timestamp to a date""" ts_type, reason, _, tz_out = ts_types["systemtime"] try: if not len(timestamp) == 32 or not all(char in hexdigits for char in timestamp): in_systemtime = indiv_output = combined_output = "" else: to_le = "".join( [timestamp[i : i + 2] for i in range(0, len(timestamp), 2)][::-1] ) converted = [to_le[i : i + 4] for i in range(0, len(to_le), 4)][::-1] stamp = [] for i in converted: dec = int(i, 16) stamp.append(dec) if (stamp[0] > 3000) or (stamp[1] > 12) or (stamp[2] > 31): in_systemtime = indiv_output = combined_output = "" else: dt_obj = dt( stamp[0], stamp[1], stamp[3], stamp[4], stamp[5], stamp[6], stamp[7] * 1000, ) in_systemtime = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_systemtime, tz_out ) except Exception: handle(sys.exc_info()) in_systemtime = indiv_output = combined_output = "" return in_systemtime, indiv_output, combined_output, reason, tz_out def to_systemtime(dt_obj): """Convert a date to a Microsoft 128-bit SYSTEMTIME timestamp""" ts_type, _, _, _ = ts_types["systemtime"] try: micro = int(dt_obj.microsecond / 1000) full_date = dt_obj.strftime(f"%Y, %m, %w, %d, %H, %M, %S, {micro}") stamp = [] for val in full_date.split(","): to_hex = int( hex(int.from_bytes(struct.pack("Q", struct.pack(">LL", part1, part2))[0] if converted_time >= 1e18: in_filetime_lo_hi = indiv_output = combined_output = "" else: dt_obj = dt.fromtimestamp( float(converted_time - epochs["active"]) / epochs["hundreds_nano"], timezone.utc, ) in_filetime_lo_hi = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_filetime_lo_hi, tz_out ) except Exception: handle(sys.exc_info()) in_filetime_lo_hi = indiv_output = combined_output = "" return in_filetime_lo_hi, indiv_output, combined_output, reason, tz_out def to_filetimelohi(dt_obj): """Convert a date to a Microsoft FILETIME timestamp""" ts_type, _, _, _ = ts_types["filetimelohi"] try: minus_epoch = dt_obj - epochs[1601] calc_time = ( minus_epoch.microseconds + (minus_epoch.seconds * 1000000) + (minus_epoch.days * 86400000000) ) indiv_output = str(struct.pack(">Q", int(calc_time * 10)).hex()) out_filetime_lo_hi = f"{str(indiv_output[8:])}:{str(indiv_output[:8])}" ts_output, _ = format_output(ts_type, out_filetime_lo_hi) except Exception: handle(sys.exc_info()) out_filetime_lo_hi = ts_output = "" return out_filetime_lo_hi, ts_output def from_hotmail(timestamp): """Convert a Microsoft Hotmail timestamp to a date""" ts_type, reason, _, tz_out = ts_types["hotmail"] try: if ":" not in timestamp or not ( all(char in hexdigits for char in timestamp[0:8]) and all(char in hexdigits for char in timestamp[9:]) ): in_hotmail = indiv_output = combined_output = "" else: hm_repl = timestamp.replace(":", "") byte_swap = "".join( [hm_repl[i : i + 2] for i in range(0, len(hm_repl), 2)][::-1] ) part2 = int(byte_swap[:8], base=16) part1 = int(byte_swap[8:], base=16) converted_time = struct.unpack(">Q", struct.pack(">LL", part1, part2))[0] if converted_time >= 1e18: in_hotmail = indiv_output = combined_output = "" else: dt_obj = dt.fromtimestamp( float(converted_time - epochs["active"]) / epochs["hundreds_nano"], timezone.utc, ) in_hotmail = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_hotmail, tz_out ) except Exception: handle(sys.exc_info()) in_hotmail = indiv_output = combined_output = "" return in_hotmail, indiv_output, combined_output, reason, tz_out def to_hotmail(dt_obj): """Convert a date to a Microsoft Hotmail timestamp""" ts_type, _, _, _ = ts_types["hotmail"] try: minus_epoch = dt_obj - epochs[1601] calc_time = ( minus_epoch.microseconds + (minus_epoch.seconds * 1000000) + (minus_epoch.days * 86400000000) ) indiv_output = str(struct.pack(">Q", int(calc_time * 10)).hex()) byte_swap = "".join( [indiv_output[i : i + 2] for i in range(0, len(indiv_output), 2)][::-1] ) out_hotmail = f"{str(byte_swap[8:])}:{str(byte_swap[:8])}" ts_output, _ = format_output(ts_type, out_hotmail) except Exception: handle(sys.exc_info()) out_hotmail = ts_output = "" return out_hotmail, ts_output def from_prtime(timestamp): """Convert a Mozilla PRTime timestamp to a date""" ts_type, reason, _, tz_out = ts_types["prtime"] try: if not len(timestamp) == 16 or not timestamp.isdigit(): in_prtime = indiv_output = combined_output = "" else: dt_obj = epochs[1970] + timedelta(microseconds=int(timestamp)) in_prtime = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_prtime, tz_out) except Exception: handle(sys.exc_info()) in_prtime = indiv_output = combined_output = "" return in_prtime, indiv_output, combined_output, reason, tz_out def to_prtime(dt_obj): """Convert a date to Mozilla's PRTime timestamp""" ts_type, _, _, _ = ts_types["prtime"] try: out_prtime = str(int(((dt_obj - epochs[1970]).total_seconds()) * 1000000)) ts_output, _ = format_output(ts_type, out_prtime) except Exception: handle(sys.exc_info()) out_prtime = ts_output = "" return out_prtime, ts_output def from_oleauto(timestamp): """Convert an OLE Automation timestamp to a date""" ts_type, reason, _, tz_out = ts_types["oleauto"] try: if ( "." not in timestamp or not ( (len(timestamp.split(".")[0]) == 5) and (len(timestamp.split(".")[1]) in range(9, 13)) ) or not "".join(timestamp.split(".")).isdigit() ): in_ole_auto = indiv_output = combined_output = "" else: dt_obj = epochs[1899] + timedelta(days=float(timestamp)) in_ole_auto = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_ole_auto, tz_out) except Exception: handle(sys.exc_info()) in_ole_auto = indiv_output = combined_output = "" return in_ole_auto, indiv_output, combined_output, reason, tz_out def to_oleauto(dt_obj): """Convert a date to an OLE Automation timestamp""" ts_type, _, _, _ = ts_types["oleauto"] try: ole_ts = ((dt_obj - epochs[1899]).total_seconds()) / 86400 out_ole_auto = f"{ole_ts:.12f}" ts_output, _ = format_output(ts_type, out_ole_auto) except Exception: handle(sys.exc_info()) out_ole_auto = ts_output = "" return out_ole_auto, ts_output def from_ms1904(timestamp): """Convert a Microsoft Excel 1904 timestamp to a date""" ts_type, reason, _, tz_out = ts_types["ms1904"] try: if ( "." not in timestamp or not ( (len(timestamp.split(".")[0]) == 5) and (len(timestamp.split(".")[1]) in range(9, 13)) ) or not "".join(timestamp.split(".")).isdigit() ): in_ms1904 = indiv_output = combined_output = "" else: dt_obj = epochs[1904] + timedelta(days=float(timestamp)) in_ms1904 = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_ms1904, tz_out) except Exception: handle(sys.exc_info()) in_ms1904 = indiv_output = combined_output = "" return in_ms1904, indiv_output, combined_output, reason, tz_out def to_ms1904(dt_obj): """Convert a date to a Microsoft Excel 1904 timestamp""" ts_type, _, _, _ = ts_types["ms1904"] try: ms1904_ts = ((dt_obj - epochs[1904]).total_seconds()) / 86400 out_ms1904 = f"{ms1904_ts:.12f}" ts_output, _ = format_output(ts_type, out_ms1904) except Exception: handle(sys.exc_info()) out_ms1904 = ts_output = "" return out_ms1904, ts_output def from_symantec(timestamp): """Convert a Symantec 6-byte hex timestamp to a date""" ts_type, reason, _, tz_out = ts_types["symantec"] try: if not len(timestamp) == 12 or not all(char in hexdigits for char in timestamp): in_symtime = indiv_output = combined_output = "" else: hex_to_dec = [ int(timestamp[i : i + 2], 16) for i in range(0, len(timestamp), 2) ] hex_to_dec[0] = hex_to_dec[0] + 1970 hex_to_dec[1] = hex_to_dec[1] + 1 if hex_to_dec[1] not in range(1, 13): in_symtime = indiv_output = combined_output = "" else: try: dt_obj = dt( hex_to_dec[0], hex_to_dec[1], hex_to_dec[2], hex_to_dec[3], hex_to_dec[4], hex_to_dec[5], ) except ValueError: in_symtime = indiv_output = combined_output = "" return in_symtime, indiv_output, combined_output, reason, tz_out in_symtime = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_symtime, tz_out) except Exception: handle(sys.exc_info()) in_symtime = indiv_output = combined_output = "" return in_symtime, indiv_output, combined_output, reason, tz_out def to_symantec(dt_obj): """Convert a date to Symantec's 6-byte hex timestamp""" ts_type, _, _, _ = ts_types["symantec"] try: sym_year = f"{(dt_obj.year - 1970):02x}" sym_month = f"{(dt_obj.month - 1):02x}" sym_day = f"{(dt_obj.day):02x}" sym_hour = f"{(dt_obj.hour):02x}" sym_minute = f"{(dt_obj.minute):02x}" sym_second = f"{(dt_obj.second):02x}" out_symtime = ( f"{sym_year}{sym_month}{sym_day}{sym_hour}{sym_minute}{sym_second}" ) ts_output, _ = format_output(ts_type, out_symtime) except Exception: handle(sys.exc_info()) out_symtime = ts_output = "" return out_symtime, ts_output def from_gps(timestamp): """Convert a GPS timestamp to a date (involves leap seconds)""" ts_type, reason, _, tz_out = ts_types["gps"] try: if not len(timestamp) == 10 or not timestamp.isdigit(): in_gpstime = indiv_output = combined_output = "" else: gps_stamp = epochs[1980] + timedelta(seconds=float(timestamp)) tai_convert = gps_stamp + timedelta(seconds=19) epoch_convert = (tai_convert - epochs[1970]).total_seconds() check_date = dt.fromtimestamp(epoch_convert, timezone.utc) for entry in leapseconds: check = date_range( leapseconds.get(entry)[0], leapseconds.get(entry)[1], check_date ) if check is True: variance = entry else: variance = 0 gps_out = check_date - timedelta(seconds=variance) in_gpstime = gps_out.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_gpstime, tz_out) except Exception: handle(sys.exc_info()) in_gpstime = indiv_output = combined_output = "" return in_gpstime, indiv_output, combined_output, reason, tz_out def to_gps(dt_obj): """Convert a date to a GPS timestamp (involves leap seconds)""" ts_type, _, _, _ = ts_types["gps"] try: for entry in leapseconds: check = date_range( leapseconds.get(entry)[0], leapseconds.get(entry)[1], dt_obj ) if check is True: variance = entry else: variance = 0 leap_correction = dt_obj + timedelta(seconds=variance) epoch_shift = leap_correction - epochs[1970] gps_stamp = ( dt.fromtimestamp(epoch_shift.total_seconds(), timezone.utc) - epochs[1980] ).total_seconds() - 19 out_gpstime = str(int(gps_stamp)) ts_output, _ = format_output(ts_type, out_gpstime) except Exception: handle(sys.exc_info()) out_gpstime = ts_output = "" return out_gpstime, ts_output def from_eitime(timestamp): """Convert a Google ei URL timestamp""" ts_type, reason, _, tz_out = ts_types["eitime"] try: if not all(char in URLSAFE_CHARS for char in timestamp): in_eitime = indiv_output = combined_output = "" else: padding_check = len(timestamp) % 4 if padding_check != 0: padding_reqd = 4 - padding_check result_eitime = timestamp + (padding_reqd * "=") else: result_eitime = timestamp try: decoded_eitime = base64.urlsafe_b64decode(result_eitime).hex()[:8] unix_ts = int.from_bytes( struct.pack(" 0: tz_out = f"{tz_out}+{str(dt_tz)}" else: tz_out = f"{tz_out}{str(dt_tz)}" in_gsm = str( dt(dt_year, dt_month, dt_day, dt_hour, dt_min, dt_sec).strftime(__fmt__) ) indiv_output, combined_output = format_output(ts_type, in_gsm, tz_out) except ValueError: in_gsm = indiv_output = combined_output = "" except Exception: handle(sys.exc_info()) in_gsm = indiv_output = combined_output = "" return in_gsm, indiv_output, combined_output, reason, tz_out def to_gsm(dt_obj): """Convert a timestamp to a GSM timestamp""" ts_type, _, _, _ = ts_types["gsm"] try: dt_tz = dt_obj.utcoffset().seconds if dt_tz == 0: hex_tz = f"{0:02d}" elif dt_tz < 0: dt_tz = dt_tz / 3600 conversion = str(f"{(int(abs(dt_tz)) * 4):02d}") conv_list = list(conversion) high_order = f"{int(conv_list[0]):04b}" low_order = f"{int(conv_list[1]):04b}" high_order = f"{(int(high_order, 2) + 8):04b}" hex_tz = hex(int((high_order + low_order), 2)).lstrip("0x").upper() else: dt_tz = dt_tz / 3600 conversion = str(int(dt_tz) * 4).zfill(2) conv_list = list(conversion) high_order = f"{int(conv_list[0]):04b}" low_order = f"{int(conv_list[1]):04b}" hex_tz = hex(int((high_order + low_order), 2)).lstrip("0x").upper() date_list = [ f"{(dt_obj.year - 2000):02d}", f"{dt_obj.month:02d}", f"{dt_obj.day:02d}", f"{dt_obj.hour:02d}", f"{dt_obj.minute:02d}", f"{dt_obj.second:02d}", hex_tz, ] date_value_swap = [] for value in date_list[:]: b_endian = value[::-1] date_value_swap.append(b_endian) out_gsm = "".join(date_value_swap) ts_output, _ = format_output(ts_type, out_gsm) except Exception: handle(sys.exc_info()) out_gsm = ts_output = "" return out_gsm, ts_output def from_vm(timestamp): """Convert from a .vmsd createTimeHigh/createTimeLow timestamp""" ts_type, reason, _, tz_out = ts_types["vm"] try: if "," not in timestamp: in_vm = indiv_output = combined_output = "" else: create_time_high = int(timestamp.split(",")[0]) create_time_low = int(timestamp.split(",")[1]) try: vmsd = ( float( (create_time_high * 2**32) + struct.unpack("I", struct.pack("i", create_time_low))[0] ) / 1000000 ) except Exception: in_vm = indiv_output = combined_output = "" return in_vm, indiv_output, combined_output, reason, tz_out if vmsd >= 32536799999: in_vm = indiv_output = combined_output = "" else: in_vm = dt.fromtimestamp(vmsd, timezone.utc).strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_vm, tz_out) except Exception: handle(sys.exc_info()) in_vm = indiv_output = combined_output = "" return in_vm, indiv_output, combined_output, reason, tz_out def to_vm(dt_obj): """Convert date to a .vmsd createTime* value""" ts_type, _, _, _ = ts_types["vm"] try: unix_seconds = int((dt_obj - epochs[1970]).total_seconds()) * 1000000 create_time_high = int(float(unix_seconds) / 2**32) unpacked_int = unix_seconds - (create_time_high * 2**32) create_time_low = struct.unpack("i", struct.pack("I", unpacked_int))[0] out_vm = f"{str(create_time_high)},{str(create_time_low)}" ts_output, _ = format_output(ts_type, out_vm) except Exception: handle(sys.exc_info()) out_vm = ts_output = "" return out_vm, ts_output def from_tiktok(timestamp): """Convert a TikTok URL value to a date/time""" ts_type, reason, _, tz_out = ts_types["tiktok"] try: if len(str(timestamp)) < 19 or not timestamp.isdigit(): in_tiktok = indiv_output = combined_output = "" else: unix_ts = int(timestamp) >> 32 if unix_ts >= 32536799999: in_tiktok = indiv_output = combined_output = "" else: in_tiktok = dt.fromtimestamp(float(unix_ts), timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_tiktok, tz_out) except Exception: handle(sys.exc_info()) in_tiktok = indiv_output = combined_output = "" return in_tiktok, indiv_output, combined_output, reason, tz_out def to_tiktok(dt_obj): """Convert a date/time to a TikTok timestamp""" ts_type, _, _, _ = ts_types["tiktok"] try: unix_ts = int(dt_obj.timestamp()) out_tiktok = str(unix_ts << 32) ts_output, _ = format_output(ts_type, out_tiktok) except Exception: handle(sys.exc_info()) out_tiktok = ts_output = "" return out_tiktok, ts_output def from_twitter(timestamp): """Convert a Twitter URL value to a date/time""" ts_type, reason, _, tz_out = ts_types["twitter"] try: if len(str(timestamp)) < 18 or not timestamp.isdigit(): in_twitter = indiv_output = combined_output = "" else: unix_ts = ((int(timestamp) >> 22) + 1288834974657) / 1000 if unix_ts >= 32536799999: in_twitter = indiv_output = combined_output = "" else: in_twitter = dt.fromtimestamp(float(unix_ts), timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_twitter, tz_out) except Exception: handle(sys.exc_info()) in_twitter = indiv_output = combined_output = "" return in_twitter, indiv_output, combined_output, reason, tz_out def to_twitter(dt_obj): """Convert a date/time value to a Twitter value""" ts_type, _, _, _ = ts_types["twitter"] try: unix_ts = (dt_obj.timestamp() * 1000) - 1288834974657 out_twitter = str(int(unix_ts) << 22) ts_output, _ = format_output(ts_type, out_twitter) except Exception: handle(sys.exc_info()) out_twitter = ts_output = "" return out_twitter, ts_output def from_discord(timestamp): """Convert a Discord URL value to a date/time""" ts_type, reason, _, tz_out = ts_types["discord"] try: if len(str(timestamp)) < 18 or not timestamp.isdigit(): in_discord = indiv_output = combined_output = "" else: unix_ts = ((int(timestamp) >> 22) + 1420070400000) / 1000 if unix_ts >= 32536799999: in_discord = indiv_output = combined_output = "" else: in_discord = dt.fromtimestamp(float(unix_ts), timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_discord, tz_out) except Exception: handle(sys.exc_info()) in_discord = indiv_output = combined_output = "" return in_discord, indiv_output, combined_output, reason, tz_out def to_discord(dt_obj): """Convert a date/time to a Discord URL value""" ts_type, _, _, _ = ts_types["discord"] try: timestamp = int(dt_obj.timestamp() * 1000) - 1420070400000 out_discord = str(timestamp << 22) ts_output, _ = format_output(ts_type, out_discord) except Exception: handle(sys.exc_info()) out_discord = ts_output = "" return out_discord, ts_output def from_ksalnum(timestamp): """Extract a timestamp from a KSUID alpha-numeric value""" ts_type, reason, _, tz_out = ts_types["ksalnum"] try: if len(str(timestamp)) != 27 or not all( char in KSALNUM_CHARS for char in timestamp ): in_ksalnum = indiv_output = combined_output = "" else: length, i, variation = len(timestamp), 0, 0 b_array = bytearray() for val in timestamp: variation += KSALNUM_CHARS.index(val) * (62 ** (length - (i + 1))) i += 1 while variation > 0: b_array.append(variation & 0xFF) variation //= 256 b_array.reverse() ts_bytes = bytes(b_array)[0:4] unix_ts = int.from_bytes(ts_bytes, "big", signed=False) + epochs["kstime"] in_ksalnum = dt.fromtimestamp(float(unix_ts), timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_ksalnum, tz_out) except Exception: handle(sys.exc_info()) in_ksalnum = indiv_output = combined_output = "" return in_ksalnum, indiv_output, combined_output, reason, tz_out def to_ksalnum(dt_obj): """Convert a date/time to a KSUID alpha-numeric value""" ts_type, _, _, _ = ts_types["ksalnum"] try: out_ksalnum = "" unix_ts = int(dt_obj.timestamp()) ts_bytes = (unix_ts - epochs["kstime"]).to_bytes(4, "big") filler = os.urandom(16) all_bytes = ts_bytes + filler big_int = int.from_bytes(all_bytes, "big") while big_int > 0: big_int, rem = divmod(big_int, 62) out_ksalnum = KSALNUM_CHARS[rem] + out_ksalnum out_ksalnum = out_ksalnum.rjust(27, "0") ts_output, _ = format_output(ts_type, out_ksalnum) except Exception: handle(sys.exc_info()) out_ksalnum = ts_output = "" return out_ksalnum, ts_output def from_mastodon(timestamp): """Convert a Mastodon value to a date/time""" ts_type, reason, _, tz_out = ts_types["mastodon"] try: if len(str(timestamp)) < 18 or not timestamp.isdigit(): in_mastodon = indiv_output = combined_output = "" else: ts_conversion = int(timestamp) >> 16 unix_ts = float(ts_conversion) / 1000.0 if int(unix_ts) >= 32536799999: in_mastodon = indiv_output = combined_output = "" else: in_mastodon = dt.fromtimestamp(unix_ts, timezone.utc).strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_mastodon, tz_out ) except Exception: handle(sys.exc_info()) in_mastodon = indiv_output = combined_output = "" return in_mastodon, indiv_output, combined_output, reason, tz_out def to_mastodon(dt_obj): """Convert a date/time to a Mastodon value""" ts_type, _, _, _ = ts_types["mastodon"] try: unix_seconds = int((dt_obj - epochs[1970]).total_seconds()) * 1000 bit_shift = unix_seconds << 16 out_mastodon = f"{str(bit_shift)}" ts_output, _ = format_output(ts_type, out_mastodon) except Exception: handle(sys.exc_info()) out_mastodon = ts_output = "" return out_mastodon, ts_output def from_metasploit(timestamp): """Convert a Metasploit Payload UUID value to a date/time""" ts_type, reason, _, tz_out = ts_types["metasploit"] meta_format = "8sBBBBBBBB" try: if len(str(timestamp)) < 22 or not all( char in URLSAFE_CHARS for char in timestamp ): in_metasploit = indiv_output = combined_output = "" else: b64decoded = base64.urlsafe_b64decode(timestamp[0:22] + "==") if len(b64decoded) < struct.calcsize(meta_format): in_metasploit = indiv_output = combined_output = "" return in_metasploit, indiv_output, combined_output, reason, tz_out ( _, xor1, xor2, _, _, ts1_xored, ts2_xored, ts3_xored, ts4_xored, ) = struct.unpack(meta_format, b64decoded) unix_ts = struct.unpack( ">I", bytes( [ ts1_xored ^ xor1, ts2_xored ^ xor2, ts3_xored ^ xor1, ts4_xored ^ xor2, ] ), )[0] in_metasploit = dt.fromtimestamp(float(unix_ts), timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output( ts_type, in_metasploit, tz_out ) except Exception: handle(sys.exc_info()) in_metasploit = indiv_output = combined_output = "" return in_metasploit, indiv_output, combined_output, reason, tz_out def from_sony(timestamp): """Convert a Sonyflake value to a date/time""" ts_type, reason, _, tz_out = ts_types["sony"] try: if len(str(timestamp)) != 15 or not all( char in hexdigits for char in timestamp ): in_sony = indiv_output = combined_output = "" else: dec_value = int(timestamp, 16) ts_value = dec_value >> 24 unix_ts = (ts_value + 140952960000) * 10 in_sony = dt.fromtimestamp(float(unix_ts) / 1000.0, timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_sony, tz_out) except Exception: handle(sys.exc_info()) in_sony = indiv_output = combined_output = "" return in_sony, indiv_output, combined_output, reason, tz_out def to_sony(dt_obj): """Convert a date/time to a Sonyflake value""" ts_type, _, _, _ = ts_types["sony"] try: dec_value = int((dt_obj.timestamp() * 100) - 140952960000) out_sony = f"{(dec_value << 24):0x}" ts_output, _ = format_output(ts_type, out_sony) except Exception: handle(sys.exc_info()) out_sony = ts_output = "" return out_sony, ts_output def from_uuid(timestamp): """Convert a UUID value to date/time""" ts_type, reason, _, tz_out = ts_types["uuid"] try: uuid_lower = timestamp.lower() uuid_regex = re.compile( "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}" ) if not bool(uuid_regex.match(uuid_lower)): in_uuid = indiv_output = combined_output = "" else: u_data = uuid.UUID(uuid_lower) if u_data.version == 1: unix_ts = int((u_data.time / 10000) - 12219292800000) in_uuid = dt.fromtimestamp( float(unix_ts) / 1000.0, timezone.utc ).strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_uuid, tz_out) else: in_uuid = indiv_output = combined_output = "" except Exception: handle(sys.exc_info()) in_uuid = indiv_output = combined_output = "" return in_uuid, indiv_output, combined_output, reason, tz_out def to_uuid(dt_obj): """Convert a date/time value to a UUID""" ts_type, _, _, _ = ts_types["uuid"] try: timestamp = int((dt_obj - epochs[1582]).total_seconds() * 1e7) time_lo = timestamp & 0xFFFFFFFF time_mid = (timestamp >> 32) & 0xFFFF time_hi = (timestamp >> 48) & 0x0FFF time_hi_ver_1 = time_hi | (1 << 12) clock_seq = uuid.getnode() & 0x3FFF clock_seq_hi_variant = (clock_seq >> 8) | 0x80 clock_seq_low = clock_seq & 0xFF node = uuid.getnode() out_uuid = str( uuid.UUID( fields=( time_lo, time_mid, time_hi_ver_1, clock_seq_hi_variant, clock_seq_low, node, ) ) ) ts_output, _ = format_output(ts_type, out_uuid) except Exception: handle(sys.exc_info()) out_uuid = ts_output = "" return out_uuid, ts_output def from_dhcp6(timestamp): """Convert a DHCPv6 DUID value to date/time""" ts_type, reason, _, tz_out = ts_types["dhcp6"] try: if len(str(timestamp)) < 28 or not all(char in hexdigits for char in timestamp): in_dhcp6 = indiv_output = combined_output = "" else: dhcp6_bytes = timestamp[8:16] dhcp6_dec = int(dhcp6_bytes, 16) dhcp6_ts = epochs[2000] + timedelta(seconds=int(dhcp6_dec)) in_dhcp6 = dhcp6_ts.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_dhcp6, tz_out) except Exception: handle(sys.exc_info()) in_dhcp6 = indiv_output = combined_output = "" return in_dhcp6, indiv_output, combined_output, reason, tz_out def to_dhcp6(dt_obj): """Convert a timestamp to a DHCP DUID value""" ts_type, _, _, _ = ts_types["dhcp6"] try: unix_time = int((dt_obj - epochs[2000]).total_seconds()) if int(unix_time) < 0: out_dhcp6 = "[!] Timestamp Boundary Exceeded [!]" else: dhcp6_ts = str(struct.pack(">L", unix_time).hex()) out_dhcp6 = f"00010001{dhcp6_ts}000000000000" ts_output, _ = format_output(ts_type, out_dhcp6) except Exception: handle(sys.exc_info()) out_dhcp6 = ts_output = "" return out_dhcp6, ts_output def from_dotnet(timestamp): """Convert a .NET DateTime Ticks value to date/time""" ts_type, reason, _, tz_out = ts_types["dotnet"] try: if len(str(timestamp)) != 18 or not (timestamp).isdigit(): in_dotnet = indiv_output = combined_output = "" else: dotnet_to_umil = (int(timestamp) - epochs["ticks"]) / epochs[ "hundreds_nano" ] if dotnet_to_umil < 0: in_dotnet = indiv_output = combined_output = "" else: in_dotnet = dt.fromtimestamp(dotnet_to_umil, timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_dotnet, tz_out) except Exception: handle(sys.exc_info()) in_dotnet = indiv_output = combined_output = "" return in_dotnet, indiv_output, combined_output, reason, tz_out def to_dotnet(dt_obj): """Convert date to a .NET DateTime Ticks value""" ts_type, _, _, _ = ts_types["dotnet"] try: ts = dt_obj.timestamp() * epochs["hundreds_nano"] out_dotnet = str(int(ts + epochs["ticks"])) ts_output, _ = format_output(ts_type, out_dotnet) except Exception: handle(sys.exc_info()) out_dotnet = ts_output = "" return out_dotnet, ts_output def from_gbound(timestamp): """Convert a GMail Boundary value to date/time""" ts_type, reason, _, tz_out = ts_types["gbound"] try: if len(str(timestamp)) != 28 or not all( char in hexdigits for char in timestamp ): in_gbound = indiv_output = combined_output = "" else: working_value = timestamp[12:26] end = working_value[:6] begin = working_value[6:14] full_dec = int("".join(begin + end), 16) in_gbound = dt.fromtimestamp(full_dec / 1000000, timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_gbound, tz_out) except Exception: handle(sys.exc_info()) in_gbound = indiv_output = combined_output = "" return in_gbound, indiv_output, combined_output, reason, tz_out def to_gbound(dt_obj): """Convert date to a GMail Boundary value""" ts_type, _, _, _ = ts_types["gbound"] try: to_int = int(((dt_obj - epochs[1970]).total_seconds()) * 1000000) if len(f"{to_int:x}") < 14: to_int = f"0{to_int:x}" begin = to_int[8:] end = to_int[:8] out_gbound = f"000000000000{begin}{end}00" ts_output, _ = format_output(ts_type, out_gbound) except Exception: handle(sys.exc_info()) out_gbound = ts_output = "" return out_gbound, ts_output def from_gmsgid(timestamp): """Convert a GMail Message ID to a date/time value""" ts_type, reason, _, tz_out = ts_types["gmsgid"] try: gmsgid = timestamp if str(gmsgid).isdigit() and len(str(gmsgid)) == 19: gmsgid = str(f"{int(gmsgid):x}") if len(str(gmsgid)) != 16 or not all(char in hexdigits for char in gmsgid): in_gmsgid = indiv_output = combined_output = "" else: working_value = gmsgid[:11] to_int = int(working_value, 16) in_gmsgid = dt.fromtimestamp(to_int / 1000, timezone.utc).strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_gmsgid, tz_out) except Exception: handle(sys.exc_info()) in_gmsgid = indiv_output = combined_output = "" return in_gmsgid, indiv_output, combined_output, reason, tz_out def to_gmsgid(dt_obj): """Convert date to a GMail Message ID value""" ts_type, _, _, _ = ts_types["gmsgid"] try: to_int = int(((dt_obj - epochs[1970]).total_seconds()) * 1000) ts_hex = f"{to_int:x}" out_gmsgid = f"{ts_hex}00000" ts_output, _ = format_output(ts_type, out_gmsgid) except Exception: handle(sys.exc_info()) out_gmsgid = ts_output = "" return out_gmsgid, ts_output def from_moto(timestamp): """Convert a Motorola 6-byte hex timestamp to a date""" ts_type, reason, _, tz_out = ts_types["moto"] try: if len(str(timestamp)) != 12 or not all( char in hexdigits for char in timestamp ): in_moto = indiv_output = combined_output = "" else: hex_to_dec = [ int(timestamp[i : i + 2], 16) for i in range(0, len(timestamp), 2) ] hex_to_dec[0] = hex_to_dec[0] + 1970 if hex_to_dec[1] not in range(1, 13): in_moto = indiv_output = combined_output = "" else: try: dt_obj = dt( hex_to_dec[0], hex_to_dec[1], hex_to_dec[2], hex_to_dec[3], hex_to_dec[4], hex_to_dec[5], ) except ValueError: in_moto = indiv_output = combined_output = "" return in_moto, indiv_output, combined_output, reason, tz_out in_moto = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_moto, tz_out) except Exception: handle(sys.exc_info()) in_moto = indiv_output = combined_output = "" return in_moto, indiv_output, combined_output, reason, tz_out def to_moto(dt_obj): """Convert a date to Motorola's 6-byte hex timestamp""" ts_type, _, _, _ = ts_types["moto"] try: moto_year = f"{(dt_obj.year - 1970):02x}" moto_month = f"{(dt_obj.month):02x}" moto_day = f"{(dt_obj.day):02x}" moto_hour = f"{(dt_obj.hour):02x}" moto_minute = f"{(dt_obj.minute):02x}" moto_second = f"{(dt_obj.second):02x}" out_moto = str( f"{moto_year}{moto_month}{moto_day}" f"{moto_hour}{moto_minute}{moto_second}" ) ts_output, _ = format_output(ts_type, out_moto) except Exception: handle(sys.exc_info()) out_moto = ts_output = "" return out_moto, ts_output def from_nokia(timestamp): """Convert a Nokia 4-byte value to date/time""" ts_type, reason, _, tz_out = ts_types["nokia"] try: if not len(timestamp) == 8 or not all(char in hexdigits for char in timestamp): in_nokia = indiv_output = combined_output = "" else: to_int = int(timestamp, 16) int_diff = to_int ^ 4294967295 int_diff = ~int_diff + 1 unix_ts = int_diff + (epochs[2050] - epochs[1970]).total_seconds() if unix_ts < 0: in_nokia = indiv_output = combined_output = "" else: in_nokia = dt.fromtimestamp(unix_ts, timezone.utc).strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_nokia, tz_out) except Exception: handle(sys.exc_info()) in_nokia = indiv_output = combined_output = "" return in_nokia, indiv_output, combined_output, reason, tz_out def to_nokia(dt_obj): """Convert a date/time value to a Nokia 4-byte timestamp""" ts_type, _, _, _ = ts_types["nokia"] try: unix_ts = (dt_obj - epochs[1970]).total_seconds() int_diff = int(unix_ts - (epochs[2050] - epochs[1970]).total_seconds()) int_diff = int_diff - 1 dec_value = ~int_diff ^ 4294967295 out_nokia = f"{dec_value:x}" ts_output, _ = format_output(ts_type, out_nokia) except Exception: handle(sys.exc_info()) out_nokia = ts_output = "" return out_nokia, ts_output def from_nokiale(timestamp): """Convert a little-endian Nokia 4-byte value to date/time""" ts_type, reason, _, tz_out = ts_types["nokiale"] try: if not len(timestamp) == 8 or not all(char in hexdigits for char in timestamp): in_nokiale = indiv_output = combined_output = "" else: to_be = "".join( [timestamp[i : i + 2] for i in range(0, len(timestamp), 2)][::-1] ) to_int = int(to_be, 16) int_diff = to_int ^ 4294967295 int_diff = ~int_diff + 1 unix_ts = int_diff + (epochs[2050] - epochs[1970]).total_seconds() if unix_ts < 0: in_nokiale = indiv_output = combined_output = "" else: in_nokiale = dt.fromtimestamp(unix_ts, timezone.utc).strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_nokiale, tz_out ) except Exception: handle(sys.exc_info()) in_nokiale = indiv_output = combined_output = "" return in_nokiale, indiv_output, combined_output, reason, tz_out def to_nokiale(dt_obj): """Convert a date/time value to a little-endian Nokia 4-byte timestamp""" ts_type, _, _, _ = ts_types["nokiale"] try: unix_ts = (dt_obj - epochs[1970]).total_seconds() int_diff = int(unix_ts - (epochs[2050] - epochs[1970]).total_seconds()) int_diff = int_diff - 1 dec_val = ~int_diff ^ 4294967295 hex_val = f"{dec_val:x}" out_nokiale = "".join( [hex_val[i : i + 2] for i in range(0, len(hex_val), 2)][::-1] ) ts_output, _ = format_output(ts_type, out_nokiale) except Exception: handle(sys.exc_info()) out_nokiale = ts_output = "" return out_nokiale, ts_output def from_ns40(timestamp): """Convert a Nokia S40 7-byte value to a time/time""" ts_type, reason, _, tz_out = ts_types["ns40"] try: if not len(timestamp) == 14 or not all(char in hexdigits for char in timestamp): in_ns40 = indiv_output = combined_output = "" else: ns40 = timestamp ns40_val = { "yr": ns40[:4], "mon": ns40[4:6], "day": ns40[6:8], "hr": ns40[8:10], "min": ns40[10:12], "sec": ns40[12:], } for each_key, _ in ns40_val.items(): ns40_val[str(each_key)] = int(ns40_val[str(each_key)], 16) if ns40_val["yr"] > 9999: in_ns40 = indiv_output = combined_output = "" elif (int(ns40_val["mon"]) > 12) or (int(ns40_val["mon"] < 1)): in_ns40 = indiv_output = combined_output = "" else: in_ns40 = dt( ns40_val["yr"], ns40_val["mon"], ns40_val["day"], ns40_val["hr"], ns40_val["min"], ns40_val["sec"], ).strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_ns40, tz_out) except Exception: handle(sys.exc_info()) in_ns40 = indiv_output = combined_output = "" return in_ns40, indiv_output, combined_output, reason, tz_out def to_ns40(dt_obj): """Convert a date/time value to a Nokia S40 7-byte timestamp""" ts_type, _, _, _ = ts_types["ns40"] try: hex_vals = [] hex_vals.append(f"{dt_obj.year:x}".zfill(4)) hex_vals.append(f"{dt_obj.month:x}".zfill(2)) hex_vals.append(f"{dt_obj.day:x}".zfill(2)) hex_vals.append(f"{dt_obj.hour:x}".zfill(2)) hex_vals.append(f"{dt_obj.minute:x}".zfill(2)) hex_vals.append(f"{dt_obj.second:x}".zfill(2)) out_ns40 = "".join(hex_vals) ts_output, _ = format_output(ts_type, out_ns40) except Exception: handle(sys.exc_info()) out_ns40 = ts_output = "" return out_ns40, ts_output def from_ns40le(timestamp): """Convert a little-endian Nokia S40 7-byte value to a date/time""" ts_type, reason, _, tz_out = ts_types["ns40le"] try: if len(str(timestamp)) != 14 or not all( char in hexdigits for char in timestamp ): in_ns40le = indiv_output = combined_output = "" else: ns40le = timestamp ns40_val = { "yr": "".join( [ns40le[i : i + 2] for i in range(0, len(ns40le[:4]), 2)][::-1] ), "mon": ns40le[4:6], "day": ns40le[6:8], "hr": ns40le[8:10], "min": ns40le[10:12], "sec": ns40le[12:], } for each_key, _ in ns40_val.items(): ns40_val[str(each_key)] = int(ns40_val[str(each_key)], 16) if ns40_val["yr"] > 9999: in_ns40le = indiv_output = combined_output = "" elif (int(ns40_val["mon"]) > 12) or (int(ns40_val["mon"] < 1)): in_ns40le = indiv_output = combined_output = "" else: in_ns40le = dt( ns40_val["yr"], ns40_val["mon"], ns40_val["day"], ns40_val["hr"], ns40_val["min"], ns40_val["sec"], ).strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_ns40le, tz_out) except Exception: handle(sys.exc_info()) in_ns40le = indiv_output = combined_output = "" return in_ns40le, indiv_output, combined_output, reason, tz_out def to_ns40le(dt_obj): """Convert a date/time value to a little-endian Nokia S40 7-byte timestamp""" ts_type, _, _, _ = ts_types["ns40le"] try: hex_vals = [] year_le = f"{dt_obj.year:x}".zfill(4) year_le = "".join( [year_le[i : i + 2] for i in range(0, len(year_le[:4]), 2)][::-1] ) hex_vals.append(f"{year_le}".zfill(4)) hex_vals.append(f"{dt_obj.month:x}".zfill(2)) hex_vals.append(f"{dt_obj.day:x}".zfill(2)) hex_vals.append(f"{dt_obj.hour:x}".zfill(2)) hex_vals.append(f"{dt_obj.minute:x}".zfill(2)) hex_vals.append(f"{dt_obj.second:x}".zfill(2)) out_ns40le = "".join(hex_vals) ts_output, _ = format_output(ts_type, out_ns40le) except Exception: handle(sys.exc_info()) out_ns40le = ts_output = "" return out_ns40le, ts_output def from_bitdec(timestamp): """Convert a 10-digit Bitwise Decimal value to a date/time""" ts_type, reason, _, tz_out = ts_types["bitdec"] try: if len(str(timestamp)) != 10 or not (timestamp).isdigit(): in_bitdec = indiv_output = combined_output = "" else: full_ts = int(timestamp) bd_yr = full_ts >> 20 bd_mon = (full_ts >> 16) & 15 bd_day = (full_ts >> 11) & 31 bd_hr = (full_ts >> 6) & 31 bd_min = full_ts & 63 try: in_bitdec = dt(bd_yr, bd_mon, bd_day, bd_hr, bd_min).strftime(__fmt__) except ValueError: in_bitdec = indiv_output = combined_output = "" return in_bitdec, indiv_output, combined_output, reason, tz_out indiv_output, combined_output = format_output(ts_type, in_bitdec, tz_out) except Exception: handle(sys.exc_info()) in_bitdec = indiv_output = combined_output = "" return in_bitdec, indiv_output, combined_output, reason, tz_out def to_bitdec(dt_obj): """Convert a date/time value to a Bitwise Decimal timestamp""" ts_type, _, _, _ = ts_types["bitdec"] try: out_bitdec = str( (dt_obj.year << 20) + (dt_obj.month << 16) + (dt_obj.day << 11) + (dt_obj.hour << 6) + (dt_obj.minute) ) ts_output, _ = format_output(ts_type, out_bitdec) except Exception: handle(sys.exc_info()) out_bitdec = ts_output = "" return out_bitdec, ts_output def from_bitdate(timestamp): """Convert a Samsung/LG 4-byte hex timestamp to a date/time""" ts_type, reason, _, tz_out = ts_types["bitdate"] try: if len(str(timestamp)) != 8 or not all(char in hexdigits for char in timestamp): in_bitdate = indiv_output = combined_output = "" else: to_le = "".join( [timestamp[i : i + 2] for i in range(0, len(str(timestamp)), 2)][::-1] ) to_binary = f"{int(to_le, 16):032b}" bitdate_yr = int(to_binary[:12], 2) bitdate_mon = int(to_binary[12:16], 2) bitdate_day = int(to_binary[16:21], 2) bitdate_hr = int(to_binary[21:26], 2) bitdate_min = int(to_binary[26:32], 2) if bitdate_yr not in range(1900, 2500): in_bitdate = indiv_output = combined_output = "" return in_bitdate, indiv_output, combined_output, reason, tz_out try: in_bitdate = dt( bitdate_yr, bitdate_mon, bitdate_day, bitdate_hr, bitdate_min ).strftime(__fmt__) except ValueError: in_bitdate = indiv_output = combined_output = "" return in_bitdate, indiv_output, combined_output, reason, tz_out indiv_output, combined_output = format_output(ts_type, in_bitdate, tz_out) except Exception: handle(sys.exc_info()) in_bitdate = indiv_output = combined_output = "" return in_bitdate, indiv_output, combined_output, reason, tz_out def to_bitdate(dt_obj): """Convert a date/time value to a Samsung/LG timestamp""" ts_type, _, _, _ = ts_types["bitdate"] try: bitdate_yr = f"{dt_obj.year:012b}" bitdate_mon = f"{dt_obj.month:04b}" bitdate_day = f"{dt_obj.day:05b}" bitdate_hr = f"{dt_obj.hour:05b}" bitdate_min = f"{dt_obj.minute:06b}" to_hex = str( struct.pack( ">I", int( bitdate_yr + bitdate_mon + bitdate_day + bitdate_hr + bitdate_min, 2 ), ).hex() ) out_bitdate = "".join( [to_hex[i : i + 2] for i in range(0, len(to_hex), 2)][::-1] ) ts_output, _ = format_output(ts_type, out_bitdate) except Exception: handle(sys.exc_info()) out_bitdate = ts_output = "" return out_bitdate, ts_output def from_ksdec(timestamp): """Convert a KSUID decimal value to a date""" ts_type, reason, _, tz_out = ts_types["ksdec"] try: if len(timestamp) != 9 or not timestamp.isdigit(): in_ksdec = indiv_output = combined_output = "" else: ts_val = int(timestamp) + int(epochs["kstime"]) in_ksdec = dt.fromtimestamp(float(ts_val), timezone.utc).strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_ksdec, tz_out) except Exception: handle(sys.exc_info()) in_ksdec = indiv_output = combined_output = "" return in_ksdec, indiv_output, combined_output, reason, tz_out def to_ksdec(dt_obj): """Convert date to a KSUID decimal value""" ts_type, _, _, _ = ts_types["ksdec"] try: unix_ts = str(int((dt_obj - epochs[1970]).total_seconds())) out_ksdec = str(int(unix_ts) - int(epochs["kstime"])) if int(out_ksdec) < 0: out_ksdec = "[!] Timestamp Boundary Exceeded [!]" ts_output, _ = format_output(ts_type, out_ksdec) except Exception: handle(sys.exc_info()) out_ksdec = ts_output = "" return out_ksdec, ts_output def from_biomehex(timestamp): """Convert an Apple Biome Hex value to a date - from Little Endian""" ts_type, reason, _, tz_out = ts_types["biomehex"] try: biomehex = str(timestamp) if len(biomehex) != 16 or not all(char in hexdigits for char in biomehex): in_biomehex = indiv_output = combined_output = "" else: if biomehex[:2] == "41": biomehex = "".join( [biomehex[i : i + 2] for i in range(0, len(biomehex), 2)][::-1] ) byte_val = bytes.fromhex(str(biomehex)) nsdate_val = struct.unpack("= 1e17: in_biomehex = indiv_output = combined_output = "" else: dt_obj = epochs[2001] + timedelta(seconds=float(nsdate_val)) in_biomehex = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_biomehex, tz_out ) except Exception: handle(sys.exc_info()) in_biomehex = indiv_output = combined_output = "" return in_biomehex, indiv_output, combined_output, reason, tz_out def to_biomehex(dt_obj): """Convert a date/time to an Apple Biome Hex value""" ts_type, _, _, _ = ts_types["biomehex"] try: bplist_stamp = str(float((dt_obj - epochs[2001]).total_seconds())) byte_biome = struct.pack(">d", float(bplist_stamp)) out_biomehex = bytes.hex(byte_biome) ts_output, _ = format_output(ts_type, out_biomehex) except Exception: handle(sys.exc_info()) out_biomehex = ts_output = "" return out_biomehex, ts_output def from_biome64(timestamp): """Convert a 64-bit decimal value to a date/time value""" ts_type, reason, _, tz_out = ts_types["biome64"] try: if len(timestamp) != 19 or not timestamp.isdigit(): in_biome64 = indiv_output = combined_output = "" else: nsdate_unpacked = int( struct.unpack("= 1e17: in_biome64 = indiv_output = combined_output = "" else: dt_obj = epochs[2001] + timedelta(seconds=float(nsdate_unpacked)) in_biome64 = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_biome64, tz_out ) except Exception: handle(sys.exc_info()) in_biome64 = indiv_output = combined_output = "" return in_biome64, indiv_output, combined_output, reason, tz_out def to_biome64(dt_obj): """Convert a date/time value to a""" ts_type, _, _, _ = ts_types["biome64"] try: nsdate_stamp = float((dt_obj - epochs[2001]).total_seconds()) out_biome64 = str(int.from_bytes(struct.pack(">d", nsdate_stamp), "big")) ts_output, _ = format_output(ts_type, out_biome64) except Exception: handle(sys.exc_info()) out_biome64 = ts_output = "" return out_biome64, ts_output def from_s32(timestamp): """ Convert an S32 timestamp to a date/time value """ ts_type, reason, _, tz_out = ts_types["s32"] try: result = 0 timestamp = str(timestamp) if len(timestamp) != 9 or not all(char in S32_CHARS for char in timestamp): in_s32 = indiv_output = combined_output = "" else: for char in timestamp: result = result * 32 + S32_CHARS.index(char) dt_obj = dt.fromtimestamp(result / 1000.0, timezone.utc) in_s32 = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_s32, tz_out) except Exception: handle(sys.exc_info()) in_s32 = indiv_output = combined_output = "" return in_s32, indiv_output, combined_output, reason, tz_out def to_s32(dt_obj): """Convert a date/time to an S32-encoded timestamp""" ts_type, _, _, _ = ts_types["s32"] try: result = "" index = 0 unix_mil = int(((dt_obj - epochs[1970]).total_seconds())) * 1000 while unix_mil: index = unix_mil % 32 unix_mil = math.floor(unix_mil / 32) result = S32_CHARS[index] + result out_s32 = result ts_output, _ = format_output(ts_type, out_s32) except Exception: handle(sys.exc_info()) out_s32 = ts_output = "" return out_s32, ts_output def from_apache(timestamp): """ Convert an Apache hex timestamp to a date/time value This value has 13 hex characters, and does not fit a byte boundary """ ts_type, reason, _, tz_out = ts_types["apache"] try: timestamp = str(timestamp) if len(timestamp) != 13 or not all(char in hexdigits for char in timestamp): in_apache = indiv_output = combined_output = "" else: dec_val = int(timestamp, 16) dt_obj = epochs[1970] + timedelta(microseconds=dec_val) in_apache = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_apache, tz_out) except Exception: handle(sys.exc_info()) in_apache = indiv_output = combined_output = "" return in_apache, indiv_output, combined_output, reason, tz_out def to_apache(dt_obj): """Convert a date/time to an Apache cookie value""" ts_type, _, _, _ = ts_types["apache"] try: apache_int = int(((dt_obj - epochs[1970]).total_seconds()) * 1000000) out_apache = f"{apache_int:x}" ts_output, _ = format_output(ts_type, out_apache) except Exception: handle(sys.exc_info()) out_apache = ts_output = "" return out_apache, ts_output def from_leb128hex(timestamp): """Convert a LEB 128 hex value to a date""" ts_type, reason, _, tz_out = ts_types["leb128hex"] try: if not len(timestamp) % 2 == 0 or not all( char in hexdigits for char in timestamp ): in_leb128_hex = indiv_output = combined_output = "" else: ts_hex_list = [(timestamp[i : i + 2]) for i in range(0, len(timestamp), 2)] unix_milli = 0 shift = 0 for hex_val in ts_hex_list: byte_val = int(hex_val, 16) unix_milli |= (byte_val & 0x7F) << shift if (byte_val & 0x80) == 0: break shift += 7 in_leb128_hex, _, _, _, _ = from_unixmilli(str(unix_milli)) indiv_output, combined_output = format_output( ts_type, in_leb128_hex, tz_out ) except Exception: handle(sys.exc_info()) in_leb128_hex = indiv_output = combined_output = "" return in_leb128_hex, indiv_output, combined_output, reason, tz_out def to_leb128hex(dt_obj): """Convert a date to a LEB128 hex value.""" ts_type, _, _, _ = ts_types["leb128hex"] try: unix_milli, _ = to_unixmilli(dt_obj) unix_milli = int(unix_milli) byte_list = [] while True: byte_val = unix_milli & 0x7F unix_milli >>= 7 if unix_milli != 0: byte_val |= 0x80 byte_list.append(byte_val) if unix_milli == 0: break out_leb128_hex = "".join([f"{byte_val:02x}" for byte_val in byte_list]) ts_output, _ = format_output(ts_type, out_leb128_hex) except Exception: handle(sys.exc_info()) out_leb128_hex = ts_output = "" return out_leb128_hex, ts_output def from_juliandec(timestamp): """Convert Julian Date decimal value to a date""" ts_type, reason, _, tz_out = ts_types["juliandec"] try: if ( "." not in timestamp or not ( (len(timestamp.split(".")[0]) == 7) and (len(timestamp.split(".")[1]) in range(0, 11)) ) or not "".join(timestamp.split(".")).isdigit() ): in_julian_dec = indiv_output = combined_output = "" else: try: timestamp = float(timestamp) except Exception: timestamp = int(timestamp) yr, mon, day, hr, mins, sec, mil = jd.to_gregorian(timestamp) dt_vals = [yr, mon, day, hr, mins, sec, mil] if any(val < 0 for val in dt_vals): in_julian_dec = indiv_output = combined_output = "" else: in_julian_dec = (dt(yr, mon, day, hr, mins, sec, mil)).strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_julian_dec, tz_out ) except Exception: handle(sys.exc_info()) in_julian_dec = indiv_output = combined_output = "" return in_julian_dec, indiv_output, combined_output, reason, tz_out def to_juliandec(dt_obj): """Convert a date to a Julian Date""" ts_type, _, _, _ = ts_types["juliandec"] try: out_julian_dec = str( jd.from_gregorian( dt_obj.year, dt_obj.month, dt_obj.day, dt_obj.hour, dt_obj.minute, dt_obj.second, ) ) ts_output, _ = format_output(ts_type, out_julian_dec) except Exception: handle(sys.exc_info()) out_julian_dec = ts_output = "" return out_julian_dec, ts_output def from_julianhex(timestamp): """Convert Julian Date hex value to a date""" ts_type, reason, _, tz_out = ts_types["julianhex"] try: if not len(timestamp) // 2 == 7 or not all( char in hexdigits for char in timestamp ): in_julian_hex = indiv_output = combined_output = "" else: julianday = int(timestamp[:6], 16) julianmil = int(timestamp[6:], 16) julianmil = julianmil / 10 ** int((len(str(julianmil)))) julian_date = int(julianday) + int(julianmil) yr, mon, day, hr, mins, sec, mil = jd.to_gregorian(julian_date) dt_vals = [yr, mon, day, hr, mins, sec, mil] if yr > 3000 or any(val < 0 for val in dt_vals): in_julian_hex = indiv_output = combined_output = "" else: dt_obj = dt(yr, mon, day, hr, mins, sec, mil) in_julian_hex = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_julian_hex, tz_out ) except Exception: handle(sys.exc_info()) in_julian_hex = indiv_output = combined_output = "" return in_julian_hex, indiv_output, combined_output, reason, tz_out def to_julianhex(dt_obj): """Convert a date to a Julian Hex Date""" ts_type, _, _, _ = ts_types["julianhex"] try: jul_dec = jd.from_gregorian( dt_obj.year, dt_obj.month, dt_obj.day, dt_obj.hour, dt_obj.minute, dt_obj.second, ) if isinstance(jul_dec, float): left_val, right_val = str(jul_dec).split(".") left_val = f"{int(left_val):06x}" right_val = f"{int(right_val):08x}" elif isinstance(jul_dec, int): left_val = f"{jul_dec:06x}" right_val = f"{0:08x}" out_julian_hex = f"{str(left_val)}{str(right_val)}" ts_output, _ = format_output(ts_type, out_julian_hex) except Exception: handle(sys.exc_info()) out_julian_hex = ts_output = "" return out_julian_hex, ts_output def from_semioctet(timestamp): """Convert from a Semi-Octet decimal value to a date""" ts_type, reason, _, tz_out = ts_types["semioctet"] try: yr = mon = day = hr = mins = sec = None if ( len(str(timestamp)) != 12 or len(str(timestamp)) != 14 and not str(timestamp).isdigit() ): in_semi_octet = indiv_output = combined_output = "" else: if len(str(timestamp)) == 12: yr, mon, day, hr, mins, sec = [ (a + b)[::-1] for a, b in zip(timestamp[::2], timestamp[1::2]) ] elif len(str(timestamp)) == 14: yr, mon, day, hr, mins, sec, _ = [ (a + b)[::-1] for a, b in zip(timestamp[::2], timestamp[1::2]) ] try: dt_obj = dt( int(yr) + 2000, int(mon), int(day), int(hr), int(mins), int(sec) ) except ValueError: in_semi_octet = indiv_output = combined_output = "" return in_semi_octet, indiv_output, combined_output, reason, tz_out in_semi_octet = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output( ts_type, in_semi_octet, tz_out ) except Exception: handle(sys.exc_info()) in_semi_octet = indiv_output = combined_output = "" return in_semi_octet, indiv_output, combined_output, reason, tz_out def to_semioctet(dt_obj): """Convert a date to a Semi-Octet decimal value""" ts_type, _, _, _ = ts_types["semioctet"] try: swap_list = [] ts_vals = [ str(f"{(dt_obj.year - 2000):02d}"), str(f"{dt_obj.month:02d}"), str(f"{dt_obj.day:02d}"), str(f"{dt_obj.hour:02d}"), str(f"{dt_obj.minute:02d}"), str(f"{dt_obj.second:02d}"), ] for each in ts_vals: swap_list.append(each[::-1]) out_semi_octet = "".join(swap_list) ts_output, _ = format_output(ts_type, out_semi_octet) except Exception: handle(sys.exc_info()) out_semi_octet = ts_output = "" return out_semi_octet, ts_output def from_ved(timestamp): """Convert from a VED urlsafe base64 encoded protobuf""" ts_type, reason, _, tz_out = ts_types["ved"] try: if not all(char in URLSAFE_CHARS for char in timestamp): in_ved = indiv_output = combined_output = "" else: decoded_ved = None if timestamp[0].isdigit() and int(timestamp[0]) in range(0, 3): timestamp = timestamp[1:] padding_check = len(timestamp) % 4 if padding_check != 0: padding_reqd = 4 - padding_check result_ved = timestamp + (padding_reqd * "=") else: result_ved = timestamp try: decoded_ved = base64.urlsafe_b64decode(result_ved) except base64.binascii.Error: in_ved = indiv_output = combined_output = "" try: buff_content, _ = blackboxprotobuf.decode_message(decoded_ved) except (DecoderException, TypeError): in_ved = indiv_output = combined_output = "" return in_ved, indiv_output, combined_output, reason, tz_out if "13" in buff_content: ved_ts = buff_content["13"]["1"]["1"] in_ved = dt.fromtimestamp(ved_ts / 1000000, timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_ved, tz_out) else: in_ved = indiv_output = combined_output = "" except Exception: handle(sys.exc_info()) in_ved = indiv_output = combined_output = "" return in_ved, indiv_output, combined_output, reason, tz_out def from_gclid(timestamp): """Convert from a gclid urlsafe base64 encoded protobuf""" ts_type, reason, _, tz_out = ts_types["gclid"] try: if not all(char in URLSAFE_CHARS for char in timestamp): in_gclid = indiv_output = combined_output = "" else: decoded_gclid = None if timestamp[0].isdigit() and int(timestamp[0]) in range(0, 3): timestamp = timestamp[1:] padding_check = len(timestamp) % 4 if padding_check != 0: padding_reqd = 4 - padding_check result_gclid = timestamp + (padding_reqd * "=") else: result_gclid = timestamp try: decoded_gclid = base64.urlsafe_b64decode(result_gclid) except base64.binascii.Error: in_gclid = indiv_output = combined_output = "" try: buff_content, _ = blackboxprotobuf.decode_message(decoded_gclid) except (DecoderException, TypeError): in_gclid = indiv_output = combined_output = "" return in_gclid, indiv_output, combined_output, reason, tz_out if ( "1" in buff_content and isinstance(buff_content["1"], int) and len(str(buff_content["1"])) == 16 ): gclid_ts = buff_content["1"] in_gclid = dt.fromtimestamp(gclid_ts / 1000000, timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_gclid, tz_out) else: in_gclid = indiv_output = combined_output = "" except Exception: handle(sys.exc_info()) in_gclid = indiv_output = combined_output = "" return in_gclid, indiv_output, combined_output, reason, tz_out def from_linkedin(timestamp): """Convert from a LinkedIn Post Activity ID""" ts_type, reason, _, tz_out = ts_types["linkedin"] try: if not str(timestamp).isdigit(): in_linkedin = indiv_output = combined_output = "" else: bin_convert = bin(int(timestamp))[2:43] li_ts = int(bin_convert, 2) / 1000 in_linkedin = dt.fromtimestamp(li_ts, timezone.utc).strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_linkedin, tz_out) except Exception: handle(sys.exc_info()) in_linkedin = indiv_output = combined_output = "" return in_linkedin, indiv_output, combined_output, reason, tz_out def to_linkedin(dt_obj): """Convert a date/time to a LinkedIn Post Activity ID""" ts_type, _, _, _ = ts_types["linkedin"] padding = "1011100101100100110110" try: unix_ts = dt_obj.timestamp() * 1000 to_bin = bin(int(unix_ts))[2:43] out_linkedin = str(int(to_bin + padding, 2)) ts_output, _ = format_output(ts_type, out_linkedin) except Exception: handle(sys.exc_info()) out_linkedin = ts_output = "" return out_linkedin, ts_output def from_ulid(timestamp): """Convert from a ULID value""" ts_type, reason, _, tz_out = ts_types["ulid"] try: if ( not all(char in BASE32_CHARS for char in timestamp) or len(str(timestamp)) != 26 ): in_ulid = indiv_output = combined_output = "" else: ulid_dt = ULID.parse(timestamp).datetime in_ulid = ulid_dt.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_ulid, tz_out) except Exception: handle(sys.exc_info()) in_ulid = indiv_output = combined_output = "" return in_ulid, indiv_output, combined_output, reason, tz_out def to_ulid(dt_obj): """Convert a date to a ULID value""" ts_type, _, _, _ = ts_types["ulid"] try: out_ulid = str(ULID.from_datetime(dt_obj)) ts_output, _ = format_output(ts_type, out_ulid) except Exception: handle(sys.exc_info()) out_ulid = ts_output = "" return out_ulid, ts_output def from_dttm(timestamp): """Convert a Microsoft DTTM timestamp to a date""" ts_type, reason, _, tz_out = ts_types["dttm"] try: if not len(timestamp) == 8 or not all(char in hexdigits for char in timestamp): in_dttm = indiv_output = combined_output = "" else: int_ts = int(timestamp, 16) binary = f"{int_ts:032b}" stamp = [ binary[:3], binary[3:12], binary[12:16], binary[16:21], binary[21:26], binary[26:32], ] for binary in stamp[:]: dec = int(binary, 2) stamp.remove(binary) stamp.append(dec) dttm_dow = stamp[0] dttm_year = stamp[1] + 1900 dttm_month = stamp[2] dttm_dom = stamp[3] dttm_hour = stamp[4] dttm_min = stamp[5] try: out_of_range = any( not low <= value < high for value, (low, high) in zip( ( dttm_dow, dttm_year, dttm_month, dttm_dom, dttm_hour, dttm_min, ), ( (0, 6), (1900, 2050), (1, 13), (0, monthrange(dttm_year, dttm_month)[1] + 1), (0, 24), (0, 60), ), ) ) if out_of_range: in_dttm = indiv_output = combined_output = "" return in_dttm, indiv_output, combined_output, reason, tz_out except (IllegalMonthError, ValueError): in_dttm = indiv_output = combined_output = "" return in_dttm, indiv_output, combined_output, reason, tz_out dt_obj = dt(dttm_year, dttm_month, dttm_dom, dttm_hour, dttm_min, 0) in_dttm = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_dttm, tz_out) except Exception: handle(sys.exc_info()) in_dttm = indiv_output = combined_output = "" return in_dttm, indiv_output, combined_output, reason, tz_out def to_dttm(dt_obj): """Convert a date to a Microsoft DTTM timestamp""" ts_type, _, _, _ = ts_types["dttm"] try: year = f"{(dt_obj.year - 1900):09b}" month = f"{dt_obj.month:04b}" day = f"{dt_obj.day:05b}" hour = f"{dt_obj.hour:05b}" minute = f"{dt_obj.minute:06b}" dow = f"{dt_obj.isoweekday():03b}" out_dttm = str( struct.pack(">I", int(dow + year + month + day + hour + minute, 2)).hex() ) ts_output, _ = format_output(ts_type, out_dttm) except Exception: handle(sys.exc_info()) out_dttm = ts_output = "" return out_dttm, ts_output def from_bcd(timestamp): """Convert a Binary Coded Decimal timestamp to a date""" ts_type, reason, _, tz_out = ts_types["bcd"] try: if len(timestamp) != 12 and not timestamp.isdigit(): in_bcd = indiv_output = combined_output = "" else: yr, mon, day, hr, mins, sec = [ timestamp[i : i + 2] for i in range(0, len(timestamp), 2) ] yr, mon, day, hr, mins, sec = ( int(yr) + 2000, int(mon), int(day), int(hr), int(mins), int(sec), ) in_bcd = dt(yr, mon, day, hr, mins, sec, tzinfo=timezone.utc).strftime( __fmt__ ) indiv_output, combined_output = format_output(ts_type, in_bcd, tz_out) except ValueError: in_bcd = indiv_output = combined_output = "" except Exception: handle(sys.exc_info()) in_bcd = indiv_output = combined_output = "" return in_bcd, indiv_output, combined_output, reason, tz_out def to_bcd(dt_obj): """Convert a date/time to a Binary Coded Decimal""" ts_type, _, _, _ = ts_types["bcd"] try: yr, mon, day, hr, mins, sec = dt_obj.strftime("%Y-%m-%d-%H-%M-%S").split("-") yr = str(int(yr) - 2000) out_bcd = f"{yr}{mon}{day}{hr}{mins}{sec}" ts_output, _ = format_output(ts_type, out_bcd) except Exception: handle(sys.exc_info()) out_bcd = ts_output = "" return out_bcd, ts_output def from_dvr(timestamp): """Convert a DVR (WFS / DHFS) file system timestamp to a date""" ts_type, reason, _, tz_out = ts_types["dvr"] try: if not len(timestamp) == 8 or not all(char in hexdigits for char in timestamp): in_dvr = indiv_output = combined_output = "" else: int_ts = int(timestamp, 16) binary = f"{int_ts:032b}" stamp = [ binary[:6], binary[6:10], binary[10:15], binary[15:20], binary[20:26], binary[26:32], ] for binary in stamp[:]: dec = int(binary, 2) stamp.remove(binary) stamp.append(dec) dvr_yr = stamp[0] + 2000 dvr_mon = stamp[1] dvr_day = stamp[2] dvr_hr = stamp[3] dvr_min = stamp[4] dvr_sec = stamp[5] try: out_of_range = any( not low <= value < high for value, (low, high) in zip( ( dvr_yr, dvr_mon, dvr_day, dvr_hr, dvr_min, dvr_sec, ), ( (2000, 3000), (1, 13), (0, monthrange(dvr_yr, dvr_mon)[1] + 1), (0, 24), (0, 60), (0, 60), ), ) ) if out_of_range: in_dvr = indiv_output = combined_output = "" return in_dvr, indiv_output, combined_output, reason, tz_out except (IllegalMonthError, ValueError): in_dvr = indiv_output = combined_output = "" return in_dvr, indiv_output, combined_output, reason, tz_out dt_obj = dt(dvr_yr, dvr_mon, dvr_day, dvr_hr, dvr_min, dvr_sec) in_dvr = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_dvr, tz_out) except Exception: handle(sys.exc_info()) in_dvr = indiv_output = combined_output = "" return in_dvr, indiv_output, combined_output, reason, tz_out def to_dvr(dt_obj): """Convert a date to a DVR (WFS / DHFS) file system timestamp""" ts_type, _, _, _ = ts_types["dvr"] try: year = f"{(dt_obj.year - 2000):06b}" month = f"{dt_obj.month:04b}" day = f"{dt_obj.day:05b}" hour = f"{dt_obj.hour:05b}" minute = f"{dt_obj.minute:06b}" sec = f"{dt_obj.second:06b}" out_dvr = str( struct.pack(">I", int(year + month + day + hour + minute + sec, 2)).hex() ) ts_output, _ = format_output(ts_type, out_dvr) except Exception: handle(sys.exc_info()) out_dvr = ts_output = "" return out_dvr, ts_output def from_logtime(timestamp): ts_type, reason, _, tz_out = ts_types["logtime"] try: if len(str(timestamp)) != 16 and not all( char in hexdigits for char in timestamp ): in_logtime = indiv_output = combined_output = "" else: vals = [int(timestamp[i:i+2], 16) for i in range(0, len(timestamp), 2)] if len(vals) < 6: in_logtime = indiv_output = combined_output = "" return in_logtime, indiv_output, combined_output, reason, tz_out dt_obj = dt(vals[5] + 1900, vals[4], vals[3], vals[2], vals[1], vals[0]) in_logtime = dt_obj.strftime(__fmt__) indiv_output, combined_output = format_output(ts_type, in_logtime, tz_out) except Exception: handle(sys.exc_info()) in_logtime = indiv_output = combined_output = "" return in_logtime, indiv_output, combined_output, reason, tz_out def to_logtime(dt_obj): ts_type, _, _, _ = ts_types["logtime"] try: vals = [dt_obj.second, dt_obj.minute, dt_obj.hour, dt_obj.day, dt_obj.month, dt_obj.year - 1900] out_logtime = ''.join(f'{i:02X}' for i in vals) + '0000' ts_output, _ = format_output(ts_type, out_logtime) except Exception: handle(sys.exc_info()) out_logtime = ts_output = "" return out_logtime, ts_output def date_range(start, end, check_date): """Check if date is in range of start and end, return True if it is""" if start <= end: return start <= check_date <= end return start <= check_date or check_date <= end def from_all(timestamps, tz_name=None): """Output all processed timestamp values and find date from provided timestamp""" this_yr = int(dt.now(timezone.utc).strftime("%Y")) full_list = {} for _, funcs in single_funcs.items(): func = funcs[0] func_name = func.__name__.replace("from_", "") (result, _, combined_output, _, tz_out) = func(timestamps) if result and combined_output: if isinstance(result, str): if tz_name is not None: new_ts, new_tz, _ = convert_timezone(tz_name, result) combined_output = combined_output.replace(result, new_ts) combined_output = combined_output.replace(tz_out, new_tz) tz_out = new_tz result = new_ts try: ts = result.split(" ")[0] result_yr = int(dt.fromisoformat(ts).strftime("%Y")) except ValueError: split_ts = result.split(" ") ts = f"{split_ts[0]} {split_ts[1]}" result_yr = int(dt.strptime(ts, __fmt__).strftime("%Y")) if result_yr not in range(this_yr - 5, this_yr + 5): combined_output = combined_output.strip(__red__).strip(__clr__) full_list[func_name] = [result, combined_output, tz_out] return full_list def to_timestamps(dt_obj, tz_name=None): """Convert provided date to all timestamps""" results = {} ts_outputs = [] if isinstance(dt_obj, str): try: dt_obj = dt.fromisoformat(dt_obj) except ValueError: dt_obj = dt.strptime(dt_obj, __fmt__) except Exception as exc: print( f"[!] Check that your input timestamp follows the format: 'YYYY-MM-DD HH:MM:SS'\n" f"[!] with '.ffffff' for milliseconds and '+/-HH:MM' for timezones\n" f"[!] or use --date-formats to pick a format and use the --date-format NAME:\n{exc}" ) sys.exit(1) if dt_obj.tzinfo is None and tz_name is None: dt_obj = dt_obj.replace(tzinfo=timezone.utc) elif tz_name is not None: tz = tzone(tz_name) dt_obj = dt_obj.replace(tzinfo=tz) for _, funcs in single_funcs.items(): func = funcs[1] if not func: continue result, ts_output = func(dt_obj) func_name = (func.__name__).replace("to_", "") if result and isinstance(result, str): results[func_name] = result ts_outputs.append(ts_output) return results, ts_outputs def gui(): """Execute the application""" try: from ctypes import windll app_id = f"digitalsleuth.time-decode.gui.v{__version__.replace('.','-')}" windll.shell32.SetCurrentProcessExplicitAppUserModelID(app_id) except ImportError: pass td_app = QApplication([__appname__, "windows:darkmode=2"]) td_app.setApplicationDisplayName(__appname__) td_app.setApplicationName(__appname__) icon = QPixmap() icon.loadFromData(base64.b64decode(TimeDecodeGui.__fingerprint__)) td_app.setWindowIcon(QIcon(icon)) td_app.setStyle("Fusion") td_form = TimeDecodeGui() td_form.show() td_app.exec() def handle(error): """Error handling output and formatting to include function causing error""" exc_type, exc_obj, _ = error error_tb = traceback.extract_stack()[:-3] + traceback.extract_tb( exc_obj.__traceback__ ) _, line_no, function_name, _ = error_tb[-1] print(f"{str(exc_type.__name__)}: {str(exc_obj)} - {function_name} line {line_no}") def formats(display="ALL"): """Displays a PrettyTable output of examples of all timestamps and their formats""" structures = {} for arg, data_list in ts_types.items(): structures[data_list[0]] = (data_list[1], data_list[2], arg) structures = sorted(structures.items(), key=lambda item: item[0].casefold()) table = PrettyTable() table.set_style(TableStyle.SINGLE_BORDER) table.align = "l" table.field_names = ["Type", "Format", "Example", "Argument"] for structure in structures: ts_type, details = structure argument = f"--{details[2]}" if display == "ALL": table.add_row([ts_type, details[0], details[1], argument]) elif details[2] == display: table.add_row([ts_type, details[0], details[1], argument]) print(table) print("* BE = Big-Endian / LE = Little-Endian") def format_output(ts_type, ts, tz=None): """Format the output of the timestamp functions""" tabs = "" if len(ts_type) < 15: tabs = "\t\t\t" elif len(ts_type) in range(15, 23): tabs = "\t\t" elif len(ts_type) in range(23, 32): tabs = "\t" if tz: indiv_output = f"{ts_type}: {ts} {tz}" combined_output = f"{__red__}{ts_type}:{tabs}{ts} {tz}{__clr__}" else: indiv_output = f"{ts_type}:{tabs}{ts}" combined_output = None return indiv_output, combined_output def tzdata_timezones(): """Get the tzdata timezones and put them in a list for the timezone drop-down""" zoneinfo_dir = os.path.join(tzdata.__path__[0], "zoneinfo") timezones = set() for root, _, files in os.walk(zoneinfo_dir): for name in files: rel_path = os.path.relpath(os.path.join(root, name), zoneinfo_dir) if rel_path.startswith(("posix", "right")): continue timezones.add(rel_path) return sorted(timezones) def common_timezone_offsets(dt_obj): """Generates a list of all tzdata timezones for conversion, sorted by UTC offset""" timezone_offsets = [("UTC - Default", "")] duplicates = [ "Factory", "Zulu", "Etc\\Zulu", "Etc\\UTC", "GMT-0", "GMT+0", "Etc\\Universal", "GMT0", "UCT", "Etc\\Greenwich", "Etc\\GMT", "Etc\\GMT+0", "Etc\\GMT-0", "Etc\\GMT0", "Etc\\UCT", "Universal", ] for tz_name in tzdata_timezones(): if tz_name in duplicates: continue try: set_timezone = tzone(tz_name) dt_val = dt_obj.astimezone(set_timezone) offset_tz = dt_val.utcoffset() if offset_tz is None: continue offset_seconds = offset_tz.total_seconds() hours, remainder = divmod(abs(offset_seconds), 3600) minutes = remainder // 60 sign = "+" if offset_seconds >= 0 else "-" int_offset = f"{sign}{int(hours):02}:{int(minutes):02}" formatted_offset = f"UTC{int_offset}" timezone_offsets.append((formatted_offset, tz_name)) except Exception: continue timezone_offsets.sort(key=lambda x: x[0]) return timezone_offsets def generate_csv(src_file, ts_choice, column_num=None, tz_name=None): """Loads a CSV file, reads a column and decodes the timestamps from the selected format""" ts_func = single_funcs[ts_choice][0] src_file = os.path.normpath(os.path.abspath(src_file)) dst_file = f"{os.path.splitext(src_file)[0]}_out.csv" status = False reason = None csv_output = [] if isinstance(column_num, str) and not column_num.isdigit(): if len(column_num) == 1: column_num = int(ascii_lowercase.index(column_num.lower())) else: return status, dst_file, reason elif isinstance(column_num, str) and column_num.isdigit(): column_num = int(column_num) if column_num > 0: column_num -= 1 elif column_num < 0: column_num = 0 elif isinstance(column_num, int): if column_num > 0: column_num -= 1 elif column_num < 0: column_num = 0 elif column_num is None: column_num = 0 try: with open(src_file, "r", newline="", encoding="utf-8") as src, open( dst_file, "w", newline="", encoding="utf-8" ) as dst: sample = src.read(2048) try: dialect = csv.Sniffer().sniff(sample) except csv.Error: dialect = csv.get_dialect("excel") try: has_header = csv.Sniffer().has_header(sample) except csv.Error: has_header = False header_check = sample.count(",") content = sample.split("\n") if header_check == 0: line_one = content[0] line_two = content[1] if len(line_one) != len(line_two): has_header = True elif len(content[0].split(",")[0]) != len(content[1].split(",")[1]): has_header = True src.seek(0) reader = csv.reader(src, dialect) columns = len(next(reader, None)) src.seek(0) if has_header: header = next(reader) if column_num > columns: reason = "The selected column number is higher than the amount of actual columns." return status, dst_file, reason for row in reader: ts = row[column_num] results = ts_func(ts) result = results[0] reason = results[3] if result == "": return status, dst_file, reason if tz_name is not None: new_result, new_tz, _ = convert_timezone(tz_name, result) if new_tz.startswith("+") or new_tz.startswith("-"): result = f"{new_result}{new_tz}" else: result = f"{new_result} {new_tz}" row.append(result) csv_output.append(row) writer = csv.writer(dst, quotechar='"', quoting=csv.QUOTE_MINIMAL) if has_header: header.append(f"{ts_choice}_ts") writer.writerow(header) for row in csv_output: writer.writerow(row) status = True except (FileNotFoundError, PermissionError): handle(sys.exc_info()) status = False return status, dst_file, reason def convert_timezone(tz_name, dt_val): """Separate function to take a string date/time and convert it to the identified time zone""" tz = tzone(tz_name) try: dt_obj = dt.fromisoformat(dt_val).replace(tzinfo=timezone.utc) except ValueError: dt_obj = dt.strptime(dt_val, __fmt__).replace(tzinfo=timezone.utc) tz_change = dt_obj.astimezone(tz) tz_offset = tz_change.strftime("%z") tz_offset = f"{tz_offset[:3]}:{tz_offset[3:]}" tz_selected = tz_change.strftime(__fmt__) if check_daylight(dt_obj, tz): tz_out = f"{tz_offset} DST" else: tz_out = tz_offset return tz_selected, tz_out, tz_change def check_daylight(dtval, tz): """Checks to see if the provided timestamp, in the provided timezone, is observing DST""" if dtval.tzinfo is None: dtval = dtval.replace(tzinfo=tz) else: dtval = dtval.astimezone(tz) return dtval.dst() != timedelta(0, 0) def list_timezones(): """Displays all available time zone conversion options in a PrettyTable""" tzs = common_timezone_offsets(dt.now(timezone.utc)) tzs = tzs[1:] tzs.sort(key=lambda x: x[1]) table = PrettyTable() table.set_style(TableStyle.SINGLE_BORDER) table.align = "l" table.field_names = ["Time Zone Name", "Current Offset"] for tz in tzs: table.add_row([tz[1], tz[0]]) print(table) print(f"* Based on the current date/time of {dt.now(timezone.utc)}") def list_date_formats(): """Displays available date/time format strings""" table = PrettyTable() table.set_style(TableStyle.SINGLE_BORDER) table.align = "l" table.field_names = ["Name", "Format"] for k, v in date_formats.items(): table.add_row([k, v.replace("%", "")]) print(table) single_funcs = { "active": [from_active, to_active], "apache": [from_apache, to_apache], "biome64": [from_biome64, to_biome64], "biomehex": [from_biomehex, to_biomehex], "bplist": [from_bplist, to_bplist], "iostime": [from_iostime, to_iostime], "mac": [from_mac, to_mac], "bcd": [from_bcd, to_bcd], "bitdate": [from_bitdate, to_bitdate], "bitdec": [from_bitdec, to_bitdec], "dhcp6": [from_dhcp6, to_dhcp6], "discord": [from_discord, to_discord], "dvr": [from_dvr, to_dvr], "exfat": [from_exfat, to_exfat], "fat": [from_fat, to_fat], "gbound": [from_gbound, to_gbound], "gmsgid": [from_gmsgid, to_gmsgid], "chrome": [from_chrome, to_chrome], "eitime": [from_eitime, to_eitime], "gclid": [from_gclid, None], "ved": [from_ved, None], "gps": [from_gps, to_gps], "gsm": [from_gsm, to_gsm], "hfsbe": [from_hfsbe, to_hfsbe], "hfsle": [from_hfsle, to_hfsle], "hfsdec": [from_hfsdec, to_hfsdec], "logtime": [from_logtime, to_logtime], "juliandec": [from_juliandec, to_juliandec], "julianhex": [from_julianhex, to_julianhex], "ksalnum": [from_ksalnum, to_ksalnum], "ksdec": [from_ksdec, to_ksdec], "leb128hex": [from_leb128hex, to_leb128hex], "linkedin": [from_linkedin, to_linkedin], "mastodon": [from_mastodon, to_mastodon], "metasploit": [from_metasploit, None], "dotnet": [from_dotnet, to_dotnet], "systemtime": [from_systemtime, to_systemtime], "dttm": [from_dttm, to_dttm], "ms1904": [from_ms1904, to_ms1904], "hotmail": [from_hotmail, to_hotmail], "msdos": [from_msdos, to_msdos], "moto": [from_moto, to_moto], "prtime": [from_prtime, to_prtime], "ns40": [from_ns40, to_ns40], "ns40le": [from_ns40le, to_ns40le], "nokia": [from_nokia, to_nokia], "nokiale": [from_nokiale, to_nokiale], "s32": [from_s32, to_s32], "semioctet": [from_semioctet, to_semioctet], "sony": [from_sony, to_sony], "symantec": [from_symantec, to_symantec], "tiktok": [from_tiktok, to_tiktok], "twitter": [from_twitter, to_twitter], "ulid": [from_ulid, to_ulid], "unixhex32be": [from_unixhex32be, to_unixhex32be], "unixhex32le": [from_unixhex32le, to_unixhex32le], "unixmilli": [from_unixmilli, to_unixmilli], "unixmillihex": [from_unixmillihex, to_unixmillihex], "unixsec": [from_unixsec, to_unixsec], "uuid": [from_uuid, to_uuid], "vm": [from_vm, to_vm], "cookie": [from_cookie, to_cookie], "filetimelohi": [from_filetimelohi, to_filetimelohi], "filetimebe": [from_filetimebe, to_filetimebe], "filetimele": [from_filetimele, to_filetimele], "olebe": [from_olebe, to_olebe], "olele": [from_olele, to_olele], "oleauto": [from_oleauto, to_oleauto], } __types__ = len(single_funcs) def main(): """Parse all passed arguments""" global __fmt__ now = dt.now(timezone.utc).strftime(__fmt__) arg_parse = argparse.ArgumentParser( description=f"Time Decoder and Converter v" f"{str(__version__)} - supporting " f"{str(__types__)} timestamps!\n\n" f"Some timestamps are only part of the entire value, and as such, full\n" f"timestamps may not be generated based on only the date/time portion.", formatter_class=argparse.RawTextHelpFormatter, usage=argparse.SUPPRESS, ) arg_parse.add_argument( "--csv", metavar="SRC_FILE TS_FORMAT ", help=( "Process a csv/txt file with timestamps and convert them to the selected timestamp\n" "Requires a timestamp format be provided without --. ie. 'unixsec' vice '--unixsec'.\n" "You can also provide a column number if your input file contains multiple columns." ), nargs="*", ) arg_parse.add_argument( "--date-format", metavar="FORMAT_NAME", help=( "Changes the output format of a date/time value.\n" "Use the NAME for the format provided.\n" "Use --date-formats to see all available options." ), type=str, default="Default", ) arg_parse.add_argument( "--date-formats", action="store_true", help="Displays available date formats for the output of a date/time value", ) arg_parse.add_argument( "--formats", metavar="ARGUMENT", help=( "Display timestamp format and example by providing an available argument (without --)." "\nIf no argument is selected, all will be displayed." ), nargs="?", const="ALL", ) arg_parse.add_argument( "--guess", metavar="TIMESTAMP", help="Guess the timestamp format and output possibilities", ) arg_parse.add_argument( "--gui", "-g", action="store_true", help="Launch the gui", ) arg_parse.add_argument( "--minimal", "-m", action="store_true", help="Output only the timestamp, not the description", ) arg_parse.add_argument( "--to", action="store_true", help="Convert a date/time to a selected timestamp format", ) arg_parse.add_argument( "--timestamp", metavar="DATE", help=( "Convert date to every timestamp\n" 'Enter date as "YYYY-MM-DD HH:MM:SS.f" in 24h fmt\n' "Without a provided DATE, it will convert the current UTC date/time\n" ), nargs="?", const=now, ) arg_parse.add_argument( "--timezones", help="Prints a list of timezones to use for conversion", action="store_true", ) arg_parse.add_argument( "--tz", metavar="TIMEZONE_NAME", help=( "Provide the name of a timezone for conversion within quotes.\n" "Use --timezones to see a list." ), type=str, default=None, ) for argument, data in ts_types.items(): arg_parse.add_argument(f"--{argument}", metavar="", help=f"{data.ts_type}") arg_parse.add_argument( "--version", "-v", action="version", version=arg_parse.description ) if len(sys.argv[1:]) == 0: arg_parse.print_help() arg_parse.exit() if len(sys.argv[1:]) > 0 and ("--timezones" in sys.argv): list_timezones() sys.exit(0) args = arg_parse.parse_args() if args.date_format in date_formats: __fmt__ = date_formats[args.date_format] else: arg_parse.error( ( f"[!] The format {args.date_format} is not one of the available options.\n" "Please use the --date-formats argument to find a valid NAME." ) ) all_args = vars(args) if args.formats: formats(args.formats) sys.exit(0) if args.date_formats: list_date_formats() sys.exit(0) if args.guess: full_list = from_all(args.guess, args.tz) if len(full_list) == 0: print("[!] No valid dates found. Check your input and try again") else: print( f"[+] Guessing timestamp format for {args.guess}\n" f"[+] Outputs which do NOT result in a date/time value are NOT displayed\r" ) if len(full_list) == 1: dt_text = "date" else: dt_text = "dates" print( f"[+] Displaying {len(full_list)} potential {dt_text}\n" f"{__red__}[+] Most likely results (+/- 5 years) are highlighted\n{__clr__}" ) for _, output in enumerate(full_list): print(f"{full_list[output][1]}") print("\r") return if args.timestamp: _, ts_outputs = to_timestamps(args.timestamp, args.tz) print(f"\n[+] Converting {args.timestamp} to {len(ts_outputs)} timestamps:\n") for ts_val in ts_outputs: print(ts_val) print("\r") return if args.gui: gui() return if args.csv: if len(args.csv) == 2: src_file = os.path.normpath(os.path.abspath(args.csv[0])) ts_type = args.csv[1] src_exists = os.path.exists(src_file) and os.path.isfile(src_file) if ts_type in single_funcs and src_exists: result, dst, reason = generate_csv(src_file, ts_type, tz_name=args.tz) dst = os.path.normpath(dst) if result: print(f"[+] CSV file was saved as {dst}.") else: print(f"[!] Unable to complete CSV export to {dst} - {reason}.") else: arg_parse.error( "[!] Provided argument is not in the list of conversion options" ) elif len(args.csv) == 3: src_file = os.path.normpath(os.path.abspath(args.csv[0])) ts_type = args.csv[1] column = args.csv[2] src_exists = os.path.exists(src_file) and os.path.isfile(src_file) if ts_type in single_funcs and src_exists: result, dst, reason = generate_csv( src_file, ts_type, column, tz_name=args.tz ) dst = os.path.normpath(dst) if result: print(f"[+] CSV file was saved as {dst}.") else: print(f"[!] Unable to complete CSV export to {dst} - {reason}.") else: arg_parse.error( "[!] Provided argument is not in the list of conversion options" ) else: arg_parse.error( ( "[!] --csv requires the file name to process " f"and the timestamp type without the '--' {args.csv}" ) ) return for arg_passed, funcs in single_funcs.items(): requested = all_args[arg_passed] if requested and not args.to: date_time, indiv_output, _, reason, _ = funcs[0](requested) if indiv_output is False: print(f"[!] {reason}") else: if args.minimal: print(date_time) else: print(indiv_output) elif requested and args.to: try: dt_obj = dt.fromisoformat(requested) except ValueError: dt_obj = dt.strptime(requested, __fmt__) except Exception: arg_parse.error( "[!] Format should be 'YYYY-MM-DD HH:MM:SS.fff' in 24h fmt." "Milliseconds (.fff) are optional.\n" "[!] Otherwise, use --date-formats to find an accepted format and use:\n" "[!] --date-format NAME where NAME is the format NAME, not the format STRING." ) return if not dt_obj.tzinfo: if not args.tz: dt_obj = dt_obj.replace(tzinfo=timezone.utc) else: tz = tzone(args.tz) dt_obj = dt_obj.replace(tzinfo=tz) out_func = funcs[1] timestamp = "" formatted_output = "" if out_func is not None: timestamp, formatted_output = out_func(dt_obj) else: arg_parse.error(f"[!] {arg_passed} does not support a 'to' conversion.") if timestamp == "": print(f"[!] Unable to convert {requested} to {arg_passed}.") else: if args.minimal: print(timestamp) else: print(formatted_output) if __name__ == "__main__": main() time_decode-10.3.1/version.txt000066400000000000000000000017171513432141600162710ustar00rootroot00000000000000# https://learn.microsoft.com/en-us/windows/win32/api/verrsrc/ns-verrsrc-vs_fixedfileinfo VSVersionInfo( ffi=FixedFileInfo( filevers=(10,3,1,0), prodvers=(10,3,1,0), mask=0x3f, flags=0x0, OS=0x40004, fileType=0x1, subtype=0x0, date=(0x01dc8b54,0x40295768) ), kids=[ StringFileInfo( [ StringTable( u'040904B0', [StringStruct(u'CompanyName', u'Digital Sleuth'), StringStruct(u'FileDescription', u'Timestamp encode/decode utility for over 60 timestamps'), StringStruct(u'FileVersion', u'10.3.1'), StringStruct(u'InternalName', u'Time Decode'), StringStruct(u'LegalCopyright', u'© 2026 Digital Sleuth'), StringStruct(u'OriginalFilename', u'Time Decode GUI v10.3.1.exe'), StringStruct(u'ProductName', u'Time Decode GUI v10.3.1'), StringStruct(u'ProductVersion', u'10.3.1')]) ]), VarFileInfo([VarStruct(u'Translation', [1033, 1200])]) ] )