Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/news.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x3rdparty/simplepie/.gitignore3
-rwxr-xr-x3rdparty/simplepie/.travis.yml8
-rwxr-xr-x3rdparty/simplepie/LICENSE.txt26
-rwxr-xr-x3rdparty/simplepie/README.markdown117
-rwxr-xr-x3rdparty/simplepie/autoloader.php86
-rwxr-xr-x3rdparty/simplepie/build/charset.php173
-rwxr-xr-x3rdparty/simplepie/build/compile.php69
-rwxr-xr-x3rdparty/simplepie/build/header.txt46
-rwxr-xr-x3rdparty/simplepie/compatibility_test/COMPATIBILITY README.txt7
-rwxr-xr-x3rdparty/simplepie/compatibility_test/sp_compatibility_test.php329
-rwxr-xr-x3rdparty/simplepie/composer.json34
-rwxr-xr-x3rdparty/simplepie/db.sql38
-rwxr-xr-x3rdparty/simplepie/demo/cli_test.php23
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/alternate_favicon.pngbin28621 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/background_blockquote.pngbin27353 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/background_menuitem.gifbin533 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/background_menuitem_off.gifbin533 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/background_menuitem_shadow.gifbin250 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/alternate.pngbin28621 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/blinklist.pngbin4377 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/blogmarks.pngbin3823 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/delicious.pngbin3739 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/digg.pngbin4004 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/magnolia.pngbin4574 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/myweb2.pngbin4010 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/newsvine.pngbin3804 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/reddit.pngbin4239 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/segnalo.pngbin4116 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/simpy.pngbin4256 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/spurl.pngbin3970 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/technorati.pngbin4087 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/favicons/wists.pngbin3974 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/feed.pngbin715 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/logo_simplepie_demo.pngbin3047 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/lucida-grande-bold.swfbin21159 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/mediaplayer.swfbin32008 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/mediaplayer_readme.htm5
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/mini_podcast.pngbin1202 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/place_audio.pngbin851 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/place_video.pngbin36713 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/sIFR-print.css35
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/sIFR-screen.css39
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/sifr-config.js40
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/sifr.js19
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/simplepie.css397
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/sleight.js31
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/source_files/place_audio_fireworksfile.pngbin39177 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/source_files/place_video_fireworksfile.pngbin115826 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/SifrStyleSheet.as71
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/_README_.txt12
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/options.as12
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/sIFR.as359
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/sifr.flabin47104 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/top_gradient.gifbin1378 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/verdana.swfbin28575 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/for_the_demo/yanone-kaffeesatz-bold.swfbin76780 -> 0 bytes
-rwxr-xr-x3rdparty/simplepie/demo/index.php269
-rwxr-xr-x3rdparty/simplepie/demo/test.php62
-rwxr-xr-x3rdparty/simplepie/idn/LICENCE502
-rwxr-xr-x3rdparty/simplepie/idn/ReadMe.txt123
-rwxr-xr-x3rdparty/simplepie/idn/idna_convert.class.php969
-rwxr-xr-x3rdparty/simplepie/idn/npdata.ser1
-rwxr-xr-x3rdparty/simplepie/library/SimplePie.php3058
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Author.php157
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Cache.php133
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Cache/Base.php114
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Cache/DB.php137
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Cache/File.php173
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Cache/Memcache.php183
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Cache/MySQL.php438
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Caption.php210
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Category.php157
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Content/Type/Sniffer.php332
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Copyright.php130
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Core.php57
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Credit.php156
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Decode/HTML/Entities.php617
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Enclosure.php1380
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Exception.php52
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/File.php292
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/HTTP/Parser.php500
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/IRI.php1238
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Item.php2964
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Locator.php372
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Misc.php2247
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Net/IPv6.php276
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Parse/Date.php983
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Parser.php407
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Rating.php129
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Registry.php225
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Restriction.php155
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Sanitize.php549
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/Source.php611
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/XML/Declaration/Parser.php362
-rwxr-xr-x3rdparty/simplepie/library/SimplePie/gzdecode.php371
-rwxr-xr-x3rdparty/simplepie/phpunit.xml.dist21
-rwxr-xr-x3rdparty/simplepie/tests/AllTests.php70
-rwxr-xr-x3rdparty/simplepie/tests/CacheTest.php103
-rwxr-xr-x3rdparty/simplepie/tests/EncodingTest.php211
-rwxr-xr-x3rdparty/simplepie/tests/HTTPParserTest.php84
-rwxr-xr-x3rdparty/simplepie/tests/IRITest.php468
-rwxr-xr-x3rdparty/simplepie/tests/ItemTest.php210
-rwxr-xr-x3rdparty/simplepie/tests/LocatorTest.php203
-rwxr-xr-x3rdparty/simplepie/tests/bootstrap.php3
-rwxr-xr-x3rdparty/simplepie/tests/data/fftests.html128
-rwxr-xr-x3rdparty/simplepie/tests/oldtests.php85
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/README1
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/1.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/10.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/11.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/12.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/13.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/14.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/15.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/16.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/17.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/18.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/19.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/2.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/3.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/4.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/5.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/6.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/7.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/8.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/9.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/base.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/1.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/10.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/11.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/12.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/13.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/14.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/15.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/16.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/17.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/18.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/19.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/2.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/20.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/21.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/22.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/23.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/3.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/4.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/5.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/6.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/7.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/8.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/9.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/1091.0.1.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/1091.0.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.0.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.1.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.2.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.3.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/579.0.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.0.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.1.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.2.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.3.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.4.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.5.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.6.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.7.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.8.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/pct_encoding_invalid_second_char.php17
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/compat_test_harness.php182
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/RFC3339/1.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/RFC3339/2.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/RFC3339/3.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/RFC3339/README1
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/four_digit_year.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/full_name_of_day.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/invalid_day.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/invalid_timezone.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/mismatch_name_of_day.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/1.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/10.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/11.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/12.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/13.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/14.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/15.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/16.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/17.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/18.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/19.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/2.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/20.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/21.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/22.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/23.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/24.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/25.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/26.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/27.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/28.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/29.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/3.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/30.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/31.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/32.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/33.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/34.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/35.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/36.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/37.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/38.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/39.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/4.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/40.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/41.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/42.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/43.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/44.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/5.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/6.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/7.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/8.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/9.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/bugs/157.0.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/SPtests/bugs/259.0.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/W3CDTF/1.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/W3CDTF/2.php16
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/date/W3CDTF/README1
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/0.3/dc/1.0/subject.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/0.3/dc/1.1/subject.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/dc/1.0/subject.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/dc/1.1/subject.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/label.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/term.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/bugs/21.0.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/atom/1.0/label.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/atom/1.0/term.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/dc/1.0/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/dc/1.1/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/atom/1.0/label.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/atom/1.0/term.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/dc/1.0/subject.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/dc/1.1/subject.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/atom/1.0/label.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/atom/1.0/term.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/dc/1.0/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/dc/1.1/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/atom/1.0/label.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/atom/1.0/term.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/dc/1.0/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/dc/1.1/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/atom/1.0/label.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/atom/1.0/term.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/dc/1.0/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/dc/1.1/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/atom/1.0/label.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/atom/1.0/term.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/category.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/dc/1.0/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/dc/1.1/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/0.3/dc/1.0/rights.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/0.3/dc/1.1/rights.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/dc/1.0/rights.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/dc/1.1/rights.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/rights.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/atom/1.0/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/dc/1.0/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/dc/1.1/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/atom/1.0/rights.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/copyright.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/dc/1.0/rights.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/dc/1.1/rights.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/atom/1.0/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/copyright.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/dc/1.0/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/dc/1.1/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/atom/1.0/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/copyright.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/dc/1.0/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/dc/1.1/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/atom/1.0/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/dc/1.0/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/dc/1.1/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/atom/1.0/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/copyright.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/dc/1.0/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/dc/1.1/rights.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/dc/1.0/description.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/dc/1.1/description.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/tagline.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/dc/1.0/description.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/dc/1.1/description.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/subtitle.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/atom/0.3/tagline.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/atom/1.0/subtitle.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/atom/0.3/tagline.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/atom/1.0/subtitle.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/dc/1.0/description.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/dc/1.1/description.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/description.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/atom/0.3/tagline.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/atom/1.0/subtitle.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/atom/0.3/tagline.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/atom/1.0/subtitle.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/atom/0.3/tagline.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/atom/1.0/subtitle.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/atom/0.3/tagline.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/atom/1.0/subtitle.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/atom/1.0/icon-default.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/atom/1.0/logo-default.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/atom/1.0/icon-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/atom/1.0/logo-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/url-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/atom/1.0/icon-default.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/atom/1.0/logo-default.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/height.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/url-default.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/atom/1.0/icon-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/atom/1.0/logo-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/height.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/url-default.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/atom/1.0/icon-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/atom/1.0/logo-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/height.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/url-default.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/atom/1.0/icon-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/atom/1.0/logo-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/url-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/atom/1.0/icon-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/atom/1.0/logo-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/height.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/url-default.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.90/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.91-netscape/link.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.91-userland/link.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.92/link.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/2.0/link.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/dc/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/dc/1.1/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/dc/1.0/title.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/dc/1.1/title.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/title.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/dc/1.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/dc/1.1/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/dc/1.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/dc/1.1/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/dc/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/dc/1.1/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/dc/1.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/dc/1.1/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/atom/1.0/icon.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/atom/1.0/logo.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/atom/1.0/icon.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/atom/1.0/logo.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/url.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/atom/1.0/icon.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/atom/1.0/logo.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/url.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/atom/1.0/icon.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/atom/1.0/logo.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/url.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/atom/1.0/icon.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/atom/1.0/logo.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/url.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/atom/1.0/icon.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/atom/1.0/logo.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/url.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/atom/1.0/icon.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/atom/1.0/logo.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/url.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/atom/1.0/icon-default.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/atom/1.0/logo-default.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/atom/1.0/icon-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/atom/1.0/logo-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/url-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/atom/1.0/icon-default.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/atom/1.0/logo-default.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/url-default.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/width.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/atom/1.0/icon-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/atom/1.0/logo-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/url-default.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/width.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/atom/1.0/icon-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/atom/1.0/logo-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/url-default.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/width.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/atom/1.0/icon-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/atom/1.0/logo-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/url-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/atom/1.0/icon-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/atom/1.0/logo-default.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/url-default.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/width.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/dc/1.0/language.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/dc/1.1/language.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/xml_lang.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/dc/1.0/language.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/dc/1.1/language.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/xml_lang.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.90/dc/1.0/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.90/dc/1.1/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/dc/1.0/language.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/dc/1.1/language.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/language.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/dc/1.0/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/dc/1.1/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/dc/1.0/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/dc/1.1/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/1.0/dc/1.0/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/1.0/dc/1.1/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/dc/1.0/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/dc/1.1/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/language.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/0.3/link.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/0.3/link_@rel_alternate.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link_@rel_absolute_iri.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link_@rel_alternate.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/atom/0.3/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/atom/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/atom/0.3/link.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/atom/1.0/link.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/link.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/atom/0.3/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/atom/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/atom/0.3/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/atom/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/atom/0.3/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/atom/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/atom/0.3/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/atom/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/dc/1.0/title.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/dc/1.1/title.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/title.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/dc/1.0/title.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/dc/1.1/title.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/title.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/16.0.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/174.0.php20
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.0.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.1.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.2.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/272.0.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/272.1.php19
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/atom/0.3/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/atom/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/dc/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/dc/1.1/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/atom/0.3/title.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/atom/1.0/title.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/dc/1.0/title.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/dc/1.1/title.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/title.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/atom/0.3/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/atom/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/dc/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/dc/1.1/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/atom/0.3/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/atom/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/dc/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/dc/1.1/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/atom/0.3/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/atom/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/dc/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/dc/1.1/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/dc/1.0/creator.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/dc/1.1/creator.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/feed.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/dc/1.0/creator.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/dc/1.1/creator.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/feed.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/source.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/atom/0.3/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/atom/1.0/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/dc/1.0/creator.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/dc/1.1/creator.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/atom/0.3/name.php26
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/atom/1.0/name.php26
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/dc/1.0/creator.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/dc/1.1/creator.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/atom/0.3/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/atom/1.0/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/dc/1.0/creator.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/dc/1.1/creator.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/atom/0.3/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/atom/1.0/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/dc/1.0/creator.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/dc/1.1/creator.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/atom/0.3/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/atom/1.0/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/dc/1.0/creator.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/dc/1.1/creator.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/atom/0.3/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/atom/1.0/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/author.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/dc/1.0/creator.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/dc/1.1/creator.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/0.3/dc/1.0/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/0.3/dc/1.1/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/dc/1.0/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/dc/1.1/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/label.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/term.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/bugs/21.0.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/atom/1.0/label.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/atom/1.0/term.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/dc/1.0/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/dc/1.1/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/atom/1.0/label.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/atom/1.0/term.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/dc/1.0/subject.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/dc/1.1/subject.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/atom/1.0/label.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/atom/1.0/term.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/dc/1.0/subject.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/dc/1.1/subject.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/atom/1.0/label.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/atom/1.0/term.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/category.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/dc/1.0/subject.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/dc/1.1/subject.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/atom/1.0/label.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/atom/1.0/term.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/dc/1.0/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/dc/1.1/subject.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/atom/1.0/label.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/atom/1.0/term.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/category.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/dc/1.0/subject.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/dc/1.1/subject.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/0.3/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/0.3/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/1.0/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/1.0/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/description.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/0.3/content.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/0.3/summary.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/1.0/content.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/1.0/summary.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/dc/1.0/description.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/dc/1.1/description.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/description.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/0.3/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/0.3/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/1.0/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/1.0/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/dc/1.0/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/dc/1.1/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/0.3/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/0.3/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/1.0/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/1.0/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/dc/1.0/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/dc/1.1/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/0.3/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/0.3/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/1.0/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/1.0/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/0.3/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/0.3/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/1.0/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/1.0/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/dc/1.0/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/dc/1.1/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/atom/0.3/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/atom/1.0/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.90/atom/0.3/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.90/atom/1.0/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-netscape/atom/0.3/name.php26
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-netscape/atom/1.0/name.php26
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-userland/atom/0.3/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-userland/atom/1.0/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.92/atom/0.3/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.92/atom/1.0/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/1.0/atom/0.3/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/1.0/atom/1.0/name.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/2.0/atom/0.3/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/2.0/atom/1.0/name.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/created.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/dc/1.0/date.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/dc/1.1/date.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/issued.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/modified.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/dc/1.0/date.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/dc/1.1/date.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/published.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/updated.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/bugs/876.0.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/created.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/issued.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/modified.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/1.0/published.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/1.0/updated.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/dc/1.0/date.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/dc/1.1/date.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/created.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/issued.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/modified.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/1.0/published.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/1.0/updated.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/dc/1.0/date.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/dc/1.1/date.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/created.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/issued.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/modified.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/1.0/published.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/1.0/updated.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/dc/1.0/date.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/dc/1.1/date.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/created.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/issued.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/modified.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/1.0/published.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/1.0/updated.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/dc/1.0/date.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/dc/1.1/date.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/created.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/issued.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/modified.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/1.0/published.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/1.0/updated.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/dc/1.0/date.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/dc/1.1/date.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/created.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/issued.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/modified.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/1.0/published.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/1.0/updated.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/dc/1.0/date.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/dc/1.1/date.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/pubdate.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/0.3/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/0.3/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/1.0/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/1.0/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/0.3/content.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/0.3/summary.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/1.0/content.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/1.0/summary.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/dc/1.0/description.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/dc/1.1/description.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/description.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/0.3/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/0.3/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/1.0/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/1.0/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/dc/1.0/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/dc/1.1/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/0.3/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/0.3/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/1.0/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/1.0/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/dc/1.0/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/dc/1.1/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/0.3/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/0.3/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/1.0/content.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/1.0/summary.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/dc/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/dc/1.1/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/description.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/0.3/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/0.3/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/1.0/content.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/1.0/summary.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/dc/1.0/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/dc/1.1/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/description.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/dc/1.0/identifier.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/dc/1.1/identifier.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/id.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/dc/1.0/identifier.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/dc/1.1/identifier.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/id.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/atom/0.3/id.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/atom/1.0/id.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/dc/1.0/identifier.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/dc/1.1/identifier.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/atom/0.3/id.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/atom/1.0/id.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/dc/1.0/identifier.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/dc/1.1/identifier.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/atom/0.3/id.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/atom/1.0/id.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/dc/1.0/identifier.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/dc/1.1/identifier.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/atom/0.3/id.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/atom/1.0/id.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/dc/1.0/identifier.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/dc/1.1/identifier.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/atom/0.3/id.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/atom/1.0/id.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/dc/1.0/identifier.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/dc/1.1/identifier.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/atom/0.3/id.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/atom/1.0/id.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/dc/1.0/identifier.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/dc/1.1/identifier.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/guid.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/0.3/geo/lat.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/0.3/georss/point.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/1.0/geo/lat.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/1.0/georss/point.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.90/geo/lat.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.90/georss/point.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-netscape/geo/lat.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-netscape/georss/point.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-userland/geo/lat.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-userland/georss/point.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.92/geo/lat.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.92/georss/point.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/1.0/geo/lat.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/1.0/georss/point.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/2.0/geo/lat.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/2.0/georss/point.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/0.3/geo/long.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/0.3/georss/point.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/1.0/geo/long.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/1.0/georss/point.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.90/geo/long.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.90/georss/point.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-netscape/geo/long.php25
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-netscape/georss/point.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-userland/geo/long.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-userland/georss/point.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.92/geo/long.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.92/georss/point.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/1.0/geo/long.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/1.0/georss/point.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/2.0/geo/long.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/2.0/georss/point.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/0.3/enclosure.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/0.3/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/1.0/enclosure.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.0.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.1.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.2.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.3.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/156.0.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.0.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.1.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.2.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/640.0.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/atom/0.3/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/atom/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/atom/0.3/link.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/atom/1.0/link.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/link.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/0.91-userland.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom0.3-enclosure.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom0.3.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom1.0-enclosure.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom1.0.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/atom/0.3/link.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/atom/1.0/link.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/link.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/atom/0.3/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/atom/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/link.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/atom/0.3/link.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/atom/1.0/link.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/enclosure.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/link.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/1.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/2.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/3.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/dc/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/dc/1.1/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/dc/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/dc/1.1/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/174.0.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.1.php30
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.2.php30
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.php30
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/270.0.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/431.0.php26
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/431.1.php26
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.0.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.1.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.2.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.3.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.0.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.1.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.2.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.3.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/564.0.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/629.0.php26
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/629.1.php26
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/666.0.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/666.1.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/828.0.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/968.0.php22
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.1.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.2.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.3.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.1.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.2.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.3.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.1.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.2.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.3.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.1.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.2.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.3.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.1.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.2.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.3.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.1.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.2.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.3.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/1.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/2.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/3.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/1.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/2.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/3.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/1.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/2.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/3.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/1.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/2.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/3.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/1.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/2.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/3.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/1.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/2.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/3.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/atom/0.3/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/atom/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/dc/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/dc/1.1/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/atom/0.3/title.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/atom/1.0/title.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/dc/1.0/title.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/dc/1.1/title.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/title.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/atom/0.3/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/atom/1.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/dc/1.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/dc/1.1/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/atom/0.3/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/atom/1.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/dc/1.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/dc/1.1/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/atom/0.3/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/atom/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/dc/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/dc/1.1/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/title.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/atom/0.3/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/atom/1.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/dc/1.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/dc/1.1/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/title.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/xmlbase/1.php21
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/functions.php369
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block_default.php23
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block_reverse.php24
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/cdata.php43
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/entity.php43
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/ncr.php43
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/cdata.php38
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/entity.php37
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/ncr.php37
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/xhtml/entity.php37
-rwxr-xr-x3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/xhtml/ncr.php37
-rw-r--r--CHANGELOG.md2
-rw-r--r--README.md4
-rw-r--r--appinfo/application.php44
-rw-r--r--appinfo/autoload.php1
-rw-r--r--articleenhancer/xpatharticleenhancer.php38
-rw-r--r--config/config.php27
-rw-r--r--controller/admincontroller.php10
-rw-r--r--fetcher/feedfetcher.php128
-rw-r--r--js/admin/Admin.js10
-rw-r--r--templates/admin.php12
-rw-r--r--tests/unit/articleenhancer/XPathArticleEnhancerTest.php189
-rw-r--r--tests/unit/config/ConfigTest.php26
-rw-r--r--tests/unit/controller/AdminControllerTest.php18
-rw-r--r--tests/unit/fetcher/FeedFetcherTest.php165
-rw-r--r--tests/unit/utility/SimplePieAPIFactoryTest.php34
-rw-r--r--utility/picofeedclientfactory.php40
-rw-r--r--utility/simplepieapifactory.php53
954 files changed, 247 insertions, 43374 deletions
diff --git a/3rdparty/simplepie/.gitignore b/3rdparty/simplepie/.gitignore
deleted file mode 100755
index 9b503e3fc..000000000
--- a/3rdparty/simplepie/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*sandbox*
-demo/cache/*
-SimplePie.compiled.php
diff --git a/3rdparty/simplepie/.travis.yml b/3rdparty/simplepie/.travis.yml
deleted file mode 100755
index 99ec9908b..000000000
--- a/3rdparty/simplepie/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: php
-php:
- - 5.2
- - 5.3
- - 5.4
-branches:
- except:
- - one-dot-two
diff --git a/3rdparty/simplepie/LICENSE.txt b/3rdparty/simplepie/LICENSE.txt
deleted file mode 100755
index a822a4bd9..000000000
--- a/3rdparty/simplepie/LICENSE.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) 2004-2007, Ryan Parman and Geoffrey Sneddon.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are
-permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of
- conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice, this list
- of conditions and the following disclaimer in the documentation and/or other materials
- provided with the distribution.
-
- * Neither the name of the SimplePie Team nor the names of its contributors may be used
- to endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
-AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file
diff --git a/3rdparty/simplepie/README.markdown b/3rdparty/simplepie/README.markdown
deleted file mode 100755
index 83fa4b2ea..000000000
--- a/3rdparty/simplepie/README.markdown
+++ /dev/null
@@ -1,117 +0,0 @@
-SimplePie
-=========
-
-SimplePie is a very fast and easy-to-use class, written in PHP, that puts the
-'simple' back into 'really simple syndication'. Flexible enough to suit
-beginners and veterans alike, SimplePie is focused on [speed, ease of use,
-compatibility and standards compliance][what_is].
-
-[what_is]: http://simplepie.org/wiki/faq/what_is_simplepie
-
-
-Requirements
-------------
-* PHP 5.2.0 or newer
-* libxml2 (certain 2.7.x releases are too buggy for words, and will crash)
-* Either the iconv or mbstring extension
-* cURL or fsockopen()
-* PCRE support
-
-If you're looking for PHP 4.x support, pull the "one-dot-two" branch, as that's
-the last version to support PHP 4.x.
-
-
-What comes in the package?
---------------------------
-1. `library/` - SimplePie classes for use with the autoloader
-2. `autoloader.php` - The SimplePie Autoloader if you want to use the separate
- file version.
-3. `README.markdown` - This document.
-4. `LICENSE.txt` - A copy of the BSD license.
-5. `compatibility_test/` - The SimplePie compatibility test that checks your
- server for required settings.
-6. `demo/` - A basic feed reader demo that shows off some of SimplePie's more
- noticeable features.
-7. `idn/` - A third-party library that SimplePie can optionally use to
- understand Internationalized Domain Names (IDNs).
-8. `build/` - Scripts related to generating pieces of SimplePie
-9. `test/` - SimplePie's unit test suite.
-
-### Where's `simplepie.inc`?
-For SimplePie 1.3, we've split the classes into separate files to make it easier
-to maintain and use.
-
-If you'd like a single monolithic file, you can run `php build/compile.php` to
-generate `SimplePie.compiled.php`, or grab a copy from
-[dev.simplepie.org][dev_compiled] (this is kept up-to-date with the latest
-code from Git).
-
-[dev_compiled]: http://dev.simplepie.org/SimplePie.compiled.php
-
-
-To start the demo
------------------
-1. Upload this package to your webserver.
-2. Make sure that the cache folder inside of the demo folder is server-writable.
-3. Navigate your browser to the demo folder.
-
-
-Need support?
--------------
-For further setup and install documentation, function references, etc., visit
-[the wiki][wiki]. If you're using the latest version off GitHub, you can also
-check out the [API documentation][].
-
-If you can't find an answer to your question in the documentation, head on over
-to one of our [support channels][]. For bug reports and feature requests, visit
-the [issue tracker][].
-
-[API documentation]: http://dev.simplepie.org/api/
-[wiki]: http://simplepie.org/wiki/
-[support channels]: http://simplepie.org/support/
-[issue tracker]: http://github.com/simplepie/simplepie/issues
-
-
-Project status
---------------
-SimplePie is currently maintained by Ryan McCue.
-
-As an open source project, SimplePie is maintained on a somewhat sporadic basis.
-This means that feature requests may not be fulfilled straight away, as time has
-to be prioritized.
-
-If you'd like to contribute to SimplePie, the best way to get started is to fork
-the project on GitHub and send pull requests for patches. When doing so, please
-be aware of our [coding standards][].
-
-[coding standards]: http://simplepie.org/wiki/misc/coding_standards
-
-
-Authors and contributors
-------------------------
-### Current
-* [Ryan McCue][] (Maintainer, support)
-
-### Alumni
-* [Ryan Parman][] (Creator, developer, evangelism, support)
-* [Geoffrey Sneddon][] (Lead developer)
-* [Michael Shipley][] (Submitter of patches, support)
-* [Steve Minutillo][] (Submitter of patches)
-
-[Ryan McCue]: http://ryanmccue.info
-[Ryan Parman]: http://ryanparman.com
-[Geoffrey Sneddon]: http://gsnedders.com
-[Michael Shipley]: http://michaelpshipley.com
-[Steve Minutillo]: http://minutillo.com/steve/
-
-
-### Contributors
-For a complete list of contributors:
-
-1. Pull down the latest SimplePie code
-2. In the `simplepie` directory, run `git shortlog -ns`
-
-
-License
--------
-[New BSD license](http://www.opensource.org/licenses/BSD-3-Clause)
diff --git a/3rdparty/simplepie/autoloader.php b/3rdparty/simplepie/autoloader.php
deleted file mode 100755
index c16a8f8b5..000000000
--- a/3rdparty/simplepie/autoloader.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2009, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-
-// autoloader
-spl_autoload_register(array(new SimplePie_Autoloader(), 'autoload'));
-
-if (!class_exists('SimplePie'))
-{
- trigger_error('Autoloader not registered properly', E_USER_ERROR);
-}
-
-/**
- * Autoloader class
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Autoloader
-{
- /**
- * Constructor
- */
- public function __construct()
- {
- $this->path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'library';
- }
-
- /**
- * Autoloader
- *
- * @param string $class The name of the class to attempt to load.
- */
- public function autoload($class)
- {
- // Only load the class if it starts with "SimplePie"
- if (strpos($class, 'SimplePie') !== 0)
- {
- return;
- }
-
- $filename = $this->path . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
- include $filename;
- }
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/build/charset.php b/3rdparty/simplepie/build/charset.php
deleted file mode 100755
index ff4588d89..000000000
--- a/3rdparty/simplepie/build/charset.php
+++ /dev/null
@@ -1,173 +0,0 @@
-<?php
-
-require_once '../autoloader.php';
-
-function normalize_character_set($charset)
-{
- return strtolower(preg_replace('/(?:[^a-zA-Z0-9]+|([^0-9])0+)/', '\1', $charset));
-}
-
-function build_character_set_list()
-{
- $file = new SimplePie_File('http://www.iana.org/assignments/character-sets');
- if (!$file->success && !($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)))
- {
- return false;
- }
- else
- {
- $data = explode("\n", $file->body);
- unset($file);
-
- foreach ($data as $line)
- {
- // New character set
- if (preg_match('/^Name:\s+(\S+)/', $line, $match))
- {
- // If we already have one, push it on to the array
- if (isset($aliases))
- {
- foreach ($aliases as &$alias)
- {
- $alias = normalize_character_set($alias);
- }
- $charsets[$preferred] = array_unique($aliases);
- natsort($charsets[$preferred]);
- }
-
- $aliases = array($match[1]);
- $preferred = $match[1];
- }
- // Another alias
- elseif (preg_match('/^Alias:\s+(\S+)(\s+\(preferred MIME name\))?\s*$/', $line, $match))
- {
- if ($match[1] !== 'None')
- {
- $aliases[] = $match[1];
- if (isset($match[2]))
- {
- $preferred = $match[1];
- }
- }
- }
- }
-
- // Compatibility replacements
- // From http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#misinterpreted-for-compatibility
- $compat = array(
- 'EUC-KR' => 'windows-949',
- 'GB2312' => 'GBK',
- 'GB_2312-80' => 'GBK',
- 'ISO-8859-1' => 'windows-1252',
- 'ISO-8859-9' => 'windows-1254',
- 'ISO-8859-11' => 'windows-874',
- 'KS_C_5601-1987' => 'windows-949',
- 'Shift_JIS' => 'Windows-31J',
- 'TIS-620' => 'windows-874',
- //'US-ASCII' => 'windows-1252',
- );
-
- foreach ($compat as $real => $replace)
- {
- if (isset($charsets[$real]) && isset($charsets[$replace]))
- {
- $charsets[$replace] = array_merge($charsets[$replace], $charsets[$real]);
- unset($charsets[$real]);
- }
- elseif (isset($charsets[$real]))
- {
- $charsets[$replace] = $charsets[$real];
- $charsets[$replace][] = normalize_character_set($replace);
- unset($charsets[$real]);
- }
- else
- {
- $charsets[$replace][] = normalize_character_set($real);
- }
- $charsets[$replace] = array_unique($charsets[$replace]);
- natsort($charsets[$replace]);
- }
-
- // Sort it
- uksort($charsets, 'strnatcasecmp');
-
- // Check that nothing matches more than one
- $all = call_user_func_array('array_merge', $charsets);
- $all_count = array_count_values($all);
- if (max($all_count) > 1)
- {
- echo "Duplicated charsets:\n";
- foreach ($all_count as $charset => $count)
- {
- if ($count > 1)
- {
- echo "$charset\n";
- }
- }
- }
-
- // And we're done!
- return $charsets;
- }
-}
-
-function charset($charset)
-{
- $normalized_charset = normalize_character_set($charset);
- if ($charsets = build_character_set_list())
- {
- foreach ($charsets as $preferred => $aliases)
- {
- if (in_array($normalized_charset, $aliases))
- {
- return $preferred;
- }
- }
- return $charset;
- }
- else
- {
- return false;
- }
-}
-
-function build_function()
-{
- if ($charsets = build_character_set_list())
- {
- $return = <<<EOF
-public static function encoding(\$charset)
-{
- // Normalization from UTS #22
- switch (strtolower(preg_replace('/(?:[^a-zA-Z0-9]+|([^0-9])0+)/', '\\1', \$charset)))
- {
-
-EOF;
- foreach ($charsets as $preferred => $aliases)
- {
- foreach ($aliases as $alias)
- {
- $return .= "\t\tcase " . var_export($alias, true) . ":\n";
- }
- $return .= "\t\t\treturn " . var_export($preferred, true) . ";\n\n";
- }
- $return .= <<<EOF
- default:
- return \$charset;
- }
-}
-EOF;
- return $return;
- }
- else
- {
- return false;
- }
-}
-
-if (php_sapi_name() === 'cli' && realpath($_SERVER['argv'][0]) === __FILE__)
-{
- echo build_function();
-}
-
-?>
diff --git a/3rdparty/simplepie/build/compile.php b/3rdparty/simplepie/build/compile.php
deleted file mode 100755
index 34a29d4c7..000000000
--- a/3rdparty/simplepie/build/compile.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-// Set up our constants
-define('SP_PATH', dirname(dirname(__FILE__)));
-define('COMPILED', SP_PATH . DIRECTORY_SEPARATOR . 'SimplePie.compiled.php');
-
-function remove_header($contents)
-{
- $tokens = token_get_all($contents);
- $stripped_source = '';
- $stripped_doc = false;
- $stripped_open = false;
- foreach ($tokens as $value)
- {
- if (is_string($value))
- {
- $stripped_source .= "{$value}";
- continue;
- }
- switch ($value[0])
- {
- case T_DOC_COMMENT:
- if (!$stripped_doc)
- {
- $stripped_doc = true;
- continue 2;
- }
- break;
- case T_OPEN_TAG:
- if (!$stripped_open)
- {
- $stripped_open = true;
- continue 2;
- }
- break;
- }
- $stripped_source .= "{$value[1]}";
- }
-
- return $stripped_source;
-}
-
-// Start with the header
-$compiled = file_get_contents(SP_PATH . '/build/header.txt');
-$compiled .= "\n";
-
-// Add the base class
-$contents = file_get_contents(SP_PATH . '/library/SimplePie.php');
-$compiled .= remove_header($contents) . "\n";
-
-// Add all the files in the SimplePie directory
-$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(SP_PATH . '/library/SimplePie'));
-foreach($files as $file_path => $info)
-{
- $contents = file_get_contents($file_path);
- $compiled .= remove_header($contents) . "\n";
-}
-
-// Strip excess whitespace
-$compiled = preg_replace("#\n\n\n+#", "\n\n", $compiled);
-
-// Hardcode the build
-$compiled = str_replace(
- "define('SIMPLEPIE_BUILD', gmdate('YmdHis', SimplePie_Misc::get_build()))",
- "define('SIMPLEPIE_BUILD', '" . gmdate('YmdHis', time()) . "')",
- $compiled
-);
-
-// Finally, save
-file_put_contents(COMPILED, $compiled); \ No newline at end of file
diff --git a/3rdparty/simplepie/build/header.txt b/3rdparty/simplepie/build/header.txt
deleted file mode 100755
index 9446b5ce5..000000000
--- a/3rdparty/simplepie/build/header.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Please note: This file is automatically generated by a build script. The
- * full original source is always available from http://simplepie.org/
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
diff --git a/3rdparty/simplepie/compatibility_test/COMPATIBILITY README.txt b/3rdparty/simplepie/compatibility_test/COMPATIBILITY README.txt
deleted file mode 100755
index 5b2498992..000000000
--- a/3rdparty/simplepie/compatibility_test/COMPATIBILITY README.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-SIMPLEPIE COMPATIBILITY TEST
-
-1) Upload sp_compatibility_test.php to the web-accessible root of your website.
-For example, if your website is www.example.com, upload it so that you can get
-to it at www.example.com/sp_compatibility_test.php
-
-2) Open your web browser and go to the page you just uploaded. \ No newline at end of file
diff --git a/3rdparty/simplepie/compatibility_test/sp_compatibility_test.php b/3rdparty/simplepie/compatibility_test/sp_compatibility_test.php
deleted file mode 100755
index 10ad60bb5..000000000
--- a/3rdparty/simplepie/compatibility_test/sp_compatibility_test.php
+++ /dev/null
@@ -1,329 +0,0 @@
-<?php
-if (isset($_GET['logopng']))
-{
- $data='iVBORw0KGgoAAAANSUhEUgAAAZAAAAAtCAYAAACAnD3TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8wMy8wNnKU/JIAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAR6ElEQVR4nO1dzYrrSJb+TtP79Buk5gnSRbvp1ZC6q4GB4bqWvbq+m1kMDDdr0dCLGcoJDTXUpnxp6Fle52pWQ/syMNAwUEoaLhTtppxPUPITtL0vV8wiTthy6IQUkkOynKkPhDOl+DmKv3Pi/IRIKYUePXr06NGjKn5+bgK6DiKKAEwAbAAslFLpGcm5KBBRDCAGkEK33eac9PQIAyKaAIgArJRSi0BlRqg4z4howHkGnGcVgpYeFaCUepEX9KCL+Ro60gyhB7TiKz033SXvNIZerFXmis9Ey8SiY37mtolMf5+7ny75AjC3+nXC9wcAEuvZ1LNM5zwDMLWeqUx9K6u+6Nzt89KuF7UDIaIhgDvohfbKegYAa+hJMFVaArqz0l0T0VB1V9K5A3AdqjCW8O4cjzfQE3il5J3F1Pp/HIouX2TonyDTLtzXjwDuOtyXnQPvEt5Yt8fQTGUC4LZm0UXz7EtHnjGAG+HerCYNwVAyb3yQKqXmgchpFEcMhP46+hbAR/WLZdBOoL+OIhwkwCG09HDDvwYrAFv+TQAk6hfLYCoP3nZ/KEl2DT1B3hDRZ0yzjYFw77liAvcE3oOIHnBgugY2I7tCi2BhYSHQYXALzeRaZ2xdREaFtIdSamoli4SsA+u3DorKrZ0no0I1aGthHsJj3hTgEZopN4oQ7XO8A/lJb/HpL6Mb9cvl29qE/WWUVQ+9htzZNob8ewvgHZeTAHgAsFC/rM9MiGiMcuZh4yUxChd82+ANgDERxV2Q6FkCLGIeBn0fH5Ag317T9skIA2aI31q3W1mYLwGh2sdmIAYT+m40BPC5+tUy9Sbqu9EEWqJ7XYWIAsR8fUPfjd4DmKlf1WIkVXdUZieUq0spldSo/yXgCsCCVQ8b6DbM7joeW6RlhoCqvBcCn/aS5l4SoO4686yMlqg+OS8CUYhCfnb03+7oGmKHH+jTaE6fRs7K6NNoSJ9GM/o0+ht2+IAdXlvlhLgG2OFLpqeSbpG3adLk2AJ4D+AVX5/z/2tog+8GWorN4n2Vup8xnhz3r3FQg9ht14pu2qGnN9hCMzJDf9I8Rc8HvLtcZ25tEUairzPP7DxPz0i4S89NgC+OdyA7MY22Cfx5lOJgZB5Aq5xsO0bTGAD4hv48eg3grfp7r91R7LovqFsWAO5YBQKl1JwNrmMAiVLq7Aa6DuBeKTXlNkqRt21MoJnFHfQuLoZmyEHcPT0wddx/gDaab4A9o+lRHTF03w4AzFQAt/Y680wplRLRKxxcf6en0hEQK2ih1IatMoKU7pIYoQ8DMYj4qutpERIxgO8pGb1V8bLOwvRYpKvPehWxUWleo45nDaXUhojmYHtVBjfmOTQjaZvpSkbxR6XUJHsjxML3EpHxTgxd7hwV5xkvtEloWk4Fj/3Evs9M0k6bS3dJOFZh/XhR1wA/4o/0f6NJjfcelifp4YFUuskeUK2D1ZWSt9e0XUp69HgZsHcgK1ze4vqB/jSC+ofl3PFcMrZdscdQEpIQVotEADauHQ4vcoA7fkLKY1yfK+XzLDtGAb0lcOWppdY8kRZAVleu6/QzEUVVdyms1hsCbsky05epb/mZcYUq+WyaiuhqGuYdLl3ibhuZvq8073kuBV0rJNgMpNHKGsQH+t9Rqv5xmQjPpHuAlkrjsoLZBTjLVOdmAnNsSczXtZUP0Hr3KbRaZQIr8ImItmC7S7ajedCM+cqpDInoCVr/PC+jX8hbFFwnxXPUAtczRsbbw44raIAWSfhJfDMT0TRLC9Nh+ihHC0/SMXT/230LcLAi05XzTuQ0H7nsVea+aTtTth30uoZW98yscRMz/REcquZM2xo7xkRKx2mnmX9TtlVETNcge99RxIDLuDPvkHnniUW7c54V0Gfa1SDh3xiyl1Fkv5OQLrGZnEBbo/Ek3I93yI+XNfRYydVNRGYeSeNwC902c2iBOoZf++TaIlevUofDFOl/Rt/CY1HtKDYAPlP/lDesE1EK2RPriyKDHRHNkNfxv1JKJUS0QbjguEelVMx1TuEfhPSQ1e0TUYL8wvHKDAJemBLkI3iz2EIf7ZI6aLk3jIAHusswOLPrUUrtlcBVaSlIswcRrYTyCvu4Ii17xwsiWiCcu/oWWjrf8GI1h9/YemKaNryw/1Chzkfod/Yda4/QC9TKou1RKRVXHLeA9poaAqXzLHfaq1KKuJ3+aD26h16/TrHTvldK7W08jgDko3nnC9e7WGmk+pw0eo7dLGz3+iLs57oLthvvqgEX3LauAXbOhnc1wrTEG6dInRcysvo2YzeIK+R7Y0kMZZijfKBdwd+YWdQ+ZfWEpsVVp486bOFJS9ZhI6T34RUOO4Eh/MfWTYamqGKdtzXyRAg37m94sQTqqc1DqNold3S73EhIU1fFWgheA3wCnt9lVOE5Qa0EQU+EsBnIpgOM4JQrpv8e5bxweMsnBbLZi8I5IXkP+WDvdlwEHnC+EvOtp5urq97CCdYQLS4UqmV5EfOVWK8zi15o1O3/28xiUhVV8iU16yhC3XcOhalwz2YgEqNqhIGgmsfihH+bbMOkLIHNQJIOMIFTL3srbDCB3r7ZuOEtdAh8Aa2+eRCebTPPJcmniAk8cL574dkV/AaR5HppypXo8SkzFu6tPQx3wWlxeX55GORD0mLyfeF4bgJXpfFR1P9POAS7SpgIumoTNGkuF4qeZ/PXWTSfAPwdgM8gz724RpllWOE4WDQLu01WOA6MBLSDTZT5P9cvTTgC8Pi1BZktdJ9L42nMeVw7irc4BEm/hR5zJnjat33SMrptI3pphgtATP81GqpfL48GPOv07yBvEd8R0eLUgWF07Wy4sqOhV5nnM4GOoi353Pi8E5GkZ/bZztsS/xZsvGc1mK1PLtzVOAY84CepBqWlQpoj8EIhbf+nPF6kfooLisz20zf2w4zeOkV+fBSpIfZjk4gekW930/9voXdcic3EOWbHrnOesWdJ+vnYKiO205Rg/10PthnZ9V/57J6rINPGMfL2uZXwTolAV4TD4mm3dVNH8kiCycwE4PLONztGruAe84+Cof3of9/2KcPRDkT9erl+BmosYCerR7hRPzraYhF6MBcgPSGvNIALGYhj4mdd/KQdg5QH0CqzBMD3jufzFmk5FVK524zRPhWe2xJqZZzo5ZYI90zw5lwp5fpw1yl1hoCr/hC2jFMg7axiYG+g9kkfArFwL8n8Xbarz2LY1lr2s9ydH5F0IEjw1CsueOcJ8ttWoFv2kNAIqce9gttm8Oixi2tTp1yGSLi3cvxdlq/HZULq44h/2xyrdeuSBOLW1rI8A3kedpDY9cIsnU0cj29ZzXVpKDMCS9JIFYnGB0/ws5u0QYsv4qKHTQdhhcQJhvS2kJybAAkOgccs5pHwrCkGkrNleI4/l/32ltWWjUJiIIsOMIDTrwLwoJEM0kC5a+8loo6aoMri+REcj9ABWtrAudUuThDRgIjmRJQSkeIrweXGd7UBWy1sbA2RdX/bxPduXA4gHtjwWiY5ZQDazb9RgTj3SVv1z8s1/edohQ5PkhDgE2XHyBsvr6A9cy5xJ+KCJPUP2WA9RLXt8xoHfXYCbSitMqlC0tIEUo80bdnKKqEgqKwLB6B2GStYbcRCpD0WmxqH0nja8pwYMB25PszMuzscTke38Q0RbZqKnJe/ib7DDJd9Aq1vR08gG4MnuCwGUscz5DXqRVLvPXcCoi4tTSA9NwF1wFHbU1QLKuuhkSAfCR8hv7AnLdBicAXPyH72Xowhf14BAD4Q0aqJ3VNehQUYNdYle2N5NRQ3qLT9O9nT5hngXIZtCbVpeWH9OBHuGd9+KQ6jTcRnrr8I0vgaIq/C6tKcOIrjYPVxDHc/J014ZokMRL1bbrHDrAOMoO5VxQPBlTaqUMZzwxrdmSxetBR4f0UV64s90qQVy2wczCil897G7NvvMraeFV04nZfdqm3PzAHy7dmVOQEI6xYLxBNH+is0MAZkFRZg1Fh36Ki+twCp+s3SFeshoUuDoi7SGnnMYXorHIzUR0eFk/ABnIZQSssJiAKUYSNtoMxTsIbjPbuwQF8IVjhmGJH1fH2Gj5DdQ8+H/RpV1p9KqQURfQEgF8gKPjsv5Hs4GYj6zXJL/zGaoqOSSwGmFdN3zcOnDJJBNK1RTtKALaMuQtGyRl5qjFHTnneCd0yTiIV7acs01IHUlk1FdddBgmM7nO2S3rqgWXdOKKVm7CAkrRVDBBwvsg3EEPLb5Xv8hBV+Ai7kStRvly6XNhfiiunPhgIdZlqSNQlLyUlIGiw7Fe6NC9qtbFGom69JSDSljrRdWqAj4V6Xdv82LbYxujFaG9olugT/oEJRIQMBAOwwuRCD+gY7OZCNiGbSKaq8sEwdb96lwW0QO+6X0SrtspxBfw0HpTVJSyLcu4I2IEaZMo3bsERL5PjbwOewyEbA47XKkfWdcN8tOHMsaZWQAngs4mXPT0XO+M27iBw41qeMEbQyRt02EIb69+UTfTmaoNvHfGwAxOp+6fJAeAfsP9aUQEtsA+iFSzI8rtk1LjihNWGkTmlArT3c86TnN5n2APRiOeQ6ronos+pkeqEWLZ4uiK40NwB+EPpTCia9Jtp/zjYWnifCvaZR1P+AnptR6Eoz7XAqJJf4rTkosEVEJc+lgyoNmhYoc7Eo0EHNwIEZxNDz4jV08O6YAwU30GrgNJN3UlCPC1EVggEPBgIA6n75kf5tNEE3Y0M08/jdUjqe2JZgr5E/eVPC/HSygmLOJ7jWkuI4RkD6EtmXcPuaN+I80SQtbECs8sU1V7lzxymtwHkEqXcFpx+v+eRgUeLkU3CLvHP25SAvTM34K48x9DhL/EkGoA/ejCHT3bRtNRXuXfMJyxvo9rCPwZcWcUB/PbFpiX4h1H2D/MnUBmbs3uHwCeYt9DsM4Z4DCf+mwrOy9smhXIXFUL9bPmCHYcfUWQvsELmYByP2fUfGFt1zHLiCO0DMl9Z5GFKCYN5g2VX6bgM5DugWMjN7OoPUbOCSjGfAPg5AOiT0NfS7SDvtJPN3WpC3ztcLAffBm2s0PMcKdk7vcGiPyHqWOPK0oc5eoF6sTrZfTXu7mMeDYYQ12ycHbwYCAOqr5RN2iHD+Axc32GGivlp+rr5yqq0MqkgOW2i/+UvxzHqoEF06RbUB2qQH0hTN0TKD/LEcCWlFWiYV6GgDa+t779MTyipjjNEJZWfR5hwrc+ePrP9dc6lxBsILehWmOqzoJfiEvCqxavvkUImBAID6erlVXy9fsXE9PQPjmGKHSH3t523FE+y9R9JH6AMBk4I0W7gZUtmilZ74XKpP0i1nsT+3KhOpKkmpNh7h3iWkPsQ5aEFgWnLIlF3WH/f8/YwUuh2LmMgWwOclzHqL4rYpe1eftrDrO7KJ8HlHvl6IDzheGOcobjPXu6f8m6CcET9Bz7GyBblonhV5lqXW/9MSmo7o4LEgpW+KgRz1Obvt+qxV5gNsK/j193vIh51OUaF9JJBSuQ+RVQLdjd4wIdFJBRVjBc2dF2pWuuMQwZ4gMQ4G2gH0gEtR/UDAxsC6d3vb/xbHBw0uoM+kqiXFsXeHKS/bDivojzuldcrtGi0soY1xOJDOlLuwy+XxMUbeUH1SW1cFOxPY6rP30LQb2lbQX6tLHWWY945wmJeJ+XUJSezlNYGeJ0bHnnKeuSf9pj+zbW7KEOttEtyvExyrss0YyNEjzT+lVKveNJmxGOEw5xNwUKFNtzDON9DvmEK/p3PsVm2fXP5TGci+oH8d3WYIiQIUmUBP3oX6/bKqdHaxcDCQV31E8cuAg4Hcdyjo81lDmH+PVT/z+pLg5YXlA/X7pfkQO+hfRjc4SJWGg8ZCthTHW2DNYf+w7FIAVI8ePV4ObLtCJzQTXUUwBpKF+sPyCVrfWTUqvEePHj1agR3nwsHGtgdT0iJJF4dGGEiPHj16dBlsN/ieiMxBngPkvwlyjmDHi0LPQHr06PESEfPvLdwxNj3zKEFlN94ePXr0eAYoO91gi9Pial4EegbSo0ePl4g53DEQJtgxbY2aC0Wvwuoe7DNxHnEZ33voEQYJdGCjMeY+ofcECg4+P8zETwyhQw9M/MS8Zx5+CBYH0qNHjx49Xhb+H6JWCt7+7okIAAAAAElFTkSuQmCC';
- header('Content-type: image/png');
- echo base64_decode($data);
- exit;
-}
-else if (isset($_GET['background']))
-{
- $data='R0lGODlhMAEeAeYAAP///8ni6cTf5+72+PD3+c3k6+nz9ufy9ev099Pn7bnZ48bg6LfY4uHv8/r8/f3+/v7//7bX4cjh6fj7/Mvj6vz9/rva4+z19/X6+/f7/Pn8/fb6+7jZ4vv9/bra473b5Lzb5LXX4b7c5b/c5e31+NTo7tvs8dfq7/H3+bjY4tnq79Hm7c/l69nr8PL4+t7t8sDd5cLe5uPw9Nvr8Mri6fP4+tLn7er099Hm7O/2+dDm7OTw9OXx9Nbp7tbp7+Lv8+Du8szj6sXg57bY4d3s8djq7+jz9tzs8cPe58fh6M7k68Pf5+by9fz+/sDd5vT5+vT5+97t8bbY4trr8P7+/v7+/+Pw8+Xx9dXo7sHe5vH4+fP5+sHd5t/u8s/l7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAwAR4BAAf/gCGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKNEaWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExbBDyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7KUuHi4+Tl5ufo6err7O3u7/Dx8vP09fb34wz6+/z9/v8AAwocSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2osmKKjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qc+ZGDzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1aAKsmrdyrWr169gw4odS7as2bNo06pdy7at27dw/+PKnUu3rt27ePOS9cC3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sz5sIXPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fqkEIH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOLb/6hvPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFgifCAgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okoTjjCiiy26OKLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap5P+SNsLg5JNQRinllFRWaeWVWGap5ZZcdunll2CGKeaYZELpxJlopqnmmmy26eabcMYp55x01mnnnXjmqeeefPaZJheABirooIQWauihiCaq6KKMNuroo5BGKumklFZqqaBZZKrpppx26umnoIYq6qiklmrqqaimquqqrLbq6qubxiDrrLTWauutuOaq66689urrr8AGK+ywxBZr7LHI0orEssw26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghtvsEuSWa+656Kar7rrstuvuu/DGK++89NZr77345quvuQL06++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPH/xRhnrPHGHHeMsBAghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNdss8gL5Kzzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGdNdBJcd+3112CHLfbYZJdt9tlop6322my37fbbcMctt9cS1G333XjnrffefPft99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFcOeACYZ6755px37vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuI9Ow+689+7778AHL/zwxBdv/PHIJ6/88sw37/zz0EffOwXUV2/99dhnr/323Hfv/ffghy/+//jkl2/++einr/767Lfv/vvwxy///PR/H8T9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAbmrwAQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTDcoBJmSMMa2vCGOMyhDnfIwx768IdADKIQh0jEIhrxiEhMYg1ZwMQmOvGJUIyiFKdIxSpa8YpYzKIWt8jFLnrxi2AMoxid6IUymvGMaEyjGtfIxja68Y1wjKMc50jHOtrxjnjMox73eEYd+PGPgAykIAdJyEIa8pCITKQiF8nIRjrykZCMpCQnSUlA4uCSmMykJjfJyU568v+ToAylKEdJylKa8pSoTKUqV8nKVmZyBbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhpTljZIpjKXycxmOvOZ0IymNKdJzWpa85rYzKY2t8nNbnrzm8tMgDjHSc5ymvOc6EynOtfJzna6853wjKc850nPetrznvjMpz73yc9++vOfAA2oQNtZgoIa9KAITahCF8rQhjr0oRCNqEQnStGKWvSiGM2oRjd6UCx49KMgDalIR0rSkpr0pChNqUpXytKWuvSlMI2pTGdKU5D24KY4zalOd8rTnvr0p0ANqlCHStSiGvWoSE2qUpfK1Kbm1AdQjapUp0rVqlr1qlj/zapWt8rVrnr1q2ANq1jHStaymlWqJ0irWtfK1ra69a1wjatc50rXutr1rnjNq173yte++vWvay2CYAdL2MIa9rCITaxiF8vYxjr2sZCNrGQnS9nKWvaymCWsCjbL2c569rOgDa1oR0va0pr2tKhNrWpXy9rWuva1sI1tZ1tA29ra9ra4za1ud8vb3vr2t8ANrnCHS9ziGve4yE2ucm07heY697nQja50p0vd6lr3utjNrna3y93ueve74A2veMf73BmY97zoTa9618ve9rr3vfCNr3znS9/62ve++M2vfvfLX/Sa4L8ADrCAB0zgAhv4wAhOsIIXzOAGO/jBEI6w/4QnTOEKB/gIGM6whjfM4Q57+MMgDrGIR0ziEpv4xChOsYpXzOIWu1jDRIixjGdM4xrb+MY4zrGOd8zjHvv4x0AOspCHTOQiG/nIM46CkpfM5CY7+clQjrKUp0zlKlv5yljOspa3zOUue/nLYGbyC8ZM5jKb+cxoTrOa18zmNrv5zXCOs5znTOc62/nOeM5zmbvA5z77+c+ADrSgB03oQhv60IhOtKIXzehGO/rRkI60pP0MhEpb+tKYzrSmN83pTnv606AOtahHTepSm/rUqE61qld96Qa4+tWwjrWsZ03rWtv61rjOta53zete+/rXwA62sIdN7GIb+9jITrayl//N7GY7O9c/iLa0p03talv72tjOtra3ze1ue/vb4A63uMdN7nKb+9zTtoK6183udrv73fCOt7znTe962/ve+M63vvfN7377+98AZ7cMBk7wghv84AhPuMIXzvCGO/zhEI+4xCdO8Ypb/OIYz3jBd8Dxjnv84yAPuchHTvKSm/zkKE+5ylfO8pa7/OUwj7nMPc6Dmtv85jjPuc53zvOe+/znQA+60IdO9KIb/ehIT7rSl37zKzj96VCPutSnTvWqW/3qWM+61rfO9a57/etgD7vYx052qDPh7GhPu9rXzva2u/3tcI+73OdO97rb/e54z7ve9873vqf9AIAPvOAHT/j/whv+8IhPvOIXz/jGO/7xkI+85CdP+cpb/vKYz7zmN8/5znv+86BfvBFGT/rSm/70qE+96lfP+ta7/vWwj73sZ0/72tv+9rjPfekNwPve+/73wA++8IdP/OIb//jIT77yl8/85jv/+dCPvvSnT/3qW//62M++9rfP/ePf4PvgD7/4x0/+8pv//OhPv/rXz/72u//98I+//OdP//qHHwH4z7/+98///vv//wAYgAI4gARYgAZ4gAiYgAq4gAzYgA74gBAYgRI4gRRYgRZ4gRg4gBewgRzYgR74gSAYgiI4giRYgiZ4giiYgiq4gizYgi74gjAYgzI4gzRYgzZ4gziY/4M6uIMmSAI++INAGIRCOIREWIRGeIRImIRKuIRM2IRO+IRQGIVSOIVUCIQDcIVYmIVauIVc2IVe+IVgGIZiOIZkWIZmeIZomIZquIZs2IZu+IZwGIdyOId0WId2eIdimAN6uId82Id++IeAGIiCOIiEWIiGeIiImIiKuIiM2IiO+IiQyIcEMImUWImWeImYmImauImc2Ime+ImgGIqiOIqkWIqmeIqomIqquIqs2Iqu+IqwGIuyOIueiAK2eIu4mIu6uIu82Iu++IvAGIzCOIzEWIzGeIzImIzKuIzMiIta8IzQGI3SOI3UWI3WeI3YmI3auI3c2I3e+I3gGI7iOP+O5FiO0egC6JiO6riO7NiO7viO8BiP8jiP9FiP9niP+JiP+riP/NiP/qiONRCQAjmQBFmQBnmQCJmQCrmQDNmQDvmQEBmREjmRFFmRFnmRA7kFGrmRHNmRHvmRIBmSIjmSJFmSJnmSKJmSKrmSLNmSLvmSMMmRTzCTNFmTNnmTOJmTOrmTPNmTPvmTQBmUQjmURFmURnmUSJmUNQkFTNmUTvmUUBmVUjmVVFmVVnmVWJmVWrmVXNmVXvmVYBmWYumUGFCWZnmWaJmWarmWbNmWbvmWcBmXcjmXdFmXdnmXeJmXermXfNmXfvmXgBmYgjmYhFmYcLkBiJmYirmYjNn/mI75mJAZmZI5mZRZmZZ5mZiZmZq5mZzZmZ75maAZmqI5mqRZmqZ5mqg5mRmwmqzZmq75mrAZm7I5m7RZm7Z5m7iZm7q5m7zZm775m8AZnMI5nMRZnMZ5nMiZnMq5nLY5Ac75nNAZndI5ndRZndZ5ndiZndq5ndzZnd75neAZnuI5nuRZnuZ5nuiZnuq5nuzZnu6ZnRoQn/I5n/RZn/Z5n/iZn/q5n/zZn/75nwAaoAI6oARaoAZ6oAiaoAq6oAzaoA76oBAaofzpABRaoRZ6oRiaoRq6oRzaoR76oSAaoiI6oiRaoiZ6oiiaoiq6oizaoi76ojAaozI6ozT6oR1w/6M4mqM6uqM82qM++qNAGqRCOqREWqRGeqRImqRKuqRM2qRO+qRQGqVSOqVUWqVWeqVCWgFauqVc2qVe+qVgGqZiOqZkWqZmeqZomqZquqZs2qZu+qZwGqdyOqd0Wqd2eqd4mqd6WqZN0Kd++qeAGqiCOqiEWqiGeqiImqiKuqiM2qiO+qiQGqmSOql/+gCWeqmYmqmauqmc2qme+qmgGqqiOqqkWqqmeqqomqqquqqs2qqu+qqwGquyOqu0Wqu2GqpUkKu6uqu82qu++qvAGqzCOqzEWqzGeqzImqzKuqzM2qzO+qy7WgXSOq3UWq3Weq3Ymq3auq3c2q3e+q3gGv+u4jqu5Fqu5nqu6EqtELCu7Nqu7vqu8Bqv8jqv9Fqv9nqv+Jqv+rqv/Nqv/vqvABuwAjuwBFuwBnuwCJuwCruw9goADvuwEBuxEjuxFFuxFnuxGJuxGruxHNuxHvuxIBuyIjuyJFuyJnuyKJuyKruyLNuyLvuyMBuzMjuzNFuzNnuzOJuzOruzPNuzPvuzQBu0Qju0RFu0Rnu0SJu0Sru0TNu0Tvu0UBu1Uju1VFu1Vnu1WJu1Wru1XNu1Xvu1YBu2Yju2ZFu2Znu2aJu2aru2bNu2bvu2cBu3cju3dFu3dnu3eJu3eru3fNu3fvu3gBu4gju4hFu4hnu4iJu4irv/uIzbuI77uJAbuZI7uZRbuZZ7uZibuZq7uZzbuZ77uaAbuqI7uqRbuqZ7uqibuqq7uqzbuq77urAbu7I7u7Rbu7Z7u7ibu7q7u7zbu777u8AbvMI7vMRbvMZ7vMibvMq7vMzbvM77vNAbvdI7vdRbvdZ7vdibvdq7vdzbvd77veAbvuI7vuRbvuZ7vuibvuq7vuzbvu77vvAbv/I7v/Rbv/Z7v/ibv/q7v/zbv/77vwAcwAI8wARcwAZ8wAicwAq8wAzcwA78wBAcwRI8wRRcwRZ8wRicwRq8wRzcwR78wSAcwiI8wiRcwiZ8wiicwiq8wizcwi78wjAcwzI8wzRcFcM2fMM4nMM6vMM83MM+/MNArLmBAAA7';
- header('Content-type: image/gif');
- echo base64_decode($data);
- exit;
-}
-
-$php_ok = (function_exists('version_compare') && version_compare(phpversion(), '5.2.0', '>='));
-$pcre_ok = extension_loaded('pcre');
-$curl_ok = function_exists('curl_exec');
-$zlib_ok = extension_loaded('zlib');
-$mbstring_ok = extension_loaded('mbstring');
-$iconv_ok = extension_loaded('iconv');
-if (extension_loaded('xmlreader'))
-{
- $xml_ok = true;
-}
-elseif (extension_loaded('xml'))
-{
- $parser_check = xml_parser_create();
- xml_parse_into_struct($parser_check, '<foo>&amp;</foo>', $values);
- xml_parser_free($parser_check);
- $xml_ok = isset($values[0]['value']);
-}
-else
-{
- $xml_ok = false;
-}
-
-header('Content-type: text/html; charset=UTF-8');
-
-?><!DOCTYPE html>
-
-<html lang="en">
-<head>
-<title>SimplePie: Server Compatibility Test 1.3</title>
-
-<style type="text/css">
-body {
- font:14px/1.4em "Lucida Grande", Verdana, Arial, Helvetica, Clean, Sans, sans-serif;
- letter-spacing:0px;
- color:#333;
- margin:0;
- padding:0;
- background:#fff url(<?php echo pathinfo(__FILE__, PATHINFO_BASENAME); ?>?background) repeat-x top left;
-}
-
-div#site {
- width:550px;
- margin:20px auto 0 auto;
-}
-
-a {
- color:#000;
- text-decoration:underline;
- padding:0 1px;
-}
-
-a:hover {
- color:#fff;
- background-color:#333;
- text-decoration:none;
- padding:0 1px;
-}
-
-p {
- margin:0;
- padding:5px 0;
-}
-
-em {
- font-style:normal;
- background-color:#ffc;
-}
-
-ul, ol {
- margin:10px 0 10px 20px;
- padding:0 0 0 15px;
-}
-
-ul li, ol li {
- margin:0 0 7px 0;
- padding:0 0 0 3px;
-}
-
-h2 {
- font-size:18px;
- padding:0;
- margin:30px 0 10px 0;
-}
-
-h3 {
- font-size:16px;
- padding:0;
- margin:20px 0 5px 0;
-}
-
-h4 {
- font-size:14px;
- padding:0;
- margin:15px 0 5px 0;
-}
-
-code {
- font-size:1.1em;
- background-color:#f3f3ff;
- color:#000;
-}
-
-em strong {
- text-transform: uppercase;
-}
-
-table#chart {
- border-collapse:collapse;
-}
-
-table#chart th {
- background-color:#eee;
- padding:2px 3px;
- border:1px solid #fff;
-}
-
-table#chart td {
- text-align:center;
- padding:2px 3px;
- border:1px solid #eee;
-}
-
-table#chart tr.enabled td {
- /* Leave this alone */
-}
-
-table#chart tr.disabled td,
-table#chart tr.disabled td a {
- color:#999;
- font-style:italic;
-}
-
-table#chart tr.disabled td a {
- text-decoration:underline;
-}
-
-div.chunk {
- margin:20px 0 0 0;
- padding:0 0 10px 0;
- border-bottom:1px solid #ccc;
-}
-
-.footnote,
-.footnote a {
- font:10px/12px verdana, sans-serif;
- color:#aaa;
-}
-
-.footnote em {
- background-color:transparent;
- font-style:italic;
-}
-</style>
-
-<script type="text/javascript">
-// Sleight - Alpha transparency PNG's in Internet Explorer 5.5/6.0
-// (c) 2001, Aaron Boodman; http://www.youngpup.net
-
-if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
- document.writeln('<style type="text/css">img, input.image { visibility:hidden; } </style>');
- window.attachEvent("onload", fnLoadPngs);
-}
-
-function fnLoadPngs() {
- var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
- var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
-
- for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) {
- if (itsAllGood && img.src.match(/\png$/i) != null) {
- var src = img.src;
- var div = document.createElement("DIV");
- div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')";
- div.style.width = img.width + "px";
- div.style.height = img.height + "px";
- img.replaceNode(div);
- }
- img.style.visibility = "visible";
- }
-}
-</script>
-
-</head>
-
-<body>
-
-<div id="site">
- <div id="content">
-
- <div class="chunk">
- <h2 style="text-align:center;"><img src="<?php echo pathinfo(__FILE__, PATHINFO_BASENAME); ?>?logopng" alt="SimplePie Compatibility Test" title="SimplePie Compatibility Test" /></h2>
- <table cellpadding="0" cellspacing="0" border="0" width="100%" id="chart">
- <thead>
- <tr>
- <th>Test</th>
- <th>Should Be</th>
- <th>What You Have</th>
- </tr>
- </thead>
- <tbody>
- <tr class="<?php echo ($php_ok) ? 'enabled' : 'disabled'; ?>">
- <td>PHP</td>
- <td>5.2.0 or higher</td>
- <td><?php echo phpversion(); ?></td>
- </tr>
- <tr class="<?php echo ($xml_ok) ? 'enabled, and sane' : 'disabled, or broken'; ?>">
- <td><a href="http://php.net/xml">XML</a></td>
- <td>Enabled</td>
- <td><?php echo ($xml_ok) ? 'Enabled, and sane' : 'Disabled, or broken'; ?></td>
- </tr>
- <tr class="<?php echo ($pcre_ok) ? 'enabled' : 'disabled'; ?>">
- <td><a href="http://php.net/pcre">PCRE</a>&sup1;</td>
- <td>Enabled</td>
- <td><?php echo ($pcre_ok) ? 'Enabled' : 'Disabled'; ?></td>
- </tr>
- <tr class="<?php echo ($curl_ok) ? 'enabled' : 'disabled'; ?>">
- <td><a href="http://php.net/curl">cURL</a></td>
- <td>Enabled</td>
- <td><?php echo (extension_loaded('curl')) ? 'Enabled' : 'Disabled'; ?></td>
- </tr>
- <tr class="<?php echo ($zlib_ok) ? 'enabled' : 'disabled'; ?>">
- <td><a href="http://php.net/zlib">Zlib</a></td>
- <td>Enabled</td>
- <td><?php echo ($zlib_ok) ? 'Enabled' : 'Disabled'; ?></td>
- </tr>
- <tr class="<?php echo ($mbstring_ok) ? 'enabled' : 'disabled'; ?>">
- <td><a href="http://php.net/mbstring">mbstring</a></td>
- <td>Enabled</td>
- <td><?php echo ($mbstring_ok) ? 'Enabled' : 'Disabled'; ?></td>
- </tr>
- <tr class="<?php echo ($iconv_ok) ? 'enabled' : 'disabled'; ?>">
- <td><a href="http://php.net/iconv">iconv</a></td>
- <td>Enabled</td>
- <td><?php echo ($iconv_ok) ? 'Enabled' : 'Disabled'; ?></td>
- </tr>
- </tbody>
- </table>
- </div>
-
- <div class="chunk">
- <h3>What does this mean?</h3>
- <ol>
- <?php if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $iconv_ok && $curl_ok && $zlib_ok): ?>
- <li><em>You have everything you need to run SimplePie properly! Congratulations!</em></li>
- <?php else: ?>
- <?php if ($php_ok): ?>
- <li><strong>PHP:</strong> You are running a supported version of PHP. <em>No problems here.</em></li>
- <?php if ($xml_ok): ?>
- <li><strong>XML:</strong> You have XMLReader support or a version of XML support that isn't broken installed. <em>No problems here.</em></li>
- <?php if ($pcre_ok): ?>
- <li><strong>PCRE:</strong> You have PCRE support installed. <em>No problems here.</em></li>
- <?php if ($curl_ok): ?>
- <li><strong>cURL:</strong> You have <code>cURL</code> support installed. <em>No problems here.</em></li>
- <?php else: ?>
- <li><strong>cURL:</strong> The <code>cURL</code> extension is not available. SimplePie will use <code>fsockopen()</code> instead.</li>
- <?php endif; ?>
-
- <?php if ($zlib_ok): ?>
- <li><strong>Zlib:</strong> You have <code>Zlib</code> enabled. This allows SimplePie to support GZIP-encoded feeds. <em>No problems here.</em></li>
- <?php else: ?>
- <li><strong>Zlib:</strong> The <code>Zlib</code> extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle feeds as uncompressed text.</li>
- <?php endif; ?>
-
- <?php if ($mbstring_ok && $iconv_ok): ?>
- <li><strong>mbstring and iconv:</strong> You have both <code>mbstring</code> and <code>iconv</code> installed! This will allow SimplePie to handle the greatest number of languages. Check the <a href="http://simplepie.org/wiki/faq/supported_character_encodings">Supported Character Encodings</a> chart to see what's supported on your webhost.</li>
- <?php elseif ($mbstring_ok): ?>
- <li><strong>mbstring:</strong> <code>mbstring</code> is installed, but <code>iconv</code> is not. Check the <a href="http://simplepie.org/wiki/faq/supported_character_encodings">Supported Character Encodings</a> chart to see what's supported on your webhost.</li>
- <?php elseif ($iconv_ok): ?>
- <li><strong>iconv:</strong> <code>iconv</code> is installed, but <code>mbstring</code> is not. Check the <a href="http://simplepie.org/wiki/faq/supported_character_encodings">Supported Character Encodings</a> chart to see what's supported on your webhost.</li>
- <?php else: ?>
- <li><strong>mbstring and iconv:</strong> <em>You do not have either of the extensions installed.</em> This will significantly impair your ability to read non-English feeds, as well as even some English ones. Check the <a href="http://simplepie.org/wiki/faq/supported_character_encodings">Supported Character Encodings</a> chart to see what's supported on your webhost.</li>
- <?php endif; ?>
- <?php else: ?>
- <li><strong>PCRE:</strong> Your PHP installation doesn't support Perl-Compatible Regular Expressions. <em>SimplePie is a no-go at the moment.</em></li>
- <?php endif; ?>
- <?php else: ?>
- <li><strong>XML:</strong> Your PHP installation doesn't support XML parsing. <em>SimplePie is a no-go at the moment.</em></li>
- <?php endif; ?>
- <?php else: ?>
- <li><strong>PHP:</strong> You are running an unsupported version of PHP. <em>SimplePie is a no-go at the moment.</em></li>
- <?php endif; ?>
- <?php endif; ?>
- </ol>
- </div>
-
- <div class="chunk">
- <?php if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $iconv_ok) { ?>
- <h3>Bottom Line: Yes, you can!</h3>
- <p><em>Your webhost has its act together!</em></p>
- <p>You can download the latest version of SimplePie from <a href="http://simplepie.org/downloads/">SimplePie.org</a> and install it by <a href="http://simplepie.org/wiki/setup/start">following the instructions</a>. You can find example uses with <a href="http://simplepie.org/ideas/">SimplePie Ideas</a>.</p>
- <p>Take the time to read <a href="http://simplepie.org/wiki/setup/start">Requirements and Getting Started</a> to make sure you're prepared to use SimplePie. No seriously, read them.</p>
- <p class="footnote"><em><strong>Note</strong></em>: Passing this test does not guarantee that SimplePie will run on your webhost &mdash; it only ensures that the basic requirements have been addressed.</p>
- <?php } else if ($php_ok && $xml_ok && $pcre_ok) { ?>
- <h3>Bottom Line: Yes, you can!</h3>
- <p><em>For most feeds, it'll run with no problems.</em> There are <a href="http://simplepie.org/wiki/faq/supported_character_encodings">certain languages</a> that you might have a hard time with though.</p>
- <p>You can download the latest version of SimplePie from <a href="http://simplepie.org/downloads/">SimplePie.org</a> and install it by <a href="http://simplepie.org/wiki/setup/start">following the instructions</a>. You can find example uses with <a href="http://simplepie.org/ideas/">SimplePie Ideas</a>.</p>
- <p>Take the time to read <a href="http://simplepie.org/wiki/setup/start">Requirements and Getting Started</a> to make sure you're prepared to use SimplePie. No seriously, read them.</p>
- <p class="footnote"><em><strong>Note</strong></em>: Passing this test does not guarantee that SimplePie will run on your webhost &mdash; it only ensures that the basic requirements have been addressed.</p>
- <?php } else { ?>
- <h3>Bottom Line: We're sorry…</h3>
- <p><em>Your webhost does not support the minimum requirements for SimplePie.</em> It may be a good idea to contact your webhost, and ask them to install a more recent version of PHP as well as the <code>xmlreader</code>, <code>xml</code>, <code>mbstring</code>, <code>iconv</code>, <code>curl</code>, and <code>zlib</code> extensions.</p>
- <?php } ?>
- </div>
-
- <div class="chunk">
- <p class="footnote">&sup1; &mdash; Some recent versions of the PCRE (PERL-Compatible Regular Expression) engine compiled into PHP have been buggy, and are the source of PHP segmentation faults (e.g. crashes) which cause random things like blank, white screens. Check the <a href="http://simplepie.org/support/">Support Forums</a> for the latest information on patches and ongoing fixes.</p>
- </div>
-
- </div>
-
-</div>
-
-</body>
-</html> \ No newline at end of file
diff --git a/3rdparty/simplepie/composer.json b/3rdparty/simplepie/composer.json
deleted file mode 100755
index 4da6b1ab8..000000000
--- a/3rdparty/simplepie/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "simplepie/simplepie",
- "description": "A simple Atom/RSS parsing library for PHP",
- "type": "library",
- "keywords": ["rss", "atom", "feeds"],
- "homepage": "http://simplepie.org/",
- "license": "BSD-3-Clause",
- "authors": [
- {
- "name": "Ryan Parman",
- "homepage": "http://ryanparman.com/",
- "role": "Creator, alumnus developer"
- },
- {
- "name": "Geoffrey Sneddon",
- "homepage": "http://gsnedders.com/",
- "role": "Alumnus developer"
- },
- {
- "name": "Ryan McCue",
- "email": "me@ryanmccue.info",
- "homepage": "http://ryanmccue.info/",
- "role": "Developer"
- }
- ],
- "require": {
- "php": ">=5.2.0"
- },
- "autoload": {
- "psr-0": {
- "SimplePie": "library"
- }
- }
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/db.sql b/3rdparty/simplepie/db.sql
deleted file mode 100755
index 13f504c21..000000000
--- a/3rdparty/simplepie/db.sql
+++ /dev/null
@@ -1,38 +0,0 @@
-/* SQLite */
-CREATE TABLE cache_data (
- id TEXT NOT NULL,
- items SMALLINT NOT NULL DEFAULT 0,
- data BLOB NOT NULL,
- mtime INTEGER UNSIGNED NOT NULL
-);
-CREATE UNIQUE INDEX id ON cache_data(id);
-
-CREATE TABLE items (
- feed_id TEXT NOT NULL,
- id TEXT NOT NULL,
- data TEXT NOT NULL,
- posted INTEGER UNSIGNED NOT NULL
-);
-CREATE INDEX feed_id ON items(feed_id);
-
-
-/* MySQL */
-CREATE TABLE `cache_data` (
- `id` TEXT CHARACTER SET utf8 NOT NULL,
- `items` SMALLINT NOT NULL DEFAULT 0,
- `data` BLOB NOT NULL,
- `mtime` INT UNSIGNED NOT NULL,
- UNIQUE (
- `id`(125)
- )
-);
-
-CREATE TABLE `items` (
- `feed_id` TEXT CHARACTER SET utf8 NOT NULL,
- `id` TEXT CHARACTER SET utf8 NOT NULL,
- `data` TEXT CHARACTER SET utf8 NOT NULL,
- `posted` INT UNSIGNED NOT NULL,
- INDEX `feed_id` (
- `feed_id`(125)
- )
-); \ No newline at end of file
diff --git a/3rdparty/simplepie/demo/cli_test.php b/3rdparty/simplepie/demo/cli_test.php
deleted file mode 100755
index 6a6161bac..000000000
--- a/3rdparty/simplepie/demo/cli_test.php
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/php
-<?php
-include_once('../autoloader.php');
-
-// Parse it
-$feed = new SimplePie();
-if (isset($argv[1]) && $argv[1] !== '')
-{
- $feed->set_feed_url($argv[1]);
- $feed->enable_cache(false);
- $feed->init();
-}
-
-$items = $feed->get_items();
-
-foreach ($items as $item)
-{
- echo $item->get_title() . "\n";
-}
-
-var_dump($feed->get_item_quantity());
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/demo/for_the_demo/alternate_favicon.png b/3rdparty/simplepie/demo/for_the_demo/alternate_favicon.png
deleted file mode 100755
index 063fb2805..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/alternate_favicon.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/background_blockquote.png b/3rdparty/simplepie/demo/for_the_demo/background_blockquote.png
deleted file mode 100755
index 8267e23a2..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/background_blockquote.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/background_menuitem.gif b/3rdparty/simplepie/demo/for_the_demo/background_menuitem.gif
deleted file mode 100755
index fa765d670..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/background_menuitem.gif
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/background_menuitem_off.gif b/3rdparty/simplepie/demo/for_the_demo/background_menuitem_off.gif
deleted file mode 100755
index 236cf406d..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/background_menuitem_off.gif
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/background_menuitem_shadow.gif b/3rdparty/simplepie/demo/for_the_demo/background_menuitem_shadow.gif
deleted file mode 100755
index 95cfb820d..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/background_menuitem_shadow.gif
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/alternate.png b/3rdparty/simplepie/demo/for_the_demo/favicons/alternate.png
deleted file mode 100755
index 063fb2805..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/alternate.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/blinklist.png b/3rdparty/simplepie/demo/for_the_demo/favicons/blinklist.png
deleted file mode 100755
index 53200b3c6..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/blinklist.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/blogmarks.png b/3rdparty/simplepie/demo/for_the_demo/favicons/blogmarks.png
deleted file mode 100755
index c5372614a..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/blogmarks.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/delicious.png b/3rdparty/simplepie/demo/for_the_demo/favicons/delicious.png
deleted file mode 100755
index 2e6021d26..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/delicious.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/digg.png b/3rdparty/simplepie/demo/for_the_demo/favicons/digg.png
deleted file mode 100755
index 3aa96770e..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/digg.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/magnolia.png b/3rdparty/simplepie/demo/for_the_demo/favicons/magnolia.png
deleted file mode 100755
index da519f5ab..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/magnolia.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/myweb2.png b/3rdparty/simplepie/demo/for_the_demo/favicons/myweb2.png
deleted file mode 100755
index 2a12968d5..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/myweb2.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/newsvine.png b/3rdparty/simplepie/demo/for_the_demo/favicons/newsvine.png
deleted file mode 100755
index 5cdbb31c6..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/newsvine.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/reddit.png b/3rdparty/simplepie/demo/for_the_demo/favicons/reddit.png
deleted file mode 100755
index 65c38867c..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/reddit.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/segnalo.png b/3rdparty/simplepie/demo/for_the_demo/favicons/segnalo.png
deleted file mode 100755
index 748149b37..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/segnalo.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/simpy.png b/3rdparty/simplepie/demo/for_the_demo/favicons/simpy.png
deleted file mode 100755
index 30b23c1a5..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/simpy.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/spurl.png b/3rdparty/simplepie/demo/for_the_demo/favicons/spurl.png
deleted file mode 100755
index f5be3963d..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/spurl.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/technorati.png b/3rdparty/simplepie/demo/for_the_demo/favicons/technorati.png
deleted file mode 100755
index 0f19e824e..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/technorati.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/favicons/wists.png b/3rdparty/simplepie/demo/for_the_demo/favicons/wists.png
deleted file mode 100755
index 2e2d294d1..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/favicons/wists.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/feed.png b/3rdparty/simplepie/demo/for_the_demo/feed.png
deleted file mode 100755
index e23c50c85..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/feed.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/logo_simplepie_demo.png b/3rdparty/simplepie/demo/for_the_demo/logo_simplepie_demo.png
deleted file mode 100755
index eda2d868b..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/logo_simplepie_demo.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/lucida-grande-bold.swf b/3rdparty/simplepie/demo/for_the_demo/lucida-grande-bold.swf
deleted file mode 100755
index 0a41e15eb..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/lucida-grande-bold.swf
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/mediaplayer.swf b/3rdparty/simplepie/demo/for_the_demo/mediaplayer.swf
deleted file mode 100755
index bf78fd919..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/mediaplayer.swf
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/mediaplayer_readme.htm b/3rdparty/simplepie/demo/for_the_demo/mediaplayer_readme.htm
deleted file mode 100755
index 56e12c309..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/mediaplayer_readme.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://www.jeroenwijering.com/extras/readme.html">
-</head>
-</html> \ No newline at end of file
diff --git a/3rdparty/simplepie/demo/for_the_demo/mini_podcast.png b/3rdparty/simplepie/demo/for_the_demo/mini_podcast.png
deleted file mode 100755
index fd6faf2a3..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/mini_podcast.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/place_audio.png b/3rdparty/simplepie/demo/for_the_demo/place_audio.png
deleted file mode 100755
index 560ea0039..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/place_audio.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/place_video.png b/3rdparty/simplepie/demo/for_the_demo/place_video.png
deleted file mode 100755
index be5ec8219..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/place_video.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/sIFR-print.css b/3rdparty/simplepie/demo/for_the_demo/sIFR-print.css
deleted file mode 100755
index ec89b1961..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/sIFR-print.css
+++ /dev/null
@@ -1,35 +0,0 @@
-/*=:project
- scalable Inman Flash Replacement (sIFR) version 3.
-
- =:file
- Copyright: 2006 Mark Wubben.
- Author: Mark Wubben, <http://novemberborn.net/>
-
- =:history
- * IFR: Shaun Inman
- * sIFR 1: Mike Davidson, Shaun Inman and Tomas Jogin
- * sIFR 2: Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben
-
- =:license
- This software is licensed and provided under the CC-GNU LGPL.
- See <http://creativecommons.org/licenses/LGPL/2.1/>
-*/
-
-
-/* This is the print stylesheet to hide the Flash headlines from the browser... regular browser text headlines will now print as normal */
-
-.sIFR-flash {
- display: none !important;
- height: 0;
- width: 0;
- position: absolute;
- overflow: hidden;
-}
-
-.sIFR-alternate {
- visibility: visible !important;
- display: block !important;
- position: static !important;
- left: auto !important;
- top: auto !important;
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/demo/for_the_demo/sIFR-screen.css b/3rdparty/simplepie/demo/for_the_demo/sIFR-screen.css
deleted file mode 100755
index 778e09d2b..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/sIFR-screen.css
+++ /dev/null
@@ -1,39 +0,0 @@
-/*=:project
- scalable Inman Flash Replacement (sIFR) version 3.
-
- =:file
- Copyright: 2006 Mark Wubben.
- Author: Mark Wubben, <http://novemberborn.net/>
-
- =:history
- * IFR: Shaun Inman
- * sIFR 1: Mike Davidson, Shaun Inman and Tomas Jogin
- * sIFR 2: Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben
-
- =:license
- This software is licensed and provided under the CC-GNU LGPL.
- See <http://creativecommons.org/licenses/LGPL/2.1/>
-*/
-
-/*---- sIFR ---*/
-.sIFR-flash {
- visibility: visible !important;
- margin: 0;
- padding: 0;
-}
-
-.sIFR-replaced {
- visibility: visible !important;
-}
-
-.sIFR-alternate {
- position: absolute;
- left: 0;
- top: 0;
- width: 0;
- height: 0;
- display: block;
- overflow: hidden;
-}
-
-/*---- Header styling ---*/
diff --git a/3rdparty/simplepie/demo/for_the_demo/sifr-config.js b/3rdparty/simplepie/demo/for_the_demo/sifr-config.js
deleted file mode 100755
index e7066b361..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/sifr-config.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var yanone_kaffeesatz = {
- src: './for_the_demo/yanone-kaffeesatz-bold.swf'
-};
-
-var lucida_grande = {
- src: './for_the_demo/lucida-grande-bold.swf'
-};
-
-sIFR.activate(yanone_kaffeesatz);
-//sIFR.activate(lucida_grande);
-
-sIFR.replace(yanone_kaffeesatz, {
-//sIFR.replace(lucida_grande, {
-
- selector: 'h3.header',
- wmode: 'transparent',
- css: {
- '.sIFR-root': {
- 'text-align': 'center',
- 'color': '#000000',
- 'font-weight': 'bold',
- 'background-color': '#EEFFEE',
-
- 'font-size': '50px', // For Yanone Kaffeesatz
- //'font-size': '40px', // For Lucida Grande
-
- 'letter-spacing': '0' // For Yanone Kaffeesatz
- //'letter-spacing': '-4' // For Lucida Grande
-
- },
- 'a': {
- 'text-decoration': 'none',
- 'color': '#000000'
- },
- 'a:hover': {
- 'text-decoration': 'none',
- 'color': '#666666'
- }
- }
-});
diff --git a/3rdparty/simplepie/demo/for_the_demo/sifr.js b/3rdparty/simplepie/demo/for_the_demo/sifr.js
deleted file mode 100755
index 0a8b1b6dc..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/sifr.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*=:project
- scalable Inman Flash Replacement (sIFR) version 3, revision 245
-
- =:file
- Copyright: 2006 Mark Wubben.
- Author: Mark Wubben, <http://novemberborn.net/>
-
- =:history
- * IFR: Shaun Inman
- * sIFR 1: Mike Davidson, Shaun Inman and Tomas Jogin
- * sIFR 2: Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben
-
- =:license
- This software is licensed and provided under the CC-GNU LGPL.
- See <http://creativecommons.org/licenses/LGPL/2.1/>
-*/
-
-var parseSelector=(function(){var _1=/\s*,\s*/;var _2=/\s*([\s>+~(),]|^|$)\s*/g;var _3=/([\s>+~,]|[^(]\+|^)([#.:@])/g;var _4=/^[^\s>+~]/;var _5=/[\s#.:>+~()@]|[^\s#.:>+~()@]+/g;function parseSelector(_6,_7){_7=_7||document.documentElement;var _8=_6.split(_1),_9=[];for(var i=0;i<_8.length;i++){var _b=[_7],_c=toStream(_8[i]);for(var j=0;j<_c.length;){var _e=_c[j++],_f=_c[j++],_10="";if(_c[j]=="("){while(_c[j++]!=")"&&j<_c.length){_10+=_c[j]}_10=_10.slice(0,-1)}_b=select(_b,_e,_f,_10)}_9=_9.concat(_b)}return _9}function toStream(_11){var _12=_11.replace(_2,"$1").replace(_3,"$1*$2");if(_4.test(_12)){_12=" "+_12}return _12.match(_5)||[]}function select(_13,_14,_15,_16){return (_17[_14])?_17[_14](_13,_15,_16):[]}var _18={toArray:function(_19){var a=[];for(var i=0;i<_19.length;i++){a.push(_19[i])}return a}};var dom={isTag:function(_1d,tag){return (tag=="*")||(tag.toLowerCase()==_1d.nodeName.toLowerCase())},previousSiblingElement:function(_1f){do{_1f=_1f.previousSibling}while(_1f&&_1f.nodeType!=1);return _1f},nextSiblingElement:function(_20){do{_20=_20.nextSibling}while(_20&&_20.nodeType!=1);return _20},hasClass:function(_21,_22){return (_22.className||"").match("(^|\\s)"+_21+"(\\s|$)")},getByTag:function(tag,_24){return _24.getElementsByTagName(tag)}};var _17={"#":function(_25,_26){for(var i=0;i<_25.length;i++){if(_25[i].getAttribute("id")==_26){return [_25[i]]}}return []}," ":function(_28,_29){var _2a=[];for(var i=0;i<_28.length;i++){_2a=_2a.concat(_18.toArray(dom.getByTag(_29,_28[i])))}return _2a},">":function(_2c,_2d){var _2e=[];for(var i=0,_30;i<_2c.length;i++){_30=_2c[i];for(var j=0,_32;j<_30.childNodes.length;j++){_32=_30.childNodes[j];if(_32.nodeType==1&&dom.isTag(_32,_2d)){_2e.push(_32)}}}return _2e},".":function(_33,_34){var _35=[];for(var i=0,_37;i<_33.length;i++){_37=_33[i];if(dom.hasClass([_34],_37)){_35.push(_37)}}return _35},":":function(_38,_39,_3a){return (pseudoClasses[_39])?pseudoClasses[_39](_38,_3a):[]}};parseSelector.selectors=_17;parseSelector.pseudoClasses={};parseSelector.util=_18;parseSelector.dom=dom;return parseSelector})();
-var sIFR=new function(){var _3b=this;var _3c="sIFR-active";var _3d="sIFR-replaced";var _3e="sIFR-replacing";var _3f="sIFR-flash";var _40="sIFR-ignore";var _41="sIFR-alternate";var _42="sIFR-class";var _43="sIFR-layout";var _44=6;var _45=126;var _46=8;var _47="SIFR-PREFETCHED";var _48=[10,1.55,19,1.45,32,1.35,71,1.3,1.25];var _49=5;this.isActive=false;this.isEnabled=true;this.hideElements=true;this.preserveSingleWhitespace=false;this.fixWrap=true;this.fixHover=true;this.registerEvents=true;this.setPrefetchCookie=true;this.cookiePath="/";this.domains=[];this.fromLocal=true;this.forceClear=false;this.forceWidth=false;this.fitExactly=false;this.forceTextTransform=true;this.useDomContentLoaded=true;this.debugMode=false;this.hasFlashClassSet=false;this.delayCss=false;this.callbacks=[];var _4a=0;var _4b=false,_4c=false;var dom=new function(){var _4e="http://www.w3.org/1999/xhtml";this.getBody=function(){var _4f=document.getElementsByTagName("body");if(_4f.length==1){return _4f[0]}return null};this.addClass=function(_50,_51){if(_51){_51.className=((_51.className||"")==""?"":_51.className+" ")+_50}};this.removeClass=function(_52,_53){if(_53){_53.className=_53.className.replace(new RegExp("(^|\\s)"+_52+"(\\s|$)"),"").replace(/^\s+|(\s)\s+/g,"$1")}};this.hasClass=function(_54,_55){return new RegExp("(^|\\s)"+_54+"(\\s|$)").test(_55.className)};this.hasOneOfClassses=function(_56,_57){for(var i=0;i<_56.length;i++){if(this.hasClass(_56[i],_57)){return true}}return false};this.create=function(_59){if(document.createElementNS){return document.createElementNS(_4e,_59)}return document.createElement(_59)};this.setInnerHtml=function(_5a,_5b){if(ua.innerHtmlSupport){_5a.innerHTML=_5b}else{if(ua.xhtmlSupport){_5b=["<root xmlns=\"",_4e,"\">",_5b,"</root>"].join("");var xml=(new DOMParser()).parseFromString(_5b,"text/xml");xml=document.importNode(xml.documentElement,true);while(_5a.firstChild){_5a.removeChild(_5a.firstChild)}while(xml.firstChild){_5a.appendChild(xml.firstChild)}}}};this.nodeFromHtml=function(_5d){var _5e=this.create("div");_5e.innerHTML=_5d;return _5e.firstChild};this.getComputedStyle=function(_5f,_60){var _61;if(document.defaultView&&document.defaultView.getComputedStyle){_61=document.defaultView.getComputedStyle(_5f,null)[_60]}else{if(_5f.currentStyle){_61=_5f.currentStyle[_60]}}return _61||""};this.getStyleAsInt=function(_62,_63,_64){var _65=this.getComputedStyle(_62,_63);if(_64&&!/px$/.test(_65)){return 0}_65=parseInt(_65);return isNaN(_65)?0:_65};this.getZoom=function(){return _66.zoom.getLatest()}};this.dom=dom;var ua=new function(){var ua=navigator.userAgent.toLowerCase();var _69=(navigator.product||"").toLowerCase();this.macintosh=ua.indexOf("mac")>-1;this.windows=ua.indexOf("windows")>-1;this.quicktime=false;this.opera=ua.indexOf("opera")>-1;this.konqueror=_69.indexOf("konqueror")>-1;this.ie=false/*@cc_on || true @*/;this.ieSupported=this.ie&&!/ppc|smartphone|iemobile|msie\s5\.5/.test(ua)/*@cc_on && @_jscript_version >= 5.5 @*/;this.ieWin=this.ie&&this.windows/*@cc_on && @_jscript_version >= 5.1 @*/;this.windows=this.windows&&(!this.ie||this.ieWin);this.ieMac=this.ie&&this.macintosh/*@cc_on && @_jscript_version < 5.1 @*/;this.macintosh=this.macintosh&&(!this.ie||this.ieMac);this.safari=ua.indexOf("safari")>-1;this.webkit=ua.indexOf("applewebkit")>-1&&!this.konqueror;this.khtml=this.webkit||this.konqueror;this.gecko=!this.webkit&&_69=="gecko";this.operaVersion=this.opera&&/.*opera(\s|\/)(\d+\.\d+)/.exec(ua)?parseInt(RegExp.$2):0;this.webkitVersion=this.webkit&&/.*applewebkit\/(\d+).*/.exec(ua)?parseInt(RegExp.$1):0;this.geckoBuildDate=this.gecko&&/.*gecko\/(\d{8}).*/.exec(ua)?parseInt(RegExp.$1):0;this.konquerorVersion=this.konqueror&&/.*konqueror\/(\d\.\d).*/.exec(ua)?parseInt(RegExp.$1):0;this.flashVersion=0;if(this.ieWin){var axo;var _6b=false;try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(e){try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");this.flashVersion=6;axo.AllowScriptAccess="always"}catch(e){_6b=this.flashVersion==6}if(!_6b){try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){}}}if(!_6b&&axo){this.flashVersion=parseFloat(/([\d,?]+)/.exec(axo.GetVariable("$version"))[1].replace(/,/g,"."))}}else{if(navigator.plugins&&navigator.plugins["Shockwave Flash"]){var _6c=navigator.plugins["Shockwave Flash"];this.flashVersion=parseFloat(/(\d+\.?\d*)/.exec(_6c.description)[1]);var i=0;while(this.flashVersion>=_46&&i<navigator.mimeTypes.length){var _6e=navigator.mimeTypes[i];if(_6e.type=="application/x-shockwave-flash"&&_6e.enabledPlugin.description.toLowerCase().indexOf("quicktime")>-1){this.flashVersion=0;this.quicktime=true}i++}}}this.flash=this.flashVersion>=_46;this.transparencySupport=this.macintosh||this.windows;this.computedStyleSupport=this.ie||document.defaultView&&document.defaultView.getComputedStyle&&(!this.gecko||this.geckoBuildDate>=20030624);this.css=true;if(this.computedStyleSupport){try{var _6f=document.getElementsByTagName("head")[0];_6f.style.backgroundColor="#FF0000";var _70=dom.getComputedStyle(_6f,"backgroundColor");this.css=!_70||/\#F{2}0{4}|rgb\(255,\s?0,\s?0\)/i.test(_70);_6f.style.backgroundColor="";_6f=null}catch(e){}}this.xhtmlSupport=!!window.DOMParser&&!!document.importNode;try{var n=dom.create("span");if(!this.ieMac){n.innerHTML="x"}this.innerHtmlSupport=n.innerHTML=="x"}catch(e){this.innerHtmlSupport=false}this.zoomSupport=!!(this.opera&&document.documentElement);this.geckoXml=this.gecko&&(document.contentType||"").indexOf("xml")>-1;this.requiresPrefetch=this.ieWin||this.khtml;this.verifiedKonqueror=false;this.supported=this.flash&&this.css&&(!this.ie||this.ieSupported)&&(!this.opera||this.operaVersion>=8)&&(!this.webkit||this.webkitVersion>=412)&&(!this.konqueror||this.konquerorVersion>3.5)&&this.computedStyleSupport&&(this.innerHtmlSupport||!this.khtml&&this.xhtmlSupport)};this.ua=ua;var _72=new function(){var _73={leading:true,"margin-left":true,"margin-right":true,"text-indent":true};var _74=" ";function capitalize($){return $.toUpperCase()}this.normalize=function(str){if(_3b.preserveSingleWhitespace){return str.replace(/\s/g,_74)}return str.replace(/(\s)\s+/g,"$1").replace(/\xA0/,_74)};this.textTransform=function(_77,str){switch(_77){case "uppercase":str=str.toUpperCase();break;case "lowercase":str=str.toLowerCase();break;case "capitalize":var _79=str;str=str.replace(/^\w|\s\w/g,capitalize);if(str.indexOf("function capitalize")!=-1){var _7a=_79.replace(/(^|\s)(\w)/g,"$1$1$2$2").split(/^\w|\s\w/g);str="";for(var i=0;i<_7a.length;i++){str+=_7a[i].charAt(0).toUpperCase()+_7a[i].substring(1)}}break}return str};this.toHexString=function(str){if(typeof (str)!="string"||!str.charAt(0)=="#"||str.length!=4&&str.length!=7){return str}str=str.replace(/#/,"");if(str.length==3){str=str.replace(/(.)(.)(.)/,"$1$1$2$2$3$3")}return "0x"+str};this.toJson=function(obj){var _7e="";switch(typeof (obj)){case "string":_7e="\""+obj+"\"";break;case "number":case "boolean":_7e=obj.toString();break;case "object":_7e=[];for(var _7f in obj){if(obj[_7f]==Object.prototype[_7f]){continue}_7e.push("\""+_7f+"\":"+_72.toJson(obj[_7f]))}_7e="{"+_7e.join(",")+"}";break}return _7e};this.convertCssArg=function(arg){if(!arg){return {}}if(typeof (arg)=="object"){if(arg.constructor==Array){arg=arg.join("")}else{return arg}}var obj={};var _82=arg.split("}");for(var i=0;i<_82.length;i++){var $=_82[i].match(/([^\s{]+)\s*\{(.+)\s*;?\s*/);if(!$||$.length!=3){continue}if(!obj[$[1]]){obj[$[1]]={}}var _85=$[2].split(";");for(var j=0;j<_85.length;j++){var $2=_85[j].match(/\s*([^:\s]+)\s*\:\s*([^\s;]+)/);if(!$2||$2.length!=3){continue}obj[$[1]][$2[1]]=$2[2]}}return obj};this.extractFromCss=function(css,_89,_8a,_8b){var _8c=null;if(css&&css[_89]&&css[_89][_8a]){_8c=css[_89][_8a];if(_8b){delete css[_89][_8a]}}return _8c};this.cssToString=function(arg){var css=[];for(var _8f in arg){var _90=arg[_8f];if(_90==Object.prototype[_8f]){continue}css.push(_8f,"{");for(var _91 in _90){if(_90[_91]==Object.prototype[_91]){continue}var _92=_90[_91];if(_73[_91]){_92=parseInt(_92,10)}css.push(_91,":",_92,";")}css.push("}")}return escape(css.join(""))};this.bind=function(_93,_94){return function(){_93[_94].apply(_93,arguments)}}};this.util=_72;var _66={};_66.fragmentIdentifier=new function(){this.fix=true;var _95;this.cache=function(){_95=document.title};function doFix(){document.title=_95}this.restore=function(){if(this.fix){setTimeout(doFix,0)}}};_66.synchronizer=new function(){this.isBlocked=false;this.block=function(){this.isBlocked=true};this.unblock=function(){this.isBlocked=false;_96.replaceAll()}};_66.zoom=new function(){var _97=100;this.getLatest=function(){return _97};if(ua.zoomSupport&&ua.opera){var _98=document.createElement("div");_98.style.position="fixed";_98.style.left="-65536px";_98.style.top="0";_98.style.height="100%";_98.style.width="1px";_98.style.zIndex="-32";document.documentElement.appendChild(_98);function updateZoom(){if(!_98){return}var _99=window.innerHeight/_98.offsetHeight;var _9a=Math.round(_99*100)%10;if(_9a>5){_99=Math.round(_99*100)+10-_9a}else{_99=Math.round(_99*100)-_9a}_97=isNaN(_99)?100:_99;_66.synchronizer.unblock();document.documentElement.removeChild(_98);_98=null}_66.synchronizer.block();setTimeout(updateZoom,54)}};this.hacks=_66;var _9b={kwargs:[],replaceAll:function(){for(var i=0;i<this.kwargs.length;i++){_3b.replace(this.kwargs[i])}this.kwargs=[]}};var _96={kwargs:[],replaceAll:_9b.replaceAll};function isValidDomain(){if(_3b.domains.length==0){return true}var _9d="";try{_9d=document.domain}catch(e){}if(_3b.fromLocal&&sIFR.domains[0]!="localhost"){sIFR.domains.unshift("localhost")}for(var i=0;i<_3b.domains.length;i++){var _9f=_3b.domains[i];if(_9f=="*"||_9f==_9d){return true}var _a0=_9f.lastIndexOf("*");if(_a0>-1){_9f=_9f.substr(_a0+1);var _a1=_9d.lastIndexOf(_9f);if(_a1>-1&&(_a1+_9f.length)==_9d.length){return true}}}return false}this.activate=function(){if(!ua.supported||!this.isEnabled||this.isActive||!isValidDomain()){return}if(arguments.length>0){this.prefetch.apply(this,arguments)}this.isActive=true;if(this.hideElements){this.setFlashClass()}if(ua.ieWin&&_66.fragmentIdentifier.fix&&window.location.hash!=""){_66.fragmentIdentifier.cache()}else{_66.fragmentIdentifier.fix=false}if(!this.registerEvents){return}function handler(evt){_3b.initialize();if(evt&&evt.type=="load"){if(document.removeEventListener){document.removeEventListener("DOMContentLoaded",handler,false)}if(window.removeEventListener){window.removeEventListener("load",handler,false)}}}if(window.addEventListener){if(_3b.useDomContentLoaded&&ua.gecko){document.addEventListener("DOMContentLoaded",handler,false)}window.addEventListener("load",handler,false)}else{if(ua.ieWin){if(_3b.useDomContentLoaded){document.write("<scr"+"ipt id=__sifr_ie_onload defer src=//:></script>");document.getElementById("__sifr_ie_onload").onreadystatechange=function(){if(this.readyState=="complete"){handler();this.removeNode()}}}window.attachEvent("onload",handler)}}};this.setFlashClass=function(){if(this.hasFlashClassSet){return}dom.addClass(_3c,dom.getBody()||document.documentElement);this.hasFlashClassSet=true};this.removeFlashClass=function(){if(!this.hasFlashClassSet){return}dom.removeClass(_3c,dom.getBody());dom.removeClass(_3c,document.documentElement);this.hasFlashClassSet=false};this.initialize=function(){if(_4c||!this.isActive||!this.isEnabled){return}_4c=true;_9b.replaceAll();clearPrefetch()};function getSource(src){if(typeof (src)!="string"){if(src.src){src=src.src}if(typeof (src)!="string"){var _a4=[];for(var _a5 in src){if(src[_a5]!=Object.prototype[_a5]){_a4.push(_a5)}}_a4.sort().reverse();var _a6="";var i=-1;while(!_a6&&++i<_a4.length){if(parseFloat(_a4[i])<=ua.flashVersion){_a6=src[_a4[i]]}}src=_a6}}if(!src&&_3b.debugMode){throw new Error("sIFR: Could not determine appropriate source")}if(ua.ie&&src.charAt(0)=="/"){src=window.location.toString().replace(/([^:]+)(:\/?\/?)([^\/]+).*/,"$1$2$3")+src}return src}this.prefetch=function(){if(!ua.requiresPrefetch||!ua.supported||!this.isEnabled||!isValidDomain()){return}if(this.setPrefetchCookie&&new RegExp(";?"+_47+"=true;?").test(document.cookie)){return}try{_4b=true;if(ua.ieWin){prefetchIexplore(arguments)}else{prefetchLight(arguments)}if(this.setPrefetchCookie){document.cookie=_47+"=true;path="+this.cookiePath}}catch(e){if(_3b.debugMode){throw e}}};function prefetchIexplore(_a8){for(var i=0;i<_a8.length;i++){document.write("<script defer type=\"sifr/prefetch\" src=\""+getSource(_a8[i])+"\"></script>")}}function prefetchLight(_aa){for(var i=0;i<_aa.length;i++){new Image().src=getSource(_aa[i])}}function clearPrefetch(){if(!ua.ieWin||!_4b){return}try{var _ac=document.getElementsByTagName("script");for(var i=_ac.length-1;i>=0;i--){var _ae=_ac[i];if(_ae.type=="sifr/prefetch"){_ae.parentNode.removeChild(_ae)}}}catch(e){}}function getRatio(_af,_b0){for(var i=0;i<_b0.length;i+=2){if(_af<=_b0[i]){return _b0[i+1]}}return _b0[_b0.length-1]}function getFilters(obj){var _b3=[];for(var _b4 in obj){if(obj[_b4]==Object.prototype[_b4]){continue}var _b5=obj[_b4];_b4=[_b4.replace(/filter/i,"")+"Filter"];for(var _b6 in _b5){if(_b5[_b6]==Object.prototype[_b6]){continue}_b4.push(_b6+":"+escape(_72.toJson(_72.toHexString(_b5[_b6]))))}_b3.push(_b4.join(","))}return _b3.join(";")}function calculate(_b7){var _b8,_b9;if(!ua.ie){_b8=dom.getStyleAsInt(_b7,"lineHeight");_b9=Math.floor(dom.getStyleAsInt(_b7,"height")/_b8)}else{if(ua.ie){var _ba=_b7.innerHTML;_b7.style.visibility="visible";_b7.style.overflow="visible";_b7.style.position="static";_b7.style.zoom="normal";_b7.style.writingMode="lr-tb";_b7.style.width=_b7.style.height="auto";_b7.style.maxWidth=_b7.style.maxHeight=_b7.style.styleFloat="none";var _bb=_b7;var _bc=_b7.currentStyle.hasLayout;if(_bc){dom.setInnerHtml(_b7,"<div class=\""+_43+"\">X<br />X<br />X</div>");_bb=_b7.firstChild}else{dom.setInnerHtml(_b7,"X<br />X<br />X")}var _bd=_bb.getClientRects();_b8=_bd[1].bottom-_bd[1].top;_b8=Math.ceil(_b8*0.8);if(_bc){dom.setInnerHtml(_b7,"<div class=\""+_43+"\">"+_ba+"</div>");_bb=_b7.firstChild}else{dom.setInnerHtml(_b7,_ba)}_bd=_bb.getClientRects();_b9=_bd.length;if(_bc){dom.setInnerHtml(_b7,_ba)}_b7.style.visibility=_b7.style.width=_b7.style.height=_b7.style.maxWidth=_b7.style.maxHeight=_b7.style.overflow=_b7.style.styleFloat=_b7.style.position=_b7.style.zoom=_b7.style.writingMode=""}}return {lineHeight:_b8,lines:_b9}}this.replace=function(_be,_bf){if(!ua.supported){return}if(_bf){for(var _c0 in _be){if(typeof (_bf[_c0])=="undefined"){_bf[_c0]=_be[_c0]}}_be=_bf}if(!_4c){return _9b.kwargs.push(_be)}if(_66.synchronizer.isBlocked){return _96.kwargs.push(_be)}var _c1=_be.elements;if(!_c1&&parseSelector){_c1=parseSelector(_be.selector)}if(_c1.length==0){return}this.setFlashClass();var src=getSource(_be.src);var css=_72.convertCssArg(_be.css);var _c4=getFilters(_be.filters);var _c5=(_be.forceClear==null)?_3b.forceClear:_be.forceClear;var _c6=(_be.fitExactly==null)?_3b.fitExactly:_be.fitExactly;var _c7=_c6||(_be.forceWidth==null?_3b.forceWidth:_be.forceWidth);var _c8=parseInt(_72.extractFromCss(css,".sIFR-root","leading"))||0;var _c9=_72.extractFromCss(css,".sIFR-root","font-size",true)||0;var _ca=_72.extractFromCss(css,".sIFR-root","background-color",true)||"#FFFFFF";var _cb=_72.extractFromCss(css,".sIFR-root","kerning",true)||"";var _cc=_be.gridFitType||_72.extractFromCss(css,".sIFR-root","text-align")=="right"?"subpixel":"pixel";var _cd=_3b.forceTextTransform?_72.extractFromCss(css,".sIFR-root","text-transform",true)||"none":"none";var _ce=_72.extractFromCss(css,".sIFR-root","opacity",true)||"100";var _cf=_be.pixelFont||false;var _d0=_be.ratios||_48;if(parseInt(_c9).toString()!=_c9&&_c9.indexOf("px")==-1){_c9=0}else{_c9=parseInt(_c9)}if(parseFloat(_ce)<1){_ce=100*parseFloat(_ce)}var _d1=null;var _d2="";if(_c6){_72.extractFromCss(css,".sIFR-root","text-align",true)}if(!_be.modifyCss){_d2=_72.cssToString(css);_d1=_3b.fixHover&&_d2.indexOf("%3Ahover")>-1}var _d3=!ua.opera&&_3b.delayCss;var _d4=_be.wmode||"";if(!_d4){if(_be.transparent){_d4="transparent"}else{if(_be.opaque){_d4="opaque"}}}if(_d4=="transparent"){if(!ua.transparencySupport){_d4="opaque"}else{_ca="transparent"}}for(var i=0;i<_c1.length;i++){var _d6=_c1[i];if(!ua.verifiedKonqueror){if(dom.getComputedStyle(_d6,"lineHeight").match(/e\+08px/)){ua.supported=_3b.isEnabled=false;this.removeFlashClass();return}ua.verifiedKonqueror=true}if(dom.hasOneOfClassses([_3d,_3e,_40,_41],_d6)){continue}var _d7=_d6.offsetHeight;var _d8=_d6.offsetWidth;var _d9=dom.getComputedStyle(_d6,"display");if(!_d7||!_d8||_d9==null||_d9=="none"){continue}if(_c5&&ua.gecko){_d6.style.clear="both"}var _da=null;if(_3b.fixWrap&&ua.ie&&_d9=="block"){_da=_d6.innerHTML;dom.setInnerHtml(_d6,"X")}_d8=dom.getStyleAsInt(_d6,"width",ua.ie);if(_d8==0){var _db=dom.getStyleAsInt(_d6,"paddingRight",true);var _dc=dom.getStyleAsInt(_d6,"paddingLeft",true);var _dd=dom.getStyleAsInt(_d6,"borderRightWidth",true);var _de=dom.getStyleAsInt(_d6,"borderLeftWidth",true);_d8=_d6.offsetWidth-_dc-_db-_de-_dd}if(_da&&_3b.fixWrap&&ua.ie){dom.setInnerHtml(_d6,_da)}var _df,_e0;if(!_c9){var _e1=calculate(_d6);_df=Math.min(_45,Math.max(_44,_e1.lineHeight));if(_cf){_df=Math.max(8,8*Math.round(_df/8))}_e0=_e1.lines;if(isNaN(_e0)||!isFinite(_e0)||_e0==0){_e0=1}if(_e0>1&&_c8){_d7+=Math.round((_e0-1)*_c8)}}else{_df=_c9;_e0=1}_d7=Math.round(_e0*_df);if(_c5&&ua.gecko){_d6.style.clear=""}var _e2=dom.create("span");_e2.className=_41;var _e3=_d6.cloneNode(true);for(var j=0,l=_e3.childNodes.length;j<l;j++){_e2.appendChild(_e3.childNodes[j].cloneNode(true))}if(_be.modifyContent){_be.modifyContent(_e3,_be.selector)}if(_be.modifyCss){_d2=_be.modifyCss(css,_e3,_be.selector)}if(_d1==null){_d1=_3b.fixHover&&_d2.indexOf("%3Ahover")>-1}var _e6=handleContent(_e3,_cd);if(_be.modifyContentString){_e6=_be.modifyContentString(_e6,_be.selector)}if(_e6==""){continue}var _e7=["content="+_e6,"width="+_d8,"height="+_d7,"fitexactly="+(_c6?"true":""),"tunewidth="+(_be.tuneWidth||""),"tuneheight="+(_be.tuneHeight||""),"offsetleft="+(_be.offsetLeft||""),"offsettop="+(_be.offsetTop||""),"thickness="+(_be.thickness||""),"sharpness="+(_be.sharpness||""),"kerning="+_cb,"gridfittype="+_cc,"zoomsupport="+ua.zoomSupport,"flashfilters="+_c4,"opacity="+_ce,"blendmode="+(_be.blendMode||""),"size="+_df,"zoom="+dom.getZoom(),"css="+_d2,"selectable="+(_be.selectable==null?"true":_be.selectable),"lines="+_e0];var _e8=encodeURI(_e7.join("&amp;"));var _e9="sIFR_callback_"+_4a++;var _ea=new CallbackInfo(_e9,_e7,_be.onReplacement,_d1);window[_e9+"_DoFSCommand"]=(function(_eb){return function(_ec,arg){_eb.handle(_ec,arg)}})(_ea);_d7=Math.round(_e0*getRatio(_df,_d0)*_df)+_49;var _ee=_c7?_d8:"100%";var _ef;if(ua.ie){_ef=["<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" id=\"",_e9,"\" sifr=\"true\" width=\"",_ee,"\" height=\"",_d7,"\" class=\"",_3f,"\">","<param name=\"movie\" value=\"",src,"\"></param>","<param name=\"flashvars\" value=\"",_e8,"\"></param>","<param name=\"allowScriptAccess\" value=\"always\"></param>","<param name=\"quality\" value=\"best\"></param>","<param name=\"wmode\" value=\"",_d4,"\"></param>","<param name=\"bgcolor\" value=\"",_ca,"\"></param>","<param name=\"name\" value=\"",_e9,"\"></param>","</object>","<scr","ipt event=FSCommand(info,args) for=",_e9,">",_e9,"_DoFSCommand(info, args);","</","script>"].join("")}else{_ef=["<embed type=\"application/x-shockwave-flash\"",(_d3?" class=\""+_3f+"\"":"")," src=\"",src,"\" quality=\"best\" flashvars=\"",_e8,"\" width=\"",_ee,"\" height=\"",_d7,"\" wmode=\"",_d4,"\" bgcolor=\"",_ca,"\" name=\"",_e9,"\" id=\"",_e9,"\" allowScriptAccess=\"always\" sifr=\"true\"></embed>"].join("")}dom.setInnerHtml(_d6,_ef);_ea.flashNode=_d6.firstChild;_ea.html=_ef;_3b.callbacks.push(_ea);if(_be.selector){if(!_3b.callbacks[_be.selector]){_3b.callbacks[_be.selector]=[_ea]}else{_3b.callbacks[_be.selector].push(_ea)}}_d6.appendChild(_e2);dom.addClass(_d3?_3e:_3d,_d6);_ea.setupFixHover()}_66.fragmentIdentifier.restore()};this.getCallbackByFlashElement=function(_f0){for(var i=0;i<_3b.callbacks.length;i++){if(_3b.callbacks[i].id==_f0.getAttribute("id")){return _3b.callbacks[i]}}};function handleContent(_f2,_f3){var _f4=[],_f5=[];var _f6=_f2.childNodes;var i=0;while(i<_f6.length){var _f8=_f6[i];if(_f8.nodeType==3){var _f9=_72.normalize(_f8.nodeValue);_f9=_72.textTransform(_f3,_f9);_f5.push(_f9.replace(/\%/g,"%25").replace(/\&/g,"%26").replace(/\,/g,"%2C").replace(/\+/g,"%2B"))}if(_f8.nodeType==1){var _fa=[];var _fb=_f8.nodeName.toLowerCase();var _fc=_f8.className||"";if(/\s+/.test(_fc)){if(_fc.indexOf(_42)>-1){_fc=_fc.match("(\\s|^)"+_42+"-([^\\s$]*)(\\s|$)")[2]}else{_fc=_fc.match(/^([^\s]+)/)[1]}}if(_fc!=""){_fa.push("class=\""+_fc+"\"")}if(_fb=="a"){var _fd=_f8.getAttribute("href")||"";var _fe=_f8.getAttribute("target")||"";_fa.push("href=\""+_fd+"\"","target=\""+_fe+"\"")}_f5.push("<"+_fb+(_fa.length>0?" ":"")+escape(_fa.join(" "))+">");if(_f8.hasChildNodes()){_f4.push(i);i=0;_f6=_f8.childNodes;continue}else{if(!/^(br|img)$/i.test(_f8.nodeName)){_f5.push("</",_f8.nodeName.toLowerCase(),">")}}}if(_f4.length>0&&!_f8.nextSibling){do{i=_f4.pop();_f6=_f8.parentNode.parentNode.childNodes;_f8=_f6[i];if(_f8){_f5.push("</",_f8.nodeName.toLowerCase(),">")}}while(i==_f6.length-1&&_f4.length>0)}i++}return _f5.join("").replace(/\n|\r/g,"")}function CallbackInfo(id,vars,_101,_102){this.id=id;this.vars=vars;this._replacementHandler=_101;this._firedReplacementEvent=!(this._replacementHandler!=null);this._fixHover=_102;this._setClasses=!_3b.delayCss;this.html="";this._pings=0}CallbackInfo.prototype.getFlashElement=function(){return document.getElementById(this.id)};CallbackInfo.prototype.handle=function(info,arg){if(/(FSCommand\:)?resize/.test(info)){var _105=this.getFlashElement();var $=arg.split(/\:|,/);_105.setAttribute($[0],$[1]);if($.length>2){_105.setAttribute($[2],$[3])}if(!this._setClasses){if(!ua.ie&&!ua.opera){dom.addClass(_3f,_105)}dom.removeClass(_3e,_105.parentNode);dom.addClass(_3d,_105.parentNode);this._setClasses=true}if(ua.khtml){var _107=_105.offsetHeight}if(!this._firedReplacementEvent){this._replacementHandler(this);this._firedReplacementEvent=true}}else{if(/(FSCommand\:)?resetmovie/.test(info)){this.resetMovie()}else{if(/(FSCommand\:)?ping/.test(info)){if(this._pings>0){this.setupFixHover()}this._pings++}else{if(this.debugHandler&&/(FSCommand\:)?debug/.test(info)){this.debugHandler(info,arg)}}}}};CallbackInfo.prototype.call=function(type,_109){var _10a=this.getFlashElement();if(!_10a){return}_10a.SetVariable("callbackType",type);_10a.SetVariable("callbackValue",_109);_10a.SetVariable("callbackTrigger",true)};CallbackInfo.prototype.replaceText=function(_10b){_10b=escape(_10b);this.call("replacetext",_10b);this.vars[0]="content="+_10b;this.html=this.html.replace(/(flashvars(=|\"\svalue=)\")[^\"]+/,"$1"+encodeURI(this.vars.join("&amp;")))};CallbackInfo.prototype.resetMovie=function(){var _10c=this.getFlashElement();var node=_10c.parentNode;node.replaceChild(dom.nodeFromHtml(this.html),_10c);this.setupFixHover()};CallbackInfo.prototype.setupFixHover=function(){var _10e=this.getFlashElement();if(!this._fixHover||!_10e){return}var node=_10e.parentNode;if(node.addEventListener){node.addEventListener("mouseout",_72.bind(this,"fixHover"),false)}else{if(node.attachEvent){node.attachEvent("onmouseout",_72.bind(this,"fixHover"))}}};CallbackInfo.prototype.fixHover=function(){this.call("resettext")}}; \ No newline at end of file
diff --git a/3rdparty/simplepie/demo/for_the_demo/simplepie.css b/3rdparty/simplepie/demo/for_the_demo/simplepie.css
deleted file mode 100755
index 3753cb96d..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/simplepie.css
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
-Theme Name: SimplePie
-Theme URI: http://simplepie.org
-Description: A simple, yet beautiful theme inspired by several cleanly designed websites.
-Version: 1.4
-Author: Ryan Parman
-Author URI: http://skyzyx.com
-Updated: 21 June 2007
-*/
-
-
-/*********************************************
-HYPERLINK STYLES
-*********************************************/
-a {
- color:#369;
- text-decoration:underline;
- padding:0 1px;
-}
-
-a:hover {
- color:#fff !important;
- background-color:#333;
- text-decoration:none;
- padding:0 1px;
-}
-
-a.nohover {
- text-decoration:none;
- border:none;
-}
-
-a.nohover:hover {
- background-color:transparent;
- border:none;
-}
-
-a.namelink {
- padding:0;
- margin:0;
- overflow:hidden;
- height:1px;
-}
-
-h4 a,
-.sample_feeds a {
- color:#000;
-}
-
-
-/*********************************************
-GENERAL STYLES
-*********************************************/
-body {
- /*font:12px/18px Verdana, sans-serif;*/
- font:14px/1.5em "Lucida Grande", Tahoma, sans-serif;
- letter-spacing:0px;
- color:#333;
- background-color:#fff;
- margin:0;
- padding:0;
-}
-
-div#site {
- width:600px;
- margin:50px auto 0 auto;
-}
-
-h1#logo {
- margin:0;
- padding:0;
- text-align:center;
-}
-
-h1#logo a,
-h1#logo a:hover {
- background-color:transparent;
- text-decoration:none;
- padding:0;
-}
-
-h2.image {
- margin:0;
- padding:0;
- text-align:center;
-}
-
-h3 {
- margin:20px 0 0 0;
- padding:0;
- font-size:1.5em;
-}
-
-h4 {
- margin:20px 0 0 0;
- padding:0;
- font-size:1.2em;
- letter-spacing:-1px;
-}
-
-h5 {
- margin:10px 0 0 0;
- padding:0;
- font-size:1em;
- font-weight:bold;
-}
-
-em {
- font-style:normal;
- background-color:#ffc;
-}
-
-p {
- margin:0;
- padding:5px 0;
-}
-
-ul, ol {
- margin:10px 0 10px 20px;
- padding:0 0 0 15px;
-}
-
-ul li, ol li {
- margin:0 0 7px 0;
- padding:0 0 0 3px;
-}
-
-form {
- margin:0;
- padding:0;
-}
-
-code {
- font-size:1em;
- background-color:#f3f3ff;
- color:#000;
-}
-
-div#site pre {
- background-color:#f3f3ff;
- color:#000080;
- border:1px dotted #000080;
- overflow:auto;
- padding:3px 5px;
-}
-
-blockquote {
- font-size:1em;
- color:#666;
- border-left:4px solid #666;
- margin:10px 0 10px 30px;
- padding:0 5px 0 10px;
- background:#f3f3f3 url(background_blockquote.png) repeat top left;
-}
-
-input, select, textarea {
- font-size:12px;
- line-height:1.2em;
- padding:2px;
-}
-
-input[type=text], select, textarea {
- background-color:#e9f5ff;
- border:1px solid #333;
-}
-
-input[type=text]:focus, select:focus, textarea:focus {
- background-color:#ffe;
-}
-
-.clearLeft {clear:left;}
-.clearRight {clear:right;}
-.clearBoth {clear:both;}
-.hide {display:none;}
-
-
-/*********************************************
-NAVIGATION STYLES
-*********************************************/
-div#header {
- background:#fff url(top_gradient.gif) repeat-x top left;
- margin:0;
- padding:0;
-}
-
-div#header form {
- margin:0;
- padding:0;
-}
-
-div#header div#headerInner {
- margin:0;
- padding:0;
-}
-
-div#header div#headerInner div#logoContainer {}
-
-div#header div#headerInner div#logoContainerInner {
- width:550px;
- margin:0 auto;
- padding:20px;
-}
-
-div#header div#headerInner div#logoContainer div#logo {
- float:left;
- width:200px;
-}
-
-div#header div#headerInner div#logoContainer div#logo a,
-div#header div#headerInner div#logoContainer div#logo a:hover {
- border:none;
- background:none;
-}
-
-div#header div#headerInner div#logoContainer div#feed {
- float:right;
- width:300px;
- text-align:right;
- padding:10px 0 0 0;
-}
-
-div#header div#headerInner div#logoContainer div#feed input.text {
- width:60%;
-}
-
-div#header div#headerInner div#menu {
- background:#eee url(background_menuitem_shadow.gif) repeat-x top left;
- border-top:2px solid #ccc;
- border-bottom:1px solid #ddd;
- text-align:center;
-}
-
-div#header div#headerInner div#menu table {
- width:auto;
- margin:0 auto;
-}
-
-div#header div#headerInner div#menu ul {
- display:block;
- width:100%;
- margin:0 auto;
- padding:0;
- font-size:12px;
-}
-
-div#header div#headerInner div#menu ul li {
- display:block;
- float:left;
-}
-
-div#header div#headerInner div#menu ul li a {
- display:block;
- margin:-2px 0 0 0;
- padding:5px 7px 8px 7px;
- text-decoration:none;
- color:#666 !important;
- background-color:transparent;
-}
-
-div#header div#headerInner div#menu ul li a:hover {
- display:block;
- margin:-2px 0 0 0;
- padding:5px 7px 8px 7px;
- text-decoration:none;
- color:#666;
- background:#fff url(background_menuitem_off.gif) no-repeat bottom right;
-}
-
-body#bodydemo div#header div#headerInner div#menu ul li#demo a {
- display:block;
- margin:-2px 0 0 0;
- padding:5px 7px 8px 7px;
- text-decoration:none;
- color:#333;
- font-weight:bold;
- background:#fff url(background_menuitem.gif) no-repeat bottom right;
-}
-
-
-/*********************************************
-CONTENT STYLES
-*********************************************/
-div.chunk {
- margin:20px 0 0 0;
- padding:0 0 10px 0;
- border-bottom:1px solid #ccc;
-}
-
-div.topchunk {
- margin:0 !important;
-}
-
-.footnote,
-.footnote a {
- font-size:12px;
- line-height:1.3em;
- color:#aaa;
-}
-
-.footnote em {
- background-color:transparent;
- font-style:italic;
-}
-
-.footnote code {
- background-color:transparent;
- font:11px/14px monospace;
- color:#aaa;
-}
-
-p.subscribe {
- background-color:#f3f3f3;
- font-size:12px;
- text-align:center;
-}
-
-p.highlight {
- background-color:#ffc;
- font-size:12px;
- text-align:center;
-}
-
-p.sample_feeds {
- font-size:12px;
- line-height:1.2em;
-}
-
-div.sp_errors {
- background-color:#eee;
- padding:5px;
- text-align:center;
- font-size:12px;
-}
-
-.noborder {
- border:none !important;
-}
-
-img.favicon {
- margin:0 4px -2px 0;
- width:16px;
- height:16px;
-}
-
-p.favicons a,
-p.favicons a:hover {
- border:none;
- background-color:transparent;
-}
-
-p.favicons img {
- border:none;
-}
-
-
-/*********************************************
-DEMO STYLES
-*********************************************/
-div#sp_input {
- background-color:#ffc;
- border:2px solid #f90;
- padding:5px;
- text-align:center;
-}
-
-div#sp_input input.text {
- border:1px solid #999;
- background:#e9f5ff url(feed.png) no-repeat 4px 50%;
- width:75%;
- padding:2px 2px 2px 28px;
- font:18px/22px "Lucida Grande", Verdana, sans-serif;
- font-weight:bold;
- letter-spacing:-1px;
-}
-
-form#sp_form {
- margin:15px 0;
-}
-
-div.focus {
- margin:0;
- padding:10px 20px;
- background-color:#efe;
-}
-
-p.sample_feeds {
- text-align:justify;
-}
-
-
-/*********************************************
-SIFR STYLES
-*********************************************/
-.sIFR-active h3.header {
- visibility:hidden;
- line-height:1em;
-}
diff --git a/3rdparty/simplepie/demo/for_the_demo/sleight.js b/3rdparty/simplepie/demo/for_the_demo/sleight.js
deleted file mode 100755
index 4b5058e9a..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/sleight.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**********************************************************
-Sleight
-(c) 2001, Aaron Boodman
-http://www.youngpup.net
-**********************************************************/
-
-if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent)
-{
- document.writeln('<style type="text/css">img { visibility:hidden; } </style>');
- window.attachEvent("onload", fnLoadPngs);
-}
-
-function fnLoadPngs()
-{
- var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
- var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
-
- for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--)
- {
- if (itsAllGood && img.src.match(/\.png$/i) != null)
- {
- var src = img.src;
- var div = document.createElement("DIV");
- div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')"
- div.style.width = img.width + "px";
- div.style.height = img.height + "px";
- img.replaceNode(div);
- }
- img.style.visibility = "visible";
- }
-}
diff --git a/3rdparty/simplepie/demo/for_the_demo/source_files/place_audio_fireworksfile.png b/3rdparty/simplepie/demo/for_the_demo/source_files/place_audio_fireworksfile.png
deleted file mode 100755
index 2bfd87d0c..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/source_files/place_audio_fireworksfile.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/source_files/place_video_fireworksfile.png b/3rdparty/simplepie/demo/for_the_demo/source_files/place_video_fireworksfile.png
deleted file mode 100755
index d0629769c..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/source_files/place_video_fireworksfile.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/SifrStyleSheet.as b/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/SifrStyleSheet.as
deleted file mode 100755
index 6a98ca552..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/SifrStyleSheet.as
+++ /dev/null
@@ -1,71 +0,0 @@
-/*=:project
- scalable Inman Flash Replacement (sIFR) version 3.
-
- =:file
- Copyright: 2006 Mark Wubben.
- Author: Mark Wubben, <http://novemberborn.net/>
-
- =:history
- * IFR: Shaun Inman
- * sIFR 1: Mike Davidson, Shaun Inman and Tomas Jogin
- * sIFR 2: Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben
-
- =:license
- This software is licensed and provided under the CC-GNU LGPL.
- See <http://creativecommons.org/licenses/LGPL/2.1/>
-*/
-
-import TextField.StyleSheet;
-
-class SifrStyleSheet extends TextField.StyleSheet {
- public var fontSize;
- public var latestLeading = 0;
-
- public function parseCSS(cssText:String) {
- var native = new TextField.StyleSheet();
- var parsed = native.parseCSS(cssText);
-
- if(!parsed) return false;
-
- var selectors = native.getStyleNames();
- for(var i = selectors.length - 1; i >= 0; i--) {
- var selector = selectors[i];
- var nativeStyle = native.getStyle(selector);
- var style = this.getStyle(selector) || nativeStyle;
- if(style != nativeStyle) {
- for(var property in nativeStyle) style[property] = nativeStyle[property];
- }
- this.setStyle(selector, style);
- }
-
- return true;
- }
-
- // Apply leading to the textFormat. Much thanks to <http://www.blog.lessrain.com/?p=98>.
- private function applyLeading(format, leading) {
- this.latestLeading = leading;
-
- if(leading >= 0) {
- format.leading = leading;
- return format;
- }
-
- // Workaround for negative leading, which is ignored otherwise.
- var newFormat = new TextFormat(null, null, null, null, null, null, null, null, null, null, null, null, leading);
- for(var property in format) if(property != 'leading') newFormat[property] = format[property];
-
- return newFormat;
- }
-
- public function transform(style) {
- var format = super.transform(style);
- if(style.leading) format = applyLeading(format, style.leading);
- if(style.letterSpacing) format.letterSpacing = style.letterSpacing;
- // Support font sizes relative to the size of .sIFR-root.
- if(this.fontSize && style.fontSize && style.fontSize.indexOf('%')) {
- format.size = this.fontSize * parseInt(style.fontSize) / 100;
- }
- format.kerning = _root.kerning == 'true' || !(_root.kerning == 'false') || sIFR.defaultKerning;
- return format;
- }
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/_README_.txt b/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/_README_.txt
deleted file mode 100755
index 2b9d32d20..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/_README_.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-This is a pre-release nightly of sIFR 3 (r245 to be exact). We (the SimplePie team) will be updating the
-sIFR code and font files from time to time as new releases of sIFR 3 are made available.
-
-In this folder you'll find a few Flash 8 files. The only one of you might want to mess with is sifr.fla.
- * Open it up
- * Double-click the rectangle in the middle
- * Select all
- * Change the font
-
-More information about sIFR 3 can be found here:
- * http://dev.novemberborn.net/sifr3/
- * http://wiki.novemberborn.net/sifr3/ \ No newline at end of file
diff --git a/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/options.as b/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/options.as
deleted file mode 100755
index 4d371954b..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/options.as
+++ /dev/null
@@ -1,12 +0,0 @@
-// MTASC only parses as-files with class definitions, so here goes...
-class Options {
- public static function apply() {
- sIFR.fromLocal = true;
- sIFR.domains = ['*'];
-
- // Parsing `p.foo` might not work, see: <http://livedocs.macromedia.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flash_MX_2004&file=00001766.html>
- // Appearantly you have to use hex color codes as well, names are not supported!
-
- sIFR.styles.parseCSS('.foo { text-decoration: underline; }');
- }
-}
diff --git a/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/sIFR.as b/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/sIFR.as
deleted file mode 100755
index 4902e003f..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/sIFR.as
+++ /dev/null
@@ -1,359 +0,0 @@
-/*=:project
- scalable Inman Flash Replacement (sIFR) version 3.
-
- =:file
- Copyright: 2006 Mark Wubben.
- Author: Mark Wubben, <http://novemberborn.net/>
-
- =:history
- * IFR: Shaun Inman
- * sIFR 1: Mike Davidson, Shaun Inman and Tomas Jogin
- * sIFR 2: Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben
-
- =:license
- This software is licensed and provided under the CC-GNU LGPL.
- See <http://creativecommons.org/licenses/LGPL/2.1/>
-*/
-
-import SifrStyleSheet;
-
-class sIFR {
- public static var DEFAULT_TEXT = 'Rendered with sIFR 3, revision 245';
- public static var CSS_ROOT_CLASS = 'sIFR-root';
- public static var DEFAULT_WIDTH = 300;
- public static var DEFAULT_HEIGHT = 100;
- public static var DEFAULT_ANTI_ALIAS_TYPE = 'advanced';
- public static var MARGIN_LEFT = -3;
- public static var PADDING_BOTTOM = 5; // Extra padding to make sure the movie is high enough in most cases.
- public static var LEADING_REMAINDER = 2; // Flash uses the specified leading minus 2 as the applied leading.
-
- public static var MAX_FONT_SIZE = 126;
- public static var ALIASING_MAX_FONT_SIZE = 48;
-
- //= Holds CSS properties and other rendering properties for the Flash movie.
- // *Don't overwrite!*
- public static var styles:SifrStyleSheet = new SifrStyleSheet();
- //= Allow sIFR to be run from localhost
- public static var fromLocal:Boolean = true;
- //= Array containing domains for which sIFR may render text. Used to prevent
- // hotlinking. Use `*` to allow all domains.
- public static var domains:Array = [];
- //= Whether kerning is enabled by default. This can be overriden from the client side.
- // See also <http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002811.html>.
- public static var defaultKerning:Boolean = true;
- //= Default value which can be overriden from the client side.
- // See also <http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002788.html>.
- public static var defaultSharpness:Number = 0;
- //= Default value which can be overriden from the client side.
- // See also <http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002787.html>.
- public static var defaultThickness:Number = 0;
- //= Default value which can be overriden from the client side.
- // See also <http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002732.html>.
- public static var defaultOpacity:Number = -1; // Use client settings
- //= Default value which can be overriden from the client side.
- // See also <http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002788.html>.
- public static var defaultBlendMode:Number = -1; // Use cliest settings
- //= Overrides the grid fit type as defined on the client side.
- // See also <http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002444.html>.
- public static var enforcedGridFitType:String = null;
- //= If `true` sIFR won't override the anti aliasing set in the Flash IDE when exporting.
- // Thickness and sharpness won't be affected either.
- public static var preserveAntiAlias:Boolean = false;
- //= If `true` sIFR will disable anti-aliasing if the font size is larger than `ALIASING_MAX_FONT_SIZE`.
- // This setting is *independent* from `preserveAntiAlias`.
- public static var conditionalAntiAlias:Boolean = true;
- //= Sets the anti alias type. By default it's `DEFAULT_ANTI_ALIAS_TYPE`.
- // See also <http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002733.html>.
- public static var antiAliasType:String = null;
- //= Flash filters can be added to this array and will be applied to the text field.
- public static var filters:Array = [];
- //= A mapping from the names of the filters to their actual objecs, used when transforming
- // filters defined on the client. You can add additional filters here so they'll be supported
- // when defined on the client.
- public static var filterMap:Object = {
- DisplacementMapFilter : flash.filters.DisplacementMapFilter,
- ColorMatrixFilter : flash.filters.ColorMatrixFilter,
- ConvolutionFilter : flash.filters.ConvolutionFilter,
- GradientBevelFilter : flash.filters.GradientBevelFilter,
- GradientGlowFilter : flash.filters.GradientGlowFilter,
- BevelFilter : flash.filters.BevelFilter,
- GlowFilter : flash.filters.GlowFilter,
- BlurFilter : flash.filters.BlurFilter,
- DropShadowFilter : flash.filters.DropShadowFilter
- };
-
- private static var instance;
-
- private var textField;
- private var content;
- private var realHeight;
- private var originalHeight;
- private var currentHeight;
- private var fontSize;
- private var tuneWidth;
- private var tuneHeight;
-
-
-
- //= Sets the default styles for `sIFR.styles`. This method is called
- // directly in `sifr.fla`, before options are applied.
- public static function setDefaultStyles() {
- sIFR.styles.parseCSS([
- '.', CSS_ROOT_CLASS, ' { color: #000000; }',
- 'strong { display: inline; font-weight: bold; } ',
- 'em { display: inline; font-style: italic; }',
- 'a { color: #0000FF; text-decoration: underline; }',
- 'a:hover { color: #0000FF; text-decoration: none; }'
- ].join(''));
- }
-
- //= Validates the domain sIFR is being used on.
- // Returns `true` if the domain is valid, `false` otherwise.
- public static function checkDomain():Boolean {
- if(sIFR.domains.length == 0) return true;
-
- var domain = (new LocalConnection()).domain();
- if(sIFR.fromLocal) sIFR.domains.push('localhost');
-
- for(var i = 0; i < sIFR.domains.length; i++) {
- var match = sIFR.domains[i];
- if(match == '*' || match == domain) return true;
-
- var wildcard = match.lastIndexOf('*');
- if(wildcard > -1) {
- match = match.substr(wildcard + 1);
- var matchPosition = domain.lastIndexOf(match);
- if(matchPosition > -1 && (matchPosition + match.length) == domain.length) return true;
- }
- }
-
- return false;
- }
-
- //= Runs sIFR. Called automatically.
- public static function run() {
- var holder = _root.holder;
- var content = checkDomain() ? unescape(_root.content) : DEFAULT_TEXT
- if(content == 'undefined' || content == '') {
- content = DEFAULT_TEXT;
- fscommand('resetmovie', '');
- } else fscommand('ping', '');
-
- // Sets stage parameters
- Stage.scaleMode = 'noscale';
- Stage.align = 'TL';
- Stage.showMenu = false;
-
- // Other parameters
- var opacity = parseInt(_root.opacity);
- if(!isNaN(opacity)) holder._alpha = sIFR.defaultOpacity == -1 ? opacity : sIFR.defaultOpacity;
- else holder._alpha = 100;
- _root.blendMode = sIFR.defaultBlendMode == -1 ? _root.blendmode : sIFR.defaultBlendMode;
-
- sIFR.instance = new sIFR(holder.txtF, content);
- // This should ignore resizes from the callback. Disabled for now.
-/* if(_root.zoomsupport == 'true') Stage.addListener({onResize: function() { sIFR.instance.scale() }});*/
-
- // Setup callbacks
- _root.watch('callbackTrigger', function() {
- sIFR.callback();
- return false;
- });
- }
-
- private static function eval(str) {
- var as;
-
- if(str.charAt(0) == '{') { // Ah, we need to create an object
- as = {};
- str = str.substring(1, str.length - 1);
- var $ = str.split(',');
- for(var i = 0; i < $.length; i++) {
- var $1 = $[i].split(':');
- as[$1[0]] = sIFR.eval($1[1]);
- }
- } else if(str.charAt(0) == '"') { // String
- as = str.substring(1, str.length - 1);
- } else if(str == 'true' || str == 'false') { // Boolean
- as = str == 'true';
- } else { // Float
- as = parseFloat(str);
- }
-
- return as;
- }
-
- private function applyFilters() {
- var $filters = this.textField.filters;
- $filters = $filters.concat(sIFR.filters);
-
- var $ = _root.flashfilters.split(';'); // name,prop:value,...;
- for(var i = 0; i < $.length; i++) {
- var $1 = $[i].split(',');
-
- var newFilter = new sIFR.filterMap[$1[0]]();
- for(var j = 1; j < $1.length; j++) {
- var $2 = $1[j].split(':');
- newFilter[$2[0]] = sIFR.eval(unescape($2[1]));
- }
-
- $filters.push(newFilter);
- }
-
- this.textField.filters = $filters;
- }
-
- private function sIFR(textField, content) {
- this.textField = textField;
- this.content = content;
-
- var offsetLeft = parseInt(_root.offsetleft);
- textField._x = MARGIN_LEFT + (isNaN(offsetLeft) ? 0 : offsetLeft);
- var offsetTop = parseInt(_root.offsettop);
- if(!isNaN(offsetTop)) textField._y += offsetTop;
-
- tuneWidth = parseInt(_root.tunewidth);
- if(isNaN(tuneWidth)) tuneWidth = 0;
- tuneHeight = parseInt(_root.tuneheight);
- if(isNaN(tuneHeight)) tuneHeight = 0;
-
- textField._width = tuneWidth + (isNaN(parseInt(_root.width)) ? DEFAULT_WIDTH : parseInt(_root.width));
- textField._height = tuneHeight + (isNaN(parseInt(_root.height)) ? DEFAULT_HEIGHT : parseInt(_root.height));
- textField.wordWrap = true;
- textField.selectable = _root.selectable == 'true';
- textField.gridFitType = sIFR.enforcedGridFitType || _root.gridfittype;
- this.applyFilters();
-
- // Determine font-size and the number of lines
- this.fontSize = parseInt(_root.size);
- if(isNaN(this.fontSize)) this.fontSize = 26;
- styles.fontSize = this.fontSize;
-
- if(!sIFR.preserveAntiAlias && (sIFR.conditionalAntiAlias && this.fontSize < ALIASING_MAX_FONT_SIZE
- || !sIFR.conditionalAntiAlias)) {
- textField.antiAliasType = sIFR.antiAliasType || DEFAULT_ANTI_ALIAS_TYPE;
- }
-
- if(!sIFR.preserveAntiAlias || !isNaN(parseInt(_root.sharpness))) {
- textField.sharpness = parseInt(_root.sharpness);
- }
- if(isNaN(textField.sharpness)) textField.sharpness = sIFR.defaultSharpness;
-
- if(!sIFR.preserveAntiAlias || !isNaN(parseInt(_root.thickness))) {
- textField.thickness = parseInt(_root.thickness);
- }
- if(isNaN(textField.thickness)) textField.thickness = sIFR.defaultThickness;
-
- // Set font-size and other styles
- sIFR.styles.parseCSS(unescape(_root.css));
-
- var rootStyle = styles.getStyle('.sIFR-root') || {};
- rootStyle.fontSize = this.fontSize; // won't go higher than 126!
- styles.setStyle('.sIFR-root', rootStyle);
- textField.styleSheet = styles;
-
- this.write(content);
- this.repaint();
- }
-
- private function repaint() {
- var leadingFix = this.isSingleLine() ? sIFR.styles.latestLeading : 0;
- if(leadingFix > 0) leadingFix -= LEADING_REMAINDER;
-
- // Flash wants to scroll the movie by one line, by adding the fontSize to the
- // textField height this is no longer happens. We also add the absolute tuneHeight,
- // to prevent a negative value from triggering the bug. We won't send the fake
- // value to the JavaScript side, though.
- textField._height = textField.textHeight + PADDING_BOTTOM + this.fontSize + Math.abs(tuneHeight) + tuneHeight - leadingFix;
- this.realHeight = textField._height - this.fontSize - Math.abs(tuneHeight);
- var arg = 'height:' + this.realHeight;
- if(_root.fitexactly == 'true') arg += ',width:' + (textField.textWidth + tuneWidth);
- fscommand('resize', arg);
-
- this.originalHeight = textField._height;
- this.currentHeight = Stage.height;
-
- textField._xscale = textField._yscale = parseInt(_root.zoom);
- }
-
- private function write(content) {
- this.textField.htmlText = ['<p class="', CSS_ROOT_CLASS, '">',
- content, '</p>'
- ].join('');
- }
-
- private function isSingleLine() {
- return Math.round((this.textField.textHeight - sIFR.styles.latestLeading) / this.fontSize) == 1;
- }
-
- //= Scales the text field to the new scale of the Flash movie itself.
- public function scale() {
- this.currentHeight = Stage.height;
- var scale = 100 * Math.round(this.currentHeight / this.originalHeight);
- textField._xscale = textField._yscale = scale;
- }
-
- private function calculateRatios() {
- var strings = ['X', 'X<br>X', 'X<br>X<br>X', 'X<br>X<br>X<br>X'];
- var results = {};
-
- for(var i = 1; i <= strings.length; i++) {
- var size = 6;
-
- this.write(strings[i - 1]);
- while(size < MAX_FONT_SIZE) {
- var rootStyle = sIFR.styles.getStyle('.sIFR-root') || {};
- rootStyle.fontSize = size;
- sIFR.styles.setStyle('.sIFR-root', rootStyle);
- this.textField.styleSheet = sIFR.styles;
- this.repaint();
- var ratio = (this.realHeight - PADDING_BOTTOM) / i / size;
- if(!results[size]) results[size] = ratio;
- else results[size] = ((i - 1) * results[size] + ratio) / i;
- size++;
- }
- }
-
- var sizes = [], ratios = [];
- var ratiosToSizes = {}, sizesToRatios = {};
-
- for(var size in results) {
- if(results[size] == Object.prototype[size]) continue;
- var ratio = results[size];
- ratiosToSizes[ratio] = Math.max(ratio, parseInt(size));
- }
-
- for(var ratio in ratiosToSizes) {
- if(ratiosToSizes[ratio] == Object.prototype[ratio]) continue;
- sizesToRatios[ratiosToSizes[ratio]] = roundDecimals(ratio, 2);
- sizes.push(ratiosToSizes[ratio]);
- }
-
- sizes.sort(function(a, b) { return a - b; });
- for(var j = 0; j < sizes.length - 1; j++) ratios.push(sizes[j], sizesToRatios[sizes[j]]);
- ratios.push(sizesToRatios[sizes[sizes.length - 1]]);
-
- fscommand('debug:ratios', '[' + ratios.join(',') + ']');
- }
-
- private function roundDecimals(value, decimals) {
- return Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals);
- }
-
- public static function callback() {
- switch(_root.callbackType) {
- case 'replacetext':
- sIFR.instance.content = _root.callbackValue;
- sIFR.instance.write(_root.callbackValue);
- sIFR.instance.repaint();
- break;
- case 'resettext':
- sIFR.instance.write('');
- sIFR.instance.write(sIFR.instance.content);
- break;
- case 'ratios':
- sIFR.instance.calculateRatios();
- break;
- }
- }
-}
diff --git a/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/sifr.fla b/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/sifr.fla
deleted file mode 100755
index 2aa3f647f..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/source_files/sIFR-r245/sifr.fla
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/top_gradient.gif b/3rdparty/simplepie/demo/for_the_demo/top_gradient.gif
deleted file mode 100755
index f77bd38f9..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/top_gradient.gif
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/verdana.swf b/3rdparty/simplepie/demo/for_the_demo/verdana.swf
deleted file mode 100755
index baf035047..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/verdana.swf
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/for_the_demo/yanone-kaffeesatz-bold.swf b/3rdparty/simplepie/demo/for_the_demo/yanone-kaffeesatz-bold.swf
deleted file mode 100755
index c812a79dc..000000000
--- a/3rdparty/simplepie/demo/for_the_demo/yanone-kaffeesatz-bold.swf
+++ /dev/null
Binary files differ
diff --git a/3rdparty/simplepie/demo/index.php b/3rdparty/simplepie/demo/index.php
deleted file mode 100755
index 96cf5b6cd..000000000
--- a/3rdparty/simplepie/demo/index.php
+++ /dev/null
@@ -1,269 +0,0 @@
-<?php
-// Start counting time for the page load
-$starttime = explode(' ', microtime());
-$starttime = $starttime[1] + $starttime[0];
-
-// Include SimplePie
-// Located in the parent directory
-include_once('../autoloader.php');
-include_once('../idn/idna_convert.class.php');
-
-// Create a new instance of the SimplePie object
-$feed = new SimplePie();
-
-//$feed->force_fsockopen(true);
-
-if (isset($_GET['js']))
-{
- SimplePie_Misc::output_javascript();
- die();
-}
-
-// Make sure that page is getting passed a URL
-if (isset($_GET['feed']) && $_GET['feed'] !== '')
-{
- // Strip slashes if magic quotes is enabled (which automatically escapes certain characters)
- if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc())
- {
- $_GET['feed'] = stripslashes($_GET['feed']);
- }
-
- // Use the URL that was passed to the page in SimplePie
- $feed->set_feed_url($_GET['feed']);
-}
-
-// Allow us to change the input encoding from the URL string if we want to. (optional)
-if (!empty($_GET['input']))
-{
- $feed->set_input_encoding($_GET['input']);
-}
-
-// Allow us to choose to not re-order the items by date. (optional)
-if (!empty($_GET['orderbydate']) && $_GET['orderbydate'] == 'false')
-{
- $feed->enable_order_by_date(false);
-}
-
-// Trigger force-feed
-if (!empty($_GET['force']) && $_GET['force'] == 'true')
-{
- $feed->force_feed(true);
-}
-
-// Initialize the whole SimplePie object. Read the feed, process it, parse it, cache it, and
-// all that other good stuff. The feed's information will not be available to SimplePie before
-// this is called.
-$success = $feed->init();
-
-// We'll make sure that the right content type and character encoding gets set automatically.
-// This function will grab the proper character encoding, as well as set the content type to text/html.
-$feed->handle_content_type();
-
-// When we end our PHP block, we want to make sure our DOCTYPE is on the top line to make
-// sure that the browser snaps into Standards Mode.
-?><!DOCTYPE html>
-
-<html lang="en-US">
-<head>
-<title>SimplePie: Demo</title>
-
-<link rel="stylesheet" href="./for_the_demo/sIFR-screen.css" type="text/css" media="screen">
-<link rel="stylesheet" href="./for_the_demo/sIFR-print.css" type="text/css" media="print">
-<link rel="stylesheet" href="./for_the_demo/simplepie.css" type="text/css" media="screen, projector" />
-
-<script type="text/javascript" src="./for_the_demo/sifr.js"></script>
-<script type="text/javascript" src="./for_the_demo/sifr-config.js"></script>
-<script type="text/javascript" src="./for_the_demo/sleight.js"></script>
-<script type="text/javascript" src="?js"></script>
-
-</head>
-
-<body id="bodydemo">
-
-<div id="header">
- <div id="headerInner">
- <div id="logoContainer">
- <div id="logoContainerInner">
- <div align="center"><a href="http://simplepie.org"><img src="./for_the_demo/logo_simplepie_demo.png" alt="SimplePie Demo: PHP-based RSS and Atom feed handling" title="SimplePie Demo: PHP-based RSS and Atom feed handling" border="0" /></a></div>
- <div class="clearLeft"></div>
- </div>
-
- </div>
- <div id="menu">
- <!-- I know, I know, I know... tables for layout, I know. If a web standards evangelist (like me) has to resort
- to using tables for something, it's because no other possible solution could be found. This issue? No way to
- do centered floats purely with CSS. The table box model allows for a dynamic width while centered, while the
- CSS box model for DIVs doesn't allow for it. :( -->
- <table cellpadding="0" cellspacing="0" border="0"><tbody><tr><td>
-<ul><li id="demo"><a href="./">SimplePie Demo</a></li><li><a href="http://simplepie.org/wiki/faq/start">FAQ/Troubleshooting</a></li><li><a href="http://simplepie.org/support/">Support Forums</a></li><li><a href="http://simplepie.org/wiki/reference/start">API Reference</a></li><li><a href="http://simplepie.org/blog/">Weblog</a></li><li><a href="../test/test.php">Unit Tests</a></li></ul>
-
- <div class="clearLeft"></div>
- </td></tr></tbody></table>
- </div>
- </div>
-</div>
-
-<div id="site">
-
- <div id="content">
-
- <div class="chunk">
- <form action="" method="get" name="sp_form" id="sp_form">
- <div id="sp_input">
-
-
- <!-- If a feed has already been passed through the form, then make sure that the URL remains in the form field. -->
- <p><input type="text" name="feed" value="<?php if ($feed->subscribe_url()) echo $feed->subscribe_url(); ?>" class="text" id="feed_input" />&nbsp;<input type="submit" value="Read" class="button" /></p>
-
-
- </div>
- </form>
-
-
- <?php
- // Check to see if there are more than zero errors (i.e. if there are any errors at all)
- if ($feed->error())
- {
- // If so, start a <div> element with a classname so we can style it.
- echo '<div class="sp_errors">' . "\r\n";
-
- // ... and display it.
- echo '<p>' . htmlspecialchars($feed->error()) . "</p>\r\n";
-
- // Close the <div> element we opened.
- echo '</div>' . "\r\n";
- }
- ?>
-
- <!-- Here are some sample feeds. -->
- <p class="sample_feeds"><strong>Or try one of the following:</strong>
- <a href="?feed=http://www.詹姆斯.com/atomtests/iri/everything.atom" title="Test: International Domain Name support">詹姆斯.com</a>,
- <a href="?feed=http://www.adultswim.com/williams/podcast/tools/xml/video_rss.xml" title="Humor from the people who make [adult swim] cartoons.">adult swim</a>,
- <a href="?feed=http://afterdawn.com/news/afterdawn_rss.xml" title="Ripping, Burning, DRM, and the Dark Side of Consumer Electronics Media">Afterdawn</a>,
- <a href="?feed=http://feeds.feedburner.com/ajaxian" title="AJAX and Scripting News">Ajaxian</a>,
- <a href="?feed=http://www.andybudd.com/index.rdf&amp;image=true" title="Test: Bypass Image Hotlink Blocking">Andy Budd</a>,
- <a href="?feed=http://feeds.feedburner.com/AskANinja" title="Test: Embedded Enclosures">Ask a Ninja</a>,
- <a href="?feed=http://www.atomenabled.org/atom.xml" title="Test: Atom 1.0 Support">AtomEnabled.org</a>,
- <a href="?feed=http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml" title="World News">BBC News</a>,
- <a href="?feed=http://newsrss.bbc.co.uk/rss/arabic/news/rss.xml" title="Test: Windows-1256 Encoding">BBC Arabic</a>,
- <a href="?feed=http://newsrss.bbc.co.uk/rss/chinese/simp/news/rss.xml" title="Test: GB2312 Encoding">BBC China</a>,
- <a href="?feed=http://newsrss.bbc.co.uk/rss/russian/news/rss.xml" title="Test: Windows-1251 Encoding">BBC Russia</a>,
- <a href="?feed=http://inessential.com/xml/rss.xml" title="Developer of NetNewsWire">Brent Simmons</a>,
- <a href="?feed=http://www.channelfrederator.com/rss" title="Test: Embedded Enclosures">Channel Frederator</a>,
- <a href="?feed=http://rss.cnn.com/rss/cnn_topstories.rss" title="World News">CNN</a>,
- <a href="?feed=http://digg.com/rss/index.xml" title="Tech news. Better than Slashdot.">Digg</a>,
- <a href="?feed=http://revision3.com/diggnation/feed/quicktime-large" title="Tech and industry videocast.">Diggnation</a>,
- <a href="?feed=http://www.flickr.com/services/feeds/photos_public.gne?format=rss2" title="Flickr Photos">Flickr</a>,
- <a href="?feed=http://news.google.com/?output=rss" title="World News">Google News</a>,
- <a href="?feed=http://video.google.com/videofeed?type=top100new&amp;num=20&amp;output=rss" title="Test: Media RSS Support">Google Video</a>,
- <a href="?feed=http://blogs.law.harvard.edu/home/feed/rdf/" title="Test: Tag Stripping">Harvard Law</a>,
- <a href="?feed=http://hagada.org.il/hagada/html/backend.php" title="Test: Window-1255 Encoding">Hebrew Language</a>,
- <a href="?feed=http://www.infoworld.com/rss/news.xml" title="Test: Ad Stripping">InfoWorld</a>,
- <a href="?feed=http://phobos.apple.com/WebObjects/MZStore.woa/wpa/MRSS/topsongs/limit=10/rss.xml&amp;orderbydate=false" title="Test: Tag Stripping">iTunes</a>,
- <a href="?feed=http://blog.japan.cnet.com/lessig/index.rdf" title="Test: EUC-JP Encoding">Japanese Language</a>,
- <a href="?feed=http://nurapt.kaist.ac.kr/~jamaica/htmls/blog/rss.php&amp;input=EUC-KR" title="Test: EUC-KR Encoding">Korean Language</a>,
- <a href="?feed=http://mir.aculo.us/xml/rss/feed.xml" title="Weblog for the developer of Scriptaculous">mir.aculo.us</a>,
- <a href="?feed=http://images.apple.com/trailers/rss/newtrailers.rss" title="Apple's QuickTime movie trailer site">Movie Trailers</a>,
- <a href="?feed=http://www.newspond.com/rss/main.xml" title="Tech and Science News">Newspond</a>,
- <a href="?feed=http://nick.typepad.com/blog/index.rss" title="Developer of TopStyle and FeedDemon">Nick Bradbury</a>,
- <a href="?feed=http://feeds.feedburner.com/ok-cancel" title="Usability comics and commentary">OK/Cancel</a>,
- <a href="?feed=http://osnews.com/files/recent.rdf" title="News about every OS ever">OS News</a>,
- <a href="?feed=http://weblog.philringnalda.com/feed/" title="Test: Atom 1.0 Support">Phil Ringnalda</a>,
- <a href="?feed=http://kabili.libsyn.com/rss" title="Test: Improved enclosure type sniffing">Photoshop Videocast</a>,
- <a href="?feed=http://www.reddit.com/" title="Top links from around the web">reddit</a>,
- <a href="?feed=http://www.pariurisportive.com/blog/xmlsrv/rss2.php?blog=2" title="Test: ISO-8859-1 Encoding">Romanian Language</a>,
- <a href="?feed=http://www.erased.info/rss2.php" title="Test: KOI8-R Encoding">Russian Language</a>,
- <a href="?feed=http://ryanparman.com/" title="SimplePie developer alumnus">Ryan Parman</a>,
- <a href="?feed=http://www.upsaid.com/isis/index.rdf" title="Test: BIG5 Encoding">Traditional Chinese Language</a>,
- <a href="?feed=http://technorati.com/watchlists/rss.html?wid=29290" title="Technorati watch for SimplePie">Technorati</a>,
- <a href="?feed=http://www.tbray.org/ongoing/ongoing.atom" title="Test: Atom 1.0 Support">Tim Bray</a>,
- <a href="?feed=http://tuaw.com/rss.xml" title="Apple News">TUAW</a>,
- <a href="?feed=http://www.tvgasm.com/atom.xml&amp;image=true" title="Test: Bypass Image Hotlink Blocking">TVgasm</a>,
- <a href="?feed=http://uneasysilence.com/feed/" title="Interesting tech randomness">UNEASYsilence</a>,
- <a href="?feed=http://feeds.feedburner.com/web20Show" title="Test: Embedded Enclosures">Web 2.0 Show</a>,
- <a href="?feed=http://windowsvistablog.com/blogs/MainFeed.aspx" title="Test: Tag Stripping">Windows Vista Blog</a>,
- <a href="?feed=http://xkcd.com/rss.xml" title="Test: LightHTTPd and GZipping">XKCD</a>,
- <a href="?feed=http://rss.news.yahoo.com/rss/topstories" title="World News">Yahoo! News</a>,
- <a href="?feed=http://gdata.youtube.com/feeds/api/standardfeeds/top_favorites" title="Funny user-submitted videos">You Tube</a>,
- <a href="?feed=http://zeldman.com/rss/" title="The father of the web standards movement">Zeldman</a></p>
-
- </div>
-
- <div id="sp_results">
-
- <!-- As long as the feed has data to work with... -->
- <?php if ($success): ?>
- <div class="chunk focus" align="center">
-
- <!-- If the feed has a link back to the site that publishes it (which 99% of them do), link the feed's title to it. -->
- <h3 class="header"><?php if ($feed->get_link()) echo '<a href="' . $feed->get_link() . '">'; echo $feed->get_title(); if ($feed->get_link()) echo '</a>'; ?></h3>
-
- <!-- If the feed has a description, display it. -->
- <?php echo $feed->get_description(); ?>
-
- </div>
-
- <!-- Let's begin looping through each individual news item in the feed. -->
- <?php foreach($feed->get_items() as $item): ?>
- <div class="chunk">
-
- <!-- If the item has a permalink back to the original post (which 99% of them do), link the item's title to it. -->
- <h4><?php if ($item->get_permalink()) echo '<a href="' . $item->get_permalink() . '">'; echo $item->get_title(); if ($item->get_permalink()) echo '</a>'; ?>&nbsp;<span class="footnote"><?php echo $item->get_date('j M Y, g:i a'); ?></span></h4>
-
- <!-- Display the item's primary content. -->
- <?php echo $item->get_content(); ?>
-
- <?php
- // Check for enclosures. If an item has any, set the first one to the $enclosure variable.
- if ($enclosure = $item->get_enclosure(0))
- {
- // Use the embed() method to embed the enclosure into the page inline.
- echo '<div align="center">';
- echo '<p>' . $enclosure->embed(array(
- 'audio' => './for_the_demo/place_audio.png',
- 'video' => './for_the_demo/place_video.png',
- 'mediaplayer' => './for_the_demo/mediaplayer.swf',
- 'altclass' => 'download'
- )) . '</p>';
-
- if ($enclosure->get_link() && $enclosure->get_type())
- {
- echo '<p class="footnote" align="center">(' . $enclosure->get_type();
- if ($enclosure->get_size())
- {
- echo '; ' . $enclosure->get_size() . ' MB';
- }
- echo ')</p>';
- }
- if ($enclosure->get_thumbnail())
- {
- echo '<div><img src="' . $enclosure->get_thumbnail() . '" alt="" /></div>';
- }
- echo '</div>';
- }
- ?>
-
- </div>
-
- <!-- Stop looping through each item once we've gone through all of them. -->
- <?php endforeach; ?>
-
- <!-- From here on, we're no longer using data from the feed. -->
- <?php endif; ?>
-
- </div>
-
- <div>
- <!-- Display how fast the page was rendered. -->
- <p class="footnote">Page processed in <?php $mtime = explode(' ', microtime()); echo round($mtime[0] + $mtime[1] - $starttime, 3); ?> seconds.</p>
-
- <!-- Display the version of SimplePie being loaded. -->
- <p class="footnote">Powered by <a href="<?php echo SIMPLEPIE_URL; ?>"><?php echo SIMPLEPIE_NAME . ' ' . SIMPLEPIE_VERSION . ', Build ' . SIMPLEPIE_BUILD; ?></a>. Run the <a href="../compatibility_test/sp_compatibility_test.php">SimplePie Compatibility Test</a>. SimplePie is &copy; 2004&ndash;<?php echo date('Y'); ?>, Ryan Parman and Geoffrey Sneddon, and licensed under the <a href="http://www.opensource.org/licenses/bsd-license.php">BSD License</a>.</p>
- </div>
-
- </div>
-
-</div>
-
-</body>
-</html>
diff --git a/3rdparty/simplepie/demo/test.php b/3rdparty/simplepie/demo/test.php
deleted file mode 100755
index d14f922ba..000000000
--- a/3rdparty/simplepie/demo/test.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-include_once('../autoloader.php');
-include_once('../idn/idna_convert.class.php');
-
-// Parse it
-$feed = new SimplePie();
-if (isset($_GET['feed']) && $_GET['feed'] !== '')
-{
- if (get_magic_quotes_gpc())
- {
- $_GET['feed'] = stripslashes($_GET['feed']);
- }
- $feed->set_feed_url($_GET['feed']);
- $feed->enable_cache(false);
- $starttime = explode(' ', microtime());
- $starttime = $starttime[1] + $starttime[0];
- $feed->init();
- $endtime = explode(' ', microtime());
- $endtime = $endtime[1] + $endtime[0];
- $time = $endtime - $starttime;
-}
-else
-{
- $time = 'null';
-}
-
-$feed->handle_content_type();
-
-?>
-<!DOCTYPE html>
-<title>SimplePie Test</title>
-<pre>
-<?php
-
-// memory_get_peak_usage() only exists on PHP 5.2 and higher if PHP is compiled with the --enable-memory-limit configuration option or on PHP 5.2.1 and higher (which runs as if --enable-memory-limit was on, with no option)
-if (function_exists('memory_get_peak_usage'))
-{
- var_dump($time, memory_get_usage(), memory_get_peak_usage());
-}
-// memory_get_usage() only exists if PHP is compiled with the --enable-memory-limit configuration option or on PHP 5.2.1 and higher (which runs as if --enable-memory-limit was on, with no option)
-else if (function_exists('memory_get_usage'))
-{
- var_dump($time, memory_get_usage());
-}
-else
-{
- var_dump($time);
-}
-
-// Output buffer
-function callable_htmlspecialchars($string)
-{
- return htmlspecialchars($string);
-}
-ob_start('callable_htmlspecialchars');
-
-// Output
-print_r($feed);
-ob_end_flush();
-
-?>
-</pre> \ No newline at end of file
diff --git a/3rdparty/simplepie/idn/LICENCE b/3rdparty/simplepie/idn/LICENCE
deleted file mode 100755
index 25a1d22df..000000000
--- a/3rdparty/simplepie/idn/LICENCE
+++ /dev/null
@@ -1,502 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
diff --git a/3rdparty/simplepie/idn/ReadMe.txt b/3rdparty/simplepie/idn/ReadMe.txt
deleted file mode 100755
index 7ca8c7e6d..000000000
--- a/3rdparty/simplepie/idn/ReadMe.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-*******************************************************************************
-* *
-* IDNA Convert (idna_convert.class.php) *
-* *
-* http://idnaconv.phlymail.de mailto:phlymail@phlylabs.de *
-*******************************************************************************
-* (c) 2004-2007 phlyLabs, Berlin *
-* This file is encoded in UTF-8 *
-*******************************************************************************
-
-Introduction
-------------
-
-The class idna_convert allows to convert internationalized domain names
-(see RFC 3490, 3491, 3492 and 3454 for detials) as they can be used with various
-registries worldwide to be translated between their original (localized) form
-and their encoded form as it will be used in the DNS (Domain Name System).
-
-The class provides two public methods, encode() and decode(), which do exactly
-what you would expect them to do. You are allowed to use complete domain names,
-simple strings and complete email addresses as well. That means, that you might
-use any of the following notations:
-
-- www.nörgler.com
-- xn--nrgler-wxa
-- xn--brse-5qa.xn--knrz-1ra.info
-
-Errors, incorrectly encoded or invalid strings will lead to either a FALSE
-response (when in strict mode) or to only partially converted strings.
-You can query the occured error by calling the method get_last_error().
-
-Unicode strings are expected to be either UTF-8 strings, UCS-4 strings or UCS-4
-arrays. The default format is UTF-8. For setting different encodings, you can
-call the method setParams() - please see the inline documentation for details.
-ACE strings (the Punycode form) are always 7bit ASCII strings.
-
-ATTENTION: We no longer supply the PHP5 version of the class. It is not
-necessary for achieving a successfull conversion, since the supplied PHP code is
-compatible with both PHP4 and PHP5. We expect to see no compatibility issues
-with the upcoming PHP6, too.
-
-
-Files
------
-
-idna_convert.class.php - The actual class
-idna_convert.create.npdata.php - Useful for (re)creating the NPData file
-npdata.ser - Serialized data for NamePrep
-example.php - An example web page for converting
-ReadMe.txt - This file
-LICENCE - The LGPL licence file
-
-The class is contained in idna_convert.class.php.
-MAKE SURE to copy the npdata.ser file into the same folder as the class file
-itself!
-
-
-Examples
---------
-
-1. Say we wish to encode the domain name nörgler.com:
-
-// Include the class
-include_once('idna_convert.class.php');
-// Instantiate it *
-$IDN = new idna_convert();
-// The input string, if input is not UTF-8 or UCS-4, it must be converted before
-$input = utf8_encode('nörgler.com');
-// Encode it to its punycode presentation
-$output = $IDN->encode($input);
-// Output, what we got now
-echo $output; // This will read: xn--nrgler-wxa.com
-
-
-2. We received an email from a punycoded domain and are willing to learn, how
- the domain name reads originally
-
-// Include the class
-include_once('idna_convert.class.php');
-// Instantiate it (depending on the version you are using) with
-$IDN = new idna_convert();
-// The input string
-$input = 'andre@xn--brse-5qa.xn--knrz-1ra.info';
-// Encode it to its punycode presentation
-$output = $IDN->decode($input);
-// Output, what we got now, if output should be in a format different to UTF-8
-// or UCS-4, you will have to convert it before outputting it
-echo utf8_decode($output); // This will read: andre@börse.knörz.info
-
-
-3. The input is read from a UCS-4 coded file and encoded line by line. By
- appending the optional second parameter we tell enode() about the input
- format to be used
-
-// Include the class
-include_once('idna_convert.class.php');
-// Instantiate it
-$IDN = new dinca_convert();
-// Iterate through the input file line by line
-foreach (file('ucs4-domains.txt') as $line) {
- echo $IDN->encode(trim($line), 'ucs4_string');
- echo "\n";
-}
-
-
-NPData
-------
-
-Should you need to recreate the npdata.ser file, which holds all necessary translation
-tables in a serialized format, you can run the file idna_convert.create.npdata.php, which
-creates the file for you and stores it in the same folder, where it is placed.
-Should you need to do changes to the tables you can do so, but beware of the consequences.
-
-
-Contact us
-----------
-
-In case of errors, bugs, questions, wishes, please don't hesitate to contact us
-under the email address above.
-
-The team of phlyLabs
-http://phlylabs.de
-mailto:phlymail@phlylabs.de \ No newline at end of file
diff --git a/3rdparty/simplepie/idn/idna_convert.class.php b/3rdparty/simplepie/idn/idna_convert.class.php
deleted file mode 100755
index ed2bae26d..000000000
--- a/3rdparty/simplepie/idn/idna_convert.class.php
+++ /dev/null
@@ -1,969 +0,0 @@
-<?php
-// {{{ license
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
-//
-// +----------------------------------------------------------------------+
-// | This library is free software; you can redistribute it and/or modify |
-// | it under the terms of the GNU Lesser General Public License as |
-// | published by the Free Software Foundation; either version 2.1 of the |
-// | License, or (at your option) any later version. |
-// | |
-// | This library is distributed in the hope that it will be useful, but |
-// | WITHOUT ANY WARRANTY; without even the implied warranty of |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
-// | Lesser General Public License for more details. |
-// | |
-// | You should have received a copy of the GNU Lesser General Public |
-// | License along with this library; if not, write to the Free Software |
-// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
-// | USA. |
-// +----------------------------------------------------------------------+
-//
-
-// }}}
-
-/**
- * Encode/decode Internationalized Domain Names.
- *
- * The class allows to convert internationalized domain names
- * (see RFC 3490 for details) as they can be used with various registries worldwide
- * to be translated between their original (localized) form and their encoded form
- * as it will be used in the DNS (Domain Name System).
- *
- * The class provides two public methods, encode() and decode(), which do exactly
- * what you would expect them to do. You are allowed to use complete domain names,
- * simple strings and complete email addresses as well. That means, that you might
- * use any of the following notations:
- *
- * - www.nörgler.com
- * - xn--nrgler-wxa
- * - xn--brse-5qa.xn--knrz-1ra.info
- *
- * Unicode input might be given as either UTF-8 string, UCS-4 string or UCS-4
- * array. Unicode output is available in the same formats.
- * You can select your preferred format via {@link set_paramter()}.
- *
- * ACE input and output is always expected to be ASCII.
- *
- * @author Matthias Sommerfeld <mso@phlylabs.de>
- * @copyright 2004-2007 phlyLabs Berlin, http://phlylabs.de
- * @version 0.5.1
- *
- */
-class idna_convert
-{
- /**
- * Holds all relevant mapping tables, loaded from a seperate file on construct
- * See RFC3454 for details
- *
- * @var array
- * @access private
- */
- var $NP = array();
-
- // Internal settings, do not mess with them
- var $_punycode_prefix = 'xn--';
- var $_invalid_ucs = 0x80000000;
- var $_max_ucs = 0x10FFFF;
- var $_base = 36;
- var $_tmin = 1;
- var $_tmax = 26;
- var $_skew = 38;
- var $_damp = 700;
- var $_initial_bias = 72;
- var $_initial_n = 0x80;
- var $_sbase = 0xAC00;
- var $_lbase = 0x1100;
- var $_vbase = 0x1161;
- var $_tbase = 0x11A7;
- var $_lcount = 19;
- var $_vcount = 21;
- var $_tcount = 28;
- var $_ncount = 588; // _vcount * _tcount
- var $_scount = 11172; // _lcount * _tcount * _vcount
- var $_error = false;
-
- // See {@link set_paramter()} for details of how to change the following
- // settings from within your script / application
- var $_api_encoding = 'utf8'; // Default input charset is UTF-8
- var $_allow_overlong = false; // Overlong UTF-8 encodings are forbidden
- var $_strict_mode = false; // Behave strict or not
-
- // The constructor
- function idna_convert($options = false)
- {
- $this->slast = $this->_sbase + $this->_lcount * $this->_vcount * $this->_tcount;
- if (function_exists('file_get_contents')) {
- $this->NP = unserialize(file_get_contents(dirname(__FILE__).'/npdata.ser'));
- } else {
- $this->NP = unserialize(join('', file(dirname(__FILE__).'/npdata.ser')));
- }
- // If parameters are given, pass these to the respective method
- if (is_array($options)) {
- return $this->set_parameter($options);
- }
- return true;
- }
-
- /**
- * Sets a new option value. Available options and values:
- * [encoding - Use either UTF-8, UCS4 as array or UCS4 as string as input ('utf8' for UTF-8,
- * 'ucs4_string' and 'ucs4_array' respectively for UCS4); The output is always UTF-8]
- * [overlong - Unicode does not allow unnecessarily long encodings of chars,
- * to allow this, set this parameter to true, else to false;
- * default is false.]
- * [strict - true: strict mode, good for registration purposes - Causes errors
- * on failures; false: loose mode, ideal for "wildlife" applications
- * by silently ignoring errors and returning the original input instead
- *
- * @param mixed Parameter to set (string: single parameter; array of Parameter => Value pairs)
- * @param string Value to use (if parameter 1 is a string)
- * @return boolean true on success, false otherwise
- * @access public
- */
- function set_parameter($option, $value = false)
- {
- if (!is_array($option)) {
- $option = array($option => $value);
- }
- foreach ($option as $k => $v) {
- switch ($k) {
- case 'encoding':
- switch ($v) {
- case 'utf8':
- case 'ucs4_string':
- case 'ucs4_array':
- $this->_api_encoding = $v;
- break;
- default:
- $this->_error('Set Parameter: Unknown parameter '.$v.' for option '.$k);
- return false;
- }
- break;
- case 'overlong':
- $this->_allow_overlong = ($v) ? true : false;
- break;
- case 'strict':
- $this->_strict_mode = ($v) ? true : false;
- break;
- default:
- $this->_error('Set Parameter: Unknown option '.$k);
- return false;
- }
- }
- return true;
- }
-
- /**
- * Decode a given ACE domain name
- * @param string Domain name (ACE string)
- * [@param string Desired output encoding, see {@link set_parameter}]
- * @return string Decoded Domain name (UTF-8 or UCS-4)
- * @access public
- */
- function decode($input, $one_time_encoding = false)
- {
- // Optionally set
- if ($one_time_encoding) {
- switch ($one_time_encoding) {
- case 'utf8':
- case 'ucs4_string':
- case 'ucs4_array':
- break;
- default:
- $this->_error('Unknown encoding '.$one_time_encoding);
- return false;
- }
- }
- // Make sure to drop any newline characters around
- $input = trim($input);
-
- // Negotiate input and try to determine, whether it is a plain string,
- // an email address or something like a complete URL
- if (strpos($input, '@')) { // Maybe it is an email address
- // No no in strict mode
- if ($this->_strict_mode) {
- $this->_error('Only simple domain name parts can be handled in strict mode');
- return false;
- }
- list ($email_pref, $input) = explode('@', $input, 2);
- $arr = explode('.', $input);
- foreach ($arr as $k => $v) {
- if (preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $v)) {
- $conv = $this->_decode($v);
- if ($conv) $arr[$k] = $conv;
- }
- }
- $input = join('.', $arr);
- $arr = explode('.', $email_pref);
- foreach ($arr as $k => $v) {
- if (preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $v)) {
- $conv = $this->_decode($v);
- if ($conv) $arr[$k] = $conv;
- }
- }
- $email_pref = join('.', $arr);
- $return = $email_pref . '@' . $input;
- } elseif (preg_match('![:\./]!', $input)) { // Or a complete domain name (with or without paths / parameters)
- // No no in strict mode
- if ($this->_strict_mode) {
- $this->_error('Only simple domain name parts can be handled in strict mode');
- return false;
- }
- $parsed = parse_url($input);
- if (isset($parsed['host'])) {
- $arr = explode('.', $parsed['host']);
- foreach ($arr as $k => $v) {
- $conv = $this->_decode($v);
- if ($conv) $arr[$k] = $conv;
- }
- $parsed['host'] = join('.', $arr);
- $return =
- (empty($parsed['scheme']) ? '' : $parsed['scheme'].(strtolower($parsed['scheme']) == 'mailto' ? ':' : '://'))
- .(empty($parsed['user']) ? '' : $parsed['user'].(empty($parsed['pass']) ? '' : ':'.$parsed['pass']).'@')
- .$parsed['host']
- .(empty($parsed['port']) ? '' : ':'.$parsed['port'])
- .(empty($parsed['path']) ? '' : $parsed['path'])
- .(empty($parsed['query']) ? '' : '?'.$parsed['query'])
- .(empty($parsed['fragment']) ? '' : '#'.$parsed['fragment']);
- } else { // parse_url seems to have failed, try without it
- $arr = explode('.', $input);
- foreach ($arr as $k => $v) {
- $conv = $this->_decode($v);
- $arr[$k] = ($conv) ? $conv : $v;
- }
- $return = join('.', $arr);
- }
- } else { // Otherwise we consider it being a pure domain name string
- $return = $this->_decode($input);
- if (!$return) $return = $input;
- }
- // The output is UTF-8 by default, other output formats need conversion here
- // If one time encoding is given, use this, else the objects property
- switch (($one_time_encoding) ? $one_time_encoding : $this->_api_encoding) {
- case 'utf8':
- return $return;
- break;
- case 'ucs4_string':
- return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return));
- break;
- case 'ucs4_array':
- return $this->_utf8_to_ucs4($return);
- break;
- default:
- $this->_error('Unsupported output format');
- return false;
- }
- }
-
- /**
- * Encode a given UTF-8 domain name
- * @param string Domain name (UTF-8 or UCS-4)
- * [@param string Desired input encoding, see {@link set_parameter}]
- * @return string Encoded Domain name (ACE string)
- * @access public
- */
- function encode($decoded, $one_time_encoding = false)
- {
- // Forcing conversion of input to UCS4 array
- // If one time encoding is given, use this, else the objects property
- switch ($one_time_encoding ? $one_time_encoding : $this->_api_encoding) {
- case 'utf8':
- $decoded = $this->_utf8_to_ucs4($decoded);
- break;
- case 'ucs4_string':
- $decoded = $this->_ucs4_string_to_ucs4($decoded);
- case 'ucs4_array':
- break;
- default:
- $this->_error('Unsupported input format: '.($one_time_encoding ? $one_time_encoding : $this->_api_encoding));
- return false;
- }
-
- // No input, no output, what else did you expect?
- if (empty($decoded)) return '';
-
- // Anchors for iteration
- $last_begin = 0;
- // Output string
- $output = '';
- foreach ($decoded as $k => $v) {
- // Make sure to use just the plain dot
- switch($v) {
- case 0x3002:
- case 0xFF0E:
- case 0xFF61:
- $decoded[$k] = 0x2E;
- // Right, no break here, the above are converted to dots anyway
- // Stumbling across an anchoring character
- case 0x2E:
- case 0x2F:
- case 0x3A:
- case 0x3F:
- case 0x40:
- // Neither email addresses nor URLs allowed in strict mode
- if ($this->_strict_mode) {
- $this->_error('Neither email addresses nor URLs are allowed in strict mode.');
- return false;
- } else {
- // Skip first char
- if ($k) {
- $encoded = '';
- $encoded = $this->_encode(array_slice($decoded, $last_begin, (($k)-$last_begin)));
- if ($encoded) {
- $output .= $encoded;
- } else {
- $output .= $this->_ucs4_to_utf8(array_slice($decoded, $last_begin, (($k)-$last_begin)));
- }
- $output .= chr($decoded[$k]);
- }
- $last_begin = $k + 1;
- }
- }
- }
- // Catch the rest of the string
- if ($last_begin) {
- $inp_len = sizeof($decoded);
- $encoded = '';
- $encoded = $this->_encode(array_slice($decoded, $last_begin, (($inp_len)-$last_begin)));
- if ($encoded) {
- $output .= $encoded;
- } else {
- $output .= $this->_ucs4_to_utf8(array_slice($decoded, $last_begin, (($inp_len)-$last_begin)));
- }
- return $output;
- } else {
- if ($output = $this->_encode($decoded)) {
- return $output;
- } else {
- return $this->_ucs4_to_utf8($decoded);
- }
- }
- }
-
- /**
- * Use this method to get the last error ocurred
- * @param void
- * @return string The last error, that occured
- * @access public
- */
- function get_last_error()
- {
- return $this->_error;
- }
-
- /**
- * The actual decoding algorithm
- * @access private
- */
- function _decode($encoded)
- {
- // We do need to find the Punycode prefix
- if (!preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $encoded)) {
- $this->_error('This is not a punycode string');
- return false;
- }
- $encode_test = preg_replace('!^'.preg_quote($this->_punycode_prefix, '!').'!', '', $encoded);
- // If nothing left after removing the prefix, it is hopeless
- if (!$encode_test) {
- $this->_error('The given encoded string was empty');
- return false;
- }
- // Find last occurence of the delimiter
- $delim_pos = strrpos($encoded, '-');
- if ($delim_pos > strlen($this->_punycode_prefix)) {
- for ($k = strlen($this->_punycode_prefix); $k < $delim_pos; ++$k) {
- $decoded[] = ord($encoded{$k});
- }
- } else {
- $decoded = array();
- }
- $deco_len = count($decoded);
- $enco_len = strlen($encoded);
-
- // Wandering through the strings; init
- $is_first = true;
- $bias = $this->_initial_bias;
- $idx = 0;
- $char = $this->_initial_n;
-
- for ($enco_idx = ($delim_pos) ? ($delim_pos + 1) : 0; $enco_idx < $enco_len; ++$deco_len) {
- for ($old_idx = $idx, $w = 1, $k = $this->_base; 1 ; $k += $this->_base) {
- $digit = $this->_decode_digit($encoded{$enco_idx++});
- $idx += $digit * $w;
- $t = ($k <= $bias) ? $this->_tmin :
- (($k >= $bias + $this->_tmax) ? $this->_tmax : ($k - $bias));
- if ($digit < $t) break;
- $w = (int) ($w * ($this->_base - $t));
- }
- $bias = $this->_adapt($idx - $old_idx, $deco_len + 1, $is_first);
- $is_first = false;
- $char += (int) ($idx / ($deco_len + 1));
- $idx %= ($deco_len + 1);
- if ($deco_len > 0) {
- // Make room for the decoded char
- for ($i = $deco_len; $i > $idx; $i--) {
- $decoded[$i] = $decoded[($i - 1)];
- }
- }
- $decoded[$idx++] = $char;
- }
- return $this->_ucs4_to_utf8($decoded);
- }
-
- /**
- * The actual encoding algorithm
- * @access private
- */
- function _encode($decoded)
- {
- // We cannot encode a domain name containing the Punycode prefix
- $extract = strlen($this->_punycode_prefix);
- $check_pref = $this->_utf8_to_ucs4($this->_punycode_prefix);
- $check_deco = array_slice($decoded, 0, $extract);
-
- if ($check_pref == $check_deco) {
- $this->_error('This is already a punycode string');
- return false;
- }
- // We will not try to encode strings consisting of basic code points only
- $encodable = false;
- foreach ($decoded as $k => $v) {
- if ($v > 0x7a) {
- $encodable = true;
- break;
- }
- }
- if (!$encodable) {
- $this->_error('The given string does not contain encodable chars');
- return false;
- }
-
- // Do NAMEPREP
- $decoded = $this->_nameprep($decoded);
- if (!$decoded || !is_array($decoded)) return false; // NAMEPREP failed
-
- $deco_len = count($decoded);
- if (!$deco_len) return false; // Empty array
-
- $codecount = 0; // How many chars have been consumed
-
- $encoded = '';
- // Copy all basic code points to output
- for ($i = 0; $i < $deco_len; ++$i) {
- $test = $decoded[$i];
- // Will match [-0-9a-zA-Z]
- if ((0x2F < $test && $test < 0x40) || (0x40 < $test && $test < 0x5B)
- || (0x60 < $test && $test <= 0x7B) || (0x2D == $test)) {
- $encoded .= chr($decoded[$i]);
- $codecount++;
- }
- }
- if ($codecount == $deco_len) return $encoded; // All codepoints were basic ones
-
- // Start with the prefix; copy it to output
- $encoded = $this->_punycode_prefix.$encoded;
-
- // If we have basic code points in output, add an hyphen to the end
- if ($codecount) $encoded .= '-';
-
- // Now find and encode all non-basic code points
- $is_first = true;
- $cur_code = $this->_initial_n;
- $bias = $this->_initial_bias;
- $delta = 0;
- while ($codecount < $deco_len) {
- // Find the smallest code point >= the current code point and
- // remember the last ouccrence of it in the input
- for ($i = 0, $next_code = $this->_max_ucs; $i < $deco_len; $i++) {
- if ($decoded[$i] >= $cur_code && $decoded[$i] <= $next_code) {
- $next_code = $decoded[$i];
- }
- }
-
- $delta += ($next_code - $cur_code) * ($codecount + 1);
- $cur_code = $next_code;
-
- // Scan input again and encode all characters whose code point is $cur_code
- for ($i = 0; $i < $deco_len; $i++) {
- if ($decoded[$i] < $cur_code) {
- $delta++;
- } elseif ($decoded[$i] == $cur_code) {
- for ($q = $delta, $k = $this->_base; 1; $k += $this->_base) {
- $t = ($k <= $bias) ? $this->_tmin :
- (($k >= $bias + $this->_tmax) ? $this->_tmax : $k - $bias);
- if ($q < $t) break;
- $encoded .= $this->_encode_digit(intval($t + (($q - $t) % ($this->_base - $t)))); //v0.4.5 Changed from ceil() to intval()
- $q = (int) (($q - $t) / ($this->_base - $t));
- }
- $encoded .= $this->_encode_digit($q);
- $bias = $this->_adapt($delta, $codecount+1, $is_first);
- $codecount++;
- $delta = 0;
- $is_first = false;
- }
- }
- $delta++;
- $cur_code++;
- }
- return $encoded;
- }
-
- /**
- * Adapt the bias according to the current code point and position
- * @access private
- */
- function _adapt($delta, $npoints, $is_first)
- {
- $delta = intval($is_first ? ($delta / $this->_damp) : ($delta / 2));
- $delta += intval($delta / $npoints);
- for ($k = 0; $delta > (($this->_base - $this->_tmin) * $this->_tmax) / 2; $k += $this->_base) {
- $delta = intval($delta / ($this->_base - $this->_tmin));
- }
- return intval($k + ($this->_base - $this->_tmin + 1) * $delta / ($delta + $this->_skew));
- }
-
- /**
- * Encoding a certain digit
- * @access private
- */
- function _encode_digit($d)
- {
- return chr($d + 22 + 75 * ($d < 26));
- }
-
- /**
- * Decode a certain digit
- * @access private
- */
- function _decode_digit($cp)
- {
- $cp = ord($cp);
- return ($cp - 48 < 10) ? $cp - 22 : (($cp - 65 < 26) ? $cp - 65 : (($cp - 97 < 26) ? $cp - 97 : $this->_base));
- }
-
- /**
- * Internal error handling method
- * @access private
- */
- function _error($error = '')
- {
- $this->_error = $error;
- }
-
- /**
- * Do Nameprep according to RFC3491 and RFC3454
- * @param array Unicode Characters
- * @return string Unicode Characters, Nameprep'd
- * @access private
- */
- function _nameprep($input)
- {
- $output = array();
- $error = false;
- //
- // Mapping
- // Walking through the input array, performing the required steps on each of
- // the input chars and putting the result into the output array
- // While mapping required chars we apply the cannonical ordering
- foreach ($input as $v) {
- // Map to nothing == skip that code point
- if (in_array($v, $this->NP['map_nothing'])) continue;
-
- // Try to find prohibited input
- if (in_array($v, $this->NP['prohibit']) || in_array($v, $this->NP['general_prohibited'])) {
- $this->_error('NAMEPREP: Prohibited input U+'.sprintf('%08X', $v));
- return false;
- }
- foreach ($this->NP['prohibit_ranges'] as $range) {
- if ($range[0] <= $v && $v <= $range[1]) {
- $this->_error('NAMEPREP: Prohibited input U+'.sprintf('%08X', $v));
- return false;
- }
- }
- //
- // Hangul syllable decomposition
- if (0xAC00 <= $v && $v <= 0xD7AF) {
- foreach ($this->_hangul_decompose($v) as $out) {
- $output[] = (int) $out;
- }
- // There's a decomposition mapping for that code point
- } elseif (isset($this->NP['replacemaps'][$v])) {
- foreach ($this->_apply_cannonical_ordering($this->NP['replacemaps'][$v]) as $out) {
- $output[] = (int) $out;
- }
- } else {
- $output[] = (int) $v;
- }
- }
- // Before applying any Combining, try to rearrange any Hangul syllables
- $output = $this->_hangul_compose($output);
- //
- // Combine code points
- //
- $last_class = 0;
- $last_starter = 0;
- $out_len = count($output);
- for ($i = 0; $i < $out_len; ++$i) {
- $class = $this->_get_combining_class($output[$i]);
- if ((!$last_class || $last_class > $class) && $class) {
- // Try to match
- $seq_len = $i - $last_starter;
- $out = $this->_combine(array_slice($output, $last_starter, $seq_len));
- // On match: Replace the last starter with the composed character and remove
- // the now redundant non-starter(s)
- if ($out) {
- $output[$last_starter] = $out;
- if (count($out) != $seq_len) {
- for ($j = $i+1; $j < $out_len; ++$j) {
- $output[$j-1] = $output[$j];
- }
- unset($output[$out_len]);
- }
- // Rewind the for loop by one, since there can be more possible compositions
- $i--;
- $out_len--;
- $last_class = ($i == $last_starter) ? 0 : $this->_get_combining_class($output[$i-1]);
- continue;
- }
- }
- // The current class is 0
- if (!$class) $last_starter = $i;
- $last_class = $class;
- }
- return $output;
- }
-
- /**
- * Decomposes a Hangul syllable
- * (see http://www.unicode.org/unicode/reports/tr15/#Hangul
- * @param integer 32bit UCS4 code point
- * @return array Either Hangul Syllable decomposed or original 32bit value as one value array
- * @access private
- */
- function _hangul_decompose($char)
- {
- $sindex = (int) $char - $this->_sbase;
- if ($sindex < 0 || $sindex >= $this->_scount) {
- return array($char);
- }
- $result = array();
- $result[] = (int) $this->_lbase + $sindex / $this->_ncount;
- $result[] = (int) $this->_vbase + ($sindex % $this->_ncount) / $this->_tcount;
- $T = intval($this->_tbase + $sindex % $this->_tcount);
- if ($T != $this->_tbase) $result[] = $T;
- return $result;
- }
- /**
- * Ccomposes a Hangul syllable
- * (see http://www.unicode.org/unicode/reports/tr15/#Hangul
- * @param array Decomposed UCS4 sequence
- * @return array UCS4 sequence with syllables composed
- * @access private
- */
- function _hangul_compose($input)
- {
- $inp_len = count($input);
- if (!$inp_len) return array();
- $result = array();
- $last = (int) $input[0];
- $result[] = $last; // copy first char from input to output
-
- for ($i = 1; $i < $inp_len; ++$i) {
- $char = (int) $input[$i];
- $sindex = $last - $this->_sbase;
- $lindex = $last - $this->_lbase;
- $vindex = $char - $this->_vbase;
- $tindex = $char - $this->_tbase;
- // Find out, whether two current characters are LV and T
- if (0 <= $sindex && $sindex < $this->_scount && ($sindex % $this->_tcount == 0)
- && 0 <= $tindex && $tindex <= $this->_tcount) {
- // create syllable of form LVT
- $last += $tindex;
- $result[(count($result) - 1)] = $last; // reset last
- continue; // discard char
- }
- // Find out, whether two current characters form L and V
- if (0 <= $lindex && $lindex < $this->_lcount && 0 <= $vindex && $vindex < $this->_vcount) {
- // create syllable of form LV
- $last = (int) $this->_sbase + ($lindex * $this->_vcount + $vindex) * $this->_tcount;
- $result[(count($result) - 1)] = $last; // reset last
- continue; // discard char
- }
- // if neither case was true, just add the character
- $last = $char;
- $result[] = $char;
- }
- return $result;
- }
-
- /**
- * Returns the combining class of a certain wide char
- * @param integer Wide char to check (32bit integer)
- * @return integer Combining class if found, else 0
- * @access private
- */
- function _get_combining_class($char)
- {
- return isset($this->NP['norm_combcls'][$char]) ? $this->NP['norm_combcls'][$char] : 0;
- }
-
- /**
- * Apllies the cannonical ordering of a decomposed UCS4 sequence
- * @param array Decomposed UCS4 sequence
- * @return array Ordered USC4 sequence
- * @access private
- */
- function _apply_cannonical_ordering($input)
- {
- $swap = true;
- $size = count($input);
- while ($swap) {
- $swap = false;
- $last = $this->_get_combining_class(intval($input[0]));
- for ($i = 0; $i < $size-1; ++$i) {
- $next = $this->_get_combining_class(intval($input[$i+1]));
- if ($next != 0 && $last > $next) {
- // Move item leftward until it fits
- for ($j = $i + 1; $j > 0; --$j) {
- if ($this->_get_combining_class(intval($input[$j-1])) <= $next) break;
- $t = intval($input[$j]);
- $input[$j] = intval($input[$j-1]);
- $input[$j-1] = $t;
- $swap = true;
- }
- // Reentering the loop looking at the old character again
- $next = $last;
- }
- $last = $next;
- }
- }
- return $input;
- }
-
- /**
- * Do composition of a sequence of starter and non-starter
- * @param array UCS4 Decomposed sequence
- * @return array Ordered USC4 sequence
- * @access private
- */
- function _combine($input)
- {
- $inp_len = count($input);
- foreach ($this->NP['replacemaps'] as $np_src => $np_target) {
- if ($np_target[0] != $input[0]) continue;
- if (count($np_target) != $inp_len) continue;
- $hit = false;
- foreach ($input as $k2 => $v2) {
- if ($v2 == $np_target[$k2]) {
- $hit = true;
- } else {
- $hit = false;
- break;
- }
- }
- if ($hit) return $np_src;
- }
- return false;
- }
-
- /**
- * This converts an UTF-8 encoded string to its UCS-4 representation
- * By talking about UCS-4 "strings" we mean arrays of 32bit integers representing
- * each of the "chars". This is due to PHP not being able to handle strings with
- * bit depth different from 8. This apllies to the reverse method _ucs4_to_utf8(), too.
- * The following UTF-8 encodings are supported:
- * bytes bits representation
- * 1 7 0xxxxxxx
- * 2 11 110xxxxx 10xxxxxx
- * 3 16 1110xxxx 10xxxxxx 10xxxxxx
- * 4 21 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
- * 5 26 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- * 6 31 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- * Each x represents a bit that can be used to store character data.
- * The five and six byte sequences are part of Annex D of ISO/IEC 10646-1:2000
- * @access private
- */
- function _utf8_to_ucs4($input)
- {
- $output = array();
- $out_len = 0;
- $inp_len = strlen($input);
- $mode = 'next';
- $test = 'none';
- for ($k = 0; $k < $inp_len; ++$k) {
- $v = ord($input{$k}); // Extract byte from input string
-
- if ($v < 128) { // We found an ASCII char - put into stirng as is
- $output[$out_len] = $v;
- ++$out_len;
- if ('add' == $mode) {
- $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
- return false;
- }
- continue;
- }
- if ('next' == $mode) { // Try to find the next start byte; determine the width of the Unicode char
- $start_byte = $v;
- $mode = 'add';
- $test = 'range';
- if ($v >> 5 == 6) { // &110xxxxx 10xxxxx
- $next_byte = 0; // Tells, how many times subsequent bitmasks must rotate 6bits to the left
- $v = ($v - 192) << 6;
- } elseif ($v >> 4 == 14) { // &1110xxxx 10xxxxxx 10xxxxxx
- $next_byte = 1;
- $v = ($v - 224) << 12;
- } elseif ($v >> 3 == 30) { // &11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
- $next_byte = 2;
- $v = ($v - 240) << 18;
- } elseif ($v >> 2 == 62) { // &111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- $next_byte = 3;
- $v = ($v - 248) << 24;
- } elseif ($v >> 1 == 126) { // &1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- $next_byte = 4;
- $v = ($v - 252) << 30;
- } else {
- $this->_error('This might be UTF-8, but I don\'t understand it at byte '.$k);
- return false;
- }
- if ('add' == $mode) {
- $output[$out_len] = (int) $v;
- ++$out_len;
- continue;
- }
- }
- if ('add' == $mode) {
- if (!$this->_allow_overlong && $test == 'range') {
- $test = 'none';
- if (($v < 0xA0 && $start_byte == 0xE0) || ($v < 0x90 && $start_byte == 0xF0) || ($v > 0x8F && $start_byte == 0xF4)) {
- $this->_error('Bogus UTF-8 character detected (out of legal range) at byte '.$k);
- return false;
- }
- }
- if ($v >> 6 == 2) { // Bit mask must be 10xxxxxx
- $v = ($v - 128) << ($next_byte * 6);
- $output[($out_len - 1)] += $v;
- --$next_byte;
- } else {
- $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
- return false;
- }
- if ($next_byte < 0) {
- $mode = 'next';
- }
- }
- } // for
- return $output;
- }
-
- /**
- * Convert UCS-4 string into UTF-8 string
- * See _utf8_to_ucs4() for details
- * @access private
- */
- function _ucs4_to_utf8($input)
- {
- $output = '';
- $k = 0;
- foreach ($input as $v) {
- ++$k;
- // $v = ord($v);
- if ($v < 128) { // 7bit are transferred literally
- $output .= chr($v);
- } elseif ($v < (1 << 11)) { // 2 bytes
- $output .= chr(192 + ($v >> 6)) . chr(128 + ($v & 63));
- } elseif ($v < (1 << 16)) { // 3 bytes
- $output .= chr(224 + ($v >> 12)) . chr(128 + (($v >> 6) & 63)) . chr(128 + ($v & 63));
- } elseif ($v < (1 << 21)) { // 4 bytes
- $output .= chr(240 + ($v >> 18)) . chr(128 + (($v >> 12) & 63))
- . chr(128 + (($v >> 6) & 63)) . chr(128 + ($v & 63));
- } elseif ($v < (1 << 26)) { // 5 bytes
- $output .= chr(248 + ($v >> 24)) . chr(128 + (($v >> 18) & 63))
- . chr(128 + (($v >> 12) & 63)) . chr(128 + (($v >> 6) & 63))
- . chr(128 + ($v & 63));
- } elseif ($v < (1 << 31)) { // 6 bytes
- $output .= chr(252 + ($v >> 30)) . chr(128 + (($v >> 24) & 63))
- . chr(128 + (($v >> 18) & 63)) . chr(128 + (($v >> 12) & 63))
- . chr(128 + (($v >> 6) & 63)) . chr(128 + ($v & 63));
- } else {
- $this->_error('Conversion from UCS-4 to UTF-8 failed: malformed input at byte '.$k);
- return false;
- }
- }
- return $output;
- }
-
- /**
- * Convert UCS-4 array into UCS-4 string
- *
- * @access private
- */
- function _ucs4_to_ucs4_string($input)
- {
- $output = '';
- // Take array values and split output to 4 bytes per value
- // The bit mask is 255, which reads &11111111
- foreach ($input as $v) {
- $output .= chr(($v >> 24) & 255).chr(($v >> 16) & 255).chr(($v >> 8) & 255).chr($v & 255);
- }
- return $output;
- }
-
- /**
- * Convert UCS-4 strin into UCS-4 garray
- *
- * @access private
- */
- function _ucs4_string_to_ucs4($input)
- {
- $output = array();
- $inp_len = strlen($input);
- // Input length must be dividable by 4
- if ($inp_len % 4) {
- $this->_error('Input UCS4 string is broken');
- return false;
- }
- // Empty input - return empty output
- if (!$inp_len) return $output;
- for ($i = 0, $out_len = -1; $i < $inp_len; ++$i) {
- // Increment output position every 4 input bytes
- if (!($i % 4)) {
- $out_len++;
- $output[$out_len] = 0;
- }
- $output[$out_len] += ord($input{$i}) << (8 * (3 - ($i % 4) ) );
- }
- return $output;
- }
-}
-
-/**
-* Adapter class for aligning the API of idna_convert with that of Net_IDNA
-* @author Matthias Sommerfeld <mso@phlylabs.de>
-*/
-class Net_IDNA_php4 extends idna_convert
-{
- /**
- * Sets a new option value. Available options and values:
- * [encoding - Use either UTF-8, UCS4 as array or UCS4 as string as input ('utf8' for UTF-8,
- * 'ucs4_string' and 'ucs4_array' respectively for UCS4); The output is always UTF-8]
- * [overlong - Unicode does not allow unnecessarily long encodings of chars,
- * to allow this, set this parameter to true, else to false;
- * default is false.]
- * [strict - true: strict mode, good for registration purposes - Causes errors
- * on failures; false: loose mode, ideal for "wildlife" applications
- * by silently ignoring errors and returning the original input instead
- *
- * @param mixed Parameter to set (string: single parameter; array of Parameter => Value pairs)
- * @param string Value to use (if parameter 1 is a string)
- * @return boolean true on success, false otherwise
- * @access public
- */
- function setParams($option, $param = false)
- {
- return $this->IC->set_parameters($option, $param);
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/idn/npdata.ser b/3rdparty/simplepie/idn/npdata.ser
deleted file mode 100755
index d7ce6d03f..000000000
--- a/3rdparty/simplepie/idn/npdata.ser
+++ /dev/null
@@ -1 +0,0 @@
-a:6:{s:11:"map_nothing";a:27:{i:0;i:173;i:1;i:847;i:2;i:6150;i:3;i:6155;i:4;i:6156;i:5;i:6157;i:6;i:8203;i:7;i:8204;i:8;i:8205;i:9;i:8288;i:10;i:65024;i:11;i:65025;i:12;i:65026;i:13;i:65027;i:14;i:65028;i:15;i:65029;i:16;i:65030;i:17;i:65031;i:18;i:65032;i:19;i:65033;i:20;i:65034;i:21;i:65035;i:22;i:65036;i:23;i:65037;i:24;i:65038;i:25;i:65039;i:26;i:65279;}s:18:"general_prohibited";a:64:{i:0;i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;i:5;i:6;i:6;i:7;i:7;i:8;i:8;i:9;i:9;i:10;i:10;i:11;i:11;i:12;i:12;i:13;i:13;i:14;i:14;i:15;i:15;i:16;i:16;i:17;i:17;i:18;i:18;i:19;i:19;i:20;i:20;i:21;i:21;i:22;i:22;i:23;i:23;i:24;i:24;i:25;i:25;i:26;i:26;i:27;i:27;i:28;i:28;i:29;i:29;i:30;i:30;i:31;i:31;i:32;i:32;i:33;i:33;i:34;i:34;i:35;i:35;i:36;i:36;i:37;i:37;i:38;i:38;i:39;i:39;i:40;i:40;i:41;i:41;i:42;i:42;i:43;i:43;i:44;i:44;i:45;i:47;i:46;i:59;i:47;i:60;i:48;i:61;i:49;i:62;i:50;i:63;i:51;i:64;i:52;i:91;i:53;i:92;i:54;i:93;i:55;i:94;i:56;i:95;i:57;i:96;i:58;i:123;i:59;i:124;i:60;i:125;i:61;i:126;i:62;i:127;i:63;i:12290;}s:8:"prohibit";a:84:{i:0;i:160;i:1;i:5760;i:2;i:8192;i:3;i:8193;i:4;i:8194;i:5;i:8195;i:6;i:8196;i:7;i:8197;i:8;i:8198;i:9;i:8199;i:10;i:8200;i:11;i:8201;i:12;i:8202;i:13;i:8203;i:14;i:8239;i:15;i:8287;i:16;i:12288;i:17;i:1757;i:18;i:1807;i:19;i:6158;i:20;i:8204;i:21;i:8205;i:22;i:8232;i:23;i:8233;i:24;i:65279;i:25;i:65529;i:26;i:65530;i:27;i:65531;i:28;i:65532;i:29;i:65534;i:30;i:65535;i:31;i:131070;i:32;i:131071;i:33;i:196606;i:34;i:196607;i:35;i:262142;i:36;i:262143;i:37;i:327678;i:38;i:327679;i:39;i:393214;i:40;i:393215;i:41;i:458750;i:42;i:458751;i:43;i:524286;i:44;i:524287;i:45;i:589822;i:46;i:589823;i:47;i:655358;i:48;i:655359;i:49;i:720894;i:50;i:720895;i:51;i:786430;i:52;i:786431;i:53;i:851966;i:54;i:851967;i:55;i:917502;i:56;i:917503;i:57;i:983038;i:58;i:983039;i:59;i:1048574;i:60;i:1048575;i:61;i:1114110;i:62;i:1114111;i:63;i:65529;i:64;i:65530;i:65;i:65531;i:66;i:65532;i:67;i:65533;i:68;i:832;i:69;i:833;i:70;i:8206;i:71;i:8207;i:72;i:8234;i:73;i:8235;i:74;i:8236;i:75;i:8237;i:76;i:8238;i:77;i:8298;i:78;i:8299;i:79;i:8300;i:80;i:8301;i:81;i:8302;i:82;i:8303;i:83;i:917505;}s:15:"prohibit_ranges";a:10:{i:0;a:2:{i:0;i:128;i:1;i:159;}i:1;a:2:{i:0;i:8288;i:1;i:8303;}i:2;a:2:{i:0;i:119155;i:1;i:119162;}i:3;a:2:{i:0;i:57344;i:1;i:63743;}i:4;a:2:{i:0;i:983040;i:1;i:1048573;}i:5;a:2:{i:0;i:1048576;i:1;i:1114109;}i:6;a:2:{i:0;i:64976;i:1;i:65007;}i:7;a:2:{i:0;i:55296;i:1;i:57343;}i:8;a:2:{i:0;i:12272;i:1;i:12283;}i:9;a:2:{i:0;i:917536;i:1;i:917631;}}s:11:"replacemaps";a:1401:{i:65;a:1:{i:0;i:97;}i:66;a:1:{i:0;i:98;}i:67;a:1:{i:0;i:99;}i:68;a:1:{i:0;i:100;}i:69;a:1:{i:0;i:101;}i:70;a:1:{i:0;i:102;}i:71;a:1:{i:0;i:103;}i:72;a:1:{i:0;i:104;}i:73;a:1:{i:0;i:105;}i:74;a:1:{i:0;i:106;}i:75;a:1:{i:0;i:107;}i:76;a:1:{i:0;i:108;}i:77;a:1:{i:0;i:109;}i:78;a:1:{i:0;i:110;}i:79;a:1:{i:0;i:111;}i:80;a:1:{i:0;i:112;}i:81;a:1:{i:0;i:113;}i:82;a:1:{i:0;i:114;}i:83;a:1:{i:0;i:115;}i:84;a:1:{i:0;i:116;}i:85;a:1:{i:0;i:117;}i:86;a:1:{i:0;i:118;}i:87;a:1:{i:0;i:119;}i:88;a:1:{i:0;i:120;}i:89;a:1:{i:0;i:121;}i:90;a:1:{i:0;i:122;}i:181;a:1:{i:0;i:956;}i:192;a:1:{i:0;i:224;}i:193;a:1:{i:0;i:225;}i:194;a:1:{i:0;i:226;}i:195;a:1:{i:0;i:227;}i:196;a:1:{i:0;i:228;}i:197;a:1:{i:0;i:229;}i:198;a:1:{i:0;i:230;}i:199;a:1:{i:0;i:231;}i:200;a:1:{i:0;i:232;}i:201;a:1:{i:0;i:233;}i:202;a:1:{i:0;i:234;}i:203;a:1:{i:0;i:235;}i:204;a:1:{i:0;i:236;}i:205;a:1:{i:0;i:237;}i:206;a:1:{i:0;i:238;}i:207;a:1:{i:0;i:239;}i:208;a:1:{i:0;i:240;}i:209;a:1:{i:0;i:241;}i:210;a:1:{i:0;i:242;}i:211;a:1:{i:0;i:243;}i:212;a:1:{i:0;i:244;}i:213;a:1:{i:0;i:245;}i:214;a:1:{i:0;i:246;}i:216;a:1:{i:0;i:248;}i:217;a:1:{i:0;i:249;}i:218;a:1:{i:0;i:250;}i:219;a:1:{i:0;i:251;}i:220;a:1:{i:0;i:252;}i:221;a:1:{i:0;i:253;}i:222;a:1:{i:0;i:254;}i:223;a:2:{i:0;i:115;i:1;i:115;}i:256;a:1:{i:0;i:257;}i:258;a:1:{i:0;i:259;}i:260;a:1:{i:0;i:261;}i:262;a:1:{i:0;i:263;}i:264;a:1:{i:0;i:265;}i:266;a:1:{i:0;i:267;}i:268;a:1:{i:0;i:269;}i:270;a:1:{i:0;i:271;}i:272;a:1:{i:0;i:273;}i:274;a:1:{i:0;i:275;}i:276;a:1:{i:0;i:277;}i:278;a:1:{i:0;i:279;}i:280;a:1:{i:0;i:281;}i:282;a:1:{i:0;i:283;}i:284;a:1:{i:0;i:285;}i:286;a:1:{i:0;i:287;}i:288;a:1:{i:0;i:289;}i:290;a:1:{i:0;i:291;}i:292;a:1:{i:0;i:293;}i:294;a:1:{i:0;i:295;}i:296;a:1:{i:0;i:297;}i:298;a:1:{i:0;i:299;}i:300;a:1:{i:0;i:301;}i:302;a:1:{i:0;i:303;}i:304;a:2:{i:0;i:105;i:1;i:775;}i:306;a:1:{i:0;i:307;}i:308;a:1:{i:0;i:309;}i:310;a:1:{i:0;i:311;}i:313;a:1:{i:0;i:314;}i:315;a:1:{i:0;i:316;}i:317;a:1:{i:0;i:318;}i:319;a:1:{i:0;i:320;}i:321;a:1:{i:0;i:322;}i:323;a:1:{i:0;i:324;}i:325;a:1:{i:0;i:326;}i:327;a:1:{i:0;i:328;}i:329;a:2:{i:0;i:700;i:1;i:110;}i:330;a:1:{i:0;i:331;}i:332;a:1:{i:0;i:333;}i:334;a:1:{i:0;i:335;}i:336;a:1:{i:0;i:337;}i:338;a:1:{i:0;i:339;}i:340;a:1:{i:0;i:341;}i:342;a:1:{i:0;i:343;}i:344;a:1:{i:0;i:345;}i:346;a:1:{i:0;i:347;}i:348;a:1:{i:0;i:349;}i:350;a:1:{i:0;i:351;}i:352;a:1:{i:0;i:353;}i:354;a:1:{i:0;i:355;}i:356;a:1:{i:0;i:357;}i:358;a:1:{i:0;i:359;}i:360;a:1:{i:0;i:361;}i:362;a:1:{i:0;i:363;}i:364;a:1:{i:0;i:365;}i:366;a:1:{i:0;i:367;}i:368;a:1:{i:0;i:369;}i:370;a:1:{i:0;i:371;}i:372;a:1:{i:0;i:373;}i:374;a:1:{i:0;i:375;}i:376;a:1:{i:0;i:255;}i:377;a:1:{i:0;i:378;}i:379;a:1:{i:0;i:380;}i:381;a:1:{i:0;i:382;}i:383;a:1:{i:0;i:115;}i:385;a:1:{i:0;i:595;}i:386;a:1:{i:0;i:387;}i:388;a:1:{i:0;i:389;}i:390;a:1:{i:0;i:596;}i:391;a:1:{i:0;i:392;}i:393;a:1:{i:0;i:598;}i:394;a:1:{i:0;i:599;}i:395;a:1:{i:0;i:396;}i:398;a:1:{i:0;i:477;}i:399;a:1:{i:0;i:601;}i:400;a:1:{i:0;i:603;}i:401;a:1:{i:0;i:402;}i:403;a:1:{i:0;i:608;}i:404;a:1:{i:0;i:611;}i:406;a:1:{i:0;i:617;}i:407;a:1:{i:0;i:616;}i:408;a:1:{i:0;i:409;}i:412;a:1:{i:0;i:623;}i:413;a:1:{i:0;i:626;}i:415;a:1:{i:0;i:629;}i:416;a:1:{i:0;i:417;}i:418;a:1:{i:0;i:419;}i:420;a:1:{i:0;i:421;}i:422;a:1:{i:0;i:640;}i:423;a:1:{i:0;i:424;}i:425;a:1:{i:0;i:643;}i:428;a:1:{i:0;i:429;}i:430;a:1:{i:0;i:648;}i:431;a:1:{i:0;i:432;}i:433;a:1:{i:0;i:650;}i:434;a:1:{i:0;i:651;}i:435;a:1:{i:0;i:436;}i:437;a:1:{i:0;i:438;}i:439;a:1:{i:0;i:658;}i:440;a:1:{i:0;i:441;}i:444;a:1:{i:0;i:445;}i:452;a:1:{i:0;i:454;}i:453;a:1:{i:0;i:454;}i:455;a:1:{i:0;i:457;}i:456;a:1:{i:0;i:457;}i:458;a:1:{i:0;i:460;}i:459;a:1:{i:0;i:460;}i:461;a:1:{i:0;i:462;}i:463;a:1:{i:0;i:464;}i:465;a:1:{i:0;i:466;}i:467;a:1:{i:0;i:468;}i:469;a:1:{i:0;i:470;}i:471;a:1:{i:0;i:472;}i:473;a:1:{i:0;i:474;}i:475;a:1:{i:0;i:476;}i:478;a:1:{i:0;i:479;}i:480;a:1:{i:0;i:481;}i:482;a:1:{i:0;i:483;}i:484;a:1:{i:0;i:485;}i:486;a:1:{i:0;i:487;}i:488;a:1:{i:0;i:489;}i:490;a:1:{i:0;i:491;}i:492;a:1:{i:0;i:493;}i:494;a:1:{i:0;i:495;}i:496;a:2:{i:0;i:106;i:1;i:780;}i:497;a:1:{i:0;i:499;}i:498;a:1:{i:0;i:499;}i:500;a:1:{i:0;i:501;}i:502;a:1:{i:0;i:405;}i:503;a:1:{i:0;i:447;}i:504;a:1:{i:0;i:505;}i:506;a:1:{i:0;i:507;}i:508;a:1:{i:0;i:509;}i:510;a:1:{i:0;i:511;}i:512;a:1:{i:0;i:513;}i:514;a:1:{i:0;i:515;}i:516;a:1:{i:0;i:517;}i:518;a:1:{i:0;i:519;}i:520;a:1:{i:0;i:521;}i:522;a:1:{i:0;i:523;}i:524;a:1:{i:0;i:525;}i:526;a:1:{i:0;i:527;}i:528;a:1:{i:0;i:529;}i:530;a:1:{i:0;i:531;}i:532;a:1:{i:0;i:533;}i:534;a:1:{i:0;i:535;}i:536;a:1:{i:0;i:537;}i:538;a:1:{i:0;i:539;}i:540;a:1:{i:0;i:541;}i:542;a:1:{i:0;i:543;}i:544;a:1:{i:0;i:414;}i:546;a:1:{i:0;i:547;}i:548;a:1:{i:0;i:549;}i:550;a:1:{i:0;i:551;}i:552;a:1:{i:0;i:553;}i:554;a:1:{i:0;i:555;}i:556;a:1:{i:0;i:557;}i:558;a:1:{i:0;i:559;}i:560;a:1:{i:0;i:561;}i:562;a:1:{i:0;i:563;}i:837;a:1:{i:0;i:953;}i:890;a:2:{i:0;i:32;i:1;i:953;}i:902;a:1:{i:0;i:940;}i:904;a:1:{i:0;i:941;}i:905;a:1:{i:0;i:942;}i:906;a:1:{i:0;i:943;}i:908;a:1:{i:0;i:972;}i:910;a:1:{i:0;i:973;}i:911;a:1:{i:0;i:974;}i:912;a:3:{i:0;i:953;i:1;i:776;i:2;i:769;}i:913;a:1:{i:0;i:945;}i:914;a:1:{i:0;i:946;}i:915;a:1:{i:0;i:947;}i:916;a:1:{i:0;i:948;}i:917;a:1:{i:0;i:949;}i:918;a:1:{i:0;i:950;}i:919;a:1:{i:0;i:951;}i:920;a:1:{i:0;i:952;}i:921;a:1:{i:0;i:953;}i:922;a:1:{i:0;i:954;}i:923;a:1:{i:0;i:955;}i:924;a:1:{i:0;i:956;}i:925;a:1:{i:0;i:957;}i:926;a:1:{i:0;i:958;}i:927;a:1:{i:0;i:959;}i:928;a:1:{i:0;i:960;}i:929;a:1:{i:0;i:961;}i:931;a:1:{i:0;i:963;}i:932;a:1:{i:0;i:964;}i:933;a:1:{i:0;i:965;}i:934;a:1:{i:0;i:966;}i:935;a:1:{i:0;i:967;}i:936;a:1:{i:0;i:968;}i:937;a:1:{i:0;i:969;}i:938;a:1:{i:0;i:970;}i:939;a:1:{i:0;i:971;}i:944;a:3:{i:0;i:965;i:1;i:776;i:2;i:769;}i:962;a:1:{i:0;i:963;}i:976;a:1:{i:0;i:946;}i:977;a:1:{i:0;i:952;}i:978;a:1:{i:0;i:965;}i:979;a:1:{i:0;i:973;}i:980;a:1:{i:0;i:971;}i:981;a:1:{i:0;i:966;}i:982;a:1:{i:0;i:960;}i:984;a:1:{i:0;i:985;}i:986;a:1:{i:0;i:987;}i:988;a:1:{i:0;i:989;}i:990;a:1:{i:0;i:991;}i:992;a:1:{i:0;i:993;}i:994;a:1:{i:0;i:995;}i:996;a:1:{i:0;i:997;}i:998;a:1:{i:0;i:999;}i:1000;a:1:{i:0;i:1001;}i:1002;a:1:{i:0;i:1003;}i:1004;a:1:{i:0;i:1005;}i:1006;a:1:{i:0;i:1007;}i:1008;a:1:{i:0;i:954;}i:1009;a:1:{i:0;i:961;}i:1010;a:1:{i:0;i:963;}i:1012;a:1:{i:0;i:952;}i:1013;a:1:{i:0;i:949;}i:1024;a:1:{i:0;i:1104;}i:1025;a:1:{i:0;i:1105;}i:1026;a:1:{i:0;i:1106;}i:1027;a:1:{i:0;i:1107;}i:1028;a:1:{i:0;i:1108;}i:1029;a:1:{i:0;i:1109;}i:1030;a:1:{i:0;i:1110;}i:1031;a:1:{i:0;i:1111;}i:1032;a:1:{i:0;i:1112;}i:1033;a:1:{i:0;i:1113;}i:1034;a:1:{i:0;i:1114;}i:1035;a:1:{i:0;i:1115;}i:1036;a:1:{i:0;i:1116;}i:1037;a:1:{i:0;i:1117;}i:1038;a:1:{i:0;i:1118;}i:1039;a:1:{i:0;i:1119;}i:1040;a:1:{i:0;i:1072;}i:1041;a:1:{i:0;i:1073;}i:1042;a:1:{i:0;i:1074;}i:1043;a:1:{i:0;i:1075;}i:1044;a:1:{i:0;i:1076;}i:1045;a:1:{i:0;i:1077;}i:1046;a:1:{i:0;i:1078;}i:1047;a:1:{i:0;i:1079;}i:1048;a:1:{i:0;i:1080;}i:1049;a:1:{i:0;i:1081;}i:1050;a:1:{i:0;i:1082;}i:1051;a:1:{i:0;i:1083;}i:1052;a:1:{i:0;i:1084;}i:1053;a:1:{i:0;i:1085;}i:1054;a:1:{i:0;i:1086;}i:1055;a:1:{i:0;i:1087;}i:1056;a:1:{i:0;i:1088;}i:1057;a:1:{i:0;i:1089;}i:1058;a:1:{i:0;i:1090;}i:1059;a:1:{i:0;i:1091;}i:1060;a:1:{i:0;i:1092;}i:1061;a:1:{i:0;i:1093;}i:1062;a:1:{i:0;i:1094;}i:1063;a:1:{i:0;i:1095;}i:1064;a:1:{i:0;i:1096;}i:1065;a:1:{i:0;i:1097;}i:1066;a:1:{i:0;i:1098;}i:1067;a:1:{i:0;i:1099;}i:1068;a:1:{i:0;i:1100;}i:1069;a:1:{i:0;i:1101;}i:1070;a:1:{i:0;i:1102;}i:1071;a:1:{i:0;i:1103;}i:1120;a:1:{i:0;i:1121;}i:1122;a:1:{i:0;i:1123;}i:1124;a:1:{i:0;i:1125;}i:1126;a:1:{i:0;i:1127;}i:1128;a:1:{i:0;i:1129;}i:1130;a:1:{i:0;i:1131;}i:1132;a:1:{i:0;i:1133;}i:1134;a:1:{i:0;i:1135;}i:1136;a:1:{i:0;i:1137;}i:1138;a:1:{i:0;i:1139;}i:1140;a:1:{i:0;i:1141;}i:1142;a:1:{i:0;i:1143;}i:1144;a:1:{i:0;i:1145;}i:1146;a:1:{i:0;i:1147;}i:1148;a:1:{i:0;i:1149;}i:1150;a:1:{i:0;i:1151;}i:1152;a:1:{i:0;i:1153;}i:1162;a:1:{i:0;i:1163;}i:1164;a:1:{i:0;i:1165;}i:1166;a:1:{i:0;i:1167;}i:1168;a:1:{i:0;i:1169;}i:1170;a:1:{i:0;i:1171;}i:1172;a:1:{i:0;i:1173;}i:1174;a:1:{i:0;i:1175;}i:1176;a:1:{i:0;i:1177;}i:1178;a:1:{i:0;i:1179;}i:1180;a:1:{i:0;i:1181;}i:1182;a:1:{i:0;i:1183;}i:1184;a:1:{i:0;i:1185;}i:1186;a:1:{i:0;i:1187;}i:1188;a:1:{i:0;i:1189;}i:1190;a:1:{i:0;i:1191;}i:1192;a:1:{i:0;i:1193;}i:1194;a:1:{i:0;i:1195;}i:1196;a:1:{i:0;i:1197;}i:1198;a:1:{i:0;i:1199;}i:1200;a:1:{i:0;i:1201;}i:1202;a:1:{i:0;i:1203;}i:1204;a:1:{i:0;i:1205;}i:1206;a:1:{i:0;i:1207;}i:1208;a:1:{i:0;i:1209;}i:1210;a:1:{i:0;i:1211;}i:1212;a:1:{i:0;i:1213;}i:1214;a:1:{i:0;i:1215;}i:1217;a:1:{i:0;i:1218;}i:1219;a:1:{i:0;i:1220;}i:1221;a:1:{i:0;i:1222;}i:1223;a:1:{i:0;i:1224;}i:1225;a:1:{i:0;i:1226;}i:1227;a:1:{i:0;i:1228;}i:1229;a:1:{i:0;i:1230;}i:1232;a:1:{i:0;i:1233;}i:1234;a:1:{i:0;i:1235;}i:1236;a:1:{i:0;i:1237;}i:1238;a:1:{i:0;i:1239;}i:1240;a:1:{i:0;i:1241;}i:1242;a:1:{i:0;i:1243;}i:1244;a:1:{i:0;i:1245;}i:1246;a:1:{i:0;i:1247;}i:1248;a:1:{i:0;i:1249;}i:1250;a:1:{i:0;i:1251;}i:1252;a:1:{i:0;i:1253;}i:1254;a:1:{i:0;i:1255;}i:1256;a:1:{i:0;i:1257;}i:1258;a:1:{i:0;i:1259;}i:1260;a:1:{i:0;i:1261;}i:1262;a:1:{i:0;i:1263;}i:1264;a:1:{i:0;i:1265;}i:1266;a:1:{i:0;i:1267;}i:1268;a:1:{i:0;i:1269;}i:1272;a:1:{i:0;i:1273;}i:1280;a:1:{i:0;i:1281;}i:1282;a:1:{i:0;i:1283;}i:1284;a:1:{i:0;i:1285;}i:1286;a:1:{i:0;i:1287;}i:1288;a:1:{i:0;i:1289;}i:1290;a:1:{i:0;i:1291;}i:1292;a:1:{i:0;i:1293;}i:1294;a:1:{i:0;i:1295;}i:1329;a:1:{i:0;i:1377;}i:1330;a:1:{i:0;i:1378;}i:1331;a:1:{i:0;i:1379;}i:1332;a:1:{i:0;i:1380;}i:1333;a:1:{i:0;i:1381;}i:1334;a:1:{i:0;i:1382;}i:1335;a:1:{i:0;i:1383;}i:1336;a:1:{i:0;i:1384;}i:1337;a:1:{i:0;i:1385;}i:1338;a:1:{i:0;i:1386;}i:1339;a:1:{i:0;i:1387;}i:1340;a:1:{i:0;i:1388;}i:1341;a:1:{i:0;i:1389;}i:1342;a:1:{i:0;i:1390;}i:1343;a:1:{i:0;i:1391;}i:1344;a:1:{i:0;i:1392;}i:1345;a:1:{i:0;i:1393;}i:1346;a:1:{i:0;i:1394;}i:1347;a:1:{i:0;i:1395;}i:1348;a:1:{i:0;i:1396;}i:1349;a:1:{i:0;i:1397;}i:1350;a:1:{i:0;i:1398;}i:1351;a:1:{i:0;i:1399;}i:1352;a:1:{i:0;i:1400;}i:1353;a:1:{i:0;i:1401;}i:1354;a:1:{i:0;i:1402;}i:1355;a:1:{i:0;i:1403;}i:1356;a:1:{i:0;i:1404;}i:1357;a:1:{i:0;i:1405;}i:1358;a:1:{i:0;i:1406;}i:1359;a:1:{i:0;i:1407;}i:1360;a:1:{i:0;i:1408;}i:1361;a:1:{i:0;i:1409;}i:1362;a:1:{i:0;i:1410;}i:1363;a:1:{i:0;i:1411;}i:1364;a:1:{i:0;i:1412;}i:1365;a:1:{i:0;i:1413;}i:1366;a:1:{i:0;i:1414;}i:1415;a:2:{i:0;i:1381;i:1;i:1410;}i:7680;a:1:{i:0;i:7681;}i:7682;a:1:{i:0;i:7683;}i:7684;a:1:{i:0;i:7685;}i:7686;a:1:{i:0;i:7687;}i:7688;a:1:{i:0;i:7689;}i:7690;a:1:{i:0;i:7691;}i:7692;a:1:{i:0;i:7693;}i:7694;a:1:{i:0;i:7695;}i:7696;a:1:{i:0;i:7697;}i:7698;a:1:{i:0;i:7699;}i:7700;a:1:{i:0;i:7701;}i:7702;a:1:{i:0;i:7703;}i:7704;a:1:{i:0;i:7705;}i:7706;a:1:{i:0;i:7707;}i:7708;a:1:{i:0;i:7709;}i:7710;a:1:{i:0;i:7711;}i:7712;a:1:{i:0;i:7713;}i:7714;a:1:{i:0;i:7715;}i:7716;a:1:{i:0;i:7717;}i:7718;a:1:{i:0;i:7719;}i:7720;a:1:{i:0;i:7721;}i:7722;a:1:{i:0;i:7723;}i:7724;a:1:{i:0;i:7725;}i:7726;a:1:{i:0;i:7727;}i:7728;a:1:{i:0;i:7729;}i:7730;a:1:{i:0;i:7731;}i:7732;a:1:{i:0;i:7733;}i:7734;a:1:{i:0;i:7735;}i:7736;a:1:{i:0;i:7737;}i:7738;a:1:{i:0;i:7739;}i:7740;a:1:{i:0;i:7741;}i:7742;a:1:{i:0;i:7743;}i:7744;a:1:{i:0;i:7745;}i:7746;a:1:{i:0;i:7747;}i:7748;a:1:{i:0;i:7749;}i:7750;a:1:{i:0;i:7751;}i:7752;a:1:{i:0;i:7753;}i:7754;a:1:{i:0;i:7755;}i:7756;a:1:{i:0;i:7757;}i:7758;a:1:{i:0;i:7759;}i:7760;a:1:{i:0;i:7761;}i:7762;a:1:{i:0;i:7763;}i:7764;a:1:{i:0;i:7765;}i:7766;a:1:{i:0;i:7767;}i:7768;a:1:{i:0;i:7769;}i:7770;a:1:{i:0;i:7771;}i:7772;a:1:{i:0;i:7773;}i:7774;a:1:{i:0;i:7775;}i:7776;a:1:{i:0;i:7777;}i:7778;a:1:{i:0;i:7779;}i:7780;a:1:{i:0;i:7781;}i:7782;a:1:{i:0;i:7783;}i:7784;a:1:{i:0;i:7785;}i:7786;a:1:{i:0;i:7787;}i:7788;a:1:{i:0;i:7789;}i:7790;a:1:{i:0;i:7791;}i:7792;a:1:{i:0;i:7793;}i:7794;a:1:{i:0;i:7795;}i:7796;a:1:{i:0;i:7797;}i:7798;a:1:{i:0;i:7799;}i:7800;a:1:{i:0;i:7801;}i:7802;a:1:{i:0;i:7803;}i:7804;a:1:{i:0;i:7805;}i:7806;a:1:{i:0;i:7807;}i:7808;a:1:{i:0;i:7809;}i:7810;a:1:{i:0;i:7811;}i:7812;a:1:{i:0;i:7813;}i:7814;a:1:{i:0;i:7815;}i:7816;a:1:{i:0;i:7817;}i:7818;a:1:{i:0;i:7819;}i:7820;a:1:{i:0;i:7821;}i:7822;a:1:{i:0;i:7823;}i:7824;a:1:{i:0;i:7825;}i:7826;a:1:{i:0;i:7827;}i:7828;a:1:{i:0;i:7829;}i:7830;a:2:{i:0;i:104;i:1;i:817;}i:7831;a:2:{i:0;i:116;i:1;i:776;}i:7832;a:2:{i:0;i:119;i:1;i:778;}i:7833;a:2:{i:0;i:121;i:1;i:778;}i:7834;a:2:{i:0;i:97;i:1;i:702;}i:7835;a:1:{i:0;i:7777;}i:7840;a:1:{i:0;i:7841;}i:7842;a:1:{i:0;i:7843;}i:7844;a:1:{i:0;i:7845;}i:7846;a:1:{i:0;i:7847;}i:7848;a:1:{i:0;i:7849;}i:7850;a:1:{i:0;i:7851;}i:7852;a:1:{i:0;i:7853;}i:7854;a:1:{i:0;i:7855;}i:7856;a:1:{i:0;i:7857;}i:7858;a:1:{i:0;i:7859;}i:7860;a:1:{i:0;i:7861;}i:7862;a:1:{i:0;i:7863;}i:7864;a:1:{i:0;i:7865;}i:7866;a:1:{i:0;i:7867;}i:7868;a:1:{i:0;i:7869;}i:7870;a:1:{i:0;i:7871;}i:7872;a:1:{i:0;i:7873;}i:7874;a:1:{i:0;i:7875;}i:7876;a:1:{i:0;i:7877;}i:7878;a:1:{i:0;i:7879;}i:7880;a:1:{i:0;i:7881;}i:7882;a:1:{i:0;i:7883;}i:7884;a:1:{i:0;i:7885;}i:7886;a:1:{i:0;i:7887;}i:7888;a:1:{i:0;i:7889;}i:7890;a:1:{i:0;i:7891;}i:7892;a:1:{i:0;i:7893;}i:7894;a:1:{i:0;i:7895;}i:7896;a:1:{i:0;i:7897;}i:7898;a:1:{i:0;i:7899;}i:7900;a:1:{i:0;i:7901;}i:7902;a:1:{i:0;i:7903;}i:7904;a:1:{i:0;i:7905;}i:7906;a:1:{i:0;i:7907;}i:7908;a:1:{i:0;i:7909;}i:7910;a:1:{i:0;i:7911;}i:7912;a:1:{i:0;i:7913;}i:7914;a:1:{i:0;i:7915;}i:7916;a:1:{i:0;i:7917;}i:7918;a:1:{i:0;i:7919;}i:7920;a:1:{i:0;i:7921;}i:7922;a:1:{i:0;i:7923;}i:7924;a:1:{i:0;i:7925;}i:7926;a:1:{i:0;i:7927;}i:7928;a:1:{i:0;i:7929;}i:7944;a:1:{i:0;i:7936;}i:7945;a:1:{i:0;i:7937;}i:7946;a:1:{i:0;i:7938;}i:7947;a:1:{i:0;i:7939;}i:7948;a:1:{i:0;i:7940;}i:7949;a:1:{i:0;i:7941;}i:7950;a:1:{i:0;i:7942;}i:7951;a:1:{i:0;i:7943;}i:7960;a:1:{i:0;i:7952;}i:7961;a:1:{i:0;i:7953;}i:7962;a:1:{i:0;i:7954;}i:7963;a:1:{i:0;i:7955;}i:7964;a:1:{i:0;i:7956;}i:7965;a:1:{i:0;i:7957;}i:7976;a:1:{i:0;i:7968;}i:7977;a:1:{i:0;i:7969;}i:7978;a:1:{i:0;i:7970;}i:7979;a:1:{i:0;i:7971;}i:7980;a:1:{i:0;i:7972;}i:7981;a:1:{i:0;i:7973;}i:7982;a:1:{i:0;i:7974;}i:7983;a:1:{i:0;i:7975;}i:7992;a:1:{i:0;i:7984;}i:7993;a:1:{i:0;i:7985;}i:7994;a:1:{i:0;i:7986;}i:7995;a:1:{i:0;i:7987;}i:7996;a:1:{i:0;i:7988;}i:7997;a:1:{i:0;i:7989;}i:7998;a:1:{i:0;i:7990;}i:7999;a:1:{i:0;i:7991;}i:8008;a:1:{i:0;i:8000;}i:8009;a:1:{i:0;i:8001;}i:8010;a:1:{i:0;i:8002;}i:8011;a:1:{i:0;i:8003;}i:8012;a:1:{i:0;i:8004;}i:8013;a:1:{i:0;i:8005;}i:8016;a:2:{i:0;i:965;i:1;i:787;}i:8018;a:3:{i:0;i:965;i:1;i:787;i:2;i:768;}i:8020;a:3:{i:0;i:965;i:1;i:787;i:2;i:769;}i:8022;a:3:{i:0;i:965;i:1;i:787;i:2;i:834;}i:8025;a:1:{i:0;i:8017;}i:8027;a:1:{i:0;i:8019;}i:8029;a:1:{i:0;i:8021;}i:8031;a:1:{i:0;i:8023;}i:8040;a:1:{i:0;i:8032;}i:8041;a:1:{i:0;i:8033;}i:8042;a:1:{i:0;i:8034;}i:8043;a:1:{i:0;i:8035;}i:8044;a:1:{i:0;i:8036;}i:8045;a:1:{i:0;i:8037;}i:8046;a:1:{i:0;i:8038;}i:8047;a:1:{i:0;i:8039;}i:8064;a:2:{i:0;i:7936;i:1;i:953;}i:8065;a:2:{i:0;i:7937;i:1;i:953;}i:8066;a:2:{i:0;i:7938;i:1;i:953;}i:8067;a:2:{i:0;i:7939;i:1;i:953;}i:8068;a:2:{i:0;i:7940;i:1;i:953;}i:8069;a:2:{i:0;i:7941;i:1;i:953;}i:8070;a:2:{i:0;i:7942;i:1;i:953;}i:8071;a:2:{i:0;i:7943;i:1;i:953;}i:8072;a:2:{i:0;i:7936;i:1;i:953;}i:8073;a:2:{i:0;i:7937;i:1;i:953;}i:8074;a:2:{i:0;i:7938;i:1;i:953;}i:8075;a:2:{i:0;i:7939;i:1;i:953;}i:8076;a:2:{i:0;i:7940;i:1;i:953;}i:8077;a:2:{i:0;i:7941;i:1;i:953;}i:8078;a:2:{i:0;i:7942;i:1;i:953;}i:8079;a:2:{i:0;i:7943;i:1;i:953;}i:8080;a:2:{i:0;i:7968;i:1;i:953;}i:8081;a:2:{i:0;i:7969;i:1;i:953;}i:8082;a:2:{i:0;i:7970;i:1;i:953;}i:8083;a:2:{i:0;i:7971;i:1;i:953;}i:8084;a:2:{i:0;i:7972;i:1;i:953;}i:8085;a:2:{i:0;i:7973;i:1;i:953;}i:8086;a:2:{i:0;i:7974;i:1;i:953;}i:8087;a:2:{i:0;i:7975;i:1;i:953;}i:8088;a:2:{i:0;i:7968;i:1;i:953;}i:8089;a:2:{i:0;i:7969;i:1;i:953;}i:8090;a:2:{i:0;i:7970;i:1;i:953;}i:8091;a:2:{i:0;i:7971;i:1;i:953;}i:8092;a:2:{i:0;i:7972;i:1;i:953;}i:8093;a:2:{i:0;i:7973;i:1;i:953;}i:8094;a:2:{i:0;i:7974;i:1;i:953;}i:8095;a:2:{i:0;i:7975;i:1;i:953;}i:8096;a:2:{i:0;i:8032;i:1;i:953;}i:8097;a:2:{i:0;i:8033;i:1;i:953;}i:8098;a:2:{i:0;i:8034;i:1;i:953;}i:8099;a:2:{i:0;i:8035;i:1;i:953;}i:8100;a:2:{i:0;i:8036;i:1;i:953;}i:8101;a:2:{i:0;i:8037;i:1;i:953;}i:8102;a:2:{i:0;i:8038;i:1;i:953;}i:8103;a:2:{i:0;i:8039;i:1;i:953;}i:8104;a:2:{i:0;i:8032;i:1;i:953;}i:8105;a:2:{i:0;i:8033;i:1;i:953;}i:8106;a:2:{i:0;i:8034;i:1;i:953;}i:8107;a:2:{i:0;i:8035;i:1;i:953;}i:8108;a:2:{i:0;i:8036;i:1;i:953;}i:8109;a:2:{i:0;i:8037;i:1;i:953;}i:8110;a:2:{i:0;i:8038;i:1;i:953;}i:8111;a:2:{i:0;i:8039;i:1;i:953;}i:8114;a:2:{i:0;i:8048;i:1;i:953;}i:8115;a:2:{i:0;i:945;i:1;i:953;}i:8116;a:2:{i:0;i:940;i:1;i:953;}i:8118;a:2:{i:0;i:945;i:1;i:834;}i:8119;a:3:{i:0;i:945;i:1;i:834;i:2;i:953;}i:8120;a:1:{i:0;i:8112;}i:8121;a:1:{i:0;i:8113;}i:8122;a:1:{i:0;i:8048;}i:8123;a:1:{i:0;i:8049;}i:8124;a:2:{i:0;i:945;i:1;i:953;}i:8126;a:1:{i:0;i:953;}i:8130;a:2:{i:0;i:8052;i:1;i:953;}i:8131;a:2:{i:0;i:951;i:1;i:953;}i:8132;a:2:{i:0;i:942;i:1;i:953;}i:8134;a:2:{i:0;i:951;i:1;i:834;}i:8135;a:3:{i:0;i:951;i:1;i:834;i:2;i:953;}i:8136;a:1:{i:0;i:8050;}i:8137;a:1:{i:0;i:8051;}i:8138;a:1:{i:0;i:8052;}i:8139;a:1:{i:0;i:8053;}i:8140;a:2:{i:0;i:951;i:1;i:953;}i:8146;a:3:{i:0;i:953;i:1;i:776;i:2;i:768;}i:8147;a:3:{i:0;i:953;i:1;i:776;i:2;i:769;}i:8150;a:2:{i:0;i:953;i:1;i:834;}i:8151;a:3:{i:0;i:953;i:1;i:776;i:2;i:834;}i:8152;a:1:{i:0;i:8144;}i:8153;a:1:{i:0;i:8145;}i:8154;a:1:{i:0;i:8054;}i:8155;a:1:{i:0;i:8055;}i:8162;a:3:{i:0;i:965;i:1;i:776;i:2;i:768;}i:8163;a:3:{i:0;i:965;i:1;i:776;i:2;i:769;}i:8164;a:2:{i:0;i:961;i:1;i:787;}i:8166;a:2:{i:0;i:965;i:1;i:834;}i:8167;a:3:{i:0;i:965;i:1;i:776;i:2;i:834;}i:8168;a:1:{i:0;i:8160;}i:8169;a:1:{i:0;i:8161;}i:8170;a:1:{i:0;i:8058;}i:8171;a:1:{i:0;i:8059;}i:8172;a:1:{i:0;i:8165;}i:8178;a:2:{i:0;i:8060;i:1;i:953;}i:8179;a:2:{i:0;i:969;i:1;i:953;}i:8180;a:2:{i:0;i:974;i:1;i:953;}i:8182;a:2:{i:0;i:969;i:1;i:834;}i:8183;a:3:{i:0;i:969;i:1;i:834;i:2;i:953;}i:8184;a:1:{i:0;i:8056;}i:8185;a:1:{i:0;i:8057;}i:8186;a:1:{i:0;i:8060;}i:8187;a:1:{i:0;i:8061;}i:8188;a:2:{i:0;i:969;i:1;i:953;}i:8360;a:2:{i:0;i:114;i:1;i:115;}i:8450;a:1:{i:0;i:99;}i:8451;a:2:{i:0;i:176;i:1;i:99;}i:8455;a:1:{i:0;i:603;}i:8457;a:2:{i:0;i:176;i:1;i:102;}i:8459;a:1:{i:0;i:104;}i:8460;a:1:{i:0;i:104;}i:8461;a:1:{i:0;i:104;}i:8464;a:1:{i:0;i:105;}i:8465;a:1:{i:0;i:105;}i:8466;a:1:{i:0;i:108;}i:8469;a:1:{i:0;i:110;}i:8470;a:2:{i:0;i:110;i:1;i:111;}i:8473;a:1:{i:0;i:112;}i:8474;a:1:{i:0;i:113;}i:8475;a:1:{i:0;i:114;}i:8476;a:1:{i:0;i:114;}i:8477;a:1:{i:0;i:114;}i:8480;a:2:{i:0;i:115;i:1;i:109;}i:8481;a:3:{i:0;i:116;i:1;i:101;i:2;i:108;}i:8482;a:2:{i:0;i:116;i:1;i:109;}i:8484;a:1:{i:0;i:122;}i:8486;a:1:{i:0;i:969;}i:8488;a:1:{i:0;i:122;}i:8490;a:1:{i:0;i:107;}i:8491;a:1:{i:0;i:229;}i:8492;a:1:{i:0;i:98;}i:8493;a:1:{i:0;i:99;}i:8496;a:1:{i:0;i:101;}i:8497;a:1:{i:0;i:102;}i:8499;a:1:{i:0;i:109;}i:8510;a:1:{i:0;i:947;}i:8511;a:1:{i:0;i:960;}i:8517;a:1:{i:0;i:100;}i:8544;a:1:{i:0;i:8560;}i:8545;a:1:{i:0;i:8561;}i:8546;a:1:{i:0;i:8562;}i:8547;a:1:{i:0;i:8563;}i:8548;a:1:{i:0;i:8564;}i:8549;a:1:{i:0;i:8565;}i:8550;a:1:{i:0;i:8566;}i:8551;a:1:{i:0;i:8567;}i:8552;a:1:{i:0;i:8568;}i:8553;a:1:{i:0;i:8569;}i:8554;a:1:{i:0;i:8570;}i:8555;a:1:{i:0;i:8571;}i:8556;a:1:{i:0;i:8572;}i:8557;a:1:{i:0;i:8573;}i:8558;a:1:{i:0;i:8574;}i:8559;a:1:{i:0;i:8575;}i:9398;a:1:{i:0;i:9424;}i:9399;a:1:{i:0;i:9425;}i:9400;a:1:{i:0;i:9426;}i:9401;a:1:{i:0;i:9427;}i:9402;a:1:{i:0;i:9428;}i:9403;a:1:{i:0;i:9429;}i:9404;a:1:{i:0;i:9430;}i:9405;a:1:{i:0;i:9431;}i:9406;a:1:{i:0;i:9432;}i:9407;a:1:{i:0;i:9433;}i:9408;a:1:{i:0;i:9434;}i:9409;a:1:{i:0;i:9435;}i:9410;a:1:{i:0;i:9436;}i:9411;a:1:{i:0;i:9437;}i:9412;a:1:{i:0;i:9438;}i:9413;a:1:{i:0;i:9439;}i:9414;a:1:{i:0;i:9440;}i:9415;a:1:{i:0;i:9441;}i:9416;a:1:{i:0;i:9442;}i:9417;a:1:{i:0;i:9443;}i:9418;a:1:{i:0;i:9444;}i:9419;a:1:{i:0;i:9445;}i:9420;a:1:{i:0;i:9446;}i:9421;a:1:{i:0;i:9447;}i:9422;a:1:{i:0;i:9448;}i:9423;a:1:{i:0;i:9449;}i:13169;a:3:{i:0;i:104;i:1;i:112;i:2;i:97;}i:13171;a:2:{i:0;i:97;i:1;i:117;}i:13173;a:2:{i:0;i:111;i:1;i:118;}i:13184;a:2:{i:0;i:112;i:1;i:97;}i:13185;a:2:{i:0;i:110;i:1;i:97;}i:13186;a:2:{i:0;i:956;i:1;i:97;}i:13187;a:2:{i:0;i:109;i:1;i:97;}i:13188;a:2:{i:0;i:107;i:1;i:97;}i:13189;a:2:{i:0;i:107;i:1;i:98;}i:13190;a:2:{i:0;i:109;i:1;i:98;}i:13191;a:2:{i:0;i:103;i:1;i:98;}i:13194;a:2:{i:0;i:112;i:1;i:102;}i:13195;a:2:{i:0;i:110;i:1;i:102;}i:13196;a:2:{i:0;i:956;i:1;i:102;}i:13200;a:2:{i:0;i:104;i:1;i:122;}i:13201;a:3:{i:0;i:107;i:1;i:104;i:2;i:122;}i:13202;a:3:{i:0;i:109;i:1;i:104;i:2;i:122;}i:13203;a:3:{i:0;i:103;i:1;i:104;i:2;i:122;}i:13204;a:3:{i:0;i:116;i:1;i:104;i:2;i:122;}i:13225;a:2:{i:0;i:112;i:1;i:97;}i:13226;a:3:{i:0;i:107;i:1;i:112;i:2;i:97;}i:13227;a:3:{i:0;i:109;i:1;i:112;i:2;i:97;}i:13228;a:3:{i:0;i:103;i:1;i:112;i:2;i:97;}i:13236;a:2:{i:0;i:112;i:1;i:118;}i:13237;a:2:{i:0;i:110;i:1;i:118;}i:13238;a:2:{i:0;i:956;i:1;i:118;}i:13239;a:2:{i:0;i:109;i:1;i:118;}i:13240;a:2:{i:0;i:107;i:1;i:118;}i:13241;a:2:{i:0;i:109;i:1;i:118;}i:13242;a:2:{i:0;i:112;i:1;i:119;}i:13243;a:2:{i:0;i:110;i:1;i:119;}i:13244;a:2:{i:0;i:956;i:1;i:119;}i:13245;a:2:{i:0;i:109;i:1;i:119;}i:13246;a:2:{i:0;i:107;i:1;i:119;}i:13247;a:2:{i:0;i:109;i:1;i:119;}i:13248;a:2:{i:0;i:107;i:1;i:969;}i:13249;a:2:{i:0;i:109;i:1;i:969;}i:13251;a:2:{i:0;i:98;i:1;i:113;}i:13254;a:4:{i:0;i:99;i:1;i:8725;i:2;i:107;i:3;i:103;}i:13255;a:3:{i:0;i:99;i:1;i:111;i:2;i:46;}i:13256;a:2:{i:0;i:100;i:1;i:98;}i:13257;a:2:{i:0;i:103;i:1;i:121;}i:13259;a:2:{i:0;i:104;i:1;i:112;}i:13261;a:2:{i:0;i:107;i:1;i:107;}i:13262;a:2:{i:0;i:107;i:1;i:109;}i:13271;a:2:{i:0;i:112;i:1;i:104;}i:13273;a:3:{i:0;i:112;i:1;i:112;i:2;i:109;}i:13274;a:2:{i:0;i:112;i:1;i:114;}i:13276;a:2:{i:0;i:115;i:1;i:118;}i:13277;a:2:{i:0;i:119;i:1;i:98;}i:64256;a:2:{i:0;i:102;i:1;i:102;}i:64257;a:2:{i:0;i:102;i:1;i:105;}i:64258;a:2:{i:0;i:102;i:1;i:108;}i:64259;a:3:{i:0;i:102;i:1;i:102;i:2;i:105;}i:64260;a:3:{i:0;i:102;i:1;i:102;i:2;i:108;}i:64261;a:2:{i:0;i:115;i:1;i:116;}i:64262;a:2:{i:0;i:115;i:1;i:116;}i:64275;a:2:{i:0;i:1396;i:1;i:1398;}i:64276;a:2:{i:0;i:1396;i:1;i:1381;}i:64277;a:2:{i:0;i:1396;i:1;i:1387;}i:64278;a:2:{i:0;i:1406;i:1;i:1398;}i:64279;a:2:{i:0;i:1396;i:1;i:1389;}i:65313;a:1:{i:0;i:65345;}i:65314;a:1:{i:0;i:65346;}i:65315;a:1:{i:0;i:65347;}i:65316;a:1:{i:0;i:65348;}i:65317;a:1:{i:0;i:65349;}i:65318;a:1:{i:0;i:65350;}i:65319;a:1:{i:0;i:65351;}i:65320;a:1:{i:0;i:65352;}i:65321;a:1:{i:0;i:65353;}i:65322;a:1:{i:0;i:65354;}i:65323;a:1:{i:0;i:65355;}i:65324;a:1:{i:0;i:65356;}i:65325;a:1:{i:0;i:65357;}i:65326;a:1:{i:0;i:65358;}i:65327;a:1:{i:0;i:65359;}i:65328;a:1:{i:0;i:65360;}i:65329;a:1:{i:0;i:65361;}i:65330;a:1:{i:0;i:65362;}i:65331;a:1:{i:0;i:65363;}i:65332;a:1:{i:0;i:65364;}i:65333;a:1:{i:0;i:65365;}i:65334;a:1:{i:0;i:65366;}i:65335;a:1:{i:0;i:65367;}i:65336;a:1:{i:0;i:65368;}i:65337;a:1:{i:0;i:65369;}i:65338;a:1:{i:0;i:65370;}i:66560;a:1:{i:0;i:66600;}i:66561;a:1:{i:0;i:66601;}i:66562;a:1:{i:0;i:66602;}i:66563;a:1:{i:0;i:66603;}i:66564;a:1:{i:0;i:66604;}i:66565;a:1:{i:0;i:66605;}i:66566;a:1:{i:0;i:66606;}i:66567;a:1:{i:0;i:66607;}i:66568;a:1:{i:0;i:66608;}i:66569;a:1:{i:0;i:66609;}i:66570;a:1:{i:0;i:66610;}i:66571;a:1:{i:0;i:66611;}i:66572;a:1:{i:0;i:66612;}i:66573;a:1:{i:0;i:66613;}i:66574;a:1:{i:0;i:66614;}i:66575;a:1:{i:0;i:66615;}i:66576;a:1:{i:0;i:66616;}i:66577;a:1:{i:0;i:66617;}i:66578;a:1:{i:0;i:66618;}i:66579;a:1:{i:0;i:66619;}i:66580;a:1:{i:0;i:66620;}i:66581;a:1:{i:0;i:66621;}i:66582;a:1:{i:0;i:66622;}i:66583;a:1:{i:0;i:66623;}i:66584;a:1:{i:0;i:66624;}i:66585;a:1:{i:0;i:66625;}i:66586;a:1:{i:0;i:66626;}i:66587;a:1:{i:0;i:66627;}i:66588;a:1:{i:0;i:66628;}i:66589;a:1:{i:0;i:66629;}i:66590;a:1:{i:0;i:66630;}i:66591;a:1:{i:0;i:66631;}i:66592;a:1:{i:0;i:66632;}i:66593;a:1:{i:0;i:66633;}i:66594;a:1:{i:0;i:66634;}i:66595;a:1:{i:0;i:66635;}i:66596;a:1:{i:0;i:66636;}i:66597;a:1:{i:0;i:66637;}i:119808;a:1:{i:0;i:97;}i:119809;a:1:{i:0;i:98;}i:119810;a:1:{i:0;i:99;}i:119811;a:1:{i:0;i:100;}i:119812;a:1:{i:0;i:101;}i:119813;a:1:{i:0;i:102;}i:119814;a:1:{i:0;i:103;}i:119815;a:1:{i:0;i:104;}i:119816;a:1:{i:0;i:105;}i:119817;a:1:{i:0;i:106;}i:119818;a:1:{i:0;i:107;}i:119819;a:1:{i:0;i:108;}i:119820;a:1:{i:0;i:109;}i:119821;a:1:{i:0;i:110;}i:119822;a:1:{i:0;i:111;}i:119823;a:1:{i:0;i:112;}i:119824;a:1:{i:0;i:113;}i:119825;a:1:{i:0;i:114;}i:119826;a:1:{i:0;i:115;}i:119827;a:1:{i:0;i:116;}i:119828;a:1:{i:0;i:117;}i:119829;a:1:{i:0;i:118;}i:119830;a:1:{i:0;i:119;}i:119831;a:1:{i:0;i:120;}i:119832;a:1:{i:0;i:121;}i:119833;a:1:{i:0;i:122;}i:119860;a:1:{i:0;i:97;}i:119861;a:1:{i:0;i:98;}i:119862;a:1:{i:0;i:99;}i:119863;a:1:{i:0;i:100;}i:119864;a:1:{i:0;i:101;}i:119865;a:1:{i:0;i:102;}i:119866;a:1:{i:0;i:103;}i:119867;a:1:{i:0;i:104;}i:119868;a:1:{i:0;i:105;}i:119869;a:1:{i:0;i:106;}i:119870;a:1:{i:0;i:107;}i:119871;a:1:{i:0;i:108;}i:119872;a:1:{i:0;i:109;}i:119873;a:1:{i:0;i:110;}i:119874;a:1:{i:0;i:111;}i:119875;a:1:{i:0;i:112;}i:119876;a:1:{i:0;i:113;}i:119877;a:1:{i:0;i:114;}i:119878;a:1:{i:0;i:115;}i:119879;a:1:{i:0;i:116;}i:119880;a:1:{i:0;i:117;}i:119881;a:1:{i:0;i:118;}i:119882;a:1:{i:0;i:119;}i:119883;a:1:{i:0;i:120;}i:119884;a:1:{i:0;i:121;}i:119885;a:1:{i:0;i:122;}i:119912;a:1:{i:0;i:97;}i:119913;a:1:{i:0;i:98;}i:119914;a:1:{i:0;i:99;}i:119915;a:1:{i:0;i:100;}i:119916;a:1:{i:0;i:101;}i:119917;a:1:{i:0;i:102;}i:119918;a:1:{i:0;i:103;}i:119919;a:1:{i:0;i:104;}i:119920;a:1:{i:0;i:105;}i:119921;a:1:{i:0;i:106;}i:119922;a:1:{i:0;i:107;}i:119923;a:1:{i:0;i:108;}i:119924;a:1:{i:0;i:109;}i:119925;a:1:{i:0;i:110;}i:119926;a:1:{i:0;i:111;}i:119927;a:1:{i:0;i:112;}i:119928;a:1:{i:0;i:113;}i:119929;a:1:{i:0;i:114;}i:119930;a:1:{i:0;i:115;}i:119931;a:1:{i:0;i:116;}i:119932;a:1:{i:0;i:117;}i:119933;a:1:{i:0;i:118;}i:119934;a:1:{i:0;i:119;}i:119935;a:1:{i:0;i:120;}i:119936;a:1:{i:0;i:121;}i:119937;a:1:{i:0;i:122;}i:119964;a:1:{i:0;i:97;}i:119966;a:1:{i:0;i:99;}i:119967;a:1:{i:0;i:100;}i:119970;a:1:{i:0;i:103;}i:119973;a:1:{i:0;i:106;}i:119974;a:1:{i:0;i:107;}i:119977;a:1:{i:0;i:110;}i:119978;a:1:{i:0;i:111;}i:119979;a:1:{i:0;i:112;}i:119980;a:1:{i:0;i:113;}i:119982;a:1:{i:0;i:115;}i:119983;a:1:{i:0;i:116;}i:119984;a:1:{i:0;i:117;}i:119985;a:1:{i:0;i:118;}i:119986;a:1:{i:0;i:119;}i:119987;a:1:{i:0;i:120;}i:119988;a:1:{i:0;i:121;}i:119989;a:1:{i:0;i:122;}i:120016;a:1:{i:0;i:97;}i:120017;a:1:{i:0;i:98;}i:120018;a:1:{i:0;i:99;}i:120019;a:1:{i:0;i:100;}i:120020;a:1:{i:0;i:101;}i:120021;a:1:{i:0;i:102;}i:120022;a:1:{i:0;i:103;}i:120023;a:1:{i:0;i:104;}i:120024;a:1:{i:0;i:105;}i:120025;a:1:{i:0;i:106;}i:120026;a:1:{i:0;i:107;}i:120027;a:1:{i:0;i:108;}i:120028;a:1:{i:0;i:109;}i:120029;a:1:{i:0;i:110;}i:120030;a:1:{i:0;i:111;}i:120031;a:1:{i:0;i:112;}i:120032;a:1:{i:0;i:113;}i:120033;a:1:{i:0;i:114;}i:120034;a:1:{i:0;i:115;}i:120035;a:1:{i:0;i:116;}i:120036;a:1:{i:0;i:117;}i:120037;a:1:{i:0;i:118;}i:120038;a:1:{i:0;i:119;}i:120039;a:1:{i:0;i:120;}i:120040;a:1:{i:0;i:121;}i:120041;a:1:{i:0;i:122;}i:120068;a:1:{i:0;i:97;}i:120069;a:1:{i:0;i:98;}i:120071;a:1:{i:0;i:100;}i:120072;a:1:{i:0;i:101;}i:120073;a:1:{i:0;i:102;}i:120074;a:1:{i:0;i:103;}i:120077;a:1:{i:0;i:106;}i:120078;a:1:{i:0;i:107;}i:120079;a:1:{i:0;i:108;}i:120080;a:1:{i:0;i:109;}i:120081;a:1:{i:0;i:110;}i:120082;a:1:{i:0;i:111;}i:120083;a:1:{i:0;i:112;}i:120084;a:1:{i:0;i:113;}i:120086;a:1:{i:0;i:115;}i:120087;a:1:{i:0;i:116;}i:120088;a:1:{i:0;i:117;}i:120089;a:1:{i:0;i:118;}i:120090;a:1:{i:0;i:119;}i:120091;a:1:{i:0;i:120;}i:120092;a:1:{i:0;i:121;}i:120120;a:1:{i:0;i:97;}i:120121;a:1:{i:0;i:98;}i:120123;a:1:{i:0;i:100;}i:120124;a:1:{i:0;i:101;}i:120125;a:1:{i:0;i:102;}i:120126;a:1:{i:0;i:103;}i:120128;a:1:{i:0;i:105;}i:120129;a:1:{i:0;i:106;}i:120130;a:1:{i:0;i:107;}i:120131;a:1:{i:0;i:108;}i:120132;a:1:{i:0;i:109;}i:120134;a:1:{i:0;i:111;}i:120138;a:1:{i:0;i:115;}i:120139;a:1:{i:0;i:116;}i:120140;a:1:{i:0;i:117;}i:120141;a:1:{i:0;i:118;}i:120142;a:1:{i:0;i:119;}i:120143;a:1:{i:0;i:120;}i:120144;a:1:{i:0;i:121;}i:120172;a:1:{i:0;i:97;}i:120173;a:1:{i:0;i:98;}i:120174;a:1:{i:0;i:99;}i:120175;a:1:{i:0;i:100;}i:120176;a:1:{i:0;i:101;}i:120177;a:1:{i:0;i:102;}i:120178;a:1:{i:0;i:103;}i:120179;a:1:{i:0;i:104;}i:120180;a:1:{i:0;i:105;}i:120181;a:1:{i:0;i:106;}i:120182;a:1:{i:0;i:107;}i:120183;a:1:{i:0;i:108;}i:120184;a:1:{i:0;i:109;}i:120185;a:1:{i:0;i:110;}i:120186;a:1:{i:0;i:111;}i:120187;a:1:{i:0;i:112;}i:120188;a:1:{i:0;i:113;}i:120189;a:1:{i:0;i:114;}i:120190;a:1:{i:0;i:115;}i:120191;a:1:{i:0;i:116;}i:120192;a:1:{i:0;i:117;}i:120193;a:1:{i:0;i:118;}i:120194;a:1:{i:0;i:119;}i:120195;a:1:{i:0;i:120;}i:120196;a:1:{i:0;i:121;}i:120197;a:1:{i:0;i:122;}i:120224;a:1:{i:0;i:97;}i:120225;a:1:{i:0;i:98;}i:120226;a:1:{i:0;i:99;}i:120227;a:1:{i:0;i:100;}i:120228;a:1:{i:0;i:101;}i:120229;a:1:{i:0;i:102;}i:120230;a:1:{i:0;i:103;}i:120231;a:1:{i:0;i:104;}i:120232;a:1:{i:0;i:105;}i:120233;a:1:{i:0;i:106;}i:120234;a:1:{i:0;i:107;}i:120235;a:1:{i:0;i:108;}i:120236;a:1:{i:0;i:109;}i:120237;a:1:{i:0;i:110;}i:120238;a:1:{i:0;i:111;}i:120239;a:1:{i:0;i:112;}i:120240;a:1:{i:0;i:113;}i:120241;a:1:{i:0;i:114;}i:120242;a:1:{i:0;i:115;}i:120243;a:1:{i:0;i:116;}i:120244;a:1:{i:0;i:117;}i:120245;a:1:{i:0;i:118;}i:120246;a:1:{i:0;i:119;}i:120247;a:1:{i:0;i:120;}i:120248;a:1:{i:0;i:121;}i:120249;a:1:{i:0;i:122;}i:120276;a:1:{i:0;i:97;}i:120277;a:1:{i:0;i:98;}i:120278;a:1:{i:0;i:99;}i:120279;a:1:{i:0;i:100;}i:120280;a:1:{i:0;i:101;}i:120281;a:1:{i:0;i:102;}i:120282;a:1:{i:0;i:103;}i:120283;a:1:{i:0;i:104;}i:120284;a:1:{i:0;i:105;}i:120285;a:1:{i:0;i:106;}i:120286;a:1:{i:0;i:107;}i:120287;a:1:{i:0;i:108;}i:120288;a:1:{i:0;i:109;}i:120289;a:1:{i:0;i:110;}i:120290;a:1:{i:0;i:111;}i:120291;a:1:{i:0;i:112;}i:120292;a:1:{i:0;i:113;}i:120293;a:1:{i:0;i:114;}i:120294;a:1:{i:0;i:115;}i:120295;a:1:{i:0;i:116;}i:120296;a:1:{i:0;i:117;}i:120297;a:1:{i:0;i:118;}i:120298;a:1:{i:0;i:119;}i:120299;a:1:{i:0;i:120;}i:120300;a:1:{i:0;i:121;}i:120301;a:1:{i:0;i:122;}i:120328;a:1:{i:0;i:97;}i:120329;a:1:{i:0;i:98;}i:120330;a:1:{i:0;i:99;}i:120331;a:1:{i:0;i:100;}i:120332;a:1:{i:0;i:101;}i:120333;a:1:{i:0;i:102;}i:120334;a:1:{i:0;i:103;}i:120335;a:1:{i:0;i:104;}i:120336;a:1:{i:0;i:105;}i:120337;a:1:{i:0;i:106;}i:120338;a:1:{i:0;i:107;}i:120339;a:1:{i:0;i:108;}i:120340;a:1:{i:0;i:109;}i:120341;a:1:{i:0;i:110;}i:120342;a:1:{i:0;i:111;}i:120343;a:1:{i:0;i:112;}i:120344;a:1:{i:0;i:113;}i:120345;a:1:{i:0;i:114;}i:120346;a:1:{i:0;i:115;}i:120347;a:1:{i:0;i:116;}i:120348;a:1:{i:0;i:117;}i:120349;a:1:{i:0;i:118;}i:120350;a:1:{i:0;i:119;}i:120351;a:1:{i:0;i:120;}i:120352;a:1:{i:0;i:121;}i:120353;a:1:{i:0;i:122;}i:120380;a:1:{i:0;i:97;}i:120381;a:1:{i:0;i:98;}i:120382;a:1:{i:0;i:99;}i:120383;a:1:{i:0;i:100;}i:120384;a:1:{i:0;i:101;}i:120385;a:1:{i:0;i:102;}i:120386;a:1:{i:0;i:103;}i:120387;a:1:{i:0;i:104;}i:120388;a:1:{i:0;i:105;}i:120389;a:1:{i:0;i:106;}i:120390;a:1:{i:0;i:107;}i:120391;a:1:{i:0;i:108;}i:120392;a:1:{i:0;i:109;}i:120393;a:1:{i:0;i:110;}i:120394;a:1:{i:0;i:111;}i:120395;a:1:{i:0;i:112;}i:120396;a:1:{i:0;i:113;}i:120397;a:1:{i:0;i:114;}i:120398;a:1:{i:0;i:115;}i:120399;a:1:{i:0;i:116;}i:120400;a:1:{i:0;i:117;}i:120401;a:1:{i:0;i:118;}i:120402;a:1:{i:0;i:119;}i:120403;a:1:{i:0;i:120;}i:120404;a:1:{i:0;i:121;}i:120405;a:1:{i:0;i:122;}i:120432;a:1:{i:0;i:97;}i:120433;a:1:{i:0;i:98;}i:120434;a:1:{i:0;i:99;}i:120435;a:1:{i:0;i:100;}i:120436;a:1:{i:0;i:101;}i:120437;a:1:{i:0;i:102;}i:120438;a:1:{i:0;i:103;}i:120439;a:1:{i:0;i:104;}i:120440;a:1:{i:0;i:105;}i:120441;a:1:{i:0;i:106;}i:120442;a:1:{i:0;i:107;}i:120443;a:1:{i:0;i:108;}i:120444;a:1:{i:0;i:109;}i:120445;a:1:{i:0;i:110;}i:120446;a:1:{i:0;i:111;}i:120447;a:1:{i:0;i:112;}i:120448;a:1:{i:0;i:113;}i:120449;a:1:{i:0;i:114;}i:120450;a:1:{i:0;i:115;}i:120451;a:1:{i:0;i:116;}i:120452;a:1:{i:0;i:117;}i:120453;a:1:{i:0;i:118;}i:120454;a:1:{i:0;i:119;}i:120455;a:1:{i:0;i:120;}i:120456;a:1:{i:0;i:121;}i:120457;a:1:{i:0;i:122;}i:120488;a:1:{i:0;i:945;}i:120489;a:1:{i:0;i:946;}i:120490;a:1:{i:0;i:947;}i:120491;a:1:{i:0;i:948;}i:120492;a:1:{i:0;i:949;}i:120493;a:1:{i:0;i:950;}i:120494;a:1:{i:0;i:951;}i:120495;a:1:{i:0;i:952;}i:120496;a:1:{i:0;i:953;}i:120497;a:1:{i:0;i:954;}i:120498;a:1:{i:0;i:955;}i:120499;a:1:{i:0;i:956;}i:120500;a:1:{i:0;i:957;}i:120501;a:1:{i:0;i:958;}i:120502;a:1:{i:0;i:959;}i:120503;a:1:{i:0;i:960;}i:120504;a:1:{i:0;i:961;}i:120505;a:1:{i:0;i:952;}i:120506;a:1:{i:0;i:963;}i:120507;a:1:{i:0;i:964;}i:120508;a:1:{i:0;i:965;}i:120509;a:1:{i:0;i:966;}i:120510;a:1:{i:0;i:967;}i:120511;a:1:{i:0;i:968;}i:120512;a:1:{i:0;i:969;}i:120531;a:1:{i:0;i:963;}i:120546;a:1:{i:0;i:945;}i:120547;a:1:{i:0;i:946;}i:120548;a:1:{i:0;i:947;}i:120549;a:1:{i:0;i:948;}i:120550;a:1:{i:0;i:949;}i:120551;a:1:{i:0;i:950;}i:120552;a:1:{i:0;i:951;}i:120553;a:1:{i:0;i:952;}i:120554;a:1:{i:0;i:953;}i:120555;a:1:{i:0;i:954;}i:120556;a:1:{i:0;i:955;}i:120557;a:1:{i:0;i:956;}i:120558;a:1:{i:0;i:957;}i:120559;a:1:{i:0;i:958;}i:120560;a:1:{i:0;i:959;}i:120561;a:1:{i:0;i:960;}i:120562;a:1:{i:0;i:961;}i:120563;a:1:{i:0;i:952;}i:120564;a:1:{i:0;i:963;}i:120565;a:1:{i:0;i:964;}i:120566;a:1:{i:0;i:965;}i:120567;a:1:{i:0;i:966;}i:120568;a:1:{i:0;i:967;}i:120569;a:1:{i:0;i:968;}i:120570;a:1:{i:0;i:969;}i:120589;a:1:{i:0;i:963;}i:120604;a:1:{i:0;i:945;}i:120605;a:1:{i:0;i:946;}i:120606;a:1:{i:0;i:947;}i:120607;a:1:{i:0;i:948;}i:120608;a:1:{i:0;i:949;}i:120609;a:1:{i:0;i:950;}i:120610;a:1:{i:0;i:951;}i:120611;a:1:{i:0;i:952;}i:120612;a:1:{i:0;i:953;}i:120613;a:1:{i:0;i:954;}i:120614;a:1:{i:0;i:955;}i:120615;a:1:{i:0;i:956;}i:120616;a:1:{i:0;i:957;}i:120617;a:1:{i:0;i:958;}i:120618;a:1:{i:0;i:959;}i:120619;a:1:{i:0;i:960;}i:120620;a:1:{i:0;i:961;}i:120621;a:1:{i:0;i:952;}i:120622;a:1:{i:0;i:963;}i:120623;a:1:{i:0;i:964;}i:120624;a:1:{i:0;i:965;}i:120625;a:1:{i:0;i:966;}i:120626;a:1:{i:0;i:967;}i:120627;a:1:{i:0;i:968;}i:120628;a:1:{i:0;i:969;}i:120647;a:1:{i:0;i:963;}i:120662;a:1:{i:0;i:945;}i:120663;a:1:{i:0;i:946;}i:120664;a:1:{i:0;i:947;}i:120665;a:1:{i:0;i:948;}i:120666;a:1:{i:0;i:949;}i:120667;a:1:{i:0;i:950;}i:120668;a:1:{i:0;i:951;}i:120669;a:1:{i:0;i:952;}i:120670;a:1:{i:0;i:953;}i:120671;a:1:{i:0;i:954;}i:120672;a:1:{i:0;i:955;}i:120673;a:1:{i:0;i:956;}i:120674;a:1:{i:0;i:957;}i:120675;a:1:{i:0;i:958;}i:120676;a:1:{i:0;i:959;}i:120677;a:1:{i:0;i:960;}i:120678;a:1:{i:0;i:961;}i:120679;a:1:{i:0;i:952;}i:120680;a:1:{i:0;i:963;}i:120681;a:1:{i:0;i:964;}i:120682;a:1:{i:0;i:965;}i:120683;a:1:{i:0;i:966;}i:120684;a:1:{i:0;i:967;}i:120685;a:1:{i:0;i:968;}i:120686;a:1:{i:0;i:969;}i:120705;a:1:{i:0;i:963;}i:120720;a:1:{i:0;i:945;}i:120721;a:1:{i:0;i:946;}i:120722;a:1:{i:0;i:947;}i:120723;a:1:{i:0;i:948;}i:120724;a:1:{i:0;i:949;}i:120725;a:1:{i:0;i:950;}i:120726;a:1:{i:0;i:951;}i:120727;a:1:{i:0;i:952;}i:120728;a:1:{i:0;i:953;}i:120729;a:1:{i:0;i:954;}i:120730;a:1:{i:0;i:955;}i:120731;a:1:{i:0;i:956;}i:120732;a:1:{i:0;i:957;}i:120733;a:1:{i:0;i:958;}i:120734;a:1:{i:0;i:959;}i:120735;a:1:{i:0;i:960;}i:120736;a:1:{i:0;i:961;}i:120737;a:1:{i:0;i:952;}i:120738;a:1:{i:0;i:963;}i:120739;a:1:{i:0;i:964;}i:120740;a:1:{i:0;i:965;}i:120741;a:1:{i:0;i:966;}i:120742;a:1:{i:0;i:967;}i:120743;a:1:{i:0;i:968;}i:120744;a:1:{i:0;i:969;}i:120763;a:1:{i:0;i:963;}i:1017;a:1:{i:0;i:963;}i:7468;a:1:{i:0;i:97;}i:7469;a:1:{i:0;i:230;}i:7470;a:1:{i:0;i:98;}i:7472;a:1:{i:0;i:100;}i:7473;a:1:{i:0;i:101;}i:7474;a:1:{i:0;i:477;}i:7475;a:1:{i:0;i:103;}i:7476;a:1:{i:0;i:104;}i:7477;a:1:{i:0;i:105;}i:7478;a:1:{i:0;i:106;}i:7479;a:1:{i:0;i:107;}i:7480;a:1:{i:0;i:108;}i:7481;a:1:{i:0;i:109;}i:7482;a:1:{i:0;i:110;}i:7484;a:1:{i:0;i:111;}i:7485;a:1:{i:0;i:547;}i:7486;a:1:{i:0;i:112;}i:7487;a:1:{i:0;i:114;}i:7488;a:1:{i:0;i:116;}i:7489;a:1:{i:0;i:117;}i:7490;a:1:{i:0;i:119;}i:8507;a:3:{i:0;i:102;i:1;i:97;i:2;i:120;}i:12880;a:3:{i:0;i:112;i:1;i:116;i:2;i:101;}i:13004;a:2:{i:0;i:104;i:1;i:103;}i:13006;a:2:{i:0;i:101;i:1;i:118;}i:13007;a:3:{i:0;i:108;i:1;i:116;i:2;i:100;}i:13178;a:2:{i:0;i:105;i:1;i:117;}i:13278;a:3:{i:0;i:118;i:1;i:8725;i:2;i:109;}i:13279;a:3:{i:0;i:97;i:1;i:8725;i:2;i:109;}}s:12:"norm_combcls";a:341:{i:820;i:1;i:821;i:1;i:822;i:1;i:823;i:1;i:824;i:1;i:2364;i:7;i:2492;i:7;i:2620;i:7;i:2748;i:7;i:2876;i:7;i:3260;i:7;i:4151;i:7;i:12441;i:8;i:12442;i:8;i:2381;i:9;i:2509;i:9;i:2637;i:9;i:2765;i:9;i:2893;i:9;i:3021;i:9;i:3149;i:9;i:3277;i:9;i:3405;i:9;i:3530;i:9;i:3642;i:9;i:3972;i:9;i:4153;i:9;i:5908;i:9;i:5940;i:9;i:6098;i:9;i:1456;i:10;i:1457;i:11;i:1458;i:12;i:1459;i:13;i:1460;i:14;i:1461;i:15;i:1462;i:16;i:1463;i:17;i:1464;i:18;i:1465;i:19;i:1467;i:20;i:1468;i:21;i:1469;i:22;i:1471;i:23;i:1473;i:24;i:1474;i:25;i:64286;i:26;i:1611;i:27;i:1612;i:28;i:1613;i:29;i:1614;i:30;i:1615;i:31;i:1616;i:32;i:1617;i:33;i:1618;i:34;i:1648;i:35;i:1809;i:36;i:3157;i:84;i:3158;i:91;i:3640;i:103;i:3641;i:103;i:3656;i:107;i:3657;i:107;i:3658;i:107;i:3659;i:107;i:3768;i:118;i:3769;i:118;i:3784;i:122;i:3785;i:122;i:3786;i:122;i:3787;i:122;i:3953;i:129;i:3954;i:130;i:3962;i:130;i:3963;i:130;i:3964;i:130;i:3965;i:130;i:3968;i:130;i:3956;i:132;i:801;i:202;i:802;i:202;i:807;i:202;i:808;i:202;i:795;i:216;i:3897;i:216;i:119141;i:216;i:119142;i:216;i:119150;i:216;i:119151;i:216;i:119152;i:216;i:119153;i:216;i:119154;i:216;i:12330;i:218;i:790;i:220;i:791;i:220;i:792;i:220;i:793;i:220;i:796;i:220;i:797;i:220;i:798;i:220;i:799;i:220;i:800;i:220;i:803;i:220;i:804;i:220;i:805;i:220;i:806;i:220;i:809;i:220;i:810;i:220;i:811;i:220;i:812;i:220;i:813;i:220;i:814;i:220;i:815;i:220;i:816;i:220;i:817;i:220;i:818;i:220;i:819;i:220;i:825;i:220;i:826;i:220;i:827;i:220;i:828;i:220;i:839;i:220;i:840;i:220;i:841;i:220;i:845;i:220;i:846;i:220;i:851;i:220;i:852;i:220;i:853;i:220;i:854;i:220;i:1425;i:220;i:1430;i:220;i:1435;i:220;i:1443;i:220;i:1444;i:220;i:1445;i:220;i:1446;i:220;i:1447;i:220;i:1450;i:220;i:1621;i:220;i:1622;i:220;i:1763;i:220;i:1770;i:220;i:1773;i:220;i:1841;i:220;i:1844;i:220;i:1847;i:220;i:1848;i:220;i:1849;i:220;i:1851;i:220;i:1852;i:220;i:1854;i:220;i:1858;i:220;i:1860;i:220;i:1862;i:220;i:1864;i:220;i:2386;i:220;i:3864;i:220;i:3865;i:220;i:3893;i:220;i:3895;i:220;i:4038;i:220;i:6459;i:220;i:8424;i:220;i:119163;i:220;i:119164;i:220;i:119165;i:220;i:119166;i:220;i:119167;i:220;i:119168;i:220;i:119169;i:220;i:119170;i:220;i:119178;i:220;i:119179;i:220;i:1434;i:222;i:1453;i:222;i:6441;i:222;i:12333;i:222;i:12334;i:224;i:12335;i:224;i:119149;i:226;i:1454;i:228;i:6313;i:228;i:12331;i:228;i:768;i:230;i:769;i:230;i:770;i:230;i:771;i:230;i:772;i:230;i:773;i:230;i:774;i:230;i:775;i:230;i:776;i:230;i:777;i:230;i:778;i:230;i:779;i:230;i:780;i:230;i:781;i:230;i:782;i:230;i:783;i:230;i:784;i:230;i:785;i:230;i:786;i:230;i:787;i:230;i:788;i:230;i:829;i:230;i:830;i:230;i:831;i:230;i:832;i:230;i:833;i:230;i:834;i:230;i:835;i:230;i:836;i:230;i:838;i:230;i:842;i:230;i:843;i:230;i:844;i:230;i:848;i:230;i:849;i:230;i:850;i:230;i:855;i:230;i:867;i:230;i:868;i:230;i:869;i:230;i:870;i:230;i:871;i:230;i:872;i:230;i:873;i:230;i:874;i:230;i:875;i:230;i:876;i:230;i:877;i:230;i:878;i:230;i:879;i:230;i:1155;i:230;i:1156;i:230;i:1157;i:230;i:1158;i:230;i:1426;i:230;i:1427;i:230;i:1428;i:230;i:1429;i:230;i:1431;i:230;i:1432;i:230;i:1433;i:230;i:1436;i:230;i:1437;i:230;i:1438;i:230;i:1439;i:230;i:1440;i:230;i:1441;i:230;i:1448;i:230;i:1449;i:230;i:1451;i:230;i:1452;i:230;i:1455;i:230;i:1476;i:230;i:1552;i:230;i:1553;i:230;i:1554;i:230;i:1555;i:230;i:1556;i:230;i:1557;i:230;i:1619;i:230;i:1620;i:230;i:1623;i:230;i:1624;i:230;i:1750;i:230;i:1751;i:230;i:1752;i:230;i:1753;i:230;i:1754;i:230;i:1755;i:230;i:1756;i:230;i:1759;i:230;i:1760;i:230;i:1761;i:230;i:1762;i:230;i:1764;i:230;i:1767;i:230;i:1768;i:230;i:1771;i:230;i:1772;i:230;i:1840;i:230;i:1842;i:230;i:1843;i:230;i:1845;i:230;i:1846;i:230;i:1850;i:230;i:1853;i:230;i:1855;i:230;i:1856;i:230;i:1857;i:230;i:1859;i:230;i:1861;i:230;i:1863;i:230;i:1865;i:230;i:1866;i:230;i:2385;i:230;i:2387;i:230;i:2388;i:230;i:3970;i:230;i:3971;i:230;i:3974;i:230;i:3975;i:230;i:5901;i:230;i:6458;i:230;i:8400;i:230;i:8401;i:230;i:8404;i:230;i:8405;i:230;i:8406;i:230;i:8407;i:230;i:8411;i:230;i:8412;i:230;i:8417;i:230;i:8423;i:230;i:8425;i:230;i:65056;i:230;i:65057;i:230;i:65058;i:230;i:65059;i:230;i:119173;i:230;i:119174;i:230;i:119175;i:230;i:119177;i:230;i:119176;i:230;i:119210;i:230;i:119211;i:230;i:119212;i:230;i:119213;i:230;i:789;i:232;i:794;i:232;i:12332;i:232;i:863;i:233;i:866;i:233;i:861;i:234;i:862;i:234;i:864;i:234;i:865;i:234;i:837;i:240;}} \ No newline at end of file
diff --git a/3rdparty/simplepie/library/SimplePie.php b/3rdparty/simplepie/library/SimplePie.php
deleted file mode 100755
index b33c635f1..000000000
--- a/3rdparty/simplepie/library/SimplePie.php
+++ /dev/null
@@ -1,3058 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * SimplePie Name
- */
-define('SIMPLEPIE_NAME', 'SimplePie');
-
-/**
- * SimplePie Version
- */
-define('SIMPLEPIE_VERSION', '1.3.1');
-
-/**
- * SimplePie Build
- * @todo Hardcode for release (there's no need to have to call SimplePie_Misc::get_build() only every load of simplepie.inc)
- */
-define('SIMPLEPIE_BUILD', gmdate('YmdHis', SimplePie_Misc::get_build()));
-
-/**
- * SimplePie Website URL
- */
-define('SIMPLEPIE_URL', 'http://simplepie.org');
-
-/**
- * SimplePie Useragent
- * @see SimplePie::set_useragent()
- */
-define('SIMPLEPIE_USERAGENT', SIMPLEPIE_NAME . '/' . SIMPLEPIE_VERSION . ' (Feed Parser; ' . SIMPLEPIE_URL . '; Allow like Gecko) Build/' . SIMPLEPIE_BUILD);
-
-/**
- * SimplePie Linkback
- */
-define('SIMPLEPIE_LINKBACK', '<a href="' . SIMPLEPIE_URL . '" title="' . SIMPLEPIE_NAME . ' ' . SIMPLEPIE_VERSION . '">' . SIMPLEPIE_NAME . '</a>');
-
-/**
- * No Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_NONE', 0);
-
-/**
- * Feed Link Element Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_AUTODISCOVERY', 1);
-
-/**
- * Local Feed Extension Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_LOCAL_EXTENSION', 2);
-
-/**
- * Local Feed Body Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_LOCAL_BODY', 4);
-
-/**
- * Remote Feed Extension Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_REMOTE_EXTENSION', 8);
-
-/**
- * Remote Feed Body Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_REMOTE_BODY', 16);
-
-/**
- * All Feed Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_ALL', 31);
-
-/**
- * No known feed type
- */
-define('SIMPLEPIE_TYPE_NONE', 0);
-
-/**
- * RSS 0.90
- */
-define('SIMPLEPIE_TYPE_RSS_090', 1);
-
-/**
- * RSS 0.91 (Netscape)
- */
-define('SIMPLEPIE_TYPE_RSS_091_NETSCAPE', 2);
-
-/**
- * RSS 0.91 (Userland)
- */
-define('SIMPLEPIE_TYPE_RSS_091_USERLAND', 4);
-
-/**
- * RSS 0.91 (both Netscape and Userland)
- */
-define('SIMPLEPIE_TYPE_RSS_091', 6);
-
-/**
- * RSS 0.92
- */
-define('SIMPLEPIE_TYPE_RSS_092', 8);
-
-/**
- * RSS 0.93
- */
-define('SIMPLEPIE_TYPE_RSS_093', 16);
-
-/**
- * RSS 0.94
- */
-define('SIMPLEPIE_TYPE_RSS_094', 32);
-
-/**
- * RSS 1.0
- */
-define('SIMPLEPIE_TYPE_RSS_10', 64);
-
-/**
- * RSS 2.0
- */
-define('SIMPLEPIE_TYPE_RSS_20', 128);
-
-/**
- * RDF-based RSS
- */
-define('SIMPLEPIE_TYPE_RSS_RDF', 65);
-
-/**
- * Non-RDF-based RSS (truly intended as syndication format)
- */
-define('SIMPLEPIE_TYPE_RSS_SYNDICATION', 190);
-
-/**
- * All RSS
- */
-define('SIMPLEPIE_TYPE_RSS_ALL', 255);
-
-/**
- * Atom 0.3
- */
-define('SIMPLEPIE_TYPE_ATOM_03', 256);
-
-/**
- * Atom 1.0
- */
-define('SIMPLEPIE_TYPE_ATOM_10', 512);
-
-/**
- * All Atom
- */
-define('SIMPLEPIE_TYPE_ATOM_ALL', 768);
-
-/**
- * All feed types
- */
-define('SIMPLEPIE_TYPE_ALL', 1023);
-
-/**
- * No construct
- */
-define('SIMPLEPIE_CONSTRUCT_NONE', 0);
-
-/**
- * Text construct
- */
-define('SIMPLEPIE_CONSTRUCT_TEXT', 1);
-
-/**
- * HTML construct
- */
-define('SIMPLEPIE_CONSTRUCT_HTML', 2);
-
-/**
- * XHTML construct
- */
-define('SIMPLEPIE_CONSTRUCT_XHTML', 4);
-
-/**
- * base64-encoded construct
- */
-define('SIMPLEPIE_CONSTRUCT_BASE64', 8);
-
-/**
- * IRI construct
- */
-define('SIMPLEPIE_CONSTRUCT_IRI', 16);
-
-/**
- * A construct that might be HTML
- */
-define('SIMPLEPIE_CONSTRUCT_MAYBE_HTML', 32);
-
-/**
- * All constructs
- */
-define('SIMPLEPIE_CONSTRUCT_ALL', 63);
-
-/**
- * Don't change case
- */
-define('SIMPLEPIE_SAME_CASE', 1);
-
-/**
- * Change to lowercase
- */
-define('SIMPLEPIE_LOWERCASE', 2);
-
-/**
- * Change to uppercase
- */
-define('SIMPLEPIE_UPPERCASE', 4);
-
-/**
- * PCRE for HTML attributes
- */
-define('SIMPLEPIE_PCRE_HTML_ATTRIBUTE', '((?:[\x09\x0A\x0B\x0C\x0D\x20]+[^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?)*)[\x09\x0A\x0B\x0C\x0D\x20]*');
-
-/**
- * PCRE for XML attributes
- */
-define('SIMPLEPIE_PCRE_XML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'))*)\s*');
-
-/**
- * XML Namespace
- */
-define('SIMPLEPIE_NAMESPACE_XML', 'http://www.w3.org/XML/1998/namespace');
-
-/**
- * Atom 1.0 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_ATOM_10', 'http://www.w3.org/2005/Atom');
-
-/**
- * Atom 0.3 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_ATOM_03', 'http://purl.org/atom/ns#');
-
-/**
- * RDF Namespace
- */
-define('SIMPLEPIE_NAMESPACE_RDF', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
-
-/**
- * RSS 0.90 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_RSS_090', 'http://my.netscape.com/rdf/simple/0.9/');
-
-/**
- * RSS 1.0 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_RSS_10', 'http://purl.org/rss/1.0/');
-
-/**
- * RSS 1.0 Content Module Namespace
- */
-define('SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT', 'http://purl.org/rss/1.0/modules/content/');
-
-/**
- * RSS 2.0 Namespace
- * (Stupid, I know, but I'm certain it will confuse people less with support.)
- */
-define('SIMPLEPIE_NAMESPACE_RSS_20', '');
-
-/**
- * DC 1.0 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_DC_10', 'http://purl.org/dc/elements/1.0/');
-
-/**
- * DC 1.1 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_DC_11', 'http://purl.org/dc/elements/1.1/');
-
-/**
- * W3C Basic Geo (WGS84 lat/long) Vocabulary Namespace
- */
-define('SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO', 'http://www.w3.org/2003/01/geo/wgs84_pos#');
-
-/**
- * GeoRSS Namespace
- */
-define('SIMPLEPIE_NAMESPACE_GEORSS', 'http://www.georss.org/georss');
-
-/**
- * Media RSS Namespace
- */
-define('SIMPLEPIE_NAMESPACE_MEDIARSS', 'http://search.yahoo.com/mrss/');
-
-/**
- * Wrong Media RSS Namespace. Caused by a long-standing typo in the spec.
- */
-define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG', 'http://search.yahoo.com/mrss');
-
-/**
- * Wrong Media RSS Namespace #2. New namespace introduced in Media RSS 1.5.
- */
-define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG2', 'http://video.search.yahoo.com/mrss');
-
-/**
- * Wrong Media RSS Namespace #3. A possible typo of the Media RSS 1.5 namespace.
- */
-define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG3', 'http://video.search.yahoo.com/mrss/');
-
-/**
- * Wrong Media RSS Namespace #4. New spec location after the RSS Advisory Board takes it over, but not a valid namespace.
- */
-define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG4', 'http://www.rssboard.org/media-rss');
-
-/**
- * Wrong Media RSS Namespace #5. A possible typo of the RSS Advisory Board URL.
- */
-define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG5', 'http://www.rssboard.org/media-rss/');
-
-/**
- * iTunes RSS Namespace
- */
-define('SIMPLEPIE_NAMESPACE_ITUNES', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
-
-/**
- * XHTML Namespace
- */
-define('SIMPLEPIE_NAMESPACE_XHTML', 'http://www.w3.org/1999/xhtml');
-
-/**
- * IANA Link Relations Registry
- */
-define('SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY', 'http://www.iana.org/assignments/relation/');
-
-/**
- * No file source
- */
-define('SIMPLEPIE_FILE_SOURCE_NONE', 0);
-
-/**
- * Remote file source
- */
-define('SIMPLEPIE_FILE_SOURCE_REMOTE', 1);
-
-/**
- * Local file source
- */
-define('SIMPLEPIE_FILE_SOURCE_LOCAL', 2);
-
-/**
- * fsockopen() file source
- */
-define('SIMPLEPIE_FILE_SOURCE_FSOCKOPEN', 4);
-
-/**
- * cURL file source
- */
-define('SIMPLEPIE_FILE_SOURCE_CURL', 8);
-
-/**
- * file_get_contents() file source
- */
-define('SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS', 16);
-
-
-
-/**
- * SimplePie
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie
-{
- /**
- * @var array Raw data
- * @access private
- */
- public $data = array();
-
- /**
- * @var mixed Error string
- * @access private
- */
- public $error;
-
- /**
- * @var object Instance of SimplePie_Sanitize (or other class)
- * @see SimplePie::set_sanitize_class()
- * @access private
- */
- public $sanitize;
-
- /**
- * @var string SimplePie Useragent
- * @see SimplePie::set_useragent()
- * @access private
- */
- public $useragent = SIMPLEPIE_USERAGENT;
-
- /**
- * @var string Feed URL
- * @see SimplePie::set_feed_url()
- * @access private
- */
- public $feed_url;
-
- /**
- * @var object Instance of SimplePie_File to use as a feed
- * @see SimplePie::set_file()
- * @access private
- */
- public $file;
-
- /**
- * @var string Raw feed data
- * @see SimplePie::set_raw_data()
- * @access private
- */
- public $raw_data;
-
- /**
- * @var int Timeout for fetching remote files
- * @see SimplePie::set_timeout()
- * @access private
- */
- public $timeout = 10;
-
- /**
- * @var bool Forces fsockopen() to be used for remote files instead
- * of cURL, even if a new enough version is installed
- * @see SimplePie::force_fsockopen()
- * @access private
- */
- public $force_fsockopen = false;
-
- /**
- * @var bool Force the given data/URL to be treated as a feed no matter what
- * it appears like
- * @see SimplePie::force_feed()
- * @access private
- */
- public $force_feed = false;
-
- /**
- * @var bool Enable/Disable Caching
- * @see SimplePie::enable_cache()
- * @access private
- */
- public $cache = true;
-
- /**
- * @var int Cache duration (in seconds)
- * @see SimplePie::set_cache_duration()
- * @access private
- */
- public $cache_duration = 3600;
-
- /**
- * @var int Auto-discovery cache duration (in seconds)
- * @see SimplePie::set_autodiscovery_cache_duration()
- * @access private
- */
- public $autodiscovery_cache_duration = 604800; // 7 Days.
-
- /**
- * @var string Cache location (relative to executing script)
- * @see SimplePie::set_cache_location()
- * @access private
- */
- public $cache_location = './cache';
-
- /**
- * @var string Function that creates the cache filename
- * @see SimplePie::set_cache_name_function()
- * @access private
- */
- public $cache_name_function = 'md5';
-
- /**
- * @var bool Reorder feed by date descending
- * @see SimplePie::enable_order_by_date()
- * @access private
- */
- public $order_by_date = true;
-
- /**
- * @var mixed Force input encoding to be set to the follow value
- * (false, or anything type-cast to false, disables this feature)
- * @see SimplePie::set_input_encoding()
- * @access private
- */
- public $input_encoding = false;
-
- /**
- * @var int Feed Autodiscovery Level
- * @see SimplePie::set_autodiscovery_level()
- * @access private
- */
- public $autodiscovery = SIMPLEPIE_LOCATOR_ALL;
-
- /**
- * Class registry object
- *
- * @var SimplePie_Registry
- */
- public $registry;
-
- /**
- * @var int Maximum number of feeds to check with autodiscovery
- * @see SimplePie::set_max_checked_feeds()
- * @access private
- */
- public $max_checked_feeds = 10;
-
- /**
- * @var array All the feeds found during the autodiscovery process
- * @see SimplePie::get_all_discovered_feeds()
- * @access private
- */
- public $all_discovered_feeds = array();
-
- /**
- * @var string Web-accessible path to the handler_image.php file.
- * @see SimplePie::set_image_handler()
- * @access private
- */
- public $image_handler = '';
-
- /**
- * @var array Stores the URLs when multiple feeds are being initialized.
- * @see SimplePie::set_feed_url()
- * @access private
- */
- public $multifeed_url = array();
-
- /**
- * @var array Stores SimplePie objects when multiple feeds initialized.
- * @access private
- */
- public $multifeed_objects = array();
-
- /**
- * @var array Stores the get_object_vars() array for use with multifeeds.
- * @see SimplePie::set_feed_url()
- * @access private
- */
- public $config_settings = null;
-
- /**
- * @var integer Stores the number of items to return per-feed with multifeeds.
- * @see SimplePie::set_item_limit()
- * @access private
- */
- public $item_limit = 0;
-
- /**
- * @var array Stores the default attributes to be stripped by strip_attributes().
- * @see SimplePie::strip_attributes()
- * @access private
- */
- public $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
-
- /**
- * @var array Stores the default tags to be stripped by strip_htmltags().
- * @see SimplePie::strip_htmltags()
- * @access private
- */
- public $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
-
- /**
- * The SimplePie class contains feed level data and options
- *
- * To use SimplePie, create the SimplePie object with no parameters. You can
- * then set configuration options using the provided methods. After setting
- * them, you must initialise the feed using $feed->init(). At that point the
- * object's methods and properties will be available to you.
- *
- * Previously, it was possible to pass in the feed URL along with cache
- * options directly into the constructor. This has been removed as of 1.3 as
- * it caused a lot of confusion.
- *
- * @since 1.0 Preview Release
- */
- public function __construct()
- {
- if (version_compare(PHP_VERSION, '5.2', '<'))
- {
- trigger_error('PHP 4.x, 5.0 and 5.1 are no longer supported. Please upgrade to PHP 5.2 or newer.');
- die();
- }
-
- // Other objects, instances created here so we can set options on them
- $this->sanitize = new SimplePie_Sanitize();
- $this->registry = new SimplePie_Registry();
-
- if (func_num_args() > 0)
- {
- $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
- trigger_error('Passing parameters to the constructor is no longer supported. Please use set_feed_url(), set_cache_location(), and set_cache_location() directly.', $level);
-
- $args = func_get_args();
- switch (count($args)) {
- case 3:
- $this->set_cache_duration($args[2]);
- case 2:
- $this->set_cache_location($args[1]);
- case 1:
- $this->set_feed_url($args[0]);
- $this->init();
- }
- }
- }
-
- /**
- * Used for converting object to a string
- */
- public function __toString()
- {
- return md5(serialize($this->data));
- }
-
- /**
- * Remove items that link back to this before destroying this object
- */
- public function __destruct()
- {
- if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode'))
- {
- if (!empty($this->data['items']))
- {
- foreach ($this->data['items'] as $item)
- {
- $item->__destruct();
- }
- unset($item, $this->data['items']);
- }
- if (!empty($this->data['ordered_items']))
- {
- foreach ($this->data['ordered_items'] as $item)
- {
- $item->__destruct();
- }
- unset($item, $this->data['ordered_items']);
- }
- }
- }
-
- /**
- * Force the given data/URL to be treated as a feed
- *
- * This tells SimplePie to ignore the content-type provided by the server.
- * Be careful when using this option, as it will also disable autodiscovery.
- *
- * @since 1.1
- * @param bool $enable Force the given data/URL to be treated as a feed
- */
- public function force_feed($enable = false)
- {
- $this->force_feed = (bool) $enable;
- }
-
- /**
- * Set the URL of the feed you want to parse
- *
- * This allows you to enter the URL of the feed you want to parse, or the
- * website you want to try to use auto-discovery on. This takes priority
- * over any set raw data.
- *
- * You can set multiple feeds to mash together by passing an array instead
- * of a string for the $url. Remember that with each additional feed comes
- * additional processing and resources.
- *
- * @since 1.0 Preview Release
- * @see set_raw_data()
- * @param string|array $url This is the URL (or array of URLs) that you want to parse.
- */
- public function set_feed_url($url)
- {
- $this->multifeed_url = array();
- if (is_array($url))
- {
- foreach ($url as $value)
- {
- $this->multifeed_url[] = $this->registry->call('Misc', 'fix_protocol', array($value, 1));
- }
- }
- else
- {
- $this->feed_url = $this->registry->call('Misc', 'fix_protocol', array($url, 1));
- }
- }
-
- /**
- * Set an instance of {@see SimplePie_File} to use as a feed
- *
- * @param SimplePie_File &$file
- * @return bool True on success, false on failure
- */
- public function set_file(&$file)
- {
- if ($file instanceof SimplePie_File)
- {
- $this->feed_url = $file->url;
- $this->file =& $file;
- return true;
- }
- return false;
- }
-
- /**
- * Set the raw XML data to parse
- *
- * Allows you to use a string of RSS/Atom data instead of a remote feed.
- *
- * If you have a feed available as a string in PHP, you can tell SimplePie
- * to parse that data string instead of a remote feed. Any set feed URL
- * takes precedence.
- *
- * @since 1.0 Beta 3
- * @param string $data RSS or Atom data as a string.
- * @see set_feed_url()
- */
- public function set_raw_data($data)
- {
- $this->raw_data = $data;
- }
-
- /**
- * Set the the default timeout for fetching remote feeds
- *
- * This allows you to change the maximum time the feed's server to respond
- * and send the feed back.
- *
- * @since 1.0 Beta 3
- * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed.
- */
- public function set_timeout($timeout = 10)
- {
- $this->timeout = (int) $timeout;
- }
-
- /**
- * Force SimplePie to use fsockopen() instead of cURL
- *
- * @since 1.0 Beta 3
- * @param bool $enable Force fsockopen() to be used
- */
- public function force_fsockopen($enable = false)
- {
- $this->force_fsockopen = (bool) $enable;
- }
-
- /**
- * Enable/disable caching in SimplePie.
- *
- * This option allows you to disable caching all-together in SimplePie.
- * However, disabling the cache can lead to longer load times.
- *
- * @since 1.0 Preview Release
- * @param bool $enable Enable caching
- */
- public function enable_cache($enable = true)
- {
- $this->cache = (bool) $enable;
- }
-
- /**
- * Set the length of time (in seconds) that the contents of a feed will be
- * cached
- *
- * @param int $seconds The feed content cache duration
- */
- public function set_cache_duration($seconds = 3600)
- {
- $this->cache_duration = (int) $seconds;
- }
-
- /**
- * Set the length of time (in seconds) that the autodiscovered feed URL will
- * be cached
- *
- * @param int $seconds The autodiscovered feed URL cache duration.
- */
- public function set_autodiscovery_cache_duration($seconds = 604800)
- {
- $this->autodiscovery_cache_duration = (int) $seconds;
- }
-
- /**
- * Set the file system location where the cached files should be stored
- *
- * @param string $location The file system location.
- */
- public function set_cache_location($location = './cache')
- {
- $this->cache_location = (string) $location;
- }
-
- /**
- * Set whether feed items should be sorted into reverse chronological order
- *
- * @param bool $enable Sort as reverse chronological order.
- */
- public function enable_order_by_date($enable = true)
- {
- $this->order_by_date = (bool) $enable;
- }
-
- /**
- * Set the character encoding used to parse the feed
- *
- * This overrides the encoding reported by the feed, however it will fall
- * back to the normal encoding detection if the override fails
- *
- * @param string $encoding Character encoding
- */
- public function set_input_encoding($encoding = false)
- {
- if ($encoding)
- {
- $this->input_encoding = (string) $encoding;
- }
- else
- {
- $this->input_encoding = false;
- }
- }
-
- /**
- * Set how much feed autodiscovery to do
- *
- * @see SIMPLEPIE_LOCATOR_NONE
- * @see SIMPLEPIE_LOCATOR_AUTODISCOVERY
- * @see SIMPLEPIE_LOCATOR_LOCAL_EXTENSION
- * @see SIMPLEPIE_LOCATOR_LOCAL_BODY
- * @see SIMPLEPIE_LOCATOR_REMOTE_EXTENSION
- * @see SIMPLEPIE_LOCATOR_REMOTE_BODY
- * @see SIMPLEPIE_LOCATOR_ALL
- * @param int $level Feed Autodiscovery Level (level can be a combination of the above constants, see bitwise OR operator)
- */
- public function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL)
- {
- $this->autodiscovery = (int) $level;
- }
-
- /**
- * Get the class registry
- *
- * Use this to override SimplePie's default classes
- * @see SimplePie_Registry
- * @return SimplePie_Registry
- */
- public function &get_registry()
- {
- return $this->registry;
- }
-
- /**#@+
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @deprecated Use {@see get_registry()} instead
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- * @param string $class Name of custom class
- * @return boolean True on success, false otherwise
- */
- /**
- * Set which class SimplePie uses for caching
- */
- public function set_cache_class($class = 'SimplePie_Cache')
- {
- return $this->registry->register('Cache', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for auto-discovery
- */
- public function set_locator_class($class = 'SimplePie_Locator')
- {
- return $this->registry->register('Locator', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for XML parsing
- */
- public function set_parser_class($class = 'SimplePie_Parser')
- {
- return $this->registry->register('Parser', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for remote file fetching
- */
- public function set_file_class($class = 'SimplePie_File')
- {
- return $this->registry->register('File', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for data sanitization
- */
- public function set_sanitize_class($class = 'SimplePie_Sanitize')
- {
- return $this->registry->register('Sanitize', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for handling feed items
- */
- public function set_item_class($class = 'SimplePie_Item')
- {
- return $this->registry->register('Item', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for handling author data
- */
- public function set_author_class($class = 'SimplePie_Author')
- {
- return $this->registry->register('Author', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for handling category data
- */
- public function set_category_class($class = 'SimplePie_Category')
- {
- return $this->registry->register('Category', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for feed enclosures
- */
- public function set_enclosure_class($class = 'SimplePie_Enclosure')
- {
- return $this->registry->register('Enclosure', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for `<media:text>` captions
- */
- public function set_caption_class($class = 'SimplePie_Caption')
- {
- return $this->registry->register('Caption', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for `<media:copyright>`
- */
- public function set_copyright_class($class = 'SimplePie_Copyright')
- {
- return $this->registry->register('Copyright', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for `<media:credit>`
- */
- public function set_credit_class($class = 'SimplePie_Credit')
- {
- return $this->registry->register('Credit', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for `<media:rating>`
- */
- public function set_rating_class($class = 'SimplePie_Rating')
- {
- return $this->registry->register('Rating', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for `<media:restriction>`
- */
- public function set_restriction_class($class = 'SimplePie_Restriction')
- {
- return $this->registry->register('Restriction', $class, true);
- }
-
- /**
- * Set which class SimplePie uses for content-type sniffing
- */
- public function set_content_type_sniffer_class($class = 'SimplePie_Content_Type_Sniffer')
- {
- return $this->registry->register('Content_Type_Sniffer', $class, true);
- }
-
- /**
- * Set which class SimplePie uses item sources
- */
- public function set_source_class($class = 'SimplePie_Source')
- {
- return $this->registry->register('Source', $class, true);
- }
- /**#@-*/
-
- /**
- * Set the user agent string
- *
- * @param string $ua New user agent string.
- */
- public function set_useragent($ua = SIMPLEPIE_USERAGENT)
- {
- $this->useragent = (string) $ua;
- }
-
- /**
- * Set callback function to create cache filename with
- *
- * @param mixed $function Callback function
- */
- public function set_cache_name_function($function = 'md5')
- {
- if (is_callable($function))
- {
- $this->cache_name_function = $function;
- }
- }
-
- /**
- * Set options to make SP as fast as possible
- *
- * Forgoes a substantial amount of data sanitization in favor of speed. This
- * turns SimplePie into a dumb parser of feeds.
- *
- * @param bool $set Whether to set them or not
- */
- public function set_stupidly_fast($set = false)
- {
- if ($set)
- {
- $this->enable_order_by_date(false);
- $this->remove_div(false);
- $this->strip_comments(false);
- $this->strip_htmltags(false);
- $this->strip_attributes(false);
- $this->set_image_handler(false);
- }
- }
-
- /**
- * Set maximum number of feeds to check with autodiscovery
- *
- * @param int $max Maximum number of feeds to check
- */
- public function set_max_checked_feeds($max = 10)
- {
- $this->max_checked_feeds = (int) $max;
- }
-
- public function remove_div($enable = true)
- {
- $this->sanitize->remove_div($enable);
- }
-
- public function strip_htmltags($tags = '', $encode = null)
- {
- if ($tags === '')
- {
- $tags = $this->strip_htmltags;
- }
- $this->sanitize->strip_htmltags($tags);
- if ($encode !== null)
- {
- $this->sanitize->encode_instead_of_strip($tags);
- }
- }
-
- public function encode_instead_of_strip($enable = true)
- {
- $this->sanitize->encode_instead_of_strip($enable);
- }
-
- public function strip_attributes($attribs = '')
- {
- if ($attribs === '')
- {
- $attribs = $this->strip_attributes;
- }
- $this->sanitize->strip_attributes($attribs);
- }
-
- /**
- * Set the output encoding
- *
- * Allows you to override SimplePie's output to match that of your webpage.
- * This is useful for times when your webpages are not being served as
- * UTF-8. This setting will be obeyed by {@see handle_content_type()}, and
- * is similar to {@see set_input_encoding()}.
- *
- * It should be noted, however, that not all character encodings can support
- * all characters. If your page is being served as ISO-8859-1 and you try
- * to display a Japanese feed, you'll likely see garbled characters.
- * Because of this, it is highly recommended to ensure that your webpages
- * are served as UTF-8.
- *
- * The number of supported character encodings depends on whether your web
- * host supports {@link http://php.net/mbstring mbstring},
- * {@link http://php.net/iconv iconv}, or both. See
- * {@link http://simplepie.org/wiki/faq/Supported_Character_Encodings} for
- * more information.
- *
- * @param string $encoding
- */
- public function set_output_encoding($encoding = 'UTF-8')
- {
- $this->sanitize->set_output_encoding($encoding);
- }
-
- public function strip_comments($strip = false)
- {
- $this->sanitize->strip_comments($strip);
- }
-
- /**
- * Set element/attribute key/value pairs of HTML attributes
- * containing URLs that need to be resolved relative to the feed
- *
- * Defaults to |a|@href, |area|@href, |blockquote|@cite, |del|@cite,
- * |form|@action, |img|@longdesc, |img|@src, |input|@src, |ins|@cite,
- * |q|@cite
- *
- * @since 1.0
- * @param array|null $element_attribute Element/attribute key/value pairs, null for default
- */
- public function set_url_replacements($element_attribute = null)
- {
- $this->sanitize->set_url_replacements($element_attribute);
- }
-
- /**
- * Set the handler to enable the display of cached images.
- *
- * @param str $page Web-accessible path to the handler_image.php file.
- * @param str $qs The query string that the value should be passed to.
- */
- public function set_image_handler($page = false, $qs = 'i')
- {
- if ($page !== false)
- {
- $this->sanitize->set_image_handler($page . '?' . $qs . '=');
- }
- else
- {
- $this->image_handler = '';
- }
- }
-
- /**
- * Set the limit for items returned per-feed with multifeeds
- *
- * @param integer $limit The maximum number of items to return.
- */
- public function set_item_limit($limit = 0)
- {
- $this->item_limit = (int) $limit;
- }
-
- /**
- * Initialize the feed object
- *
- * This is what makes everything happen. Period. This is where all of the
- * configuration options get processed, feeds are fetched, cached, and
- * parsed, and all of that other good stuff.
- *
- * @return boolean True if successful, false otherwise
- */
- public function init()
- {
- // Check absolute bare minimum requirements.
- if (!extension_loaded('xml') || !extension_loaded('pcre'))
- {
- return false;
- }
- // Then check the xml extension is sane (i.e., libxml 2.7.x issue on PHP < 5.2.9 and libxml 2.7.0 to 2.7.2 on any version) if we don't have xmlreader.
- elseif (!extension_loaded('xmlreader'))
- {
- static $xml_is_sane = null;
- if ($xml_is_sane === null)
- {
- $parser_check = xml_parser_create();
- xml_parse_into_struct($parser_check, '<foo>&amp;</foo>', $values);
- xml_parser_free($parser_check);
- $xml_is_sane = isset($values[0]['value']);
- }
- if (!$xml_is_sane)
- {
- return false;
- }
- }
-
- if (method_exists($this->sanitize, 'set_registry'))
- {
- $this->sanitize->set_registry($this->registry);
- }
-
- // Pass whatever was set with config options over to the sanitizer.
- // Pass the classes in for legacy support; new classes should use the registry instead
- $this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->registry->get_class('Cache'));
- $this->sanitize->pass_file_data($this->registry->get_class('File'), $this->timeout, $this->useragent, $this->force_fsockopen);
-
- if (!empty($this->multifeed_url))
- {
- $i = 0;
- $success = 0;
- $this->multifeed_objects = array();
- $this->error = array();
- foreach ($this->multifeed_url as $url)
- {
- $this->multifeed_objects[$i] = clone $this;
- $this->multifeed_objects[$i]->set_feed_url($url);
- $single_success = $this->multifeed_objects[$i]->init();
- $success |= $single_success;
- if (!$single_success)
- {
- $this->error[$i] = $this->multifeed_objects[$i]->error();
- }
- $i++;
- }
- return (bool) $success;
- }
- elseif ($this->feed_url === null && $this->raw_data === null)
- {
- return false;
- }
-
- $this->error = null;
- $this->data = array();
- $this->multifeed_objects = array();
- $cache = false;
-
- if ($this->feed_url !== null)
- {
- $parsed_feed_url = $this->registry->call('Misc', 'parse_url', array($this->feed_url));
-
- // Decide whether to enable caching
- if ($this->cache && $parsed_feed_url['scheme'] !== '')
- {
- $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc'));
- }
-
- // Fetch the data via SimplePie_File into $this->raw_data
- if (($fetched = $this->fetch_data($cache)) === true)
- {
- return true;
- }
- elseif ($fetched === false) {
- return false;
- }
-
- list($headers, $sniffed) = $fetched;
- }
-
- // Set up array of possible encodings
- $encodings = array();
-
- // First check to see if input has been overridden.
- if ($this->input_encoding !== false)
- {
- $encodings[] = $this->input_encoding;
- }
-
- $application_types = array('application/xml', 'application/xml-dtd', 'application/xml-external-parsed-entity');
- $text_types = array('text/xml', 'text/xml-external-parsed-entity');
-
- // RFC 3023 (only applies to sniffed content)
- if (isset($sniffed))
- {
- if (in_array($sniffed, $application_types) || substr($sniffed, 0, 12) === 'application/' && substr($sniffed, -4) === '+xml')
- {
- if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
- {
- $encodings[] = strtoupper($charset[1]);
- }
- $encodings = array_merge($encodings, $this->registry->call('Misc', 'xml_encoding', array($this->raw_data, &$this->registry)));
- $encodings[] = 'UTF-8';
- }
- elseif (in_array($sniffed, $text_types) || substr($sniffed, 0, 5) === 'text/' && substr($sniffed, -4) === '+xml')
- {
- if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
- {
- $encodings[] = $charset[1];
- }
- $encodings[] = 'US-ASCII';
- }
- // Text MIME-type default
- elseif (substr($sniffed, 0, 5) === 'text/')
- {
- $encodings[] = 'US-ASCII';
- }
- }
-
- // Fallback to XML 1.0 Appendix F.1/UTF-8/ISO-8859-1
- $encodings = array_merge($encodings, $this->registry->call('Misc', 'xml_encoding', array($this->raw_data, &$this->registry)));
- $encodings[] = 'UTF-8';
- $encodings[] = 'ISO-8859-1';
-
- // There's no point in trying an encoding twice
- $encodings = array_unique($encodings);
-
- // Loop through each possible encoding, till we return something, or run out of possibilities
- foreach ($encodings as $encoding)
- {
- // Change the encoding to UTF-8 (as we always use UTF-8 internally)
- if ($utf8_data = $this->registry->call('Misc', 'change_encoding', array($this->raw_data, $encoding, 'UTF-8')))
- {
- // Create new parser
- $parser = $this->registry->create('Parser');
-
- // If it's parsed fine
- if ($parser->parse($utf8_data, 'UTF-8'))
- {
- $this->data = $parser->get_data();
- if (!($this->get_type() & ~SIMPLEPIE_TYPE_NONE))
- {
- $this->error = "A feed could not be found at $this->feed_url. This does not appear to be a valid RSS or Atom feed.";
- $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
- return false;
- }
-
- if (isset($headers))
- {
- $this->data['headers'] = $headers;
- }
- $this->data['build'] = SIMPLEPIE_BUILD;
-
- // Cache the file if caching is enabled
- if ($cache && !$cache->save($this))
- {
- trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
- }
- return true;
- }
- }
- }
-
- if (isset($parser))
- {
- // We have an error, just set SimplePie_Misc::error to it and quit
- $this->error = sprintf('This XML document is invalid, likely due to invalid characters. XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
- }
- else
- {
- $this->error = 'The data could not be converted to UTF-8. You MUST have either the iconv or mbstring extension installed. Upgrading to PHP 5.x (which includes iconv) is highly recommended.';
- }
-
- $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
-
- return false;
- }
-
- /**
- * Fetch the data via SimplePie_File
- *
- * If the data is already cached, attempt to fetch it from there instead
- * @param SimplePie_Cache|false $cache Cache handler, or false to not load from the cache
- * @return array|true Returns true if the data was loaded from the cache, or an array of HTTP headers and sniffed type
- */
- protected function fetch_data(&$cache)
- {
- // If it's enabled, use the cache
- if ($cache)
- {
- // Load the Cache
- $this->data = $cache->load();
- if (!empty($this->data))
- {
- // If the cache is for an outdated build of SimplePie
- if (!isset($this->data['build']) || $this->data['build'] !== SIMPLEPIE_BUILD)
- {
- $cache->unlink();
- $this->data = array();
- }
- // If we've hit a collision just rerun it with caching disabled
- elseif (isset($this->data['url']) && $this->data['url'] !== $this->feed_url)
- {
- $cache = false;
- $this->data = array();
- }
- // If we've got a non feed_url stored (if the page isn't actually a feed, or is a redirect) use that URL.
- elseif (isset($this->data['feed_url']))
- {
- // If the autodiscovery cache is still valid use it.
- if ($cache->mtime() + $this->autodiscovery_cache_duration > time())
- {
- // Do not need to do feed autodiscovery yet.
- if ($this->data['feed_url'] !== $this->data['url'])
- {
- $this->set_feed_url($this->data['feed_url']);
- return $this->init();
- }
-
- $cache->unlink();
- $this->data = array();
- }
- }
- // Check if the cache has been updated
- elseif ($cache->mtime() + $this->cache_duration < time())
- {
- // If we have last-modified and/or etag set
- if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag']))
- {
- $headers = array(
- 'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
- );
- if (isset($this->data['headers']['last-modified']))
- {
- $headers['if-modified-since'] = $this->data['headers']['last-modified'];
- }
- if (isset($this->data['headers']['etag']))
- {
- $headers['if-none-match'] = $this->data['headers']['etag'];
- }
-
- $file = $this->registry->create('File', array($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen));
-
- if ($file->success)
- {
- if ($file->status_code === 304)
- {
- $cache->touch();
- return true;
- }
- }
- else
- {
- unset($file);
- }
- }
- }
- // If the cache is still valid, just return true
- else
- {
- $this->raw_data = false;
- return true;
- }
- }
- // If the cache is empty, delete it
- else
- {
- $cache->unlink();
- $this->data = array();
- }
- }
- // If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it.
- if (!isset($file))
- {
- if ($this->file instanceof SimplePie_File && $this->file->url === $this->feed_url)
- {
- $file =& $this->file;
- }
- else
- {
- $headers = array(
- 'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
- );
- $file = $this->registry->create('File', array($this->feed_url, $this->timeout, 5, $headers, $this->useragent, $this->force_fsockopen));
- }
- }
- // If the file connection has an error, set SimplePie::error to that and quit
- if (!$file->success && !($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)))
- {
- $this->error = $file->error;
- return !empty($this->data);
- }
-
- if (!$this->force_feed)
- {
- // Check if the supplied URL is a feed, if it isn't, look for it.
- $locate = $this->registry->create('Locator', array(&$file, $this->timeout, $this->useragent, $this->max_checked_feeds));
-
- if (!$locate->is_feed($file))
- {
- // We need to unset this so that if SimplePie::set_file() has been called that object is untouched
- unset($file);
- try
- {
- if (!($file = $locate->find($this->autodiscovery, $this->all_discovered_feeds)))
- {
- $this->error = "A feed could not be found at $this->feed_url. A feed with an invalid mime type may fall victim to this error, or " . SIMPLEPIE_NAME . " was unable to auto-discover it.. Use force_feed() if you are certain this URL is a real feed.";
- $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
- return false;
- }
- }
- catch (SimplePie_Exception $e)
- {
- // This is usually because DOMDocument doesn't exist
- $this->error = $e->getMessage();
- $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, $e->getFile(), $e->getLine()));
- return false;
- }
- if ($cache)
- {
- $this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD);
- if (!$cache->save($this))
- {
- trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
- }
- $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc'));
- }
- $this->feed_url = $file->url;
- }
- $locate = null;
- }
-
- $this->raw_data = $file->body;
-
- $headers = $file->headers;
- $sniffer = $this->registry->create('Content_Type_Sniffer', array(&$file));
- $sniffed = $sniffer->get_type();
-
- return array($headers, $sniffed);
- }
-
- /**
- * Get the error message for the occured error
- *
- * @return string|array Error message, or array of messages for multifeeds
- */
- public function error()
- {
- return $this->error;
- }
-
- /**
- * Get the raw XML
- *
- * This is the same as the old `$feed->enable_xml_dump(true)`, but returns
- * the data instead of printing it.
- *
- * @return string|boolean Raw XML data, false if the cache is used
- */
- public function get_raw_data()
- {
- return $this->raw_data;
- }
-
- /**
- * Get the character encoding used for output
- *
- * @since Preview Release
- * @return string
- */
- public function get_encoding()
- {
- return $this->sanitize->output_encoding;
- }
-
- /**
- * Send the content-type header with correct encoding
- *
- * This method ensures that the SimplePie-enabled page is being served with
- * the correct {@link http://www.iana.org/assignments/media-types/ mime-type}
- * and character encoding HTTP headers (character encoding determined by the
- * {@see set_output_encoding} config option).
- *
- * This won't work properly if any content or whitespace has already been
- * sent to the browser, because it relies on PHP's
- * {@link http://php.net/header header()} function, and these are the
- * circumstances under which the function works.
- *
- * Because it's setting these settings for the entire page (as is the nature
- * of HTTP headers), this should only be used once per page (again, at the
- * top).
- *
- * @param string $mime MIME type to serve the page as
- */
- public function handle_content_type($mime = 'text/html')
- {
- if (!headers_sent())
- {
- $header = "Content-type: $mime;";
- if ($this->get_encoding())
- {
- $header .= ' charset=' . $this->get_encoding();
- }
- else
- {
- $header .= ' charset=UTF-8';
- }
- header($header);
- }
- }
-
- /**
- * Get the type of the feed
- *
- * This returns a SIMPLEPIE_TYPE_* constant, which can be tested against
- * using {@link http://php.net/language.operators.bitwise bitwise operators}
- *
- * @since 0.8 (usage changed to using constants in 1.0)
- * @see SIMPLEPIE_TYPE_NONE Unknown.
- * @see SIMPLEPIE_TYPE_RSS_090 RSS 0.90.
- * @see SIMPLEPIE_TYPE_RSS_091_NETSCAPE RSS 0.91 (Netscape).
- * @see SIMPLEPIE_TYPE_RSS_091_USERLAND RSS 0.91 (Userland).
- * @see SIMPLEPIE_TYPE_RSS_091 RSS 0.91.
- * @see SIMPLEPIE_TYPE_RSS_092 RSS 0.92.
- * @see SIMPLEPIE_TYPE_RSS_093 RSS 0.93.
- * @see SIMPLEPIE_TYPE_RSS_094 RSS 0.94.
- * @see SIMPLEPIE_TYPE_RSS_10 RSS 1.0.
- * @see SIMPLEPIE_TYPE_RSS_20 RSS 2.0.x.
- * @see SIMPLEPIE_TYPE_RSS_RDF RDF-based RSS.
- * @see SIMPLEPIE_TYPE_RSS_SYNDICATION Non-RDF-based RSS (truly intended as syndication format).
- * @see SIMPLEPIE_TYPE_RSS_ALL Any version of RSS.
- * @see SIMPLEPIE_TYPE_ATOM_03 Atom 0.3.
- * @see SIMPLEPIE_TYPE_ATOM_10 Atom 1.0.
- * @see SIMPLEPIE_TYPE_ATOM_ALL Any version of Atom.
- * @see SIMPLEPIE_TYPE_ALL Any known/supported feed type.
- * @return int SIMPLEPIE_TYPE_* constant
- */
- public function get_type()
- {
- if (!isset($this->data['type']))
- {
- $this->data['type'] = SIMPLEPIE_TYPE_ALL;
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed']))
- {
- $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_10;
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed']))
- {
- $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_03;
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF']))
- {
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['channel'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['image'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['textinput']))
- {
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_10;
- }
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['channel'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['image'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['textinput']))
- {
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_090;
- }
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss']))
- {
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_ALL;
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['attribs']['']['version']))
- {
- switch (trim($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['attribs']['']['version']))
- {
- case '0.91':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091;
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['skiphours']['hour'][0]['data']))
- {
- switch (trim($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['skiphours']['hour'][0]['data']))
- {
- case '0':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_NETSCAPE;
- break;
-
- case '24':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_USERLAND;
- break;
- }
- }
- break;
-
- case '0.92':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_092;
- break;
-
- case '0.93':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_093;
- break;
-
- case '0.94':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_094;
- break;
-
- case '2.0':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_20;
- break;
- }
- }
- }
- else
- {
- $this->data['type'] = SIMPLEPIE_TYPE_NONE;
- }
- }
- return $this->data['type'];
- }
-
- /**
- * Get the URL for the feed
- *
- * May or may not be different from the URL passed to {@see set_feed_url()},
- * depending on whether auto-discovery was used.
- *
- * @since Preview Release (previously called `get_feed_url()` since SimplePie 0.8.)
- * @todo If we have a perm redirect we should return the new URL
- * @todo When we make the above change, let's support <itunes:new-feed-url> as well
- * @todo Also, |atom:link|@rel=self
- * @return string|null
- */
- public function subscribe_url()
- {
- if ($this->feed_url !== null)
- {
- return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get data for an feed-level element
- *
- * This method allows you to get access to ANY element/attribute that is a
- * sub-element of the opening feed tag.
- *
- * The return value is an indexed array of elements matching the given
- * namespace and tag name. Each element has `attribs`, `data` and `child`
- * subkeys. For `attribs` and `child`, these contain namespace subkeys.
- * `attribs` then has one level of associative name => value data (where
- * `value` is a string) after the namespace. `child` has tag-indexed keys
- * after the namespace, each member of which is an indexed array matching
- * this same format.
- *
- * For example:
- * <pre>
- * // This is probably a bad example because we already support
- * // <media:content> natively, but it shows you how to parse through
- * // the nodes.
- * $group = $item->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group');
- * $content = $group[0]['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'];
- * $file = $content[0]['attribs']['']['url'];
- * echo $file;
- * </pre>
- *
- * @since 1.0
- * @see http://simplepie.org/wiki/faq/supported_xml_namespaces
- * @param string $namespace The URL of the XML namespace of the elements you're trying to access
- * @param string $tag Tag name
- * @return array
- */
- public function get_feed_tags($namespace, $tag)
- {
- $type = $this->get_type();
- if ($type & SIMPLEPIE_TYPE_ATOM_10)
- {
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag]))
- {
- return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag];
- }
- }
- if ($type & SIMPLEPIE_TYPE_ATOM_03)
- {
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag]))
- {
- return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag];
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_RDF)
- {
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag]))
- {
- return $this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag];
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
- {
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][$namespace][$tag]))
- {
- return $this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][$namespace][$tag];
- }
- }
- return null;
- }
-
- /**
- * Get data for an channel-level element
- *
- * This method allows you to get access to ANY element/attribute in the
- * channel/header section of the feed.
- *
- * See {@see SimplePie::get_feed_tags()} for a description of the return value
- *
- * @since 1.0
- * @see http://simplepie.org/wiki/faq/supported_xml_namespaces
- * @param string $namespace The URL of the XML namespace of the elements you're trying to access
- * @param string $tag Tag name
- * @return array
- */
- public function get_channel_tags($namespace, $tag)
- {
- $type = $this->get_type();
- if ($type & SIMPLEPIE_TYPE_ATOM_ALL)
- {
- if ($return = $this->get_feed_tags($namespace, $tag))
- {
- return $return;
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_10)
- {
- if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'channel'))
- {
- if (isset($channel[0]['child'][$namespace][$tag]))
- {
- return $channel[0]['child'][$namespace][$tag];
- }
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_090)
- {
- if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'channel'))
- {
- if (isset($channel[0]['child'][$namespace][$tag]))
- {
- return $channel[0]['child'][$namespace][$tag];
- }
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
- {
- if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'channel'))
- {
- if (isset($channel[0]['child'][$namespace][$tag]))
- {
- return $channel[0]['child'][$namespace][$tag];
- }
- }
- }
- return null;
- }
-
- /**
- * Get data for an channel-level element
- *
- * This method allows you to get access to ANY element/attribute in the
- * image/logo section of the feed.
- *
- * See {@see SimplePie::get_feed_tags()} for a description of the return value
- *
- * @since 1.0
- * @see http://simplepie.org/wiki/faq/supported_xml_namespaces
- * @param string $namespace The URL of the XML namespace of the elements you're trying to access
- * @param string $tag Tag name
- * @return array
- */
- public function get_image_tags($namespace, $tag)
- {
- $type = $this->get_type();
- if ($type & SIMPLEPIE_TYPE_RSS_10)
- {
- if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'image'))
- {
- if (isset($image[0]['child'][$namespace][$tag]))
- {
- return $image[0]['child'][$namespace][$tag];
- }
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_090)
- {
- if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'image'))
- {
- if (isset($image[0]['child'][$namespace][$tag]))
- {
- return $image[0]['child'][$namespace][$tag];
- }
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
- {
- if ($image = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'image'))
- {
- if (isset($image[0]['child'][$namespace][$tag]))
- {
- return $image[0]['child'][$namespace][$tag];
- }
- }
- }
- return null;
- }
-
- /**
- * Get the base URL value from the feed
- *
- * Uses `<xml:base>` if available, otherwise uses the first link in the
- * feed, or failing that, the URL of the feed itself.
- *
- * @see get_link
- * @see subscribe_url
- *
- * @param array $element
- * @return string
- */
- public function get_base($element = array())
- {
- if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base']))
- {
- return $element['xml_base'];
- }
- elseif ($this->get_link() !== null)
- {
- return $this->get_link();
- }
- else
- {
- return $this->subscribe_url();
- }
- }
-
- /**
- * Sanitize feed data
- *
- * @access private
- * @see SimplePie_Sanitize::sanitize()
- * @param string $data Data to sanitize
- * @param int $type One of the SIMPLEPIE_CONSTRUCT_* constants
- * @param string $base Base URL to resolve URLs against
- * @return string Sanitized data
- */
- public function sanitize($data, $type, $base = '')
- {
- return $this->sanitize->sanitize($data, $type, $base);
- }
-
- /**
- * Get the title of the feed
- *
- * Uses `<atom:title>`, `<title>` or `<dc:title>`
- *
- * @since 1.0 (previously called `get_feed_title` since 0.8)
- * @return string|null
- */
- public function get_title()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a category for the feed
- *
- * @since Unknown
- * @param int $key The category that you want to return. Remember that arrays begin with 0, not 1
- * @return SimplePie_Category|null
- */
- public function get_category($key = 0)
- {
- $categories = $this->get_categories();
- if (isset($categories[$key]))
- {
- return $categories[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all categories for the feed
- *
- * Uses `<atom:category>`, `<category>` or `<dc:subject>`
- *
- * @since Unknown
- * @return array|null List of {@see SimplePie_Category} objects
- */
- public function get_categories()
- {
- $categories = array();
-
- foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['attribs']['']['term']))
- {
- $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
- }
- foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
- {
- // This is really the label, but keep this as the term also for BC.
- // Label will also work on retrieving because that falls back to term.
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- if (isset($category['attribs']['']['domain']))
- {
- $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = null;
- }
- $categories[] = $this->registry->create('Category', array($term, $scheme, null));
- }
- foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
- {
- $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
- foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
- {
- $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
-
- if (!empty($categories))
- {
- return array_unique($categories);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get an author for the feed
- *
- * @since 1.1
- * @param int $key The author that you want to return. Remember that arrays begin with 0, not 1
- * @return SimplePie_Author|null
- */
- public function get_author($key = 0)
- {
- $authors = $this->get_authors();
- if (isset($authors[$key]))
- {
- return $authors[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all authors for the feed
- *
- * Uses `<atom:author>`, `<author>`, `<dc:creator>` or `<itunes:author>`
- *
- * @since 1.1
- * @return array|null List of {@see SimplePie_Author} objects
- */
- public function get_authors()
- {
- $authors = array();
- foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
- {
- $name = null;
- $uri = null;
- $email = null;
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
- {
- $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
- {
- $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
- }
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
- {
- $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $uri !== null)
- {
- $authors[] = $this->registry->create('Author', array($name, $uri, $email));
- }
- }
- if ($author = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
- {
- $name = null;
- $url = null;
- $email = null;
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
- {
- $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
- {
- $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
- }
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
- {
- $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $url !== null)
- {
- $authors[] = $this->registry->create('Author', array($name, $url, $email));
- }
- }
- foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
- {
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
- foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
- {
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
- foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
- {
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
-
- if (!empty($authors))
- {
- return array_unique($authors);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a contributor for the feed
- *
- * @since 1.1
- * @param int $key The contrbutor that you want to return. Remember that arrays begin with 0, not 1
- * @return SimplePie_Author|null
- */
- public function get_contributor($key = 0)
- {
- $contributors = $this->get_contributors();
- if (isset($contributors[$key]))
- {
- return $contributors[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all contributors for the feed
- *
- * Uses `<atom:contributor>`
- *
- * @since 1.1
- * @return array|null List of {@see SimplePie_Author} objects
- */
- public function get_contributors()
- {
- $contributors = array();
- foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
- {
- $name = null;
- $uri = null;
- $email = null;
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
- {
- $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
- {
- $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
- {
- $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $uri !== null)
- {
- $contributors[] = $this->registry->create('Author', array($name, $uri, $email));
- }
- }
- foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
- {
- $name = null;
- $url = null;
- $email = null;
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
- {
- $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
- {
- $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
- {
- $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $url !== null)
- {
- $contributors[] = $this->registry->create('Author', array($name, $url, $email));
- }
- }
-
- if (!empty($contributors))
- {
- return array_unique($contributors);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a single link for the feed
- *
- * @since 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8)
- * @param int $key The link that you want to return. Remember that arrays begin with 0, not 1
- * @param string $rel The relationship of the link to return
- * @return string|null Link URL
- */
- public function get_link($key = 0, $rel = 'alternate')
- {
- $links = $this->get_links($rel);
- if (isset($links[$key]))
- {
- return $links[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the permalink for the item
- *
- * Returns the first link available with a relationship of "alternate".
- * Identical to {@see get_link()} with key 0
- *
- * @see get_link
- * @since 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8)
- * @internal Added for parity between the parent-level and the item/entry-level.
- * @return string|null Link URL
- */
- public function get_permalink()
- {
- return $this->get_link(0);
- }
-
- /**
- * Get all links for the feed
- *
- * Uses `<atom:link>` or `<link>`
- *
- * @since Beta 2
- * @param string $rel The relationship of links to return
- * @return array|null Links found for the feed (strings)
- */
- public function get_links($rel = 'alternate')
- {
- if (!isset($this->data['links']))
- {
- $this->data['links'] = array();
- if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
- {
- foreach ($links as $link)
- {
- if (isset($link['attribs']['']['href']))
- {
- $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
- $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
- }
- }
- }
- if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
- {
- foreach ($links as $link)
- {
- if (isset($link['attribs']['']['href']))
- {
- $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
- $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-
- }
- }
- }
- if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
-
- $keys = array_keys($this->data['links']);
- foreach ($keys as $key)
- {
- if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key)))
- {
- if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
- {
- $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
- }
- else
- {
- $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
- }
- }
- elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
- {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
- }
- $this->data['links'][$key] = array_unique($this->data['links'][$key]);
- }
- }
-
- if (isset($this->data['links'][$rel]))
- {
- return $this->data['links'][$rel];
- }
- else
- {
- return null;
- }
- }
-
- public function get_all_discovered_feeds()
- {
- return $this->all_discovered_feeds;
- }
-
- /**
- * Get the content for the item
- *
- * Uses `<atom:subtitle>`, `<atom:tagline>`, `<description>`,
- * `<dc:description>`, `<itunes:summary>` or `<itunes:subtitle>`
- *
- * @since 1.0 (previously called `get_feed_description()` since 0.8)
- * @return string|null
- */
- public function get_description()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the copyright info for the feed
- *
- * Uses `<atom:rights>`, `<atom:copyright>` or `<dc:rights>`
- *
- * @since 1.0 (previously called `get_feed_copyright()` since 0.8)
- * @return string|null
- */
- public function get_copyright()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'copyright'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the language for the feed
- *
- * Uses `<language>`, `<dc:language>`, or @xml_lang
- *
- * @since 1.0 (previously called `get_feed_language()` since 0.8)
- * @return string|null
- */
- public function get_language()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'language'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang']))
- {
- return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang']))
- {
- return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang']))
- {
- return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($this->data['headers']['content-language']))
- {
- return $this->sanitize($this->data['headers']['content-language'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the latitude coordinates for the item
- *
- * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications
- *
- * Uses `<geo:lat>` or `<georss:point>`
- *
- * @since 1.0
- * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo
- * @link http://www.georss.org/ GeoRSS
- * @return string|null
- */
- public function get_latitude()
- {
-
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
- {
- return (float) $return[0]['data'];
- }
- elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
- {
- return (float) $match[1];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the longitude coordinates for the feed
- *
- * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications
- *
- * Uses `<geo:long>`, `<geo:lon>` or `<georss:point>`
- *
- * @since 1.0
- * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo
- * @link http://www.georss.org/ GeoRSS
- * @return string|null
- */
- public function get_longitude()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
- {
- return (float) $return[0]['data'];
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
- {
- return (float) $return[0]['data'];
- }
- elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
- {
- return (float) $match[2];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the feed logo's title
- *
- * RSS 0.9.0, 1.0 and 2.0 feeds are allowed to have a "feed logo" title.
- *
- * Uses `<image><title>` or `<image><dc:title>`
- *
- * @return string|null
- */
- public function get_image_title()
- {
- if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the feed logo's URL
- *
- * RSS 0.9.0, 2.0, Atom 1.0, and feeds with iTunes RSS tags are allowed to
- * have a "feed logo" URL. This points directly to the image itself.
- *
- * Uses `<itunes:image>`, `<atom:logo>`, `<atom:icon>`,
- * `<image><title>` or `<image><dc:title>`
- *
- * @return string|null
- */
- public function get_image_url()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
- {
- return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'url'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'url'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'url'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- else
- {
- return null;
- }
- }
-
-
- /**
- * Get the feed logo's link
- *
- * RSS 0.9.0, 1.0 and 2.0 feeds are allowed to have a "feed logo" link. This
- * points to a human-readable page that the image should link to.
- *
- * Uses `<itunes:image>`, `<atom:logo>`, `<atom:icon>`,
- * `<image><title>` or `<image><dc:title>`
- *
- * @return string|null
- */
- public function get_image_link()
- {
- if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the feed logo's link
- *
- * RSS 2.0 feeds are allowed to have a "feed logo" width.
- *
- * Uses `<image><width>` or defaults to 88.0 if no width is specified and
- * the feed is an RSS 2.0 feed.
- *
- * @return int|float|null
- */
- public function get_image_width()
- {
- if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'width'))
- {
- return round($return[0]['data']);
- }
- elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'url'))
- {
- return 88.0;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the feed logo's height
- *
- * RSS 2.0 feeds are allowed to have a "feed logo" height.
- *
- * Uses `<image><height>` or defaults to 31.0 if no height is specified and
- * the feed is an RSS 2.0 feed.
- *
- * @return int|float|null
- */
- public function get_image_height()
- {
- if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'height'))
- {
- return round($return[0]['data']);
- }
- elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'url'))
- {
- return 31.0;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the number of items in the feed
- *
- * This is well-suited for {@link http://php.net/for for()} loops with
- * {@see get_item()}
- *
- * @param int $max Maximum value to return. 0 for no limit
- * @return int Number of items in the feed
- */
- public function get_item_quantity($max = 0)
- {
- $max = (int) $max;
- $qty = count($this->get_items());
- if ($max === 0)
- {
- return $qty;
- }
- else
- {
- return ($qty > $max) ? $max : $qty;
- }
- }
-
- /**
- * Get a single item from the feed
- *
- * This is better suited for {@link http://php.net/for for()} loops, whereas
- * {@see get_items()} is better suited for
- * {@link http://php.net/foreach foreach()} loops.
- *
- * @see get_item_quantity()
- * @since Beta 2
- * @param int $key The item that you want to return. Remember that arrays begin with 0, not 1
- * @return SimplePie_Item|null
- */
- public function get_item($key = 0)
- {
- $items = $this->get_items();
- if (isset($items[$key]))
- {
- return $items[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all items from the feed
- *
- * This is better suited for {@link http://php.net/for for()} loops, whereas
- * {@see get_items()} is better suited for
- * {@link http://php.net/foreach foreach()} loops.
- *
- * @see get_item_quantity
- * @since Beta 2
- * @param int $start Index to start at
- * @param int $end Number of items to return. 0 for all items after `$start`
- * @return array|null List of {@see SimplePie_Item} objects
- */
- public function get_items($start = 0, $end = 0)
- {
- if (!isset($this->data['items']))
- {
- if (!empty($this->multifeed_objects))
- {
- $this->data['items'] = SimplePie::merge_items($this->multifeed_objects, $start, $end, $this->item_limit);
- }
- else
- {
- $this->data['items'] = array();
- if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry'))
- {
- $keys = array_keys($items);
- foreach ($keys as $key)
- {
- $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
- }
- }
- if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry'))
- {
- $keys = array_keys($items);
- foreach ($keys as $key)
- {
- $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
- }
- }
- if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item'))
- {
- $keys = array_keys($items);
- foreach ($keys as $key)
- {
- $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
- }
- }
- if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item'))
- {
- $keys = array_keys($items);
- foreach ($keys as $key)
- {
- $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
- }
- }
- if ($items = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'item'))
- {
- $keys = array_keys($items);
- foreach ($keys as $key)
- {
- $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
- }
- }
- }
- }
-
- if (!empty($this->data['items']))
- {
- // If we want to order it by date, check if all items have a date, and then sort it
- if ($this->order_by_date && empty($this->multifeed_objects))
- {
- if (!isset($this->data['ordered_items']))
- {
- $do_sort = true;
- foreach ($this->data['items'] as $item)
- {
- if (!$item->get_date('U'))
- {
- $do_sort = false;
- break;
- }
- }
- $item = null;
- $this->data['ordered_items'] = $this->data['items'];
- if ($do_sort)
- {
- usort($this->data['ordered_items'], array(get_class($this), 'sort_items'));
- }
- }
- $items = $this->data['ordered_items'];
- }
- else
- {
- $items = $this->data['items'];
- }
-
- // Slice the data as desired
- if ($end === 0)
- {
- return array_slice($items, $start);
- }
- else
- {
- return array_slice($items, $start, $end);
- }
- }
- else
- {
- return array();
- }
- }
-
- /**
- * Set the favicon handler
- *
- * @deprecated Use your own favicon handling instead
- */
- public function set_favicon_handler($page = false, $qs = 'i')
- {
- $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
- trigger_error('Favicon handling has been removed, please use your own handling', $level);
- return false;
- }
-
- /**
- * Get the favicon for the current feed
- *
- * @deprecated Use your own favicon handling instead
- */
- public function get_favicon()
- {
- $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
- trigger_error('Favicon handling has been removed, please use your own handling', $level);
-
- if (($url = $this->get_link()) !== null)
- {
- return 'http://g.etfv.co/' . urlencode($url);
- }
-
- return false;
- }
-
- /**
- * Magic method handler
- *
- * @param string $method Method name
- * @param array $args Arguments to the method
- * @return mixed
- */
- public function __call($method, $args)
- {
- if (strpos($method, 'subscribe_') === 0)
- {
- $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
- trigger_error('subscribe_*() has been deprecated, implement the callback yourself', $level);
- return '';
- }
- if ($method === 'enable_xml_dump')
- {
- $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
- trigger_error('enable_xml_dump() has been deprecated, use get_raw_data() instead', $level);
- return false;
- }
-
- $class = get_class($this);
- $trace = debug_backtrace();
- $file = $trace[0]['file'];
- $line = $trace[0]['line'];
- trigger_error("Call to undefined method $class::$method() in $file on line $line", E_USER_ERROR);
- }
-
- /**
- * Sorting callback for items
- *
- * @access private
- * @param SimplePie $a
- * @param SimplePie $b
- * @return boolean
- */
- public static function sort_items($a, $b)
- {
- return $a->get_date('U') <= $b->get_date('U');
- }
-
- /**
- * Merge items from several feeds into one
- *
- * If you're merging multiple feeds together, they need to all have dates
- * for the items or else SimplePie will refuse to sort them.
- *
- * @link http://simplepie.org/wiki/tutorial/sort_multiple_feeds_by_time_and_date#if_feeds_require_separate_per-feed_settings
- * @param array $urls List of SimplePie feed objects to merge
- * @param int $start Starting item
- * @param int $end Number of items to return
- * @param int $limit Maximum number of items per feed
- * @return array
- */
- public static function merge_items($urls, $start = 0, $end = 0, $limit = 0)
- {
- if (is_array($urls) && sizeof($urls) > 0)
- {
- $items = array();
- foreach ($urls as $arg)
- {
- if ($arg instanceof SimplePie)
- {
- $items = array_merge($items, $arg->get_items(0, $limit));
- }
- else
- {
- trigger_error('Arguments must be SimplePie objects', E_USER_WARNING);
- }
- }
-
- $do_sort = true;
- foreach ($items as $item)
- {
- if (!$item->get_date('U'))
- {
- $do_sort = false;
- break;
- }
- }
- $item = null;
- if ($do_sort)
- {
- usort($items, array(get_class($urls[0]), 'sort_items'));
- }
-
- if ($end === 0)
- {
- return array_slice($items, $start);
- }
- else
- {
- return array_slice($items, $start, $end);
- }
- }
- else
- {
- trigger_error('Cannot merge zero SimplePie objects', E_USER_WARNING);
- return array();
- }
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Author.php b/3rdparty/simplepie/library/SimplePie/Author.php
deleted file mode 100755
index bbf3812ff..000000000
--- a/3rdparty/simplepie/library/SimplePie/Author.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Manages all author-related data
- *
- * Used by {@see SimplePie_Item::get_author()} and {@see SimplePie::get_authors()}
- *
- * This class can be overloaded with {@see SimplePie::set_author_class()}
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Author
-{
- /**
- * Author's name
- *
- * @var string
- * @see get_name()
- */
- var $name;
-
- /**
- * Author's link
- *
- * @var string
- * @see get_link()
- */
- var $link;
-
- /**
- * Author's email address
- *
- * @var string
- * @see get_email()
- */
- var $email;
-
- /**
- * Constructor, used to input the data
- *
- * @param string $name
- * @param string $link
- * @param string $email
- */
- public function __construct($name = null, $link = null, $email = null)
- {
- $this->name = $name;
- $this->link = $link;
- $this->email = $email;
- }
-
- /**
- * String-ified version
- *
- * @return string
- */
- public function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- /**
- * Author's name
- *
- * @return string|null
- */
- public function get_name()
- {
- if ($this->name !== null)
- {
- return $this->name;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Author's link
- *
- * @return string|null
- */
- public function get_link()
- {
- if ($this->link !== null)
- {
- return $this->link;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Author's email address
- *
- * @return string|null
- */
- public function get_email()
- {
- if ($this->email !== null)
- {
- return $this->email;
- }
- else
- {
- return null;
- }
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Cache.php b/3rdparty/simplepie/library/SimplePie/Cache.php
deleted file mode 100755
index 75586d749..000000000
--- a/3rdparty/simplepie/library/SimplePie/Cache.php
+++ /dev/null
@@ -1,133 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Used to create cache objects
- *
- * This class can be overloaded with {@see SimplePie::set_cache_class()},
- * although the preferred way is to create your own handler
- * via {@see register()}
- *
- * @package SimplePie
- * @subpackage Caching
- */
-class SimplePie_Cache
-{
- /**
- * Cache handler classes
- *
- * These receive 3 parameters to their constructor, as documented in
- * {@see register()}
- * @var array
- */
- protected static $handlers = array(
- 'mysql' => 'SimplePie_Cache_MySQL',
- 'memcache' => 'SimplePie_Cache_Memcache',
- );
-
- /**
- * Don't call the constructor. Please.
- */
- private function __construct() { }
-
- /**
- * Create a new SimplePie_Cache object
- *
- * @param string $location URL location (scheme is used to determine handler)
- * @param string $filename Unique identifier for cache object
- * @param string $extension 'spi' or 'spc'
- * @return SimplePie_Cache_Base Type of object depends on scheme of `$location`
- */
- public static function get_handler($location, $filename, $extension)
- {
- $type = explode(':', $location, 2);
- $type = $type[0];
- if (!empty(self::$handlers[$type]))
- {
- $class = self::$handlers[$type];
- return new $class($location, $filename, $extension);
- }
-
- return new SimplePie_Cache_File($location, $filename, $extension);
- }
-
- /**
- * Create a new SimplePie_Cache object
- *
- * @deprecated Use {@see get_handler} instead
- */
- public function create($location, $filename, $extension)
- {
- trigger_error('Cache::create() has been replaced with Cache::get_handler(). Switch to the registry system to use this.', E_USER_DEPRECATED);
- return self::get_handler($location, $filename, $extension);
- }
-
- /**
- * Register a handler
- *
- * @param string $type DSN type to register for
- * @param string $class Name of handler class. Must implement SimplePie_Cache_Base
- */
- public static function register($type, $class)
- {
- self::$handlers[$type] = $class;
- }
-
- /**
- * Parse a URL into an array
- *
- * @param string $url
- * @return array
- */
- public static function parse_URL($url)
- {
- $params = parse_url($url);
- $params['extras'] = array();
- if (isset($params['query']))
- {
- parse_str($params['query'], $params['extras']);
- }
- return $params;
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Cache/Base.php b/3rdparty/simplepie/library/SimplePie/Cache/Base.php
deleted file mode 100755
index 937e34631..000000000
--- a/3rdparty/simplepie/library/SimplePie/Cache/Base.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Base for cache objects
- *
- * Classes to be used with {@see SimplePie_Cache::register()} are expected
- * to implement this interface.
- *
- * @package SimplePie
- * @subpackage Caching
- */
-interface SimplePie_Cache_Base
-{
- /**
- * Feed cache type
- *
- * @var string
- */
- const TYPE_FEED = 'spc';
-
- /**
- * Image cache type
- *
- * @var string
- */
- const TYPE_IMAGE = 'spi';
-
- /**
- * Create a new cache object
- *
- * @param string $location Location string (from SimplePie::$cache_location)
- * @param string $name Unique ID for the cache
- * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
- */
- public function __construct($location, $name, $type);
-
- /**
- * Save data to the cache
- *
- * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
- * @return bool Successfulness
- */
- public function save($data);
-
- /**
- * Retrieve the data saved to the cache
- *
- * @return array Data for SimplePie::$data
- */
- public function load();
-
- /**
- * Retrieve the last modified time for the cache
- *
- * @return int Timestamp
- */
- public function mtime();
-
- /**
- * Set the last modified time to the current time
- *
- * @return bool Success status
- */
- public function touch();
-
- /**
- * Remove the cache
- *
- * @return bool Success status
- */
- public function unlink();
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Cache/DB.php b/3rdparty/simplepie/library/SimplePie/Cache/DB.php
deleted file mode 100755
index ac509ae08..000000000
--- a/3rdparty/simplepie/library/SimplePie/Cache/DB.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Base class for database-based caches
- *
- * @package SimplePie
- * @subpackage Caching
- */
-abstract class SimplePie_Cache_DB implements SimplePie_Cache_Base
-{
- /**
- * Helper for database conversion
- *
- * Converts a given {@see SimplePie} object into data to be stored
- *
- * @param SimplePie $data
- * @return array First item is the serialized data for storage, second item is the unique ID for this item
- */
- protected static function prepare_simplepie_object_for_cache($data)
- {
- $items = $data->get_items();
- $items_by_id = array();
-
- if (!empty($items))
- {
- foreach ($items as $item)
- {
- $items_by_id[$item->get_id()] = $item;
- }
-
- if (count($items_by_id) !== count($items))
- {
- $items_by_id = array();
- foreach ($items as $item)
- {
- $items_by_id[$item->get_id(true)] = $item;
- }
- }
-
- if (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]))
- {
- $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0];
- }
- elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]))
- {
- $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0];
- }
- elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]))
- {
- $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0];
- }
- elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0]))
- {
- $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0];
- }
- else
- {
- $channel = null;
- }
-
- if ($channel !== null)
- {
- if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']))
- {
- unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']);
- }
- if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']))
- {
- unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']);
- }
- if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']))
- {
- unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']);
- }
- if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']))
- {
- unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']);
- }
- if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']))
- {
- unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']);
- }
- }
- if (isset($data->data['items']))
- {
- unset($data->data['items']);
- }
- if (isset($data->data['ordered_items']))
- {
- unset($data->data['ordered_items']);
- }
- }
- return array(serialize($data->data), $items_by_id);
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Cache/File.php b/3rdparty/simplepie/library/SimplePie/Cache/File.php
deleted file mode 100755
index 5797b3aed..000000000
--- a/3rdparty/simplepie/library/SimplePie/Cache/File.php
+++ /dev/null
@@ -1,173 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Caches data to the filesystem
- *
- * @package SimplePie
- * @subpackage Caching
- */
-class SimplePie_Cache_File implements SimplePie_Cache_Base
-{
- /**
- * Location string
- *
- * @see SimplePie::$cache_location
- * @var string
- */
- protected $location;
-
- /**
- * Filename
- *
- * @var string
- */
- protected $filename;
-
- /**
- * File extension
- *
- * @var string
- */
- protected $extension;
-
- /**
- * File path
- *
- * @var string
- */
- protected $name;
-
- /**
- * Create a new cache object
- *
- * @param string $location Location string (from SimplePie::$cache_location)
- * @param string $name Unique ID for the cache
- * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
- */
- public function __construct($location, $name, $type)
- {
- $this->location = $location;
- $this->filename = $name;
- $this->extension = $type;
- $this->name = "$this->location/$this->filename.$this->extension";
- }
-
- /**
- * Save data to the cache
- *
- * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
- * @return bool Successfulness
- */
- public function save($data)
- {
- if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
- {
- if ($data instanceof SimplePie)
- {
- $data = $data->data;
- }
-
- $data = serialize($data);
- return (bool) file_put_contents($this->name, $data);
- }
- return false;
- }
-
- /**
- * Retrieve the data saved to the cache
- *
- * @return array Data for SimplePie::$data
- */
- public function load()
- {
- if (file_exists($this->name) && is_readable($this->name))
- {
- return unserialize(file_get_contents($this->name));
- }
- return false;
- }
-
- /**
- * Retrieve the last modified time for the cache
- *
- * @return int Timestamp
- */
- public function mtime()
- {
- if (file_exists($this->name))
- {
- return filemtime($this->name);
- }
- return false;
- }
-
- /**
- * Set the last modified time to the current time
- *
- * @return bool Success status
- */
- public function touch()
- {
- if (file_exists($this->name))
- {
- return touch($this->name);
- }
- return false;
- }
-
- /**
- * Remove the cache
- *
- * @return bool Success status
- */
- public function unlink()
- {
- if (file_exists($this->name))
- {
- return unlink($this->name);
- }
- return false;
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Cache/Memcache.php b/3rdparty/simplepie/library/SimplePie/Cache/Memcache.php
deleted file mode 100755
index fd4478060..000000000
--- a/3rdparty/simplepie/library/SimplePie/Cache/Memcache.php
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Caches data to memcache
- *
- * Registered for URLs with the "memcache" protocol
- *
- * For example, `memcache://localhost:11211/?timeout=3600&prefix=sp_` will
- * connect to memcache on `localhost` on port 11211. All tables will be
- * prefixed with `sp_` and data will expire after 3600 seconds
- *
- * @package SimplePie
- * @subpackage Caching
- * @uses Memcache
- */
-class SimplePie_Cache_Memcache implements SimplePie_Cache_Base
-{
- /**
- * Memcache instance
- *
- * @var Memcache
- */
- protected $cache;
-
- /**
- * Options
- *
- * @var array
- */
- protected $options;
-
- /**
- * Cache name
- *
- * @var string
- */
- protected $name;
-
- /**
- * Create a new cache object
- *
- * @param string $location Location string (from SimplePie::$cache_location)
- * @param string $name Unique ID for the cache
- * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
- */
- public function __construct($location, $name, $type)
- {
- $this->options = array(
- 'host' => '127.0.0.1',
- 'port' => 11211,
- 'extras' => array(
- 'timeout' => 3600, // one hour
- 'prefix' => 'simplepie_',
- ),
- );
- $parsed = SimplePie_Cache::parse_URL($location);
- $this->options['host'] = empty($parsed['host']) ? $this->options['host'] : $parsed['host'];
- $this->options['port'] = empty($parsed['port']) ? $this->options['port'] : $parsed['port'];
- $this->options['extras'] = array_merge($this->options['extras'], $parsed['extras']);
- $this->name = $this->options['extras']['prefix'] . md5("$name:$type");
-
- $this->cache = new Memcache();
- $this->cache->addServer($this->options['host'], (int) $this->options['port']);
- }
-
- /**
- * Save data to the cache
- *
- * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
- * @return bool Successfulness
- */
- public function save($data)
- {
- if ($data instanceof SimplePie)
- {
- $data = $data->data;
- }
- return $this->cache->set($this->name, serialize($data), MEMCACHE_COMPRESSED, (int) $this->options['extras']['timeout']);
- }
-
- /**
- * Retrieve the data saved to the cache
- *
- * @return array Data for SimplePie::$data
- */
- public function load()
- {
- $data = $this->cache->get($this->name);
-
- if ($data !== false)
- {
- return unserialize($data);
- }
- return false;
- }
-
- /**
- * Retrieve the last modified time for the cache
- *
- * @return int Timestamp
- */
- public function mtime()
- {
- $data = $this->cache->get($this->name);
-
- if ($data !== false)
- {
- // essentially ignore the mtime because Memcache expires on it's own
- return time();
- }
-
- return false;
- }
-
- /**
- * Set the last modified time to the current time
- *
- * @return bool Success status
- */
- public function touch()
- {
- $data = $this->cache->get($this->name);
-
- if ($data !== false)
- {
- return $this->cache->set($this->name, $data, MEMCACHE_COMPRESSED, (int) $this->duration);
- }
-
- return false;
- }
-
- /**
- * Remove the cache
- *
- * @return bool Success status
- */
- public function unlink()
- {
- return $this->cache->delete($this->name, 0);
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Cache/MySQL.php b/3rdparty/simplepie/library/SimplePie/Cache/MySQL.php
deleted file mode 100755
index d53ebc117..000000000
--- a/3rdparty/simplepie/library/SimplePie/Cache/MySQL.php
+++ /dev/null
@@ -1,438 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Caches data to a MySQL database
- *
- * Registered for URLs with the "mysql" protocol
- *
- * For example, `mysql://root:password@localhost:3306/mydb?prefix=sp_` will
- * connect to the `mydb` database on `localhost` on port 3306, with the user
- * `root` and the password `password`. All tables will be prefixed with `sp_`
- *
- * @package SimplePie
- * @subpackage Caching
- */
-class SimplePie_Cache_MySQL extends SimplePie_Cache_DB
-{
- /**
- * PDO instance
- *
- * @var PDO
- */
- protected $mysql;
-
- /**
- * Options
- *
- * @var array
- */
- protected $options;
-
- /**
- * Cache ID
- *
- * @var string
- */
- protected $id;
-
- /**
- * Create a new cache object
- *
- * @param string $location Location string (from SimplePie::$cache_location)
- * @param string $name Unique ID for the cache
- * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
- */
- public function __construct($location, $name, $type)
- {
- $this->options = array(
- 'user' => null,
- 'pass' => null,
- 'host' => '127.0.0.1',
- 'port' => '3306',
- 'path' => '',
- 'extras' => array(
- 'prefix' => '',
- ),
- );
- $this->options = array_merge_recursive($this->options, SimplePie_Cache::parse_URL($location));
-
- // Path is prefixed with a "/"
- $this->options['dbname'] = substr($this->options['path'], 1);
-
- try
- {
- $this->mysql = new PDO("mysql:dbname={$this->options['dbname']};host={$this->options['host']};port={$this->options['port']}", $this->options['user'], $this->options['pass'], array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
- }
- catch (PDOException $e)
- {
- $this->mysql = null;
- return;
- }
-
- $this->id = $name . $type;
-
- if (!$query = $this->mysql->query('SHOW TABLES'))
- {
- $this->mysql = null;
- return;
- }
-
- $db = array();
- while ($row = $query->fetchColumn())
- {
- $db[] = $row;
- }
-
- if (!in_array($this->options['extras']['prefix'] . 'cache_data', $db))
- {
- $query = $this->mysql->exec('CREATE TABLE `' . $this->options['extras']['prefix'] . 'cache_data` (`id` TEXT CHARACTER SET utf8 NOT NULL, `items` SMALLINT NOT NULL DEFAULT 0, `data` BLOB NOT NULL, `mtime` INT UNSIGNED NOT NULL, UNIQUE (`id`(125)))');
- if ($query === false)
- {
- $this->mysql = null;
- }
- }
-
- if (!in_array($this->options['extras']['prefix'] . 'items', $db))
- {
- $query = $this->mysql->exec('CREATE TABLE `' . $this->options['extras']['prefix'] . 'items` (`feed_id` TEXT CHARACTER SET utf8 NOT NULL, `id` TEXT CHARACTER SET utf8 NOT NULL, `data` TEXT CHARACTER SET utf8 NOT NULL, `posted` INT UNSIGNED NOT NULL, INDEX `feed_id` (`feed_id`(125)))');
- if ($query === false)
- {
- $this->mysql = null;
- }
- }
- }
-
- /**
- * Save data to the cache
- *
- * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
- * @return bool Successfulness
- */
- public function save($data)
- {
- if ($this->mysql === null)
- {
- return false;
- }
-
- if ($data instanceof SimplePie)
- {
- $data = clone $data;
-
- $prepared = self::prepare_simplepie_object_for_cache($data);
-
- $query = $this->mysql->prepare('SELECT COUNT(*) FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :feed');
- $query->bindValue(':feed', $this->id);
- if ($query->execute())
- {
- if ($query->fetchColumn() > 0)
- {
- $items = count($prepared[1]);
- if ($items)
- {
- $sql = 'UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `items` = :items, `data` = :data, `mtime` = :time WHERE `id` = :feed';
- $query = $this->mysql->prepare($sql);
- $query->bindValue(':items', $items);
- }
- else
- {
- $sql = 'UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `data` = :data, `mtime` = :time WHERE `id` = :feed';
- $query = $this->mysql->prepare($sql);
- }
-
- $query->bindValue(':data', $prepared[0]);
- $query->bindValue(':time', time());
- $query->bindValue(':feed', $this->id);
- if (!$query->execute())
- {
- return false;
- }
- }
- else
- {
- $query = $this->mysql->prepare('INSERT INTO `' . $this->options['extras']['prefix'] . 'cache_data` (`id`, `items`, `data`, `mtime`) VALUES(:feed, :count, :data, :time)');
- $query->bindValue(':feed', $this->id);
- $query->bindValue(':count', count($prepared[1]));
- $query->bindValue(':data', $prepared[0]);
- $query->bindValue(':time', time());
- if (!$query->execute())
- {
- return false;
- }
- }
-
- $ids = array_keys($prepared[1]);
- if (!empty($ids))
- {
- foreach ($ids as $id)
- {
- $database_ids[] = $this->mysql->quote($id);
- }
-
- $query = $this->mysql->prepare('SELECT `id` FROM `' . $this->options['extras']['prefix'] . 'items` WHERE `id` = ' . implode(' OR `id` = ', $database_ids) . ' AND `feed_id` = :feed');
- $query->bindValue(':feed', $this->id);
-
- if ($query->execute())
- {
- $existing_ids = array();
- while ($row = $query->fetchColumn())
- {
- $existing_ids[] = $row;
- }
-
- $new_ids = array_diff($ids, $existing_ids);
-
- foreach ($new_ids as $new_id)
- {
- if (!($date = $prepared[1][$new_id]->get_date('U')))
- {
- $date = time();
- }
-
- $query = $this->mysql->prepare('INSERT INTO `' . $this->options['extras']['prefix'] . 'items` (`feed_id`, `id`, `data`, `posted`) VALUES(:feed, :id, :data, :date)');
- $query->bindValue(':feed', $this->id);
- $query->bindValue(':id', $new_id);
- $query->bindValue(':data', serialize($prepared[1][$new_id]->data));
- $query->bindValue(':date', $date);
- if (!$query->execute())
- {
- return false;
- }
- }
- return true;
- }
- }
- else
- {
- return true;
- }
- }
- }
- else
- {
- $query = $this->mysql->prepare('SELECT `id` FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :feed');
- $query->bindValue(':feed', $this->id);
- if ($query->execute())
- {
- if ($query->rowCount() > 0)
- {
- $query = $this->mysql->prepare('UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `items` = 0, `data` = :data, `mtime` = :time WHERE `id` = :feed');
- $query->bindValue(':data', serialize($data));
- $query->bindValue(':time', time());
- $query->bindValue(':feed', $this->id);
- if ($this->execute())
- {
- return true;
- }
- }
- else
- {
- $query = $this->mysql->prepare('INSERT INTO `' . $this->options['extras']['prefix'] . 'cache_data` (`id`, `items`, `data`, `mtime`) VALUES(:id, 0, :data, :time)');
- $query->bindValue(':id', $this->id);
- $query->bindValue(':data', serialize($data));
- $query->bindValue(':time', time());
- if ($query->execute())
- {
- return true;
- }
- }
- }
- }
- return false;
- }
-
- /**
- * Retrieve the data saved to the cache
- *
- * @return array Data for SimplePie::$data
- */
- public function load()
- {
- if ($this->mysql === null)
- {
- return false;
- }
-
- $query = $this->mysql->prepare('SELECT `items`, `data` FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :id');
- $query->bindValue(':id', $this->id);
- if ($query->execute() && ($row = $query->fetch()))
- {
- $data = unserialize($row[1]);
-
- if (isset($this->options['items'][0]))
- {
- $items = (int) $this->options['items'][0];
- }
- else
- {
- $items = (int) $row[0];
- }
-
- if ($items !== 0)
- {
- if (isset($data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]))
- {
- $feed =& $data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0];
- }
- elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]))
- {
- $feed =& $data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0];
- }
- elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]))
- {
- $feed =& $data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0];
- }
- elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]))
- {
- $feed =& $data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0];
- }
- else
- {
- $feed = null;
- }
-
- if ($feed !== null)
- {
- $sql = 'SELECT `data` FROM `' . $this->options['extras']['prefix'] . 'items` WHERE `feed_id` = :feed ORDER BY `posted` DESC';
- if ($items > 0)
- {
- $sql .= ' LIMIT ' . $items;
- }
-
- $query = $this->mysql->prepare($sql);
- $query->bindValue(':feed', $this->id);
- if ($query->execute())
- {
- while ($row = $query->fetchColumn())
- {
- $feed['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry'][] = unserialize($row);
- }
- }
- else
- {
- return false;
- }
- }
- }
- return $data;
- }
- return false;
- }
-
- /**
- * Retrieve the last modified time for the cache
- *
- * @return int Timestamp
- */
- public function mtime()
- {
- if ($this->mysql === null)
- {
- return false;
- }
-
- $query = $this->mysql->prepare('SELECT `mtime` FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :id');
- $query->bindValue(':id', $this->id);
- if ($query->execute() && ($time = $query->fetchColumn()))
- {
- return $time;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Set the last modified time to the current time
- *
- * @return bool Success status
- */
- public function touch()
- {
- if ($this->mysql === null)
- {
- return false;
- }
-
- $query = $this->mysql->prepare('UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `mtime` = :time WHERE `id` = :id');
- $query->bindValue(':time', time());
- $query->bindValue(':id', $this->id);
- if ($query->execute() && $query->rowCount() > 0)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Remove the cache
- *
- * @return bool Success status
- */
- public function unlink()
- {
- if ($this->mysql === null)
- {
- return false;
- }
-
- $query = $this->mysql->prepare('DELETE FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :id');
- $query->bindValue(':id', $this->id);
- $query2 = $this->mysql->prepare('DELETE FROM `' . $this->options['extras']['prefix'] . 'items` WHERE `feed_id` = :id');
- $query2->bindValue(':id', $this->id);
- if ($query->execute() && $query2->execute())
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Caption.php b/3rdparty/simplepie/library/SimplePie/Caption.php
deleted file mode 100755
index 52922c5d9..000000000
--- a/3rdparty/simplepie/library/SimplePie/Caption.php
+++ /dev/null
@@ -1,210 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-
-/**
- * Handles `<media:text>` captions as defined in Media RSS.
- *
- * Used by {@see SimplePie_Enclosure::get_caption()} and {@see SimplePie_Enclosure::get_captions()}
- *
- * This class can be overloaded with {@see SimplePie::set_caption_class()}
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Caption
-{
- /**
- * Content type
- *
- * @var string
- * @see get_type()
- */
- var $type;
-
- /**
- * Language
- *
- * @var string
- * @see get_language()
- */
- var $lang;
-
- /**
- * Start time
- *
- * @var string
- * @see get_starttime()
- */
- var $startTime;
-
- /**
- * End time
- *
- * @var string
- * @see get_endtime()
- */
- var $endTime;
-
- /**
- * Caption text
- *
- * @var string
- * @see get_text()
- */
- var $text;
-
- /**
- * Constructor, used to input the data
- *
- * For documentation on all the parameters, see the corresponding
- * properties and their accessors
- */
- public function __construct($type = null, $lang = null, $startTime = null, $endTime = null, $text = null)
- {
- $this->type = $type;
- $this->lang = $lang;
- $this->startTime = $startTime;
- $this->endTime = $endTime;
- $this->text = $text;
- }
-
- /**
- * String-ified version
- *
- * @return string
- */
- public function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- /**
- * Get the end time
- *
- * @return string|null Time in the format 'hh:mm:ss.SSS'
- */
- public function get_endtime()
- {
- if ($this->endTime !== null)
- {
- return $this->endTime;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the language
- *
- * @link http://tools.ietf.org/html/rfc3066
- * @return string|null Language code as per RFC 3066
- */
- public function get_language()
- {
- if ($this->lang !== null)
- {
- return $this->lang;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the start time
- *
- * @return string|null Time in the format 'hh:mm:ss.SSS'
- */
- public function get_starttime()
- {
- if ($this->startTime !== null)
- {
- return $this->startTime;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the text of the caption
- *
- * @return string|null
- */
- public function get_text()
- {
- if ($this->text !== null)
- {
- return $this->text;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the content type (not MIME type)
- *
- * @return string|null Either 'text' or 'html'
- */
- public function get_type()
- {
- if ($this->type !== null)
- {
- return $this->type;
- }
- else
- {
- return null;
- }
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Category.php b/3rdparty/simplepie/library/SimplePie/Category.php
deleted file mode 100755
index ad0407b4e..000000000
--- a/3rdparty/simplepie/library/SimplePie/Category.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Manages all category-related data
- *
- * Used by {@see SimplePie_Item::get_category()} and {@see SimplePie_Item::get_categories()}
- *
- * This class can be overloaded with {@see SimplePie::set_category_class()}
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Category
-{
- /**
- * Category identifier
- *
- * @var string
- * @see get_term
- */
- var $term;
-
- /**
- * Categorization scheme identifier
- *
- * @var string
- * @see get_scheme()
- */
- var $scheme;
-
- /**
- * Human readable label
- *
- * @var string
- * @see get_label()
- */
- var $label;
-
- /**
- * Constructor, used to input the data
- *
- * @param string $term
- * @param string $scheme
- * @param string $label
- */
- public function __construct($term = null, $scheme = null, $label = null)
- {
- $this->term = $term;
- $this->scheme = $scheme;
- $this->label = $label;
- }
-
- /**
- * String-ified version
- *
- * @return string
- */
- public function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- /**
- * Get the category identifier
- *
- * @return string|null
- */
- public function get_term()
- {
- if ($this->term !== null)
- {
- return $this->term;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the categorization scheme identifier
- *
- * @return string|null
- */
- public function get_scheme()
- {
- if ($this->scheme !== null)
- {
- return $this->scheme;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the human readable label
- *
- * @return string|null
- */
- public function get_label()
- {
- if ($this->label !== null)
- {
- return $this->label;
- }
- else
- {
- return $this->get_term();
- }
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Content/Type/Sniffer.php b/3rdparty/simplepie/library/SimplePie/Content/Type/Sniffer.php
deleted file mode 100755
index 20d053dca..000000000
--- a/3rdparty/simplepie/library/SimplePie/Content/Type/Sniffer.php
+++ /dev/null
@@ -1,332 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-
-/**
- * Content-type sniffing
- *
- * Based on the rules in http://tools.ietf.org/html/draft-abarth-mime-sniff-06
- *
- * This is used since we can't always trust Content-Type headers, and is based
- * upon the HTML5 parsing rules.
- *
- *
- * This class can be overloaded with {@see SimplePie::set_content_type_sniffer_class()}
- *
- * @package SimplePie
- * @subpackage HTTP
- */
-class SimplePie_Content_Type_Sniffer
-{
- /**
- * File object
- *
- * @var SimplePie_File
- */
- var $file;
-
- /**
- * Create an instance of the class with the input file
- *
- * @param SimplePie_Content_Type_Sniffer $file Input file
- */
- public function __construct($file)
- {
- $this->file = $file;
- }
-
- /**
- * Get the Content-Type of the specified file
- *
- * @return string Actual Content-Type
- */
- public function get_type()
- {
- if (isset($this->file->headers['content-type']))
- {
- if (!isset($this->file->headers['content-encoding'])
- && ($this->file->headers['content-type'] === 'text/plain'
- || $this->file->headers['content-type'] === 'text/plain; charset=ISO-8859-1'
- || $this->file->headers['content-type'] === 'text/plain; charset=iso-8859-1'
- || $this->file->headers['content-type'] === 'text/plain; charset=UTF-8'))
- {
- return $this->text_or_binary();
- }
-
- if (($pos = strpos($this->file->headers['content-type'], ';')) !== false)
- {
- $official = substr($this->file->headers['content-type'], 0, $pos);
- }
- else
- {
- $official = $this->file->headers['content-type'];
- }
- $official = trim(strtolower($official));
-
- if ($official === 'unknown/unknown'
- || $official === 'application/unknown')
- {
- return $this->unknown();
- }
- elseif (substr($official, -4) === '+xml'
- || $official === 'text/xml'
- || $official === 'application/xml')
- {
- return $official;
- }
- elseif (substr($official, 0, 6) === 'image/')
- {
- if ($return = $this->image())
- {
- return $return;
- }
- else
- {
- return $official;
- }
- }
- elseif ($official === 'text/html')
- {
- return $this->feed_or_html();
- }
- else
- {
- return $official;
- }
- }
- else
- {
- return $this->unknown();
- }
- }
-
- /**
- * Sniff text or binary
- *
- * @return string Actual Content-Type
- */
- public function text_or_binary()
- {
- if (substr($this->file->body, 0, 2) === "\xFE\xFF"
- || substr($this->file->body, 0, 2) === "\xFF\xFE"
- || substr($this->file->body, 0, 4) === "\x00\x00\xFE\xFF"
- || substr($this->file->body, 0, 3) === "\xEF\xBB\xBF")
- {
- return 'text/plain';
- }
- elseif (preg_match('/[\x00-\x08\x0E-\x1A\x1C-\x1F]/', $this->file->body))
- {
- return 'application/octect-stream';
- }
- else
- {
- return 'text/plain';
- }
- }
-
- /**
- * Sniff unknown
- *
- * @return string Actual Content-Type
- */
- public function unknown()
- {
- $ws = strspn($this->file->body, "\x09\x0A\x0B\x0C\x0D\x20");
- if (strtolower(substr($this->file->body, $ws, 14)) === '<!doctype html'
- || strtolower(substr($this->file->body, $ws, 5)) === '<html'
- || strtolower(substr($this->file->body, $ws, 7)) === '<script')
- {
- return 'text/html';
- }
- elseif (substr($this->file->body, 0, 5) === '%PDF-')
- {
- return 'application/pdf';
- }
- elseif (substr($this->file->body, 0, 11) === '%!PS-Adobe-')
- {
- return 'application/postscript';
- }
- elseif (substr($this->file->body, 0, 6) === 'GIF87a'
- || substr($this->file->body, 0, 6) === 'GIF89a')
- {
- return 'image/gif';
- }
- elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
- {
- return 'image/png';
- }
- elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF")
- {
- return 'image/jpeg';
- }
- elseif (substr($this->file->body, 0, 2) === "\x42\x4D")
- {
- return 'image/bmp';
- }
- elseif (substr($this->file->body, 0, 4) === "\x00\x00\x01\x00")
- {
- return 'image/vnd.microsoft.icon';
- }
- else
- {
- return $this->text_or_binary();
- }
- }
-
- /**
- * Sniff images
- *
- * @return string Actual Content-Type
- */
- public function image()
- {
- if (substr($this->file->body, 0, 6) === 'GIF87a'
- || substr($this->file->body, 0, 6) === 'GIF89a')
- {
- return 'image/gif';
- }
- elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
- {
- return 'image/png';
- }
- elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF")
- {
- return 'image/jpeg';
- }
- elseif (substr($this->file->body, 0, 2) === "\x42\x4D")
- {
- return 'image/bmp';
- }
- elseif (substr($this->file->body, 0, 4) === "\x00\x00\x01\x00")
- {
- return 'image/vnd.microsoft.icon';
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Sniff HTML
- *
- * @return string Actual Content-Type
- */
- public function feed_or_html()
- {
- $len = strlen($this->file->body);
- $pos = strspn($this->file->body, "\x09\x0A\x0D\x20");
-
- while ($pos < $len)
- {
- switch ($this->file->body[$pos])
- {
- case "\x09":
- case "\x0A":
- case "\x0D":
- case "\x20":
- $pos += strspn($this->file->body, "\x09\x0A\x0D\x20", $pos);
- continue 2;
-
- case '<':
- $pos++;
- break;
-
- default:
- return 'text/html';
- }
-
- if (substr($this->file->body, $pos, 3) === '!--')
- {
- $pos += 3;
- if ($pos < $len && ($pos = strpos($this->file->body, '-->', $pos)) !== false)
- {
- $pos += 3;
- }
- else
- {
- return 'text/html';
- }
- }
- elseif (substr($this->file->body, $pos, 1) === '!')
- {
- if ($pos < $len && ($pos = strpos($this->file->body, '>', $pos)) !== false)
- {
- $pos++;
- }
- else
- {
- return 'text/html';
- }
- }
- elseif (substr($this->file->body, $pos, 1) === '?')
- {
- if ($pos < $len && ($pos = strpos($this->file->body, '?>', $pos)) !== false)
- {
- $pos += 2;
- }
- else
- {
- return 'text/html';
- }
- }
- elseif (substr($this->file->body, $pos, 3) === 'rss'
- || substr($this->file->body, $pos, 7) === 'rdf:RDF')
- {
- return 'application/rss+xml';
- }
- elseif (substr($this->file->body, $pos, 4) === 'feed')
- {
- return 'application/atom+xml';
- }
- else
- {
- return 'text/html';
- }
- }
-
- return 'text/html';
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Copyright.php b/3rdparty/simplepie/library/SimplePie/Copyright.php
deleted file mode 100755
index 57c535a64..000000000
--- a/3rdparty/simplepie/library/SimplePie/Copyright.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Manages `<media:copyright>` copyright tags as defined in Media RSS
- *
- * Used by {@see SimplePie_Enclosure::get_copyright()}
- *
- * This class can be overloaded with {@see SimplePie::set_copyright_class()}
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Copyright
-{
- /**
- * Copyright URL
- *
- * @var string
- * @see get_url()
- */
- var $url;
-
- /**
- * Attribution
- *
- * @var string
- * @see get_attribution()
- */
- var $label;
-
- /**
- * Constructor, used to input the data
- *
- * For documentation on all the parameters, see the corresponding
- * properties and their accessors
- */
- public function __construct($url = null, $label = null)
- {
- $this->url = $url;
- $this->label = $label;
- }
-
- /**
- * String-ified version
- *
- * @return string
- */
- public function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- /**
- * Get the copyright URL
- *
- * @return string|null URL to copyright information
- */
- public function get_url()
- {
- if ($this->url !== null)
- {
- return $this->url;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the attribution text
- *
- * @return string|null
- */
- public function get_attribution()
- {
- if ($this->label !== null)
- {
- return $this->label;
- }
- else
- {
- return null;
- }
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Core.php b/3rdparty/simplepie/library/SimplePie/Core.php
deleted file mode 100755
index 46d996628..000000000
--- a/3rdparty/simplepie/library/SimplePie/Core.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2009, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * SimplePie class.
- *
- * Class for backward compatibility.
- *
- * @deprecated Use {@see SimplePie} directly
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Core extends SimplePie
-{
-
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/library/SimplePie/Credit.php b/3rdparty/simplepie/library/SimplePie/Credit.php
deleted file mode 100755
index d3a3442ad..000000000
--- a/3rdparty/simplepie/library/SimplePie/Credit.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Handles `<media:credit>` as defined in Media RSS
- *
- * Used by {@see SimplePie_Enclosure::get_credit()} and {@see SimplePie_Enclosure::get_credits()}
- *
- * This class can be overloaded with {@see SimplePie::set_credit_class()}
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Credit
-{
- /**
- * Credited role
- *
- * @var string
- * @see get_role()
- */
- var $role;
-
- /**
- * Organizational scheme
- *
- * @var string
- * @see get_scheme()
- */
- var $scheme;
-
- /**
- * Credited name
- *
- * @var string
- * @see get_name()
- */
- var $name;
-
- /**
- * Constructor, used to input the data
- *
- * For documentation on all the parameters, see the corresponding
- * properties and their accessors
- */
- public function __construct($role = null, $scheme = null, $name = null)
- {
- $this->role = $role;
- $this->scheme = $scheme;
- $this->name = $name;
- }
-
- /**
- * String-ified version
- *
- * @return string
- */
- public function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- /**
- * Get the role of the person receiving credit
- *
- * @return string|null
- */
- public function get_role()
- {
- if ($this->role !== null)
- {
- return $this->role;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the organizational scheme
- *
- * @return string|null
- */
- public function get_scheme()
- {
- if ($this->scheme !== null)
- {
- return $this->scheme;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the credited person/entity's name
- *
- * @return string|null
- */
- public function get_name()
- {
- if ($this->name !== null)
- {
- return $this->name;
- }
- else
- {
- return null;
- }
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Decode/HTML/Entities.php b/3rdparty/simplepie/library/SimplePie/Decode/HTML/Entities.php
deleted file mode 100755
index 069e8d8e5..000000000
--- a/3rdparty/simplepie/library/SimplePie/Decode/HTML/Entities.php
+++ /dev/null
@@ -1,617 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-
-/**
- * Decode HTML Entities
- *
- * This implements HTML5 as of revision 967 (2007-06-28)
- *
- * @deprecated Use DOMDocument instead!
- * @package SimplePie
- */
-class SimplePie_Decode_HTML_Entities
-{
- /**
- * Data to be parsed
- *
- * @access private
- * @var string
- */
- var $data = '';
-
- /**
- * Currently consumed bytes
- *
- * @access private
- * @var string
- */
- var $consumed = '';
-
- /**
- * Position of the current byte being parsed
- *
- * @access private
- * @var int
- */
- var $position = 0;
-
- /**
- * Create an instance of the class with the input data
- *
- * @access public
- * @param string $data Input data
- */
- public function __construct($data)
- {
- $this->data = $data;
- }
-
- /**
- * Parse the input data
- *
- * @access public
- * @return string Output data
- */
- public function parse()
- {
- while (($this->position = strpos($this->data, '&', $this->position)) !== false)
- {
- $this->consume();
- $this->entity();
- $this->consumed = '';
- }
- return $this->data;
- }
-
- /**
- * Consume the next byte
- *
- * @access private
- * @return mixed The next byte, or false, if there is no more data
- */
- public function consume()
- {
- if (isset($this->data[$this->position]))
- {
- $this->consumed .= $this->data[$this->position];
- return $this->data[$this->position++];
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Consume a range of characters
- *
- * @access private
- * @param string $chars Characters to consume
- * @return mixed A series of characters that match the range, or false
- */
- public function consume_range($chars)
- {
- if ($len = strspn($this->data, $chars, $this->position))
- {
- $data = substr($this->data, $this->position, $len);
- $this->consumed .= $data;
- $this->position += $len;
- return $data;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Unconsume one byte
- *
- * @access private
- */
- public function unconsume()
- {
- $this->consumed = substr($this->consumed, 0, -1);
- $this->position--;
- }
-
- /**
- * Decode an entity
- *
- * @access private
- */
- public function entity()
- {
- switch ($this->consume())
- {
- case "\x09":
- case "\x0A":
- case "\x0B":
- case "\x0B":
- case "\x0C":
- case "\x20":
- case "\x3C":
- case "\x26":
- case false:
- break;
-
- case "\x23":
- switch ($this->consume())
- {
- case "\x78":
- case "\x58":
- $range = '0123456789ABCDEFabcdef';
- $hex = true;
- break;
-
- default:
- $range = '0123456789';
- $hex = false;
- $this->unconsume();
- break;
- }
-
- if ($codepoint = $this->consume_range($range))
- {
- static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8");
-
- if ($hex)
- {
- $codepoint = hexdec($codepoint);
- }
- else
- {
- $codepoint = intval($codepoint);
- }
-
- if (isset($windows_1252_specials[$codepoint]))
- {
- $replacement = $windows_1252_specials[$codepoint];
- }
- else
- {
- $replacement = SimplePie_Misc::codepoint_to_utf8($codepoint);
- }
-
- if (!in_array($this->consume(), array(';', false), true))
- {
- $this->unconsume();
- }
-
- $consumed_length = strlen($this->consumed);
- $this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length);
- $this->position += strlen($replacement) - $consumed_length;
- }
- break;
-
- default:
- static $entities = array(
- 'Aacute' => "\xC3\x81",
- 'aacute' => "\xC3\xA1",
- 'Aacute;' => "\xC3\x81",
- 'aacute;' => "\xC3\xA1",
- 'Acirc' => "\xC3\x82",
- 'acirc' => "\xC3\xA2",
- 'Acirc;' => "\xC3\x82",
- 'acirc;' => "\xC3\xA2",
- 'acute' => "\xC2\xB4",
- 'acute;' => "\xC2\xB4",
- 'AElig' => "\xC3\x86",
- 'aelig' => "\xC3\xA6",
- 'AElig;' => "\xC3\x86",
- 'aelig;' => "\xC3\xA6",
- 'Agrave' => "\xC3\x80",
- 'agrave' => "\xC3\xA0",
- 'Agrave;' => "\xC3\x80",
- 'agrave;' => "\xC3\xA0",
- 'alefsym;' => "\xE2\x84\xB5",
- 'Alpha;' => "\xCE\x91",
- 'alpha;' => "\xCE\xB1",
- 'AMP' => "\x26",
- 'amp' => "\x26",
- 'AMP;' => "\x26",
- 'amp;' => "\x26",
- 'and;' => "\xE2\x88\xA7",
- 'ang;' => "\xE2\x88\xA0",
- 'apos;' => "\x27",
- 'Aring' => "\xC3\x85",
- 'aring' => "\xC3\xA5",
- 'Aring;' => "\xC3\x85",
- 'aring;' => "\xC3\xA5",
- 'asymp;' => "\xE2\x89\x88",
- 'Atilde' => "\xC3\x83",
- 'atilde' => "\xC3\xA3",
- 'Atilde;' => "\xC3\x83",
- 'atilde;' => "\xC3\xA3",
- 'Auml' => "\xC3\x84",
- 'auml' => "\xC3\xA4",
- 'Auml;' => "\xC3\x84",
- 'auml;' => "\xC3\xA4",
- 'bdquo;' => "\xE2\x80\x9E",
- 'Beta;' => "\xCE\x92",
- 'beta;' => "\xCE\xB2",
- 'brvbar' => "\xC2\xA6",
- 'brvbar;' => "\xC2\xA6",
- 'bull;' => "\xE2\x80\xA2",
- 'cap;' => "\xE2\x88\xA9",
- 'Ccedil' => "\xC3\x87",
- 'ccedil' => "\xC3\xA7",
- 'Ccedil;' => "\xC3\x87",
- 'ccedil;' => "\xC3\xA7",
- 'cedil' => "\xC2\xB8",
- 'cedil;' => "\xC2\xB8",
- 'cent' => "\xC2\xA2",
- 'cent;' => "\xC2\xA2",
- 'Chi;' => "\xCE\xA7",
- 'chi;' => "\xCF\x87",
- 'circ;' => "\xCB\x86",
- 'clubs;' => "\xE2\x99\xA3",
- 'cong;' => "\xE2\x89\x85",
- 'COPY' => "\xC2\xA9",
- 'copy' => "\xC2\xA9",
- 'COPY;' => "\xC2\xA9",
- 'copy;' => "\xC2\xA9",
- 'crarr;' => "\xE2\x86\xB5",
- 'cup;' => "\xE2\x88\xAA",
- 'curren' => "\xC2\xA4",
- 'curren;' => "\xC2\xA4",
- 'Dagger;' => "\xE2\x80\xA1",
- 'dagger;' => "\xE2\x80\xA0",
- 'dArr;' => "\xE2\x87\x93",
- 'darr;' => "\xE2\x86\x93",
- 'deg' => "\xC2\xB0",
- 'deg;' => "\xC2\xB0",
- 'Delta;' => "\xCE\x94",
- 'delta;' => "\xCE\xB4",
- 'diams;' => "\xE2\x99\xA6",
- 'divide' => "\xC3\xB7",
- 'divide;' => "\xC3\xB7",
- 'Eacute' => "\xC3\x89",
- 'eacute' => "\xC3\xA9",
- 'Eacute;' => "\xC3\x89",
- 'eacute;' => "\xC3\xA9",
- 'Ecirc' => "\xC3\x8A",
- 'ecirc' => "\xC3\xAA",
- 'Ecirc;' => "\xC3\x8A",
- 'ecirc;' => "\xC3\xAA",
- 'Egrave' => "\xC3\x88",
- 'egrave' => "\xC3\xA8",
- 'Egrave;' => "\xC3\x88",
- 'egrave;' => "\xC3\xA8",
- 'empty;' => "\xE2\x88\x85",
- 'emsp;' => "\xE2\x80\x83",
- 'ensp;' => "\xE2\x80\x82",
- 'Epsilon;' => "\xCE\x95",
- 'epsilon;' => "\xCE\xB5",
- 'equiv;' => "\xE2\x89\xA1",
- 'Eta;' => "\xCE\x97",
- 'eta;' => "\xCE\xB7",
- 'ETH' => "\xC3\x90",
- 'eth' => "\xC3\xB0",
- 'ETH;' => "\xC3\x90",
- 'eth;' => "\xC3\xB0",
- 'Euml' => "\xC3\x8B",
- 'euml' => "\xC3\xAB",
- 'Euml;' => "\xC3\x8B",
- 'euml;' => "\xC3\xAB",
- 'euro;' => "\xE2\x82\xAC",
- 'exist;' => "\xE2\x88\x83",
- 'fnof;' => "\xC6\x92",
- 'forall;' => "\xE2\x88\x80",
- 'frac12' => "\xC2\xBD",
- 'frac12;' => "\xC2\xBD",
- 'frac14' => "\xC2\xBC",
- 'frac14;' => "\xC2\xBC",
- 'frac34' => "\xC2\xBE",
- 'frac34;' => "\xC2\xBE",
- 'frasl;' => "\xE2\x81\x84",
- 'Gamma;' => "\xCE\x93",
- 'gamma;' => "\xCE\xB3",
- 'ge;' => "\xE2\x89\xA5",
- 'GT' => "\x3E",
- 'gt' => "\x3E",
- 'GT;' => "\x3E",
- 'gt;' => "\x3E",
- 'hArr;' => "\xE2\x87\x94",
- 'harr;' => "\xE2\x86\x94",
- 'hearts;' => "\xE2\x99\xA5",
- 'hellip;' => "\xE2\x80\xA6",
- 'Iacute' => "\xC3\x8D",
- 'iacute' => "\xC3\xAD",
- 'Iacute;' => "\xC3\x8D",
- 'iacute;' => "\xC3\xAD",
- 'Icirc' => "\xC3\x8E",
- 'icirc' => "\xC3\xAE",
- 'Icirc;' => "\xC3\x8E",
- 'icirc;' => "\xC3\xAE",
- 'iexcl' => "\xC2\xA1",
- 'iexcl;' => "\xC2\xA1",
- 'Igrave' => "\xC3\x8C",
- 'igrave' => "\xC3\xAC",
- 'Igrave;' => "\xC3\x8C",
- 'igrave;' => "\xC3\xAC",
- 'image;' => "\xE2\x84\x91",
- 'infin;' => "\xE2\x88\x9E",
- 'int;' => "\xE2\x88\xAB",
- 'Iota;' => "\xCE\x99",
- 'iota;' => "\xCE\xB9",
- 'iquest' => "\xC2\xBF",
- 'iquest;' => "\xC2\xBF",
- 'isin;' => "\xE2\x88\x88",
- 'Iuml' => "\xC3\x8F",
- 'iuml' => "\xC3\xAF",
- 'Iuml;' => "\xC3\x8F",
- 'iuml;' => "\xC3\xAF",
- 'Kappa;' => "\xCE\x9A",
- 'kappa;' => "\xCE\xBA",
- 'Lambda;' => "\xCE\x9B",
- 'lambda;' => "\xCE\xBB",
- 'lang;' => "\xE3\x80\x88",
- 'laquo' => "\xC2\xAB",
- 'laquo;' => "\xC2\xAB",
- 'lArr;' => "\xE2\x87\x90",
- 'larr;' => "\xE2\x86\x90",
- 'lceil;' => "\xE2\x8C\x88",
- 'ldquo;' => "\xE2\x80\x9C",
- 'le;' => "\xE2\x89\xA4",
- 'lfloor;' => "\xE2\x8C\x8A",
- 'lowast;' => "\xE2\x88\x97",
- 'loz;' => "\xE2\x97\x8A",
- 'lrm;' => "\xE2\x80\x8E",
- 'lsaquo;' => "\xE2\x80\xB9",
- 'lsquo;' => "\xE2\x80\x98",
- 'LT' => "\x3C",
- 'lt' => "\x3C",
- 'LT;' => "\x3C",
- 'lt;' => "\x3C",
- 'macr' => "\xC2\xAF",
- 'macr;' => "\xC2\xAF",
- 'mdash;' => "\xE2\x80\x94",
- 'micro' => "\xC2\xB5",
- 'micro;' => "\xC2\xB5",
- 'middot' => "\xC2\xB7",
- 'middot;' => "\xC2\xB7",
- 'minus;' => "\xE2\x88\x92",
- 'Mu;' => "\xCE\x9C",
- 'mu;' => "\xCE\xBC",
- 'nabla;' => "\xE2\x88\x87",
- 'nbsp' => "\xC2\xA0",
- 'nbsp;' => "\xC2\xA0",
- 'ndash;' => "\xE2\x80\x93",
- 'ne;' => "\xE2\x89\xA0",
- 'ni;' => "\xE2\x88\x8B",
- 'not' => "\xC2\xAC",
- 'not;' => "\xC2\xAC",
- 'notin;' => "\xE2\x88\x89",
- 'nsub;' => "\xE2\x8A\x84",
- 'Ntilde' => "\xC3\x91",
- 'ntilde' => "\xC3\xB1",
- 'Ntilde;' => "\xC3\x91",
- 'ntilde;' => "\xC3\xB1",
- 'Nu;' => "\xCE\x9D",
- 'nu;' => "\xCE\xBD",
- 'Oacute' => "\xC3\x93",
- 'oacute' => "\xC3\xB3",
- 'Oacute;' => "\xC3\x93",
- 'oacute;' => "\xC3\xB3",
- 'Ocirc' => "\xC3\x94",
- 'ocirc' => "\xC3\xB4",
- 'Ocirc;' => "\xC3\x94",
- 'ocirc;' => "\xC3\xB4",
- 'OElig;' => "\xC5\x92",
- 'oelig;' => "\xC5\x93",
- 'Ograve' => "\xC3\x92",
- 'ograve' => "\xC3\xB2",
- 'Ograve;' => "\xC3\x92",
- 'ograve;' => "\xC3\xB2",
- 'oline;' => "\xE2\x80\xBE",
- 'Omega;' => "\xCE\xA9",
- 'omega;' => "\xCF\x89",
- 'Omicron;' => "\xCE\x9F",
- 'omicron;' => "\xCE\xBF",
- 'oplus;' => "\xE2\x8A\x95",
- 'or;' => "\xE2\x88\xA8",
- 'ordf' => "\xC2\xAA",
- 'ordf;' => "\xC2\xAA",
- 'ordm' => "\xC2\xBA",
- 'ordm;' => "\xC2\xBA",
- 'Oslash' => "\xC3\x98",
- 'oslash' => "\xC3\xB8",
- 'Oslash;' => "\xC3\x98",
- 'oslash;' => "\xC3\xB8",
- 'Otilde' => "\xC3\x95",
- 'otilde' => "\xC3\xB5",
- 'Otilde;' => "\xC3\x95",
- 'otilde;' => "\xC3\xB5",
- 'otimes;' => "\xE2\x8A\x97",
- 'Ouml' => "\xC3\x96",
- 'ouml' => "\xC3\xB6",
- 'Ouml;' => "\xC3\x96",
- 'ouml;' => "\xC3\xB6",
- 'para' => "\xC2\xB6",
- 'para;' => "\xC2\xB6",
- 'part;' => "\xE2\x88\x82",
- 'permil;' => "\xE2\x80\xB0",
- 'perp;' => "\xE2\x8A\xA5",
- 'Phi;' => "\xCE\xA6",
- 'phi;' => "\xCF\x86",
- 'Pi;' => "\xCE\xA0",
- 'pi;' => "\xCF\x80",
- 'piv;' => "\xCF\x96",
- 'plusmn' => "\xC2\xB1",
- 'plusmn;' => "\xC2\xB1",
- 'pound' => "\xC2\xA3",
- 'pound;' => "\xC2\xA3",
- 'Prime;' => "\xE2\x80\xB3",
- 'prime;' => "\xE2\x80\xB2",
- 'prod;' => "\xE2\x88\x8F",
- 'prop;' => "\xE2\x88\x9D",
- 'Psi;' => "\xCE\xA8",
- 'psi;' => "\xCF\x88",
- 'QUOT' => "\x22",
- 'quot' => "\x22",
- 'QUOT;' => "\x22",
- 'quot;' => "\x22",
- 'radic;' => "\xE2\x88\x9A",
- 'rang;' => "\xE3\x80\x89",
- 'raquo' => "\xC2\xBB",
- 'raquo;' => "\xC2\xBB",
- 'rArr;' => "\xE2\x87\x92",
- 'rarr;' => "\xE2\x86\x92",
- 'rceil;' => "\xE2\x8C\x89",
- 'rdquo;' => "\xE2\x80\x9D",
- 'real;' => "\xE2\x84\x9C",
- 'REG' => "\xC2\xAE",
- 'reg' => "\xC2\xAE",
- 'REG;' => "\xC2\xAE",
- 'reg;' => "\xC2\xAE",
- 'rfloor;' => "\xE2\x8C\x8B",
- 'Rho;' => "\xCE\xA1",
- 'rho;' => "\xCF\x81",
- 'rlm;' => "\xE2\x80\x8F",
- 'rsaquo;' => "\xE2\x80\xBA",
- 'rsquo;' => "\xE2\x80\x99",
- 'sbquo;' => "\xE2\x80\x9A",
- 'Scaron;' => "\xC5\xA0",
- 'scaron;' => "\xC5\xA1",
- 'sdot;' => "\xE2\x8B\x85",
- 'sect' => "\xC2\xA7",
- 'sect;' => "\xC2\xA7",
- 'shy' => "\xC2\xAD",
- 'shy;' => "\xC2\xAD",
- 'Sigma;' => "\xCE\xA3",
- 'sigma;' => "\xCF\x83",
- 'sigmaf;' => "\xCF\x82",
- 'sim;' => "\xE2\x88\xBC",
- 'spades;' => "\xE2\x99\xA0",
- 'sub;' => "\xE2\x8A\x82",
- 'sube;' => "\xE2\x8A\x86",
- 'sum;' => "\xE2\x88\x91",
- 'sup;' => "\xE2\x8A\x83",
- 'sup1' => "\xC2\xB9",
- 'sup1;' => "\xC2\xB9",
- 'sup2' => "\xC2\xB2",
- 'sup2;' => "\xC2\xB2",
- 'sup3' => "\xC2\xB3",
- 'sup3;' => "\xC2\xB3",
- 'supe;' => "\xE2\x8A\x87",
- 'szlig' => "\xC3\x9F",
- 'szlig;' => "\xC3\x9F",
- 'Tau;' => "\xCE\xA4",
- 'tau;' => "\xCF\x84",
- 'there4;' => "\xE2\x88\xB4",
- 'Theta;' => "\xCE\x98",
- 'theta;' => "\xCE\xB8",
- 'thetasym;' => "\xCF\x91",
- 'thinsp;' => "\xE2\x80\x89",
- 'THORN' => "\xC3\x9E",
- 'thorn' => "\xC3\xBE",
- 'THORN;' => "\xC3\x9E",
- 'thorn;' => "\xC3\xBE",
- 'tilde;' => "\xCB\x9C",
- 'times' => "\xC3\x97",
- 'times;' => "\xC3\x97",
- 'TRADE;' => "\xE2\x84\xA2",
- 'trade;' => "\xE2\x84\xA2",
- 'Uacute' => "\xC3\x9A",
- 'uacute' => "\xC3\xBA",
- 'Uacute;' => "\xC3\x9A",
- 'uacute;' => "\xC3\xBA",
- 'uArr;' => "\xE2\x87\x91",
- 'uarr;' => "\xE2\x86\x91",
- 'Ucirc' => "\xC3\x9B",
- 'ucirc' => "\xC3\xBB",
- 'Ucirc;' => "\xC3\x9B",
- 'ucirc;' => "\xC3\xBB",
- 'Ugrave' => "\xC3\x99",
- 'ugrave' => "\xC3\xB9",
- 'Ugrave;' => "\xC3\x99",
- 'ugrave;' => "\xC3\xB9",
- 'uml' => "\xC2\xA8",
- 'uml;' => "\xC2\xA8",
- 'upsih;' => "\xCF\x92",
- 'Upsilon;' => "\xCE\xA5",
- 'upsilon;' => "\xCF\x85",
- 'Uuml' => "\xC3\x9C",
- 'uuml' => "\xC3\xBC",
- 'Uuml;' => "\xC3\x9C",
- 'uuml;' => "\xC3\xBC",
- 'weierp;' => "\xE2\x84\x98",
- 'Xi;' => "\xCE\x9E",
- 'xi;' => "\xCE\xBE",
- 'Yacute' => "\xC3\x9D",
- 'yacute' => "\xC3\xBD",
- 'Yacute;' => "\xC3\x9D",
- 'yacute;' => "\xC3\xBD",
- 'yen' => "\xC2\xA5",
- 'yen;' => "\xC2\xA5",
- 'yuml' => "\xC3\xBF",
- 'Yuml;' => "\xC5\xB8",
- 'yuml;' => "\xC3\xBF",
- 'Zeta;' => "\xCE\x96",
- 'zeta;' => "\xCE\xB6",
- 'zwj;' => "\xE2\x80\x8D",
- 'zwnj;' => "\xE2\x80\x8C"
- );
-
- for ($i = 0, $match = null; $i < 9 && $this->consume() !== false; $i++)
- {
- $consumed = substr($this->consumed, 1);
- if (isset($entities[$consumed]))
- {
- $match = $consumed;
- }
- }
-
- if ($match !== null)
- {
- $this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1);
- $this->position += strlen($entities[$match]) - strlen($consumed) - 1;
- }
- break;
- }
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Enclosure.php b/3rdparty/simplepie/library/SimplePie/Enclosure.php
deleted file mode 100755
index 964948ca2..000000000
--- a/3rdparty/simplepie/library/SimplePie/Enclosure.php
+++ /dev/null
@@ -1,1380 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Handles everything related to enclosures (including Media RSS and iTunes RSS)
- *
- * Used by {@see SimplePie_Item::get_enclosure()} and {@see SimplePie_Item::get_enclosures()}
- *
- * This class can be overloaded with {@see SimplePie::set_enclosure_class()}
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Enclosure
-{
- /**
- * @var string
- * @see get_bitrate()
- */
- var $bitrate;
-
- /**
- * @var array
- * @see get_captions()
- */
- var $captions;
-
- /**
- * @var array
- * @see get_categories()
- */
- var $categories;
-
- /**
- * @var int
- * @see get_channels()
- */
- var $channels;
-
- /**
- * @var SimplePie_Copyright
- * @see get_copyright()
- */
- var $copyright;
-
- /**
- * @var array
- * @see get_credits()
- */
- var $credits;
-
- /**
- * @var string
- * @see get_description()
- */
- var $description;
-
- /**
- * @var int
- * @see get_duration()
- */
- var $duration;
-
- /**
- * @var string
- * @see get_expression()
- */
- var $expression;
-
- /**
- * @var string
- * @see get_framerate()
- */
- var $framerate;
-
- /**
- * @var string
- * @see get_handler()
- */
- var $handler;
-
- /**
- * @var array
- * @see get_hashes()
- */
- var $hashes;
-
- /**
- * @var string
- * @see get_height()
- */
- var $height;
-
- /**
- * @deprecated
- * @var null
- */
- var $javascript;
-
- /**
- * @var array
- * @see get_keywords()
- */
- var $keywords;
-
- /**
- * @var string
- * @see get_language()
- */
- var $lang;
-
- /**
- * @var string
- * @see get_length()
- */
- var $length;
-
- /**
- * @var string
- * @see get_link()
- */
- var $link;
-
- /**
- * @var string
- * @see get_medium()
- */
- var $medium;
-
- /**
- * @var string
- * @see get_player()
- */
- var $player;
-
- /**
- * @var array
- * @see get_ratings()
- */
- var $ratings;
-
- /**
- * @var array
- * @see get_restrictions()
- */
- var $restrictions;
-
- /**
- * @var string
- * @see get_sampling_rate()
- */
- var $samplingrate;
-
- /**
- * @var array
- * @see get_thumbnails()
- */
- var $thumbnails;
-
- /**
- * @var string
- * @see get_title()
- */
- var $title;
-
- /**
- * @var string
- * @see get_type()
- */
- var $type;
-
- /**
- * @var string
- * @see get_width()
- */
- var $width;
-
- /**
- * Constructor, used to input the data
- *
- * For documentation on all the parameters, see the corresponding
- * properties and their accessors
- *
- * @uses idna_convert If available, this will convert an IDN
- */
- public function __construct($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null)
- {
- $this->bitrate = $bitrate;
- $this->captions = $captions;
- $this->categories = $categories;
- $this->channels = $channels;
- $this->copyright = $copyright;
- $this->credits = $credits;
- $this->description = $description;
- $this->duration = $duration;
- $this->expression = $expression;
- $this->framerate = $framerate;
- $this->hashes = $hashes;
- $this->height = $height;
- $this->keywords = $keywords;
- $this->lang = $lang;
- $this->length = $length;
- $this->link = $link;
- $this->medium = $medium;
- $this->player = $player;
- $this->ratings = $ratings;
- $this->restrictions = $restrictions;
- $this->samplingrate = $samplingrate;
- $this->thumbnails = $thumbnails;
- $this->title = $title;
- $this->type = $type;
- $this->width = $width;
-
- if (class_exists('idna_convert'))
- {
- $idn = new idna_convert();
- $parsed = SimplePie_Misc::parse_url($link);
- $this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
- }
- $this->handler = $this->get_handler(); // Needs to load last
- }
-
- /**
- * String-ified version
- *
- * @return string
- */
- public function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- /**
- * Get the bitrate
- *
- * @return string|null
- */
- public function get_bitrate()
- {
- if ($this->bitrate !== null)
- {
- return $this->bitrate;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a single caption
- *
- * @param int $key
- * @return SimplePie_Caption|null
- */
- public function get_caption($key = 0)
- {
- $captions = $this->get_captions();
- if (isset($captions[$key]))
- {
- return $captions[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all captions
- *
- * @return array|null Array of {@see SimplePie_Caption} objects
- */
- public function get_captions()
- {
- if ($this->captions !== null)
- {
- return $this->captions;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a single category
- *
- * @param int $key
- * @return SimplePie_Category|null
- */
- public function get_category($key = 0)
- {
- $categories = $this->get_categories();
- if (isset($categories[$key]))
- {
- return $categories[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all categories
- *
- * @return array|null Array of {@see SimplePie_Category} objects
- */
- public function get_categories()
- {
- if ($this->categories !== null)
- {
- return $this->categories;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the number of audio channels
- *
- * @return int|null
- */
- public function get_channels()
- {
- if ($this->channels !== null)
- {
- return $this->channels;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the copyright information
- *
- * @return SimplePie_Copyright|null
- */
- public function get_copyright()
- {
- if ($this->copyright !== null)
- {
- return $this->copyright;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a single credit
- *
- * @param int $key
- * @return SimplePie_Credit|null
- */
- public function get_credit($key = 0)
- {
- $credits = $this->get_credits();
- if (isset($credits[$key]))
- {
- return $credits[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all credits
- *
- * @return array|null Array of {@see SimplePie_Credit} objects
- */
- public function get_credits()
- {
- if ($this->credits !== null)
- {
- return $this->credits;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the description of the enclosure
- *
- * @return string|null
- */
- public function get_description()
- {
- if ($this->description !== null)
- {
- return $this->description;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the duration of the enclosure
- *
- * @param string $convert Convert seconds into hh:mm:ss
- * @return string|int|null 'hh:mm:ss' string if `$convert` was specified, otherwise integer (or null if none found)
- */
- public function get_duration($convert = false)
- {
- if ($this->duration !== null)
- {
- if ($convert)
- {
- $time = SimplePie_Misc::time_hms($this->duration);
- return $time;
- }
- else
- {
- return $this->duration;
- }
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the expression
- *
- * @return string Probably one of 'sample', 'full', 'nonstop', 'clip'. Defaults to 'full'
- */
- public function get_expression()
- {
- if ($this->expression !== null)
- {
- return $this->expression;
- }
- else
- {
- return 'full';
- }
- }
-
- /**
- * Get the file extension
- *
- * @return string|null
- */
- public function get_extension()
- {
- if ($this->link !== null)
- {
- $url = SimplePie_Misc::parse_url($this->link);
- if ($url['path'] !== '')
- {
- return pathinfo($url['path'], PATHINFO_EXTENSION);
- }
- }
- return null;
- }
-
- /**
- * Get the framerate (in frames-per-second)
- *
- * @return string|null
- */
- public function get_framerate()
- {
- if ($this->framerate !== null)
- {
- return $this->framerate;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the preferred handler
- *
- * @return string|null One of 'flash', 'fmedia', 'quicktime', 'wmedia', 'mp3'
- */
- public function get_handler()
- {
- return $this->get_real_type(true);
- }
-
- /**
- * Get a single hash
- *
- * @link http://www.rssboard.org/media-rss#media-hash
- * @param int $key
- * @return string|null Hash as per `media:hash`, prefixed with "$algo:"
- */
- public function get_hash($key = 0)
- {
- $hashes = $this->get_hashes();
- if (isset($hashes[$key]))
- {
- return $hashes[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all credits
- *
- * @return array|null Array of strings, see {@see get_hash()}
- */
- public function get_hashes()
- {
- if ($this->hashes !== null)
- {
- return $this->hashes;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the height
- *
- * @return string|null
- */
- public function get_height()
- {
- if ($this->height !== null)
- {
- return $this->height;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the language
- *
- * @link http://tools.ietf.org/html/rfc3066
- * @return string|null Language code as per RFC 3066
- */
- public function get_language()
- {
- if ($this->lang !== null)
- {
- return $this->lang;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a single keyword
- *
- * @param int $key
- * @return string|null
- */
- public function get_keyword($key = 0)
- {
- $keywords = $this->get_keywords();
- if (isset($keywords[$key]))
- {
- return $keywords[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all keywords
- *
- * @return array|null Array of strings
- */
- public function get_keywords()
- {
- if ($this->keywords !== null)
- {
- return $this->keywords;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get length
- *
- * @return float Length in bytes
- */
- public function get_length()
- {
- if ($this->length !== null)
- {
- return $this->length;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the URL
- *
- * @return string|null
- */
- public function get_link()
- {
- if ($this->link !== null)
- {
- return $this->link;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the medium
- *
- * @link http://www.rssboard.org/media-rss#media-content
- * @return string|null Should be one of 'image', 'audio', 'video', 'document', 'executable'
- */
- public function get_medium()
- {
- if ($this->medium !== null)
- {
- return $this->medium;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the player URL
- *
- * Typically the same as {@see get_permalink()}
- * @return string|null Player URL
- */
- public function get_player()
- {
- if ($this->player !== null)
- {
- return $this->player;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a single rating
- *
- * @param int $key
- * @return SimplePie_Rating|null
- */
- public function get_rating($key = 0)
- {
- $ratings = $this->get_ratings();
- if (isset($ratings[$key]))
- {
- return $ratings[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all ratings
- *
- * @return array|null Array of {@see SimplePie_Rating} objects
- */
- public function get_ratings()
- {
- if ($this->ratings !== null)
- {
- return $this->ratings;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a single restriction
- *
- * @param int $key
- * @return SimplePie_Restriction|null
- */
- public function get_restriction($key = 0)
- {
- $restrictions = $this->get_restrictions();
- if (isset($restrictions[$key]))
- {
- return $restrictions[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all restrictions
- *
- * @return array|null Array of {@see SimplePie_Restriction} objects
- */
- public function get_restrictions()
- {
- if ($this->restrictions !== null)
- {
- return $this->restrictions;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the sampling rate (in kHz)
- *
- * @return string|null
- */
- public function get_sampling_rate()
- {
- if ($this->samplingrate !== null)
- {
- return $this->samplingrate;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the file size (in MiB)
- *
- * @return float|null File size in mebibytes (1048 bytes)
- */
- public function get_size()
- {
- $length = $this->get_length();
- if ($length !== null)
- {
- return round($length/1048576, 2);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a single thumbnail
- *
- * @param int $key
- * @return string|null Thumbnail URL
- */
- public function get_thumbnail($key = 0)
- {
- $thumbnails = $this->get_thumbnails();
- if (isset($thumbnails[$key]))
- {
- return $thumbnails[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all thumbnails
- *
- * @return array|null Array of thumbnail URLs
- */
- public function get_thumbnails()
- {
- if ($this->thumbnails !== null)
- {
- return $this->thumbnails;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the title
- *
- * @return string|null
- */
- public function get_title()
- {
- if ($this->title !== null)
- {
- return $this->title;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get mimetype of the enclosure
- *
- * @see get_real_type()
- * @return string|null MIME type
- */
- public function get_type()
- {
- if ($this->type !== null)
- {
- return $this->type;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the width
- *
- * @return string|null
- */
- public function get_width()
- {
- if ($this->width !== null)
- {
- return $this->width;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Embed the enclosure using `<embed>`
- *
- * @deprecated Use the second parameter to {@see embed} instead
- *
- * @param array|string $options See first paramter to {@see embed}
- * @return string HTML string to output
- */
- public function native_embed($options='')
- {
- return $this->embed($options, true);
- }
-
- /**
- * Embed the enclosure using Javascript
- *
- * `$options` is an array or comma-separated key:value string, with the
- * following properties:
- *
- * - `alt` (string): Alternate content for when an end-user does not have
- * the appropriate handler installed or when a file type is
- * unsupported. Can be any text or HTML. Defaults to blank.
- * - `altclass` (string): If a file type is unsupported, the end-user will
- * see the alt text (above) linked directly to the content. That link
- * will have this value as its class name. Defaults to blank.
- * - `audio` (string): This is an image that should be used as a
- * placeholder for audio files before they're loaded (QuickTime-only).
- * Can be any relative or absolute URL. Defaults to blank.
- * - `bgcolor` (string): The background color for the media, if not
- * already transparent. Defaults to `#ffffff`.
- * - `height` (integer): The height of the embedded media. Accepts any
- * numeric pixel value (such as `360`) or `auto`. Defaults to `auto`,
- * and it is recommended that you use this default.
- * - `loop` (boolean): Do you want the media to loop when its done?
- * Defaults to `false`.
- * - `mediaplayer` (string): The location of the included
- * `mediaplayer.swf` file. This allows for the playback of Flash Video
- * (`.flv`) files, and is the default handler for non-Odeo MP3's.
- * Defaults to blank.
- * - `video` (string): This is an image that should be used as a
- * placeholder for video files before they're loaded (QuickTime-only).
- * Can be any relative or absolute URL. Defaults to blank.
- * - `width` (integer): The width of the embedded media. Accepts any
- * numeric pixel value (such as `480`) or `auto`. Defaults to `auto`,
- * and it is recommended that you use this default.
- * - `widescreen` (boolean): Is the enclosure widescreen or standard?
- * This applies only to video enclosures, and will automatically resize
- * the content appropriately. Defaults to `false`, implying 4:3 mode.
- *
- * Note: Non-widescreen (4:3) mode with `width` and `height` set to `auto`
- * will default to 480x360 video resolution. Widescreen (16:9) mode with
- * `width` and `height` set to `auto` will default to 480x270 video resolution.
- *
- * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'.
- * @param array|string $options Comma-separated key:value list, or array
- * @param bool $native Use `<embed>`
- * @return string HTML string to output
- */
- public function embed($options = '', $native = false)
- {
- // Set up defaults
- $audio = '';
- $video = '';
- $alt = '';
- $altclass = '';
- $loop = 'false';
- $width = 'auto';
- $height = 'auto';
- $bgcolor = '#ffffff';
- $mediaplayer = '';
- $widescreen = false;
- $handler = $this->get_handler();
- $type = $this->get_real_type();
-
- // Process options and reassign values as necessary
- if (is_array($options))
- {
- extract($options);
- }
- else
- {
- $options = explode(',', $options);
- foreach($options as $option)
- {
- $opt = explode(':', $option, 2);
- if (isset($opt[0], $opt[1]))
- {
- $opt[0] = trim($opt[0]);
- $opt[1] = trim($opt[1]);
- switch ($opt[0])
- {
- case 'audio':
- $audio = $opt[1];
- break;
-
- case 'video':
- $video = $opt[1];
- break;
-
- case 'alt':
- $alt = $opt[1];
- break;
-
- case 'altclass':
- $altclass = $opt[1];
- break;
-
- case 'loop':
- $loop = $opt[1];
- break;
-
- case 'width':
- $width = $opt[1];
- break;
-
- case 'height':
- $height = $opt[1];
- break;
-
- case 'bgcolor':
- $bgcolor = $opt[1];
- break;
-
- case 'mediaplayer':
- $mediaplayer = $opt[1];
- break;
-
- case 'widescreen':
- $widescreen = $opt[1];
- break;
- }
- }
- }
- }
-
- $mime = explode('/', $type, 2);
- $mime = $mime[0];
-
- // Process values for 'auto'
- if ($width === 'auto')
- {
- if ($mime === 'video')
- {
- if ($height === 'auto')
- {
- $width = 480;
- }
- elseif ($widescreen)
- {
- $width = round((intval($height)/9)*16);
- }
- else
- {
- $width = round((intval($height)/3)*4);
- }
- }
- else
- {
- $width = '100%';
- }
- }
-
- if ($height === 'auto')
- {
- if ($mime === 'audio')
- {
- $height = 0;
- }
- elseif ($mime === 'video')
- {
- if ($width === 'auto')
- {
- if ($widescreen)
- {
- $height = 270;
- }
- else
- {
- $height = 360;
- }
- }
- elseif ($widescreen)
- {
- $height = round((intval($width)/16)*9);
- }
- else
- {
- $height = round((intval($width)/4)*3);
- }
- }
- else
- {
- $height = 376;
- }
- }
- elseif ($mime === 'audio')
- {
- $height = 0;
- }
-
- // Set proper placeholder value
- if ($mime === 'audio')
- {
- $placeholder = $audio;
- }
- elseif ($mime === 'video')
- {
- $placeholder = $video;
- }
-
- $embed = '';
-
- // Flash
- if ($handler === 'flash')
- {
- if ($native)
- {
- $embed .= "<embed src=\"" . $this->get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\"></embed>";
- }
- else
- {
- $embed .= "<script type='text/javascript'>embed_flash('$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$loop', '$type');</script>";
- }
- }
-
- // Flash Media Player file types.
- // Preferred handler for MP3 file types.
- elseif ($handler === 'fmedia' || ($handler === 'mp3' && $mediaplayer !== ''))
- {
- $height += 20;
- if ($native)
- {
- $embed .= "<embed src=\"$mediaplayer\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"$width\" height=\"$height\" wmode=\"transparent\" flashvars=\"file=" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\"></embed>";
- }
- else
- {
- $embed .= "<script type='text/javascript'>embed_flv('$width', '$height', '" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "', '$placeholder', '$loop', '$mediaplayer');</script>";
- }
- }
-
- // QuickTime 7 file types. Need to test with QuickTime 6.
- // Only handle MP3's if the Flash Media Player is not present.
- elseif ($handler === 'quicktime' || ($handler === 'mp3' && $mediaplayer === ''))
- {
- $height += 16;
- if ($native)
- {
- if ($placeholder !== '')
- {
- $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" href=\"" . $this->get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
- }
- else
- {
- $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" src=\"" . $this->get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
- }
- }
- else
- {
- $embed .= "<script type='text/javascript'>embed_quicktime('$type', '$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$placeholder', '$loop');</script>";
- }
- }
-
- // Windows Media
- elseif ($handler === 'wmedia')
- {
- $height += 45;
- if ($native)
- {
- $embed .= "<embed type=\"application/x-mplayer2\" src=\"" . $this->get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\"></embed>";
- }
- else
- {
- $embed .= "<script type='text/javascript'>embed_wmedia('$width', '$height', '" . $this->get_link() . "');</script>";
- }
- }
-
- // Everything else
- else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>';
-
- return $embed;
- }
-
- /**
- * Get the real media type
- *
- * Often, feeds lie to us, necessitating a bit of deeper inspection. This
- * converts types to their canonical representations based on the file
- * extension
- *
- * @see get_type()
- * @param bool $find_handler Internal use only, use {@see get_handler()} instead
- * @return string MIME type
- */
- public function get_real_type($find_handler = false)
- {
- // Mime-types by handler.
- $types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash
- $types_fmedia = array('video/flv', 'video/x-flv','flv-application/octet-stream'); // Flash Media Player
- $types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime
- $types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media
- $types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3
-
- if ($this->get_type() !== null)
- {
- $type = strtolower($this->type);
- }
- else
- {
- $type = null;
- }
-
- // If we encounter an unsupported mime-type, check the file extension and guess intelligently.
- if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3)))
- {
- switch (strtolower($this->get_extension()))
- {
- // Audio mime-types
- case 'aac':
- case 'adts':
- $type = 'audio/acc';
- break;
-
- case 'aif':
- case 'aifc':
- case 'aiff':
- case 'cdda':
- $type = 'audio/aiff';
- break;
-
- case 'bwf':
- $type = 'audio/wav';
- break;
-
- case 'kar':
- case 'mid':
- case 'midi':
- case 'smf':
- $type = 'audio/midi';
- break;
-
- case 'm4a':
- $type = 'audio/x-m4a';
- break;
-
- case 'mp3':
- case 'swa':
- $type = 'audio/mp3';
- break;
-
- case 'wav':
- $type = 'audio/wav';
- break;
-
- case 'wax':
- $type = 'audio/x-ms-wax';
- break;
-
- case 'wma':
- $type = 'audio/x-ms-wma';
- break;
-
- // Video mime-types
- case '3gp':
- case '3gpp':
- $type = 'video/3gpp';
- break;
-
- case '3g2':
- case '3gp2':
- $type = 'video/3gpp2';
- break;
-
- case 'asf':
- $type = 'video/x-ms-asf';
- break;
-
- case 'flv':
- $type = 'video/x-flv';
- break;
-
- case 'm1a':
- case 'm1s':
- case 'm1v':
- case 'm15':
- case 'm75':
- case 'mp2':
- case 'mpa':
- case 'mpeg':
- case 'mpg':
- case 'mpm':
- case 'mpv':
- $type = 'video/mpeg';
- break;
-
- case 'm4v':
- $type = 'video/x-m4v';
- break;
-
- case 'mov':
- case 'qt':
- $type = 'video/quicktime';
- break;
-
- case 'mp4':
- case 'mpg4':
- $type = 'video/mp4';
- break;
-
- case 'sdv':
- $type = 'video/sd-video';
- break;
-
- case 'wm':
- $type = 'video/x-ms-wm';
- break;
-
- case 'wmv':
- $type = 'video/x-ms-wmv';
- break;
-
- case 'wvx':
- $type = 'video/x-ms-wvx';
- break;
-
- // Flash mime-types
- case 'spl':
- $type = 'application/futuresplash';
- break;
-
- case 'swf':
- $type = 'application/x-shockwave-flash';
- break;
- }
- }
-
- if ($find_handler)
- {
- if (in_array($type, $types_flash))
- {
- return 'flash';
- }
- elseif (in_array($type, $types_fmedia))
- {
- return 'fmedia';
- }
- elseif (in_array($type, $types_quicktime))
- {
- return 'quicktime';
- }
- elseif (in_array($type, $types_wmedia))
- {
- return 'wmedia';
- }
- elseif (in_array($type, $types_mp3))
- {
- return 'mp3';
- }
- else
- {
- return null;
- }
- }
- else
- {
- return $type;
- }
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Exception.php b/3rdparty/simplepie/library/SimplePie/Exception.php
deleted file mode 100755
index 73e104d69..000000000
--- a/3rdparty/simplepie/library/SimplePie/Exception.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.4-dev
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * General SimplePie exception class
- *
- * @package SimplePie
- */
-class SimplePie_Exception extends Exception
-{
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/library/SimplePie/File.php b/3rdparty/simplepie/library/SimplePie/File.php
deleted file mode 100755
index b7d1a2ac9..000000000
--- a/3rdparty/simplepie/library/SimplePie/File.php
+++ /dev/null
@@ -1,292 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Used for fetching remote files and reading local files
- *
- * Supports HTTP 1.0 via cURL or fsockopen, with spotty HTTP 1.1 support
- *
- * This class can be overloaded with {@see SimplePie::set_file_class()}
- *
- * @package SimplePie
- * @subpackage HTTP
- * @todo Move to properly supporting RFC2616 (HTTP/1.1)
- */
-class SimplePie_File
-{
- var $url;
- var $useragent;
- var $success = true;
- var $headers = array();
- var $body;
- var $status_code;
- var $redirects = 0;
- var $error;
- var $method = SIMPLEPIE_FILE_SOURCE_NONE;
-
- public function __construct($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false)
- {
- if (class_exists('idna_convert'))
- {
- $idn = new idna_convert();
- $parsed = SimplePie_Misc::parse_url($url);
- $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
- }
- $this->url = $url;
- $this->useragent = $useragent;
- if (preg_match('/^http(s)?:\/\//i', $url))
- {
- if ($useragent === null)
- {
- $useragent = ini_get('user_agent');
- $this->useragent = $useragent;
- }
- if (!is_array($headers))
- {
- $headers = array();
- }
- if (!$force_fsockopen && function_exists('curl_exec'))
- {
- $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_CURL;
- $fp = curl_init();
- $headers2 = array();
- foreach ($headers as $key => $value)
- {
- $headers2[] = "$key: $value";
- }
- if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>='))
- {
- curl_setopt($fp, CURLOPT_ENCODING, '');
- }
- curl_setopt($fp, CURLOPT_URL, $url);
- curl_setopt($fp, CURLOPT_HEADER, 1);
- curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($fp, CURLOPT_TIMEOUT, $timeout);
- curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout);
- curl_setopt($fp, CURLOPT_REFERER, $url);
- curl_setopt($fp, CURLOPT_USERAGENT, $useragent);
- curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2);
- if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>='))
- {
- curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);
- curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects);
- }
-
- $this->headers = curl_exec($fp);
- if (curl_errno($fp) === 23 || curl_errno($fp) === 61)
- {
- curl_setopt($fp, CURLOPT_ENCODING, 'none');
- $this->headers = curl_exec($fp);
- }
- if (curl_errno($fp))
- {
- $this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp);
- $this->success = false;
- }
- else
- {
- $info = curl_getinfo($fp);
- curl_close($fp);
- $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
- $this->headers = array_pop($this->headers);
- $parser = new SimplePie_HTTP_Parser($this->headers);
- if ($parser->parse())
- {
- $this->headers = $parser->headers;
- $this->body = $parser->body;
- $this->status_code = $parser->status_code;
- if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
- {
- $this->redirects++;
- $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
- return $this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
- }
- }
- }
- }
- else
- {
- $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
- $url_parts = parse_url($url);
- $socket_host = $url_parts['host'];
- if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https')
- {
- $socket_host = "ssl://$url_parts[host]";
- $url_parts['port'] = 443;
- }
- if (!isset($url_parts['port']))
- {
- $url_parts['port'] = 80;
- }
- $fp = @fsockopen($socket_host, $url_parts['port'], $errno, $errstr, $timeout);
- if (!$fp)
- {
- $this->error = 'fsockopen error: ' . $errstr;
- $this->success = false;
- }
- else
- {
- stream_set_timeout($fp, $timeout);
- if (isset($url_parts['path']))
- {
- if (isset($url_parts['query']))
- {
- $get = "$url_parts[path]?$url_parts[query]";
- }
- else
- {
- $get = $url_parts['path'];
- }
- }
- else
- {
- $get = '/';
- }
- $out = "GET $get HTTP/1.1\r\n";
- $out .= "Host: $url_parts[host]\r\n";
- $out .= "User-Agent: $useragent\r\n";
- if (extension_loaded('zlib'))
- {
- $out .= "Accept-Encoding: x-gzip,gzip,deflate\r\n";
- }
-
- if (isset($url_parts['user']) && isset($url_parts['pass']))
- {
- $out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n";
- }
- foreach ($headers as $key => $value)
- {
- $out .= "$key: $value\r\n";
- }
- $out .= "Connection: Close\r\n\r\n";
- fwrite($fp, $out);
-
- $info = stream_get_meta_data($fp);
-
- $this->headers = '';
- while (!$info['eof'] && !$info['timed_out'])
- {
- $this->headers .= fread($fp, 1160);
- $info = stream_get_meta_data($fp);
- }
- if (!$info['timed_out'])
- {
- $parser = new SimplePie_HTTP_Parser($this->headers);
- if ($parser->parse())
- {
- $this->headers = $parser->headers;
- $this->body = $parser->body;
- $this->status_code = $parser->status_code;
- if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
- {
- $this->redirects++;
- $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
- return $this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
- }
- if (isset($this->headers['content-encoding']))
- {
- // Hey, we act dumb elsewhere, so let's do that here too
- switch (strtolower(trim($this->headers['content-encoding'], "\x09\x0A\x0D\x20")))
- {
- case 'gzip':
- case 'x-gzip':
- $decoder = new SimplePie_gzdecode($this->body);
- if (!$decoder->parse())
- {
- $this->error = 'Unable to decode HTTP "gzip" stream';
- $this->success = false;
- }
- else
- {
- $this->body = $decoder->data;
- }
- break;
-
- case 'deflate':
- if (($decompressed = gzinflate($this->body)) !== false)
- {
- $this->body = $decompressed;
- }
- else if (($decompressed = gzuncompress($this->body)) !== false)
- {
- $this->body = $decompressed;
- }
- else if (function_exists('gzdecode') && ($decompressed = gzdecode($this->body)) !== false)
- {
- $this->body = $decompressed;
- }
- else
- {
- $this->error = 'Unable to decode HTTP "deflate" stream';
- $this->success = false;
- }
- break;
-
- default:
- $this->error = 'Unknown content coding';
- $this->success = false;
- }
- }
- }
- }
- else
- {
- $this->error = 'fsocket timed out';
- $this->success = false;
- }
- fclose($fp);
- }
- }
- }
- else
- {
- $this->method = SIMPLEPIE_FILE_SOURCE_LOCAL | SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS;
- if (!$this->body = file_get_contents($url))
- {
- $this->error = 'file_get_contents could not read the file';
- $this->success = false;
- }
- }
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/HTTP/Parser.php b/3rdparty/simplepie/library/SimplePie/HTTP/Parser.php
deleted file mode 100755
index bff2222b2..000000000
--- a/3rdparty/simplepie/library/SimplePie/HTTP/Parser.php
+++ /dev/null
@@ -1,500 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-
-/**
- * HTTP Response Parser
- *
- * @package SimplePie
- * @subpackage HTTP
- */
-class SimplePie_HTTP_Parser
-{
- /**
- * HTTP Version
- *
- * @var float
- */
- public $http_version = 0.0;
-
- /**
- * Status code
- *
- * @var int
- */
- public $status_code = 0;
-
- /**
- * Reason phrase
- *
- * @var string
- */
- public $reason = '';
-
- /**
- * Key/value pairs of the headers
- *
- * @var array
- */
- public $headers = array();
-
- /**
- * Body of the response
- *
- * @var string
- */
- public $body = '';
-
- /**
- * Current state of the state machine
- *
- * @var string
- */
- protected $state = 'http_version';
-
- /**
- * Input data
- *
- * @var string
- */
- protected $data = '';
-
- /**
- * Input data length (to avoid calling strlen() everytime this is needed)
- *
- * @var int
- */
- protected $data_length = 0;
-
- /**
- * Current position of the pointer
- *
- * @var int
- */
- protected $position = 0;
-
- /**
- * Name of the hedaer currently being parsed
- *
- * @var string
- */
- protected $name = '';
-
- /**
- * Value of the hedaer currently being parsed
- *
- * @var string
- */
- protected $value = '';
-
- /**
- * Create an instance of the class with the input data
- *
- * @param string $data Input data
- */
- public function __construct($data)
- {
- $this->data = $data;
- $this->data_length = strlen($this->data);
- }
-
- /**
- * Parse the input data
- *
- * @return bool true on success, false on failure
- */
- public function parse()
- {
- while ($this->state && $this->state !== 'emit' && $this->has_data())
- {
- $state = $this->state;
- $this->$state();
- }
- $this->data = '';
- if ($this->state === 'emit' || $this->state === 'body')
- {
- return true;
- }
- else
- {
- $this->http_version = '';
- $this->status_code = '';
- $this->reason = '';
- $this->headers = array();
- $this->body = '';
- return false;
- }
- }
-
- /**
- * Check whether there is data beyond the pointer
- *
- * @return bool true if there is further data, false if not
- */
- protected function has_data()
- {
- return (bool) ($this->position < $this->data_length);
- }
-
- /**
- * See if the next character is LWS
- *
- * @return bool true if the next character is LWS, false if not
- */
- protected function is_linear_whitespace()
- {
- return (bool) ($this->data[$this->position] === "\x09"
- || $this->data[$this->position] === "\x20"
- || ($this->data[$this->position] === "\x0A"
- && isset($this->data[$this->position + 1])
- && ($this->data[$this->position + 1] === "\x09" || $this->data[$this->position + 1] === "\x20")));
- }
-
- /**
- * Parse the HTTP version
- */
- protected function http_version()
- {
- if (strpos($this->data, "\x0A") !== false && strtoupper(substr($this->data, 0, 5)) === 'HTTP/')
- {
- $len = strspn($this->data, '0123456789.', 5);
- $this->http_version = substr($this->data, 5, $len);
- $this->position += 5 + $len;
- if (substr_count($this->http_version, '.') <= 1)
- {
- $this->http_version = (float) $this->http_version;
- $this->position += strspn($this->data, "\x09\x20", $this->position);
- $this->state = 'status';
- }
- else
- {
- $this->state = false;
- }
- }
- else
- {
- $this->state = false;
- }
- }
-
- /**
- * Parse the status code
- */
- protected function status()
- {
- if ($len = strspn($this->data, '0123456789', $this->position))
- {
- $this->status_code = (int) substr($this->data, $this->position, $len);
- $this->position += $len;
- $this->state = 'reason';
- }
- else
- {
- $this->state = false;
- }
- }
-
- /**
- * Parse the reason phrase
- */
- protected function reason()
- {
- $len = strcspn($this->data, "\x0A", $this->position);
- $this->reason = trim(substr($this->data, $this->position, $len), "\x09\x0D\x20");
- $this->position += $len + 1;
- $this->state = 'new_line';
- }
-
- /**
- * Deal with a new line, shifting data around as needed
- */
- protected function new_line()
- {
- $this->value = trim($this->value, "\x0D\x20");
- if ($this->name !== '' && $this->value !== '')
- {
- $this->name = strtolower($this->name);
- // We should only use the last Content-Type header. c.f. issue #1
- if (isset($this->headers[$this->name]) && $this->name !== 'content-type')
- {
- $this->headers[$this->name] .= ', ' . $this->value;
- }
- else
- {
- $this->headers[$this->name] = $this->value;
- }
- }
- $this->name = '';
- $this->value = '';
- if (substr($this->data[$this->position], 0, 2) === "\x0D\x0A")
- {
- $this->position += 2;
- $this->state = 'body';
- }
- elseif ($this->data[$this->position] === "\x0A")
- {
- $this->position++;
- $this->state = 'body';
- }
- else
- {
- $this->state = 'name';
- }
- }
-
- /**
- * Parse a header name
- */
- protected function name()
- {
- $len = strcspn($this->data, "\x0A:", $this->position);
- if (isset($this->data[$this->position + $len]))
- {
- if ($this->data[$this->position + $len] === "\x0A")
- {
- $this->position += $len;
- $this->state = 'new_line';
- }
- else
- {
- $this->name = substr($this->data, $this->position, $len);
- $this->position += $len + 1;
- $this->state = 'value';
- }
- }
- else
- {
- $this->state = false;
- }
- }
-
- /**
- * Parse LWS, replacing consecutive LWS characters with a single space
- */
- protected function linear_whitespace()
- {
- do
- {
- if (substr($this->data, $this->position, 2) === "\x0D\x0A")
- {
- $this->position += 2;
- }
- elseif ($this->data[$this->position] === "\x0A")
- {
- $this->position++;
- }
- $this->position += strspn($this->data, "\x09\x20", $this->position);
- } while ($this->has_data() && $this->is_linear_whitespace());
- $this->value .= "\x20";
- }
-
- /**
- * See what state to move to while within non-quoted header values
- */
- protected function value()
- {
- if ($this->is_linear_whitespace())
- {
- $this->linear_whitespace();
- }
- else
- {
- switch ($this->data[$this->position])
- {
- case '"':
- // Workaround for ETags: we have to include the quotes as
- // part of the tag.
- if (strtolower($this->name) === 'etag')
- {
- $this->value .= '"';
- $this->position++;
- $this->state = 'value_char';
- break;
- }
- $this->position++;
- $this->state = 'quote';
- break;
-
- case "\x0A":
- $this->position++;
- $this->state = 'new_line';
- break;
-
- default:
- $this->state = 'value_char';
- break;
- }
- }
- }
-
- /**
- * Parse a header value while outside quotes
- */
- protected function value_char()
- {
- $len = strcspn($this->data, "\x09\x20\x0A\"", $this->position);
- $this->value .= substr($this->data, $this->position, $len);
- $this->position += $len;
- $this->state = 'value';
- }
-
- /**
- * See what state to move to while within quoted header values
- */
- protected function quote()
- {
- if ($this->is_linear_whitespace())
- {
- $this->linear_whitespace();
- }
- else
- {
- switch ($this->data[$this->position])
- {
- case '"':
- $this->position++;
- $this->state = 'value';
- break;
-
- case "\x0A":
- $this->position++;
- $this->state = 'new_line';
- break;
-
- case '\\':
- $this->position++;
- $this->state = 'quote_escaped';
- break;
-
- default:
- $this->state = 'quote_char';
- break;
- }
- }
- }
-
- /**
- * Parse a header value while within quotes
- */
- protected function quote_char()
- {
- $len = strcspn($this->data, "\x09\x20\x0A\"\\", $this->position);
- $this->value .= substr($this->data, $this->position, $len);
- $this->position += $len;
- $this->state = 'value';
- }
-
- /**
- * Parse an escaped character within quotes
- */
- protected function quote_escaped()
- {
- $this->value .= $this->data[$this->position];
- $this->position++;
- $this->state = 'quote';
- }
-
- /**
- * Parse the body
- */
- protected function body()
- {
- $this->body = substr($this->data, $this->position);
- if (!empty($this->headers['transfer-encoding']))
- {
- unset($this->headers['transfer-encoding']);
- $this->state = 'chunked';
- }
- else
- {
- $this->state = 'emit';
- }
- }
-
- /**
- * Parsed a "Transfer-Encoding: chunked" body
- */
- protected function chunked()
- {
- if (!preg_match('/^([0-9a-f]+)[^\r\n]*\r\n/i', trim($this->body)))
- {
- $this->state = 'emit';
- return;
- }
-
- $decoded = '';
- $encoded = $this->body;
-
- while (true)
- {
- $is_chunked = (bool) preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', $encoded, $matches );
- if (!$is_chunked)
- {
- // Looks like it's not chunked after all
- $this->state = 'emit';
- return;
- }
-
- $length = hexdec(trim($matches[1]));
- if ($length === 0)
- {
- // Ignore trailer headers
- $this->state = 'emit';
- $this->body = $decoded;
- return;
- }
-
- $chunk_length = strlen($matches[0]);
- $decoded .= $part = substr($encoded, $chunk_length, $length);
- $encoded = substr($encoded, $chunk_length + $length + 2);
-
- if (trim($encoded) === '0' || empty($encoded))
- {
- $this->state = 'emit';
- $this->body = $decoded;
- return;
- }
- }
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/IRI.php b/3rdparty/simplepie/library/SimplePie/IRI.php
deleted file mode 100755
index d3198c04f..000000000
--- a/3rdparty/simplepie/library/SimplePie/IRI.php
+++ /dev/null
@@ -1,1238 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * IRI parser/serialiser/normaliser
- *
- * @package SimplePie
- * @subpackage HTTP
- * @author Geoffrey Sneddon
- * @author Steve Minutillo
- * @author Ryan McCue
- * @copyright 2007-2012 Geoffrey Sneddon, Steve Minutillo, Ryan McCue
- * @license http://www.opensource.org/licenses/bsd-license.php
- */
-class SimplePie_IRI
-{
- /**
- * Scheme
- *
- * @var string
- */
- protected $scheme = null;
-
- /**
- * User Information
- *
- * @var string
- */
- protected $iuserinfo = null;
-
- /**
- * ihost
- *
- * @var string
- */
- protected $ihost = null;
-
- /**
- * Port
- *
- * @var string
- */
- protected $port = null;
-
- /**
- * ipath
- *
- * @var string
- */
- protected $ipath = '';
-
- /**
- * iquery
- *
- * @var string
- */
- protected $iquery = null;
-
- /**
- * ifragment
- *
- * @var string
- */
- protected $ifragment = null;
-
- /**
- * Normalization database
- *
- * Each key is the scheme, each value is an array with each key as the IRI
- * part and value as the default value for that part.
- */
- protected $normalization = array(
- 'acap' => array(
- 'port' => 674
- ),
- 'dict' => array(
- 'port' => 2628
- ),
- 'file' => array(
- 'ihost' => 'localhost'
- ),
- 'http' => array(
- 'port' => 80,
- 'ipath' => '/'
- ),
- 'https' => array(
- 'port' => 443,
- 'ipath' => '/'
- ),
- );
-
- /**
- * Return the entire IRI when you try and read the object as a string
- *
- * @return string
- */
- public function __toString()
- {
- return $this->get_iri();
- }
-
- /**
- * Overload __set() to provide access via properties
- *
- * @param string $name Property name
- * @param mixed $value Property value
- */
- public function __set($name, $value)
- {
- if (method_exists($this, 'set_' . $name))
- {
- call_user_func(array($this, 'set_' . $name), $value);
- }
- elseif (
- $name === 'iauthority'
- || $name === 'iuserinfo'
- || $name === 'ihost'
- || $name === 'ipath'
- || $name === 'iquery'
- || $name === 'ifragment'
- )
- {
- call_user_func(array($this, 'set_' . substr($name, 1)), $value);
- }
- }
-
- /**
- * Overload __get() to provide access via properties
- *
- * @param string $name Property name
- * @return mixed
- */
- public function __get($name)
- {
- // isset() returns false for null, we don't want to do that
- // Also why we use array_key_exists below instead of isset()
- $props = get_object_vars($this);
-
- if (
- $name === 'iri' ||
- $name === 'uri' ||
- $name === 'iauthority' ||
- $name === 'authority'
- )
- {
- $return = $this->{"get_$name"}();
- }
- elseif (array_key_exists($name, $props))
- {
- $return = $this->$name;
- }
- // host -> ihost
- elseif (($prop = 'i' . $name) && array_key_exists($prop, $props))
- {
- $name = $prop;
- $return = $this->$prop;
- }
- // ischeme -> scheme
- elseif (($prop = substr($name, 1)) && array_key_exists($prop, $props))
- {
- $name = $prop;
- $return = $this->$prop;
- }
- else
- {
- trigger_error('Undefined property: ' . get_class($this) . '::' . $name, E_USER_NOTICE);
- $return = null;
- }
-
- if ($return === null && isset($this->normalization[$this->scheme][$name]))
- {
- return $this->normalization[$this->scheme][$name];
- }
- else
- {
- return $return;
- }
- }
-
- /**
- * Overload __isset() to provide access via properties
- *
- * @param string $name Property name
- * @return bool
- */
- public function __isset($name)
- {
- if (method_exists($this, 'get_' . $name) || isset($this->$name))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Overload __unset() to provide access via properties
- *
- * @param string $name Property name
- */
- public function __unset($name)
- {
- if (method_exists($this, 'set_' . $name))
- {
- call_user_func(array($this, 'set_' . $name), '');
- }
- }
-
- /**
- * Create a new IRI object, from a specified string
- *
- * @param string $iri
- */
- public function __construct($iri = null)
- {
- $this->set_iri($iri);
- }
-
- /**
- * Create a new IRI object by resolving a relative IRI
- *
- * Returns false if $base is not absolute, otherwise an IRI.
- *
- * @param IRI|string $base (Absolute) Base IRI
- * @param IRI|string $relative Relative IRI
- * @return IRI|false
- */
- public static function absolutize($base, $relative)
- {
- if (!($relative instanceof SimplePie_IRI))
- {
- $relative = new SimplePie_IRI($relative);
- }
- if (!$relative->is_valid())
- {
- return false;
- }
- elseif ($relative->scheme !== null)
- {
- return clone $relative;
- }
- else
- {
- if (!($base instanceof SimplePie_IRI))
- {
- $base = new SimplePie_IRI($base);
- }
- if ($base->scheme !== null && $base->is_valid())
- {
- if ($relative->get_iri() !== '')
- {
- if ($relative->iuserinfo !== null || $relative->ihost !== null || $relative->port !== null)
- {
- $target = clone $relative;
- $target->scheme = $base->scheme;
- }
- else
- {
- $target = new SimplePie_IRI;
- $target->scheme = $base->scheme;
- $target->iuserinfo = $base->iuserinfo;
- $target->ihost = $base->ihost;
- $target->port = $base->port;
- if ($relative->ipath !== '')
- {
- if ($relative->ipath[0] === '/')
- {
- $target->ipath = $relative->ipath;
- }
- elseif (($base->iuserinfo !== null || $base->ihost !== null || $base->port !== null) && $base->ipath === '')
- {
- $target->ipath = '/' . $relative->ipath;
- }
- elseif (($last_segment = strrpos($base->ipath, '/')) !== false)
- {
- $target->ipath = substr($base->ipath, 0, $last_segment + 1) . $relative->ipath;
- }
- else
- {
- $target->ipath = $relative->ipath;
- }
- $target->ipath = $target->remove_dot_segments($target->ipath);
- $target->iquery = $relative->iquery;
- }
- else
- {
- $target->ipath = $base->ipath;
- if ($relative->iquery !== null)
- {
- $target->iquery = $relative->iquery;
- }
- elseif ($base->iquery !== null)
- {
- $target->iquery = $base->iquery;
- }
- }
- $target->ifragment = $relative->ifragment;
- }
- }
- else
- {
- $target = clone $base;
- $target->ifragment = null;
- }
- $target->scheme_normalization();
- return $target;
- }
- else
- {
- return false;
- }
- }
- }
-
- /**
- * Parse an IRI into scheme/authority/path/query/fragment segments
- *
- * @param string $iri
- * @return array
- */
- protected function parse_iri($iri)
- {
- $iri = trim($iri, "\x20\x09\x0A\x0C\x0D");
- if (preg_match('/^((?P<scheme>[^:\/?#]+):)?(\/\/(?P<authority>[^\/?#]*))?(?P<path>[^?#]*)(\?(?P<query>[^#]*))?(#(?P<fragment>.*))?$/', $iri, $match))
- {
- if ($match[1] === '')
- {
- $match['scheme'] = null;
- }
- if (!isset($match[3]) || $match[3] === '')
- {
- $match['authority'] = null;
- }
- if (!isset($match[5]))
- {
- $match['path'] = '';
- }
- if (!isset($match[6]) || $match[6] === '')
- {
- $match['query'] = null;
- }
- if (!isset($match[8]) || $match[8] === '')
- {
- $match['fragment'] = null;
- }
- return $match;
- }
- else
- {
- // This can occur when a paragraph is accidentally parsed as a URI
- return false;
- }
- }
-
- /**
- * Remove dot segments from a path
- *
- * @param string $input
- * @return string
- */
- protected function remove_dot_segments($input)
- {
- $output = '';
- while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input === '.' || $input === '..')
- {
- // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise,
- if (strpos($input, '../') === 0)
- {
- $input = substr($input, 3);
- }
- elseif (strpos($input, './') === 0)
- {
- $input = substr($input, 2);
- }
- // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise,
- elseif (strpos($input, '/./') === 0)
- {
- $input = substr($input, 2);
- }
- elseif ($input === '/.')
- {
- $input = '/';
- }
- // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise,
- elseif (strpos($input, '/../') === 0)
- {
- $input = substr($input, 3);
- $output = substr_replace($output, '', strrpos($output, '/'));
- }
- elseif ($input === '/..')
- {
- $input = '/';
- $output = substr_replace($output, '', strrpos($output, '/'));
- }
- // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise,
- elseif ($input === '.' || $input === '..')
- {
- $input = '';
- }
- // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer
- elseif (($pos = strpos($input, '/', 1)) !== false)
- {
- $output .= substr($input, 0, $pos);
- $input = substr_replace($input, '', 0, $pos);
- }
- else
- {
- $output .= $input;
- $input = '';
- }
- }
- return $output . $input;
- }
-
- /**
- * Replace invalid character with percent encoding
- *
- * @param string $string Input string
- * @param string $extra_chars Valid characters not in iunreserved or
- * iprivate (this is ASCII-only)
- * @param bool $iprivate Allow iprivate
- * @return string
- */
- protected function replace_invalid_with_pct_encoding($string, $extra_chars, $iprivate = false)
- {
- // Normalize as many pct-encoded sections as possible
- $string = preg_replace_callback('/(?:%[A-Fa-f0-9]{2})+/', array($this, 'remove_iunreserved_percent_encoded'), $string);
-
- // Replace invalid percent characters
- $string = preg_replace('/%(?![A-Fa-f0-9]{2})/', '%25', $string);
-
- // Add unreserved and % to $extra_chars (the latter is safe because all
- // pct-encoded sections are now valid).
- $extra_chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~%';
-
- // Now replace any bytes that aren't allowed with their pct-encoded versions
- $position = 0;
- $strlen = strlen($string);
- while (($position += strspn($string, $extra_chars, $position)) < $strlen)
- {
- $value = ord($string[$position]);
-
- // Start position
- $start = $position;
-
- // By default we are valid
- $valid = true;
-
- // No one byte sequences are valid due to the while.
- // Two byte sequence:
- if (($value & 0xE0) === 0xC0)
- {
- $character = ($value & 0x1F) << 6;
- $length = 2;
- $remaining = 1;
- }
- // Three byte sequence:
- elseif (($value & 0xF0) === 0xE0)
- {
- $character = ($value & 0x0F) << 12;
- $length = 3;
- $remaining = 2;
- }
- // Four byte sequence:
- elseif (($value & 0xF8) === 0xF0)
- {
- $character = ($value & 0x07) << 18;
- $length = 4;
- $remaining = 3;
- }
- // Invalid byte:
- else
- {
- $valid = false;
- $length = 1;
- $remaining = 0;
- }
-
- if ($remaining)
- {
- if ($position + $length <= $strlen)
- {
- for ($position++; $remaining; $position++)
- {
- $value = ord($string[$position]);
-
- // Check that the byte is valid, then add it to the character:
- if (($value & 0xC0) === 0x80)
- {
- $character |= ($value & 0x3F) << (--$remaining * 6);
- }
- // If it is invalid, count the sequence as invalid and reprocess the current byte:
- else
- {
- $valid = false;
- $position--;
- break;
- }
- }
- }
- else
- {
- $position = $strlen - 1;
- $valid = false;
- }
- }
-
- // Percent encode anything invalid or not in ucschar
- if (
- // Invalid sequences
- !$valid
- // Non-shortest form sequences are invalid
- || $length > 1 && $character <= 0x7F
- || $length > 2 && $character <= 0x7FF
- || $length > 3 && $character <= 0xFFFF
- // Outside of range of ucschar codepoints
- // Noncharacters
- || ($character & 0xFFFE) === 0xFFFE
- || $character >= 0xFDD0 && $character <= 0xFDEF
- || (
- // Everything else not in ucschar
- $character > 0xD7FF && $character < 0xF900
- || $character < 0xA0
- || $character > 0xEFFFD
- )
- && (
- // Everything not in iprivate, if it applies
- !$iprivate
- || $character < 0xE000
- || $character > 0x10FFFD
- )
- )
- {
- // If we were a character, pretend we weren't, but rather an error.
- if ($valid)
- $position--;
-
- for ($j = $start; $j <= $position; $j++)
- {
- $string = substr_replace($string, sprintf('%%%02X', ord($string[$j])), $j, 1);
- $j += 2;
- $position += 2;
- $strlen += 2;
- }
- }
- }
-
- return $string;
- }
-
- /**
- * Callback function for preg_replace_callback.
- *
- * Removes sequences of percent encoded bytes that represent UTF-8
- * encoded characters in iunreserved
- *
- * @param array $match PCRE match
- * @return string Replacement
- */
- protected function remove_iunreserved_percent_encoded($match)
- {
- // As we just have valid percent encoded sequences we can just explode
- // and ignore the first member of the returned array (an empty string).
- $bytes = explode('%', $match[0]);
-
- // Initialize the new string (this is what will be returned) and that
- // there are no bytes remaining in the current sequence (unsurprising
- // at the first byte!).
- $string = '';
- $remaining = 0;
-
- // Loop over each and every byte, and set $value to its value
- for ($i = 1, $len = count($bytes); $i < $len; $i++)
- {
- $value = hexdec($bytes[$i]);
-
- // If we're the first byte of sequence:
- if (!$remaining)
- {
- // Start position
- $start = $i;
-
- // By default we are valid
- $valid = true;
-
- // One byte sequence:
- if ($value <= 0x7F)
- {
- $character = $value;
- $length = 1;
- }
- // Two byte sequence:
- elseif (($value & 0xE0) === 0xC0)
- {
- $character = ($value & 0x1F) << 6;
- $length = 2;
- $remaining = 1;
- }
- // Three byte sequence:
- elseif (($value & 0xF0) === 0xE0)
- {
- $character = ($value & 0x0F) << 12;
- $length = 3;
- $remaining = 2;
- }
- // Four byte sequence:
- elseif (($value & 0xF8) === 0xF0)
- {
- $character = ($value & 0x07) << 18;
- $length = 4;
- $remaining = 3;
- }
- // Invalid byte:
- else
- {
- $valid = false;
- $remaining = 0;
- }
- }
- // Continuation byte:
- else
- {
- // Check that the byte is valid, then add it to the character:
- if (($value & 0xC0) === 0x80)
- {
- $remaining--;
- $character |= ($value & 0x3F) << ($remaining * 6);
- }
- // If it is invalid, count the sequence as invalid and reprocess the current byte as the start of a sequence:
- else
- {
- $valid = false;
- $remaining = 0;
- $i--;
- }
- }
-
- // If we've reached the end of the current byte sequence, append it to Unicode::$data
- if (!$remaining)
- {
- // Percent encode anything invalid or not in iunreserved
- if (
- // Invalid sequences
- !$valid
- // Non-shortest form sequences are invalid
- || $length > 1 && $character <= 0x7F
- || $length > 2 && $character <= 0x7FF
- || $length > 3 && $character <= 0xFFFF
- // Outside of range of iunreserved codepoints
- || $character < 0x2D
- || $character > 0xEFFFD
- // Noncharacters
- || ($character & 0xFFFE) === 0xFFFE
- || $character >= 0xFDD0 && $character <= 0xFDEF
- // Everything else not in iunreserved (this is all BMP)
- || $character === 0x2F
- || $character > 0x39 && $character < 0x41
- || $character > 0x5A && $character < 0x61
- || $character > 0x7A && $character < 0x7E
- || $character > 0x7E && $character < 0xA0
- || $character > 0xD7FF && $character < 0xF900
- )
- {
- for ($j = $start; $j <= $i; $j++)
- {
- $string .= '%' . strtoupper($bytes[$j]);
- }
- }
- else
- {
- for ($j = $start; $j <= $i; $j++)
- {
- $string .= chr(hexdec($bytes[$j]));
- }
- }
- }
- }
-
- // If we have any bytes left over they are invalid (i.e., we are
- // mid-way through a multi-byte sequence)
- if ($remaining)
- {
- for ($j = $start; $j < $len; $j++)
- {
- $string .= '%' . strtoupper($bytes[$j]);
- }
- }
-
- return $string;
- }
-
- protected function scheme_normalization()
- {
- if (isset($this->normalization[$this->scheme]['iuserinfo']) && $this->iuserinfo === $this->normalization[$this->scheme]['iuserinfo'])
- {
- $this->iuserinfo = null;
- }
- if (isset($this->normalization[$this->scheme]['ihost']) && $this->ihost === $this->normalization[$this->scheme]['ihost'])
- {
- $this->ihost = null;
- }
- if (isset($this->normalization[$this->scheme]['port']) && $this->port === $this->normalization[$this->scheme]['port'])
- {
- $this->port = null;
- }
- if (isset($this->normalization[$this->scheme]['ipath']) && $this->ipath === $this->normalization[$this->scheme]['ipath'])
- {
- $this->ipath = '';
- }
- if (isset($this->normalization[$this->scheme]['iquery']) && $this->iquery === $this->normalization[$this->scheme]['iquery'])
- {
- $this->iquery = null;
- }
- if (isset($this->normalization[$this->scheme]['ifragment']) && $this->ifragment === $this->normalization[$this->scheme]['ifragment'])
- {
- $this->ifragment = null;
- }
- }
-
- /**
- * Check if the object represents a valid IRI. This needs to be done on each
- * call as some things change depending on another part of the IRI.
- *
- * @return bool
- */
- public function is_valid()
- {
- $isauthority = $this->iuserinfo !== null || $this->ihost !== null || $this->port !== null;
- if ($this->ipath !== '' &&
- (
- $isauthority && (
- $this->ipath[0] !== '/' ||
- substr($this->ipath, 0, 2) === '//'
- ) ||
- (
- $this->scheme === null &&
- !$isauthority &&
- strpos($this->ipath, ':') !== false &&
- (strpos($this->ipath, '/') === false ? true : strpos($this->ipath, ':') < strpos($this->ipath, '/'))
- )
- )
- )
- {
- return false;
- }
-
- return true;
- }
-
- /**
- * Set the entire IRI. Returns true on success, false on failure (if there
- * are any invalid characters).
- *
- * @param string $iri
- * @return bool
- */
- public function set_iri($iri)
- {
- static $cache;
- if (!$cache)
- {
- $cache = array();
- }
-
- if ($iri === null)
- {
- return true;
- }
- elseif (isset($cache[$iri]))
- {
- list($this->scheme,
- $this->iuserinfo,
- $this->ihost,
- $this->port,
- $this->ipath,
- $this->iquery,
- $this->ifragment,
- $return) = $cache[$iri];
- return $return;
- }
- else
- {
- $parsed = $this->parse_iri((string) $iri);
- if (!$parsed)
- {
- return false;
- }
-
- $return = $this->set_scheme($parsed['scheme'])
- && $this->set_authority($parsed['authority'])
- && $this->set_path($parsed['path'])
- && $this->set_query($parsed['query'])
- && $this->set_fragment($parsed['fragment']);
-
- $cache[$iri] = array($this->scheme,
- $this->iuserinfo,
- $this->ihost,
- $this->port,
- $this->ipath,
- $this->iquery,
- $this->ifragment,
- $return);
- return $return;
- }
- }
-
- /**
- * Set the scheme. Returns true on success, false on failure (if there are
- * any invalid characters).
- *
- * @param string $scheme
- * @return bool
- */
- public function set_scheme($scheme)
- {
- if ($scheme === null)
- {
- $this->scheme = null;
- }
- elseif (!preg_match('/^[A-Za-z][0-9A-Za-z+\-.]*$/', $scheme))
- {
- $this->scheme = null;
- return false;
- }
- else
- {
- $this->scheme = strtolower($scheme);
- }
- return true;
- }
-
- /**
- * Set the authority. Returns true on success, false on failure (if there are
- * any invalid characters).
- *
- * @param string $authority
- * @return bool
- */
- public function set_authority($authority)
- {
- static $cache;
- if (!$cache)
- $cache = array();
-
- if ($authority === null)
- {
- $this->iuserinfo = null;
- $this->ihost = null;
- $this->port = null;
- return true;
- }
- elseif (isset($cache[$authority]))
- {
- list($this->iuserinfo,
- $this->ihost,
- $this->port,
- $return) = $cache[$authority];
-
- return $return;
- }
- else
- {
- $remaining = $authority;
- if (($iuserinfo_end = strrpos($remaining, '@')) !== false)
- {
- $iuserinfo = substr($remaining, 0, $iuserinfo_end);
- $remaining = substr($remaining, $iuserinfo_end + 1);
- }
- else
- {
- $iuserinfo = null;
- }
- if (($port_start = strpos($remaining, ':', strpos($remaining, ']'))) !== false)
- {
- if (($port = substr($remaining, $port_start + 1)) === false)
- {
- $port = null;
- }
- $remaining = substr($remaining, 0, $port_start);
- }
- else
- {
- $port = null;
- }
-
- $return = $this->set_userinfo($iuserinfo) &&
- $this->set_host($remaining) &&
- $this->set_port($port);
-
- $cache[$authority] = array($this->iuserinfo,
- $this->ihost,
- $this->port,
- $return);
-
- return $return;
- }
- }
-
- /**
- * Set the iuserinfo.
- *
- * @param string $iuserinfo
- * @return bool
- */
- public function set_userinfo($iuserinfo)
- {
- if ($iuserinfo === null)
- {
- $this->iuserinfo = null;
- }
- else
- {
- $this->iuserinfo = $this->replace_invalid_with_pct_encoding($iuserinfo, '!$&\'()*+,;=:');
- $this->scheme_normalization();
- }
-
- return true;
- }
-
- /**
- * Set the ihost. Returns true on success, false on failure (if there are
- * any invalid characters).
- *
- * @param string $ihost
- * @return bool
- */
- public function set_host($ihost)
- {
- if ($ihost === null)
- {
- $this->ihost = null;
- return true;
- }
- elseif (substr($ihost, 0, 1) === '[' && substr($ihost, -1) === ']')
- {
- if (SimplePie_Net_IPv6::check_ipv6(substr($ihost, 1, -1)))
- {
- $this->ihost = '[' . SimplePie_Net_IPv6::compress(substr($ihost, 1, -1)) . ']';
- }
- else
- {
- $this->ihost = null;
- return false;
- }
- }
- else
- {
- $ihost = $this->replace_invalid_with_pct_encoding($ihost, '!$&\'()*+,;=');
-
- // Lowercase, but ignore pct-encoded sections (as they should
- // remain uppercase). This must be done after the previous step
- // as that can add unescaped characters.
- $position = 0;
- $strlen = strlen($ihost);
- while (($position += strcspn($ihost, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ%', $position)) < $strlen)
- {
- if ($ihost[$position] === '%')
- {
- $position += 3;
- }
- else
- {
- $ihost[$position] = strtolower($ihost[$position]);
- $position++;
- }
- }
-
- $this->ihost = $ihost;
- }
-
- $this->scheme_normalization();
-
- return true;
- }
-
- /**
- * Set the port. Returns true on success, false on failure (if there are
- * any invalid characters).
- *
- * @param string $port
- * @return bool
- */
- public function set_port($port)
- {
- if ($port === null)
- {
- $this->port = null;
- return true;
- }
- elseif (strspn($port, '0123456789') === strlen($port))
- {
- $this->port = (int) $port;
- $this->scheme_normalization();
- return true;
- }
- else
- {
- $this->port = null;
- return false;
- }
- }
-
- /**
- * Set the ipath.
- *
- * @param string $ipath
- * @return bool
- */
- public function set_path($ipath)
- {
- static $cache;
- if (!$cache)
- {
- $cache = array();
- }
-
- $ipath = (string) $ipath;
-
- if (isset($cache[$ipath]))
- {
- $this->ipath = $cache[$ipath][(int) ($this->scheme !== null)];
- }
- else
- {
- $valid = $this->replace_invalid_with_pct_encoding($ipath, '!$&\'()*+,;=@:/');
- $removed = $this->remove_dot_segments($valid);
-
- $cache[$ipath] = array($valid, $removed);
- $this->ipath = ($this->scheme !== null) ? $removed : $valid;
- }
-
- $this->scheme_normalization();
- return true;
- }
-
- /**
- * Set the iquery.
- *
- * @param string $iquery
- * @return bool
- */
- public function set_query($iquery)
- {
- if ($iquery === null)
- {
- $this->iquery = null;
- }
- else
- {
- $this->iquery = $this->replace_invalid_with_pct_encoding($iquery, '!$&\'()*+,;=:@/?', true);
- $this->scheme_normalization();
- }
- return true;
- }
-
- /**
- * Set the ifragment.
- *
- * @param string $ifragment
- * @return bool
- */
- public function set_fragment($ifragment)
- {
- if ($ifragment === null)
- {
- $this->ifragment = null;
- }
- else
- {
- $this->ifragment = $this->replace_invalid_with_pct_encoding($ifragment, '!$&\'()*+,;=:@/?');
- $this->scheme_normalization();
- }
- return true;
- }
-
- /**
- * Convert an IRI to a URI (or parts thereof)
- *
- * @return string
- */
- public function to_uri($string)
- {
- static $non_ascii;
- if (!$non_ascii)
- {
- $non_ascii = implode('', range("\x80", "\xFF"));
- }
-
- $position = 0;
- $strlen = strlen($string);
- while (($position += strcspn($string, $non_ascii, $position)) < $strlen)
- {
- $string = substr_replace($string, sprintf('%%%02X', ord($string[$position])), $position, 1);
- $position += 3;
- $strlen += 2;
- }
-
- return $string;
- }
-
- /**
- * Get the complete IRI
- *
- * @return string
- */
- public function get_iri()
- {
- if (!$this->is_valid())
- {
- return false;
- }
-
- $iri = '';
- if ($this->scheme !== null)
- {
- $iri .= $this->scheme . ':';
- }
- if (($iauthority = $this->get_iauthority()) !== null)
- {
- $iri .= '//' . $iauthority;
- }
- if ($this->ipath !== '')
- {
- $iri .= $this->ipath;
- }
- elseif (!empty($this->normalization[$this->scheme]['ipath']) && $iauthority !== null && $iauthority !== '')
- {
- $iri .= $this->normalization[$this->scheme]['ipath'];
- }
- if ($this->iquery !== null)
- {
- $iri .= '?' . $this->iquery;
- }
- if ($this->ifragment !== null)
- {
- $iri .= '#' . $this->ifragment;
- }
-
- return $iri;
- }
-
- /**
- * Get the complete URI
- *
- * @return string
- */
- public function get_uri()
- {
- return $this->to_uri($this->get_iri());
- }
-
- /**
- * Get the complete iauthority
- *
- * @return string
- */
- protected function get_iauthority()
- {
- if ($this->iuserinfo !== null || $this->ihost !== null || $this->port !== null)
- {
- $iauthority = '';
- if ($this->iuserinfo !== null)
- {
- $iauthority .= $this->iuserinfo . '@';
- }
- if ($this->ihost !== null)
- {
- $iauthority .= $this->ihost;
- }
- if ($this->port !== null)
- {
- $iauthority .= ':' . $this->port;
- }
- return $iauthority;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the complete authority
- *
- * @return string
- */
- protected function get_authority()
- {
- $iauthority = $this->get_iauthority();
- if (is_string($iauthority))
- return $this->to_uri($iauthority);
- else
- return $iauthority;
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Item.php b/3rdparty/simplepie/library/SimplePie/Item.php
deleted file mode 100755
index a77574b37..000000000
--- a/3rdparty/simplepie/library/SimplePie/Item.php
+++ /dev/null
@@ -1,2964 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-
-/**
- * Manages all item-related data
- *
- * Used by {@see SimplePie::get_item()} and {@see SimplePie::get_items()}
- *
- * This class can be overloaded with {@see SimplePie::set_item_class()}
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Item
-{
- /**
- * Parent feed
- *
- * @access private
- * @var SimplePie
- */
- var $feed;
-
- /**
- * Raw data
- *
- * @access private
- * @var array
- */
- var $data = array();
-
- /**
- * Registry object
- *
- * @see set_registry
- * @var SimplePie_Registry
- */
- protected $registry;
-
- /**
- * Create a new item object
- *
- * This is usually used by {@see SimplePie::get_items} and
- * {@see SimplePie::get_item}. Avoid creating this manually.
- *
- * @param SimplePie $feed Parent feed
- * @param array $data Raw data
- */
- public function __construct($feed, $data)
- {
- $this->feed = $feed;
- $this->data = $data;
- }
-
- /**
- * Set the registry handler
- *
- * This is usually used by {@see SimplePie_Registry::create}
- *
- * @since 1.3
- * @param SimplePie_Registry $registry
- */
- public function set_registry(SimplePie_Registry $registry)
- {
- $this->registry = $registry;
- }
-
- /**
- * Get a string representation of the item
- *
- * @return string
- */
- public function __toString()
- {
- return md5(serialize($this->data));
- }
-
- /**
- * Remove items that link back to this before destroying this object
- */
- public function __destruct()
- {
- if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode'))
- {
- unset($this->feed);
- }
- }
-
- /**
- * Get data for an item-level element
- *
- * This method allows you to get access to ANY element/attribute that is a
- * sub-element of the item/entry tag.
- *
- * See {@see SimplePie::get_feed_tags()} for a description of the return value
- *
- * @since 1.0
- * @see http://simplepie.org/wiki/faq/supported_xml_namespaces
- * @param string $namespace The URL of the XML namespace of the elements you're trying to access
- * @param string $tag Tag name
- * @return array
- */
- public function get_item_tags($namespace, $tag)
- {
- if (isset($this->data['child'][$namespace][$tag]))
- {
- return $this->data['child'][$namespace][$tag];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the base URL value from the parent feed
- *
- * Uses `<xml:base>`
- *
- * @param array $element
- * @return string
- */
- public function get_base($element = array())
- {
- return $this->feed->get_base($element);
- }
-
- /**
- * Sanitize feed data
- *
- * @access private
- * @see SimplePie::sanitize()
- * @param string $data Data to sanitize
- * @param int $type One of the SIMPLEPIE_CONSTRUCT_* constants
- * @param string $base Base URL to resolve URLs against
- * @return string Sanitized data
- */
- public function sanitize($data, $type, $base = '')
- {
- return $this->feed->sanitize($data, $type, $base);
- }
-
- /**
- * Get the parent feed
- *
- * Note: this may not work as you think for multifeeds!
- *
- * @link http://simplepie.org/faq/typical_multifeed_gotchas#missing_data_from_feed
- * @since 1.0
- * @return SimplePie
- */
- public function get_feed()
- {
- return $this->feed;
- }
-
- /**
- * Get the unique identifier for the item
- *
- * This is usually used when writing code to check for new items in a feed.
- *
- * Uses `<atom:id>`, `<guid>`, `<dc:identifier>` or the `about` attribute
- * for RDF. If none of these are supplied (or `$hash` is true), creates an
- * MD5 hash based on the permalink and title. If either of those are not
- * supplied, creates a hash based on the full feed data.
- *
- * @since Beta 2
- * @param boolean $hash Should we force using a hash instead of the supplied ID?
- * @return string
- */
- public function get_id($hash = false)
- {
- if (!$hash)
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about']))
- {
- return $this->sanitize($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (($return = $this->get_permalink()) !== null)
- {
- return $return;
- }
- elseif (($return = $this->get_title()) !== null)
- {
- return $return;
- }
- }
- if ($this->get_permalink() !== null || $this->get_title() !== null)
- {
- return md5($this->get_permalink() . $this->get_title());
- }
- else
- {
- return md5(serialize($this->data));
- }
- }
-
- /**
- * Get the title of the item
- *
- * Uses `<atom:title>`, `<title>` or `<dc:title>`
- *
- * @since Beta 2 (previously called `get_item_title` since 0.8)
- * @return string|null
- */
- public function get_title()
- {
- if (!isset($this->data['title']))
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
- {
- $this->data['title'] = $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
- {
- $this->data['title'] = $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
- {
- $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
- {
- $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title'))
- {
- $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
- {
- $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
- {
- $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $this->data['title'] = null;
- }
- }
- return $this->data['title'];
- }
-
- /**
- * Get the content for the item
- *
- * Prefers summaries over full content , but will return full content if a
- * summary does not exist.
- *
- * To prefer full content instead, use {@see get_content}
- *
- * Uses `<atom:summary>`, `<description>`, `<dc:description>` or
- * `<itunes:subtitle>`
- *
- * @since 0.8
- * @param boolean $description_only Should we avoid falling back to the content?
- * @return string|null
- */
- public function get_description($description_only = false)
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
- }
-
- elseif (!$description_only)
- {
- return $this->get_content(true);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the content for the item
- *
- * Prefers full content over summaries, but will return a summary if full
- * content does not exist.
- *
- * To prefer summaries instead, use {@see get_description}
- *
- * Uses `<atom:content>` or `<content:encoded>` (RSS 1.0 Content Module)
- *
- * @since 1.0
- * @param boolean $content_only Should we avoid falling back to the description?
- * @return string|null
- */
- public function get_content($content_only = false)
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_content_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- elseif (!$content_only)
- {
- return $this->get_description(true);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a category for the item
- *
- * @since Beta 3 (previously called `get_categories()` since Beta 2)
- * @param int $key The category that you want to return. Remember that arrays begin with 0, not 1
- * @return SimplePie_Category|null
- */
- public function get_category($key = 0)
- {
- $categories = $this->get_categories();
- if (isset($categories[$key]))
- {
- return $categories[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all categories for the item
- *
- * Uses `<atom:category>`, `<category>` or `<dc:subject>`
- *
- * @since Beta 3
- * @return array|null List of {@see SimplePie_Category} objects
- */
- public function get_categories()
- {
- $categories = array();
-
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['attribs']['']['term']))
- {
- $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
- {
- // This is really the label, but keep this as the term also for BC.
- // Label will also work on retrieving because that falls back to term.
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- if (isset($category['attribs']['']['domain']))
- {
- $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = null;
- }
- $categories[] = $this->registry->create('Category', array($term, $scheme, null));
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
- {
- $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
- {
- $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
-
- if (!empty($categories))
- {
- return array_unique($categories);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get an author for the item
- *
- * @since Beta 2
- * @param int $key The author that you want to return. Remember that arrays begin with 0, not 1
- * @return SimplePie_Author|null
- */
- public function get_author($key = 0)
- {
- $authors = $this->get_authors();
- if (isset($authors[$key]))
- {
- return $authors[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a contributor for the item
- *
- * @since 1.1
- * @param int $key The contrbutor that you want to return. Remember that arrays begin with 0, not 1
- * @return SimplePie_Author|null
- */
- public function get_contributor($key = 0)
- {
- $contributors = $this->get_contributors();
- if (isset($contributors[$key]))
- {
- return $contributors[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all contributors for the item
- *
- * Uses `<atom:contributor>`
- *
- * @since 1.1
- * @return array|null List of {@see SimplePie_Author} objects
- */
- public function get_contributors()
- {
- $contributors = array();
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
- {
- $name = null;
- $uri = null;
- $email = null;
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
- {
- $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
- {
- $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
- {
- $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $uri !== null)
- {
- $contributors[] = $this->registry->create('Author', array($name, $uri, $email));
- }
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
- {
- $name = null;
- $url = null;
- $email = null;
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
- {
- $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
- {
- $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
- {
- $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $url !== null)
- {
- $contributors[] = $this->registry->create('Author', array($name, $url, $email));
- }
- }
-
- if (!empty($contributors))
- {
- return array_unique($contributors);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all authors for the item
- *
- * Uses `<atom:author>`, `<author>`, `<dc:creator>` or `<itunes:author>`
- *
- * @since Beta 2
- * @return array|null List of {@see SimplePie_Author} objects
- */
- public function get_authors()
- {
- $authors = array();
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
- {
- $name = null;
- $uri = null;
- $email = null;
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
- {
- $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
- {
- $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
- }
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
- {
- $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $uri !== null)
- {
- $authors[] = $this->registry->create('Author', array($name, $uri, $email));
- }
- }
- if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
- {
- $name = null;
- $url = null;
- $email = null;
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
- {
- $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
- {
- $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
- }
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
- {
- $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $url !== null)
- {
- $authors[] = $this->registry->create('Author', array($name, $url, $email));
- }
- }
- if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'author'))
- {
- $authors[] = $this->registry->create('Author', array(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)));
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
- {
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
- {
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
- {
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
-
- if (!empty($authors))
- {
- return array_unique($authors);
- }
- elseif (($source = $this->get_source()) && ($authors = $source->get_authors()))
- {
- return $authors;
- }
- elseif ($authors = $this->feed->get_authors())
- {
- return $authors;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the copyright info for the item
- *
- * Uses `<atom:rights>` or `<dc:rights>`
- *
- * @since 1.1
- * @return string
- */
- public function get_copyright()
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the posting date/time for the item
- *
- * Uses `<atom:published>`, `<atom:updated>`, `<atom:issued>`,
- * `<atom:modified>`, `<pubDate>` or `<dc:date>`
- *
- * Note: obeys PHP's timezone setting. To get a UTC date/time, use
- * {@see get_gmdate}
- *
- * @since Beta 2 (previously called `get_item_date` since 0.8)
- *
- * @param string $date_format Supports any PHP date format from {@see http://php.net/date} (empty for the raw data)
- * @return int|string|null
- */
- public function get_date($date_format = 'j F Y, g:i a')
- {
- if (!isset($this->data['date']))
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'pubDate'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
-
- if (!empty($this->data['date']['raw']))
- {
- $parser = $this->registry->call('Parse_Date', 'get');
- $this->data['date']['parsed'] = $parser->parse($this->data['date']['raw']);
- }
- else
- {
- $this->data['date'] = null;
- }
- }
- if ($this->data['date'])
- {
- $date_format = (string) $date_format;
- switch ($date_format)
- {
- case '':
- return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);
-
- case 'U':
- return $this->data['date']['parsed'];
-
- default:
- return date($date_format, $this->data['date']['parsed']);
- }
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the update date/time for the item
- *
- * Uses `<atom:updated>`
- *
- * Note: obeys PHP's timezone setting. To get a UTC date/time, use
- * {@see get_gmdate}
- *
- * @param string $date_format Supports any PHP date format from {@see http://php.net/date} (empty for the raw data)
- * @return int|string|null
- */
- public function get_updated_date($date_format = 'j F Y, g:i a')
- {
- if (!isset($this->data['updated']))
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
- {
- $this->data['updated']['raw'] = $return[0]['data'];
- }
-
- if (!empty($this->data['updated']['raw']))
- {
- $parser = $this->registry->call('Parse_Date', 'get');
- $this->data['updated']['parsed'] = $parser->parse($this->data['date']['raw']);
- }
- else
- {
- $this->data['updated'] = null;
- }
- }
- if ($this->data['updated'])
- {
- $date_format = (string) $date_format;
- switch ($date_format)
- {
- case '':
- return $this->sanitize($this->data['updated']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);
-
- case 'U':
- return $this->data['updated']['parsed'];
-
- default:
- return date($date_format, $this->data['updated']['parsed']);
- }
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the localized posting date/time for the item
- *
- * Returns the date formatted in the localized language. To display in
- * languages other than the server's default, you need to change the locale
- * with {@link http://php.net/setlocale setlocale()}. The available
- * localizations depend on which ones are installed on your web server.
- *
- * @since 1.0
- *
- * @param string $date_format Supports any PHP date format from {@see http://php.net/strftime} (empty for the raw data)
- * @return int|string|null
- */
- public function get_local_date($date_format = '%c')
- {
- if (!$date_format)
- {
- return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (($date = $this->get_date('U')) !== null && $date !== false)
- {
- return strftime($date_format, $date);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the posting date/time for the item (UTC time)
- *
- * @see get_date
- * @param string $date_format Supports any PHP date format from {@see http://php.net/date}
- * @return int|string|null
- */
- public function get_gmdate($date_format = 'j F Y, g:i a')
- {
- $date = $this->get_date('U');
- if ($date === null)
- {
- return null;
- }
-
- return gmdate($date_format, $date);
- }
-
- /**
- * Get the update date/time for the item (UTC time)
- *
- * @see get_updated_date
- * @param string $date_format Supports any PHP date format from {@see http://php.net/date}
- * @return int|string|null
- */
- public function get_updated_gmdate($date_format = 'j F Y, g:i a')
- {
- $date = $this->get_updated_date('U');
- if ($date === null)
- {
- return null;
- }
-
- return gmdate($date_format, $date);
- }
-
- /**
- * Get the permalink for the item
- *
- * Returns the first link available with a relationship of "alternate".
- * Identical to {@see get_link()} with key 0
- *
- * @see get_link
- * @since 0.8
- * @return string|null Permalink URL
- */
- public function get_permalink()
- {
- $link = $this->get_link();
- $enclosure = $this->get_enclosure(0);
- if ($link !== null)
- {
- return $link;
- }
- elseif ($enclosure !== null)
- {
- return $enclosure->get_link();
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get a single link for the item
- *
- * @since Beta 3
- * @param int $key The link that you want to return. Remember that arrays begin with 0, not 1
- * @param string $rel The relationship of the link to return
- * @return string|null Link URL
- */
- public function get_link($key = 0, $rel = 'alternate')
- {
- $links = $this->get_links($rel);
- if ($links[$key] !== null)
- {
- return $links[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all links for the item
- *
- * Uses `<atom:link>`, `<link>` or `<guid>`
- *
- * @since Beta 2
- * @param string $rel The relationship of links to return
- * @return array|null Links found for the item (strings)
- */
- public function get_links($rel = 'alternate')
- {
- if (!isset($this->data['links']))
- {
- $this->data['links'] = array();
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
- {
- if (isset($link['attribs']['']['href']))
- {
- $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
- $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-
- }
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
- {
- if (isset($link['attribs']['']['href']))
- {
- $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
- $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
- }
- }
- if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid'))
- {
- if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) === 'true')
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- }
-
- $keys = array_keys($this->data['links']);
- foreach ($keys as $key)
- {
- if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key)))
- {
- if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
- {
- $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
- }
- else
- {
- $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
- }
- }
- elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
- {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
- }
- $this->data['links'][$key] = array_unique($this->data['links'][$key]);
- }
- }
- if (isset($this->data['links'][$rel]))
- {
- return $this->data['links'][$rel];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get an enclosure from the item
- *
- * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.
- *
- * @since Beta 2
- * @todo Add ability to prefer one type of content over another (in a media group).
- * @param int $key The enclosure that you want to return. Remember that arrays begin with 0, not 1
- * @return SimplePie_Enclosure|null
- */
- public function get_enclosure($key = 0, $prefer = null)
- {
- $enclosures = $this->get_enclosures();
- if (isset($enclosures[$key]))
- {
- return $enclosures[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get all available enclosures (podcasts, etc.)
- *
- * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.
- *
- * At this point, we're pretty much assuming that all enclosures for an item
- * are the same content. Anything else is too complicated to
- * properly support.
- *
- * @since Beta 2
- * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4).
- * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists).
- * @return array|null List of SimplePie_Enclosure items
- */
- public function get_enclosures()
- {
- if (!isset($this->data['enclosures']))
- {
- $this->data['enclosures'] = array();
-
- // Elements
- $captions_parent = null;
- $categories_parent = null;
- $copyrights_parent = null;
- $credits_parent = null;
- $description_parent = null;
- $duration_parent = null;
- $hashes_parent = null;
- $keywords_parent = null;
- $player_parent = null;
- $ratings_parent = null;
- $restrictions_parent = null;
- $thumbnails_parent = null;
- $title_parent = null;
-
- // Let's do the channel and item-level ones first, and just re-use them if we need to.
- $parent = $this->get_feed();
-
- // CAPTIONS
- if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
- {
- foreach ($captions as $caption)
- {
- $caption_type = null;
- $caption_lang = null;
- $caption_startTime = null;
- $caption_endTime = null;
- $caption_text = null;
- if (isset($caption['attribs']['']['type']))
- {
- $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['lang']))
- {
- $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['start']))
- {
- $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['end']))
- {
- $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['data']))
- {
- $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $captions_parent[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));
- }
- }
- elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
- {
- foreach ($captions as $caption)
- {
- $caption_type = null;
- $caption_lang = null;
- $caption_startTime = null;
- $caption_endTime = null;
- $caption_text = null;
- if (isset($caption['attribs']['']['type']))
- {
- $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['lang']))
- {
- $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['start']))
- {
- $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['end']))
- {
- $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['data']))
- {
- $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $captions_parent[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));
- }
- }
- if (is_array($captions_parent))
- {
- $captions_parent = array_values(array_unique($captions_parent));
- }
-
- // CATEGORIES
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['data']))
- {
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = 'http://search.yahoo.com/mrss/category_schema';
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));
- }
- foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['data']))
- {
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = 'http://search.yahoo.com/mrss/category_schema';
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));
- }
- foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category)
- {
- $term = null;
- $scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd';
- $label = null;
- if (isset($category['attribs']['']['text']))
- {
- $label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));
-
- if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category']))
- {
- foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory)
- {
- if (isset($subcategory['attribs']['']['text']))
- {
- $label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));
- }
- }
- }
- if (is_array($categories_parent))
- {
- $categories_parent = array_values(array_unique($categories_parent));
- }
-
- // COPYRIGHT
- if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
- {
- $copyright_url = null;
- $copyright_label = null;
- if (isset($copyright[0]['attribs']['']['url']))
- {
- $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($copyright[0]['data']))
- {
- $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $copyrights_parent = $this->registry->create('Copyright', array($copyright_url, $copyright_label));
- }
- elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
- {
- $copyright_url = null;
- $copyright_label = null;
- if (isset($copyright[0]['attribs']['']['url']))
- {
- $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($copyright[0]['data']))
- {
- $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $copyrights_parent = $this->registry->create('Copyright', array($copyright_url, $copyright_label));
- }
-
- // CREDITS
- if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
- {
- foreach ($credits as $credit)
- {
- $credit_role = null;
- $credit_scheme = null;
- $credit_name = null;
- if (isset($credit['attribs']['']['role']))
- {
- $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($credit['attribs']['']['scheme']))
- {
- $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $credit_scheme = 'urn:ebu';
- }
- if (isset($credit['data']))
- {
- $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $credits_parent[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));
- }
- }
- elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
- {
- foreach ($credits as $credit)
- {
- $credit_role = null;
- $credit_scheme = null;
- $credit_name = null;
- if (isset($credit['attribs']['']['role']))
- {
- $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($credit['attribs']['']['scheme']))
- {
- $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $credit_scheme = 'urn:ebu';
- }
- if (isset($credit['data']))
- {
- $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $credits_parent[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));
- }
- }
- if (is_array($credits_parent))
- {
- $credits_parent = array_values(array_unique($credits_parent));
- }
-
- // DESCRIPTION
- if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
- {
- if (isset($description_parent[0]['data']))
- {
- $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- }
- elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
- {
- if (isset($description_parent[0]['data']))
- {
- $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- }
-
- // DURATION
- if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration'))
- {
- $seconds = null;
- $minutes = null;
- $hours = null;
- if (isset($duration_parent[0]['data']))
- {
- $temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- if (sizeof($temp) > 0)
- {
- $seconds = (int) array_pop($temp);
- }
- if (sizeof($temp) > 0)
- {
- $minutes = (int) array_pop($temp);
- $seconds += $minutes * 60;
- }
- if (sizeof($temp) > 0)
- {
- $hours = (int) array_pop($temp);
- $seconds += $hours * 3600;
- }
- unset($temp);
- $duration_parent = $seconds;
- }
- }
-
- // HASHES
- if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
- {
- foreach ($hashes_iterator as $hash)
- {
- $value = null;
- $algo = null;
- if (isset($hash['data']))
- {
- $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($hash['attribs']['']['algo']))
- {
- $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $algo = 'md5';
- }
- $hashes_parent[] = $algo.':'.$value;
- }
- }
- elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
- {
- foreach ($hashes_iterator as $hash)
- {
- $value = null;
- $algo = null;
- if (isset($hash['data']))
- {
- $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($hash['attribs']['']['algo']))
- {
- $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $algo = 'md5';
- }
- $hashes_parent[] = $algo.':'.$value;
- }
- }
- if (is_array($hashes_parent))
- {
- $hashes_parent = array_values(array_unique($hashes_parent));
- }
-
- // KEYWORDS
- if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
- {
- if (isset($keywords[0]['data']))
- {
- $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords_parent[] = trim($word);
- }
- }
- unset($temp);
- }
- elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
- {
- if (isset($keywords[0]['data']))
- {
- $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords_parent[] = trim($word);
- }
- }
- unset($temp);
- }
- elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
- {
- if (isset($keywords[0]['data']))
- {
- $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords_parent[] = trim($word);
- }
- }
- unset($temp);
- }
- elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
- {
- if (isset($keywords[0]['data']))
- {
- $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords_parent[] = trim($word);
- }
- }
- unset($temp);
- }
- if (is_array($keywords_parent))
- {
- $keywords_parent = array_values(array_unique($keywords_parent));
- }
-
- // PLAYER
- if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
- {
- if (isset($player_parent[0]['attribs']['']['url']))
- {
- $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- }
- elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
- {
- if (isset($player_parent[0]['attribs']['']['url']))
- {
- $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- }
-
- // RATINGS
- if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
- {
- foreach ($ratings as $rating)
- {
- $rating_scheme = null;
- $rating_value = null;
- if (isset($rating['attribs']['']['scheme']))
- {
- $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $rating_scheme = 'urn:simple';
- }
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
- }
- }
- elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
- {
- foreach ($ratings as $rating)
- {
- $rating_scheme = 'urn:itunes';
- $rating_value = null;
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
- }
- }
- elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
- {
- foreach ($ratings as $rating)
- {
- $rating_scheme = null;
- $rating_value = null;
- if (isset($rating['attribs']['']['scheme']))
- {
- $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $rating_scheme = 'urn:simple';
- }
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
- }
- }
- elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
- {
- foreach ($ratings as $rating)
- {
- $rating_scheme = 'urn:itunes';
- $rating_value = null;
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
- }
- }
- if (is_array($ratings_parent))
- {
- $ratings_parent = array_values(array_unique($ratings_parent));
- }
-
- // RESTRICTIONS
- if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
- {
- foreach ($restrictions as $restriction)
- {
- $restriction_relationship = null;
- $restriction_type = null;
- $restriction_value = null;
- if (isset($restriction['attribs']['']['relationship']))
- {
- $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['attribs']['']['type']))
- {
- $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['data']))
- {
- $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
- }
- }
- elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
- {
- foreach ($restrictions as $restriction)
- {
- $restriction_relationship = 'allow';
- $restriction_type = null;
- $restriction_value = 'itunes';
- if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes')
- {
- $restriction_relationship = 'deny';
- }
- $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
- }
- }
- elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
- {
- foreach ($restrictions as $restriction)
- {
- $restriction_relationship = null;
- $restriction_type = null;
- $restriction_value = null;
- if (isset($restriction['attribs']['']['relationship']))
- {
- $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['attribs']['']['type']))
- {
- $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['data']))
- {
- $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
- }
- }
- elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
- {
- foreach ($restrictions as $restriction)
- {
- $restriction_relationship = 'allow';
- $restriction_type = null;
- $restriction_value = 'itunes';
- if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes')
- {
- $restriction_relationship = 'deny';
- }
- $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
- }
- }
- if (is_array($restrictions_parent))
- {
- $restrictions_parent = array_values(array_unique($restrictions_parent));
- }
- else
- {
- $restrictions_parent = array(new SimplePie_Restriction('allow', null, 'default'));
- }
-
- // THUMBNAILS
- if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
- {
- foreach ($thumbnails as $thumbnail)
- {
- if (isset($thumbnail['attribs']['']['url']))
- {
- $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- }
- }
- elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
- {
- foreach ($thumbnails as $thumbnail)
- {
- if (isset($thumbnail['attribs']['']['url']))
- {
- $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- }
- }
-
- // TITLES
- if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
- {
- if (isset($title_parent[0]['data']))
- {
- $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- }
- elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
- {
- if (isset($title_parent[0]['data']))
- {
- $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- }
-
- // Clear the memory
- unset($parent);
-
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- // Elements
- $captions = null;
- $categories = null;
- $copyrights = null;
- $credits = null;
- $description = null;
- $hashes = null;
- $keywords = null;
- $player = null;
- $ratings = null;
- $restrictions = null;
- $thumbnails = null;
- $title = null;
-
- // If we have media:group tags, loop through them.
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)
- {
- if(isset($group['child']) && isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
- {
- // If we have media:content tags, loop through them.
- foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
- {
- if (isset($content['attribs']['']['url']))
- {
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- // Elements
- $captions = null;
- $categories = null;
- $copyrights = null;
- $credits = null;
- $description = null;
- $hashes = null;
- $keywords = null;
- $player = null;
- $ratings = null;
- $restrictions = null;
- $thumbnails = null;
- $title = null;
-
- // Start checking the attributes of media:content
- if (isset($content['attribs']['']['bitrate']))
- {
- $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['channels']))
- {
- $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['duration']))
- {
- $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $duration = $duration_parent;
- }
- if (isset($content['attribs']['']['expression']))
- {
- $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['framerate']))
- {
- $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['height']))
- {
- $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['lang']))
- {
- $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['fileSize']))
- {
- $length = ceil($content['attribs']['']['fileSize']);
- }
- if (isset($content['attribs']['']['medium']))
- {
- $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['samplingrate']))
- {
- $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['type']))
- {
- $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['width']))
- {
- $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-
- // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
-
- // CAPTIONS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
- {
- $caption_type = null;
- $caption_lang = null;
- $caption_startTime = null;
- $caption_endTime = null;
- $caption_text = null;
- if (isset($caption['attribs']['']['type']))
- {
- $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['lang']))
- {
- $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['start']))
- {
- $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['end']))
- {
- $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['data']))
- {
- $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));
- }
- if (is_array($captions))
- {
- $captions = array_values(array_unique($captions));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
- {
- $caption_type = null;
- $caption_lang = null;
- $caption_startTime = null;
- $caption_endTime = null;
- $caption_text = null;
- if (isset($caption['attribs']['']['type']))
- {
- $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['lang']))
- {
- $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['start']))
- {
- $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['end']))
- {
- $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['data']))
- {
- $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));
- }
- if (is_array($captions))
- {
- $captions = array_values(array_unique($captions));
- }
- }
- else
- {
- $captions = $captions_parent;
- }
-
- // CATEGORIES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
- {
- foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['data']))
- {
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = 'http://search.yahoo.com/mrss/category_schema';
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
- }
- }
- if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
- {
- foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['data']))
- {
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = 'http://search.yahoo.com/mrss/category_schema';
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
- }
- }
- if (is_array($categories) && is_array($categories_parent))
- {
- $categories = array_values(array_unique(array_merge($categories, $categories_parent)));
- }
- elseif (is_array($categories))
- {
- $categories = array_values(array_unique($categories));
- }
- elseif (is_array($categories_parent))
- {
- $categories = array_values(array_unique($categories_parent));
- }
-
- // COPYRIGHTS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
- {
- $copyright_url = null;
- $copyright_label = null;
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
- {
- $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
- {
- $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label));
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
- {
- $copyright_url = null;
- $copyright_label = null;
- if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
- {
- $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
- {
- $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label));
- }
- else
- {
- $copyrights = $copyrights_parent;
- }
-
- // CREDITS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
- {
- $credit_role = null;
- $credit_scheme = null;
- $credit_name = null;
- if (isset($credit['attribs']['']['role']))
- {
- $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($credit['attribs']['']['scheme']))
- {
- $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $credit_scheme = 'urn:ebu';
- }
- if (isset($credit['data']))
- {
- $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));
- }
- if (is_array($credits))
- {
- $credits = array_values(array_unique($credits));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
- {
- $credit_role = null;
- $credit_scheme = null;
- $credit_name = null;
- if (isset($credit['attribs']['']['role']))
- {
- $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($credit['attribs']['']['scheme']))
- {
- $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $credit_scheme = 'urn:ebu';
- }
- if (isset($credit['data']))
- {
- $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));
- }
- if (is_array($credits))
- {
- $credits = array_values(array_unique($credits));
- }
- }
- else
- {
- $credits = $credits_parent;
- }
-
- // DESCRIPTION
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
- {
- $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
- {
- $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $description = $description_parent;
- }
-
- // HASHES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
- {
- $value = null;
- $algo = null;
- if (isset($hash['data']))
- {
- $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($hash['attribs']['']['algo']))
- {
- $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $algo = 'md5';
- }
- $hashes[] = $algo.':'.$value;
- }
- if (is_array($hashes))
- {
- $hashes = array_values(array_unique($hashes));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
- {
- $value = null;
- $algo = null;
- if (isset($hash['data']))
- {
- $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($hash['attribs']['']['algo']))
- {
- $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $algo = 'md5';
- }
- $hashes[] = $algo.':'.$value;
- }
- if (is_array($hashes))
- {
- $hashes = array_values(array_unique($hashes));
- }
- }
- else
- {
- $hashes = $hashes_parent;
- }
-
- // KEYWORDS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
- {
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
- {
- $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords[] = trim($word);
- }
- unset($temp);
- }
- if (is_array($keywords))
- {
- $keywords = array_values(array_unique($keywords));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
- {
- if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
- {
- $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords[] = trim($word);
- }
- unset($temp);
- }
- if (is_array($keywords))
- {
- $keywords = array_values(array_unique($keywords));
- }
- }
- else
- {
- $keywords = $keywords_parent;
- }
-
- // PLAYER
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
- {
- $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
- {
- $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- $player = $player_parent;
- }
-
- // RATINGS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
- {
- $rating_scheme = null;
- $rating_value = null;
- if (isset($rating['attribs']['']['scheme']))
- {
- $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $rating_scheme = 'urn:simple';
- }
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
- }
- if (is_array($ratings))
- {
- $ratings = array_values(array_unique($ratings));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
- {
- $rating_scheme = null;
- $rating_value = null;
- if (isset($rating['attribs']['']['scheme']))
- {
- $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $rating_scheme = 'urn:simple';
- }
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
- }
- if (is_array($ratings))
- {
- $ratings = array_values(array_unique($ratings));
- }
- }
- else
- {
- $ratings = $ratings_parent;
- }
-
- // RESTRICTIONS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
- {
- $restriction_relationship = null;
- $restriction_type = null;
- $restriction_value = null;
- if (isset($restriction['attribs']['']['relationship']))
- {
- $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['attribs']['']['type']))
- {
- $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['data']))
- {
- $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
- }
- if (is_array($restrictions))
- {
- $restrictions = array_values(array_unique($restrictions));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
- {
- $restriction_relationship = null;
- $restriction_type = null;
- $restriction_value = null;
- if (isset($restriction['attribs']['']['relationship']))
- {
- $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['attribs']['']['type']))
- {
- $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['data']))
- {
- $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
- }
- if (is_array($restrictions))
- {
- $restrictions = array_values(array_unique($restrictions));
- }
- }
- else
- {
- $restrictions = $restrictions_parent;
- }
-
- // THUMBNAILS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
- {
- $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- if (is_array($thumbnails))
- {
- $thumbnails = array_values(array_unique($thumbnails));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
- {
- $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- if (is_array($thumbnails))
- {
- $thumbnails = array_values(array_unique($thumbnails));
- }
- }
- else
- {
- $thumbnails = $thumbnails_parent;
- }
-
- // TITLES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
- {
- $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
- {
- $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $title = $title_parent;
- }
-
- $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width));
- }
- }
- }
- }
-
- // If we have standalone media:content tags, loop through them.
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
- {
- foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
- {
- if (isset($content['attribs']['']['url']) || isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
- {
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- // Elements
- $captions = null;
- $categories = null;
- $copyrights = null;
- $credits = null;
- $description = null;
- $hashes = null;
- $keywords = null;
- $player = null;
- $ratings = null;
- $restrictions = null;
- $thumbnails = null;
- $title = null;
-
- // Start checking the attributes of media:content
- if (isset($content['attribs']['']['bitrate']))
- {
- $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['channels']))
- {
- $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['duration']))
- {
- $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $duration = $duration_parent;
- }
- if (isset($content['attribs']['']['expression']))
- {
- $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['framerate']))
- {
- $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['height']))
- {
- $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['lang']))
- {
- $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['fileSize']))
- {
- $length = ceil($content['attribs']['']['fileSize']);
- }
- if (isset($content['attribs']['']['medium']))
- {
- $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['samplingrate']))
- {
- $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['type']))
- {
- $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['width']))
- {
- $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['url']))
- {
- $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
-
- // CAPTIONS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
- {
- $caption_type = null;
- $caption_lang = null;
- $caption_startTime = null;
- $caption_endTime = null;
- $caption_text = null;
- if (isset($caption['attribs']['']['type']))
- {
- $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['lang']))
- {
- $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['start']))
- {
- $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['end']))
- {
- $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['data']))
- {
- $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));
- }
- if (is_array($captions))
- {
- $captions = array_values(array_unique($captions));
- }
- }
- else
- {
- $captions = $captions_parent;
- }
-
- // CATEGORIES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
- {
- foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['data']))
- {
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = 'http://search.yahoo.com/mrss/category_schema';
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
- }
- }
- if (is_array($categories) && is_array($categories_parent))
- {
- $categories = array_values(array_unique(array_merge($categories, $categories_parent)));
- }
- elseif (is_array($categories))
- {
- $categories = array_values(array_unique($categories));
- }
- elseif (is_array($categories_parent))
- {
- $categories = array_values(array_unique($categories_parent));
- }
- else
- {
- $categories = null;
- }
-
- // COPYRIGHTS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
- {
- $copyright_url = null;
- $copyright_label = null;
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
- {
- $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
- {
- $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label));
- }
- else
- {
- $copyrights = $copyrights_parent;
- }
-
- // CREDITS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
- {
- $credit_role = null;
- $credit_scheme = null;
- $credit_name = null;
- if (isset($credit['attribs']['']['role']))
- {
- $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($credit['attribs']['']['scheme']))
- {
- $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $credit_scheme = 'urn:ebu';
- }
- if (isset($credit['data']))
- {
- $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));
- }
- if (is_array($credits))
- {
- $credits = array_values(array_unique($credits));
- }
- }
- else
- {
- $credits = $credits_parent;
- }
-
- // DESCRIPTION
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
- {
- $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $description = $description_parent;
- }
-
- // HASHES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
- {
- $value = null;
- $algo = null;
- if (isset($hash['data']))
- {
- $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($hash['attribs']['']['algo']))
- {
- $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $algo = 'md5';
- }
- $hashes[] = $algo.':'.$value;
- }
- if (is_array($hashes))
- {
- $hashes = array_values(array_unique($hashes));
- }
- }
- else
- {
- $hashes = $hashes_parent;
- }
-
- // KEYWORDS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
- {
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
- {
- $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords[] = trim($word);
- }
- unset($temp);
- }
- if (is_array($keywords))
- {
- $keywords = array_values(array_unique($keywords));
- }
- }
- else
- {
- $keywords = $keywords_parent;
- }
-
- // PLAYER
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
- {
- $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- $player = $player_parent;
- }
-
- // RATINGS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
- {
- $rating_scheme = null;
- $rating_value = null;
- if (isset($rating['attribs']['']['scheme']))
- {
- $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $rating_scheme = 'urn:simple';
- }
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));
- }
- if (is_array($ratings))
- {
- $ratings = array_values(array_unique($ratings));
- }
- }
- else
- {
- $ratings = $ratings_parent;
- }
-
- // RESTRICTIONS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
- {
- $restriction_relationship = null;
- $restriction_type = null;
- $restriction_value = null;
- if (isset($restriction['attribs']['']['relationship']))
- {
- $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['attribs']['']['type']))
- {
- $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['data']))
- {
- $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));
- }
- if (is_array($restrictions))
- {
- $restrictions = array_values(array_unique($restrictions));
- }
- }
- else
- {
- $restrictions = $restrictions_parent;
- }
-
- // THUMBNAILS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
- {
- $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- if (is_array($thumbnails))
- {
- $thumbnails = array_values(array_unique($thumbnails));
- }
- }
- else
- {
- $thumbnails = $thumbnails_parent;
- }
-
- // TITLES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
- {
- $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $title = $title_parent;
- }
-
- $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width));
- }
- }
- }
-
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
- {
- if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure')
- {
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
- if (isset($link['attribs']['']['type']))
- {
- $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($link['attribs']['']['length']))
- {
- $length = ceil($link['attribs']['']['length']);
- }
-
- // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
- $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));
- }
- }
-
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
- {
- if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure')
- {
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
- if (isset($link['attribs']['']['type']))
- {
- $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($link['attribs']['']['length']))
- {
- $length = ceil($link['attribs']['']['length']);
- }
-
- // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
- $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));
- }
- }
-
- if ($enclosure = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'enclosure'))
- {
- if (isset($enclosure[0]['attribs']['']['url']))
- {
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- $url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0]));
- if (isset($enclosure[0]['attribs']['']['type']))
- {
- $type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($enclosure[0]['attribs']['']['length']))
- {
- $length = ceil($enclosure[0]['attribs']['']['length']);
- }
-
- // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
- $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));
- }
- }
-
- if (sizeof($this->data['enclosures']) === 0 && ($url || $type || $length || $bitrate || $captions_parent || $categories_parent || $channels || $copyrights_parent || $credits_parent || $description_parent || $duration_parent || $expression || $framerate || $hashes_parent || $height || $keywords_parent || $lang || $medium || $player_parent || $ratings_parent || $restrictions_parent || $samplingrate || $thumbnails_parent || $title_parent || $width))
- {
- // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
- $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));
- }
-
- $this->data['enclosures'] = array_values(array_unique($this->data['enclosures']));
- }
- if (!empty($this->data['enclosures']))
- {
- return $this->data['enclosures'];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the latitude coordinates for the item
- *
- * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications
- *
- * Uses `<geo:lat>` or `<georss:point>`
- *
- * @since 1.0
- * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo
- * @link http://www.georss.org/ GeoRSS
- * @return string|null
- */
- public function get_latitude()
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
- {
- return (float) $return[0]['data'];
- }
- elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
- {
- return (float) $match[1];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the longitude coordinates for the item
- *
- * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications
- *
- * Uses `<geo:long>`, `<geo:lon>` or `<georss:point>`
- *
- * @since 1.0
- * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo
- * @link http://www.georss.org/ GeoRSS
- * @return string|null
- */
- public function get_longitude()
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
- {
- return (float) $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
- {
- return (float) $return[0]['data'];
- }
- elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
- {
- return (float) $match[2];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the `<atom:source>` for the item
- *
- * @since 1.1
- * @return SimplePie_Source|null
- */
- public function get_source()
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'source'))
- {
- return $this->registry->create('Source', array($this, $return[0]));
- }
- else
- {
- return null;
- }
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Locator.php b/3rdparty/simplepie/library/SimplePie/Locator.php
deleted file mode 100755
index 57e910c22..000000000
--- a/3rdparty/simplepie/library/SimplePie/Locator.php
+++ /dev/null
@@ -1,372 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Used for feed auto-discovery
- *
- *
- * This class can be overloaded with {@see SimplePie::set_locator_class()}
- *
- * @package SimplePie
- */
-class SimplePie_Locator
-{
- var $useragent;
- var $timeout;
- var $file;
- var $local = array();
- var $elsewhere = array();
- var $cached_entities = array();
- var $http_base;
- var $base;
- var $base_location = 0;
- var $checked_feeds = 0;
- var $max_checked_feeds = 10;
- protected $registry;
-
- public function __construct(SimplePie_File $file, $timeout = 10, $useragent = null, $max_checked_feeds = 10)
- {
- $this->file = $file;
- $this->useragent = $useragent;
- $this->timeout = $timeout;
- $this->max_checked_feeds = $max_checked_feeds;
-
- if (class_exists('DOMDocument'))
- {
- $this->dom = new DOMDocument();
-
- set_error_handler(array('SimplePie_Misc', 'silence_errors'));
- $this->dom->loadHTML($this->file->body);
- restore_error_handler();
- }
- else
- {
- $this->dom = null;
- }
- }
-
- public function set_registry(SimplePie_Registry $registry)
- {
- $this->registry = $registry;
- }
-
- public function find($type = SIMPLEPIE_LOCATOR_ALL, &$working)
- {
- if ($this->is_feed($this->file))
- {
- return $this->file;
- }
-
- if ($this->file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
- {
- $sniffer = $this->registry->create('Content_Type_Sniffer', array($this->file));
- if ($sniffer->get_type() !== 'text/html')
- {
- return null;
- }
- }
-
- if ($type & ~SIMPLEPIE_LOCATOR_NONE)
- {
- $this->get_base();
- }
-
- if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery())
- {
- return $working[0];
- }
-
- if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links())
- {
- if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local))
- {
- return $working;
- }
-
- if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local))
- {
- return $working;
- }
-
- if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere))
- {
- return $working;
- }
-
- if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere))
- {
- return $working;
- }
- }
- return null;
- }
-
- public function is_feed($file)
- {
- if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
- {
- $sniffer = $this->registry->create('Content_Type_Sniffer', array($file));
- $sniffed = $sniffer->get_type();
- if (in_array($sniffed, array('application/rss+xml', 'application/rdf+xml', 'text/rdf', 'application/atom+xml', 'text/xml', 'application/xml')))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- elseif ($file->method & SIMPLEPIE_FILE_SOURCE_LOCAL)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- public function get_base()
- {
- if ($this->dom === null)
- {
- throw new SimplePie_Exception('DOMDocument not found, unable to use locator');
- }
- $this->http_base = $this->file->url;
- $this->base = $this->http_base;
- $elements = $this->dom->getElementsByTagName('base');
- foreach ($elements as $element)
- {
- if ($element->hasAttribute('href'))
- {
- $base = $this->registry->call('Misc', 'absolutize_url', array(trim($element->getAttribute('href')), $this->http_base));
- if ($base === false)
- {
- continue;
- }
- $this->base = $base;
- $this->base_location = method_exists($element, 'getLineNo') ? $element->getLineNo() : 0;
- break;
- }
- }
- }
-
- public function autodiscovery()
- {
- $done = array();
- $feeds = array();
- $feeds = array_merge($feeds, $this->search_elements_by_tag('link', $done, $feeds));
- $feeds = array_merge($feeds, $this->search_elements_by_tag('a', $done, $feeds));
- $feeds = array_merge($feeds, $this->search_elements_by_tag('area', $done, $feeds));
-
- if (!empty($feeds))
- {
- return array_values($feeds);
- }
- else
- {
- return null;
- }
- }
-
- protected function search_elements_by_tag($name, &$done, $feeds)
- {
- if ($this->dom === null)
- {
- throw new SimplePie_Exception('DOMDocument not found, unable to use locator');
- }
-
- $links = $this->dom->getElementsByTagName($name);
- foreach ($links as $link)
- {
- if ($this->checked_feeds === $this->max_checked_feeds)
- {
- break;
- }
- if ($link->hasAttribute('href') && $link->hasAttribute('rel'))
- {
- $rel = array_unique($this->registry->call('Misc', 'space_seperated_tokens', array(strtolower($link->getAttribute('rel')))));
- $line = method_exists($link, 'getLineNo') ? $link->getLineNo() : 1;
-
- if ($this->base_location < $line)
- {
- $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->base));
- }
- else
- {
- $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->http_base));
- }
- if ($href === false)
- {
- continue;
- }
-
- if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !in_array('stylesheet', $rel) && $link->hasAttribute('type') && in_array(strtolower($this->registry->call('Misc', 'parse_mime', array($link->getAttribute('type')))), array('application/rss+xml', 'application/atom+xml'))) && !isset($feeds[$href]))
- {
- $this->checked_feeds++;
- $headers = array(
- 'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
- );
- $feed = $this->registry->create('File', array($href, $this->timeout, 5, $headers, $this->useragent));
- if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
- {
- $feeds[$href] = $feed;
- }
- }
- $done[] = $href;
- }
- }
-
- return $feeds;
- }
-
- public function get_links()
- {
- if ($this->dom === null)
- {
- throw new SimplePie_Exception('DOMDocument not found, unable to use locator');
- }
-
- $links = $this->dom->getElementsByTagName('a');
- foreach ($links as $link)
- {
- if ($link->hasAttribute('href'))
- {
- $href = trim($link->getAttribute('href'));
- $parsed = $this->registry->call('Misc', 'parse_url', array($href));
- if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme']))
- {
- if ($this->base_location < $link->getLineNo())
- {
- $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->base));
- }
- else
- {
- $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->http_base));
- }
- if ($href === false)
- {
- continue;
- }
-
- $current = $this->registry->call('Misc', 'parse_url', array($this->file->url));
-
- if ($parsed['authority'] === '' || $parsed['authority'] === $current['authority'])
- {
- $this->local[] = $href;
- }
- else
- {
- $this->elsewhere[] = $href;
- }
- }
- }
- }
- $this->local = array_unique($this->local);
- $this->elsewhere = array_unique($this->elsewhere);
- if (!empty($this->local) || !empty($this->elsewhere))
- {
- return true;
- }
- return null;
- }
-
- public function extension(&$array)
- {
- foreach ($array as $key => $value)
- {
- if ($this->checked_feeds === $this->max_checked_feeds)
- {
- break;
- }
- if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml')))
- {
- $this->checked_feeds++;
-
- $headers = array(
- 'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
- );
- $feed = $this->registry->create('File', array($value, $this->timeout, 5, $headers, $this->useragent));
- if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
- {
- return $feed;
- }
- else
- {
- unset($array[$key]);
- }
- }
- }
- return null;
- }
-
- public function body(&$array)
- {
- foreach ($array as $key => $value)
- {
- if ($this->checked_feeds === $this->max_checked_feeds)
- {
- break;
- }
- if (preg_match('/(rss|rdf|atom|xml)/i', $value))
- {
- $this->checked_feeds++;
- $headers = array(
- 'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
- );
- $feed = $this->registry->create('File', array($value, $this->timeout, 5, null, $this->useragent));
- if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
- {
- return $feed;
- }
- else
- {
- unset($array[$key]);
- }
- }
- }
- return null;
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Misc.php b/3rdparty/simplepie/library/SimplePie/Misc.php
deleted file mode 100755
index 5d7367f64..000000000
--- a/3rdparty/simplepie/library/SimplePie/Misc.php
+++ /dev/null
@@ -1,2247 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Miscellanous utilities
- *
- * @package SimplePie
- */
-class SimplePie_Misc
-{
- public static function time_hms($seconds)
- {
- $time = '';
-
- $hours = floor($seconds / 3600);
- $remainder = $seconds % 3600;
- if ($hours > 0)
- {
- $time .= $hours.':';
- }
-
- $minutes = floor($remainder / 60);
- $seconds = $remainder % 60;
- if ($minutes < 10 && $hours > 0)
- {
- $minutes = '0' . $minutes;
- }
- if ($seconds < 10)
- {
- $seconds = '0' . $seconds;
- }
-
- $time .= $minutes.':';
- $time .= $seconds;
-
- return $time;
- }
-
- public static function absolutize_url($relative, $base)
- {
- $iri = SimplePie_IRI::absolutize(new SimplePie_IRI($base), $relative);
- if ($iri === false)
- {
- return false;
- }
- return $iri->get_uri();
- }
-
- /**
- * Get a HTML/XML element from a HTML string
- *
- * @deprecated Use DOMDocument instead (parsing HTML with regex is bad!)
- * @param string $realname Element name (including namespace prefix if applicable)
- * @param string $string HTML document
- * @return array
- */
- public static function get_element($realname, $string)
- {
- $return = array();
- $name = preg_quote($realname, '/');
- if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE))
- {
- for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++)
- {
- $return[$i]['tag'] = $realname;
- $return[$i]['full'] = $matches[$i][0][0];
- $return[$i]['offset'] = $matches[$i][0][1];
- if (strlen($matches[$i][3][0]) <= 2)
- {
- $return[$i]['self_closing'] = true;
- }
- else
- {
- $return[$i]['self_closing'] = false;
- $return[$i]['content'] = $matches[$i][4][0];
- }
- $return[$i]['attribs'] = array();
- if (isset($matches[$i][2][0]) && preg_match_all('/[\x09\x0A\x0B\x0C\x0D\x20]+([^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*)(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"([^"]*)"|\'([^\']*)\'|([^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?/', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER))
- {
- for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++)
- {
- if (count($attribs[$j]) === 2)
- {
- $attribs[$j][2] = $attribs[$j][1];
- }
- $return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8');
- }
- }
- }
- }
- return $return;
- }
-
- public static function element_implode($element)
- {
- $full = "<$element[tag]";
- foreach ($element['attribs'] as $key => $value)
- {
- $key = strtolower($key);
- $full .= " $key=\"" . htmlspecialchars($value['data']) . '"';
- }
- if ($element['self_closing'])
- {
- $full .= ' />';
- }
- else
- {
- $full .= ">$element[content]</$element[tag]>";
- }
- return $full;
- }
-
- public static function error($message, $level, $file, $line)
- {
- if ((ini_get('error_reporting') & $level) > 0)
- {
- switch ($level)
- {
- case E_USER_ERROR:
- $note = 'PHP Error';
- break;
- case E_USER_WARNING:
- $note = 'PHP Warning';
- break;
- case E_USER_NOTICE:
- $note = 'PHP Notice';
- break;
- default:
- $note = 'Unknown Error';
- break;
- }
-
- $log_error = true;
- if (!function_exists('error_log'))
- {
- $log_error = false;
- }
-
- $log_file = @ini_get('error_log');
- if (!empty($log_file) && ('syslog' !== $log_file) && !@is_writable($log_file))
- {
- $log_error = false;
- }
-
- if ($log_error)
- {
- @error_log("$note: $message in $file on line $line", 0);
- }
- }
-
- return $message;
- }
-
- public static function fix_protocol($url, $http = 1)
- {
- $url = SimplePie_Misc::normalize_url($url);
- $parsed = SimplePie_Misc::parse_url($url);
- if ($parsed['scheme'] !== '' && $parsed['scheme'] !== 'http' && $parsed['scheme'] !== 'https')
- {
- return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http);
- }
-
- if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url))
- {
- return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http);
- }
-
- if ($http === 2 && $parsed['scheme'] !== '')
- {
- return "feed:$url";
- }
- elseif ($http === 3 && strtolower($parsed['scheme']) === 'http')
- {
- return substr_replace($url, 'podcast', 0, 4);
- }
- elseif ($http === 4 && strtolower($parsed['scheme']) === 'http')
- {
- return substr_replace($url, 'itpc', 0, 4);
- }
- else
- {
- return $url;
- }
- }
-
- public static function parse_url($url)
- {
- $iri = new SimplePie_IRI($url);
- return array(
- 'scheme' => (string) $iri->scheme,
- 'authority' => (string) $iri->authority,
- 'path' => (string) $iri->path,
- 'query' => (string) $iri->query,
- 'fragment' => (string) $iri->fragment
- );
- }
-
- public static function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '')
- {
- $iri = new SimplePie_IRI('');
- $iri->scheme = $scheme;
- $iri->authority = $authority;
- $iri->path = $path;
- $iri->query = $query;
- $iri->fragment = $fragment;
- return $iri->get_uri();
- }
-
- public static function normalize_url($url)
- {
- $iri = new SimplePie_IRI($url);
- return $iri->get_uri();
- }
-
- public static function percent_encoding_normalization($match)
- {
- $integer = hexdec($match[1]);
- if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer === 0x2D || $integer === 0x2E || $integer === 0x5F || $integer === 0x7E)
- {
- return chr($integer);
- }
- else
- {
- return strtoupper($match[0]);
- }
- }
-
- /**
- * Converts a Windows-1252 encoded string to a UTF-8 encoded string
- *
- * @static
- * @param string $string Windows-1252 encoded string
- * @return string UTF-8 encoded string
- */
- public static function windows_1252_to_utf8($string)
- {
- static $convert_table = array("\x80" => "\xE2\x82\xAC", "\x81" => "\xEF\xBF\xBD", "\x82" => "\xE2\x80\x9A", "\x83" => "\xC6\x92", "\x84" => "\xE2\x80\x9E", "\x85" => "\xE2\x80\xA6", "\x86" => "\xE2\x80\xA0", "\x87" => "\xE2\x80\xA1", "\x88" => "\xCB\x86", "\x89" => "\xE2\x80\xB0", "\x8A" => "\xC5\xA0", "\x8B" => "\xE2\x80\xB9", "\x8C" => "\xC5\x92", "\x8D" => "\xEF\xBF\xBD", "\x8E" => "\xC5\xBD", "\x8F" => "\xEF\xBF\xBD", "\x90" => "\xEF\xBF\xBD", "\x91" => "\xE2\x80\x98", "\x92" => "\xE2\x80\x99", "\x93" => "\xE2\x80\x9C", "\x94" => "\xE2\x80\x9D", "\x95" => "\xE2\x80\xA2", "\x96" => "\xE2\x80\x93", "\x97" => "\xE2\x80\x94", "\x98" => "\xCB\x9C", "\x99" => "\xE2\x84\xA2", "\x9A" => "\xC5\xA1", "\x9B" => "\xE2\x80\xBA", "\x9C" => "\xC5\x93", "\x9D" => "\xEF\xBF\xBD", "\x9E" => "\xC5\xBE", "\x9F" => "\xC5\xB8", "\xA0" => "\xC2\xA0", "\xA1" => "\xC2\xA1", "\xA2" => "\xC2\xA2", "\xA3" => "\xC2\xA3", "\xA4" => "\xC2\xA4", "\xA5" => "\xC2\xA5", "\xA6" => "\xC2\xA6", "\xA7" => "\xC2\xA7", "\xA8" => "\xC2\xA8", "\xA9" => "\xC2\xA9", "\xAA" => "\xC2\xAA", "\xAB" => "\xC2\xAB", "\xAC" => "\xC2\xAC", "\xAD" => "\xC2\xAD", "\xAE" => "\xC2\xAE", "\xAF" => "\xC2\xAF", "\xB0" => "\xC2\xB0", "\xB1" => "\xC2\xB1", "\xB2" => "\xC2\xB2", "\xB3" => "\xC2\xB3", "\xB4" => "\xC2\xB4", "\xB5" => "\xC2\xB5", "\xB6" => "\xC2\xB6", "\xB7" => "\xC2\xB7", "\xB8" => "\xC2\xB8", "\xB9" => "\xC2\xB9", "\xBA" => "\xC2\xBA", "\xBB" => "\xC2\xBB", "\xBC" => "\xC2\xBC", "\xBD" => "\xC2\xBD", "\xBE" => "\xC2\xBE", "\xBF" => "\xC2\xBF", "\xC0" => "\xC3\x80", "\xC1" => "\xC3\x81", "\xC2" => "\xC3\x82", "\xC3" => "\xC3\x83", "\xC4" => "\xC3\x84", "\xC5" => "\xC3\x85", "\xC6" => "\xC3\x86", "\xC7" => "\xC3\x87", "\xC8" => "\xC3\x88", "\xC9" => "\xC3\x89", "\xCA" => "\xC3\x8A", "\xCB" => "\xC3\x8B", "\xCC" => "\xC3\x8C", "\xCD" => "\xC3\x8D", "\xCE" => "\xC3\x8E", "\xCF" => "\xC3\x8F", "\xD0" => "\xC3\x90", "\xD1" => "\xC3\x91", "\xD2" => "\xC3\x92", "\xD3" => "\xC3\x93", "\xD4" => "\xC3\x94", "\xD5" => "\xC3\x95", "\xD6" => "\xC3\x96", "\xD7" => "\xC3\x97", "\xD8" => "\xC3\x98", "\xD9" => "\xC3\x99", "\xDA" => "\xC3\x9A", "\xDB" => "\xC3\x9B", "\xDC" => "\xC3\x9C", "\xDD" => "\xC3\x9D", "\xDE" => "\xC3\x9E", "\xDF" => "\xC3\x9F", "\xE0" => "\xC3\xA0", "\xE1" => "\xC3\xA1", "\xE2" => "\xC3\xA2", "\xE3" => "\xC3\xA3", "\xE4" => "\xC3\xA4", "\xE5" => "\xC3\xA5", "\xE6" => "\xC3\xA6", "\xE7" => "\xC3\xA7", "\xE8" => "\xC3\xA8", "\xE9" => "\xC3\xA9", "\xEA" => "\xC3\xAA", "\xEB" => "\xC3\xAB", "\xEC" => "\xC3\xAC", "\xED" => "\xC3\xAD", "\xEE" => "\xC3\xAE", "\xEF" => "\xC3\xAF", "\xF0" => "\xC3\xB0", "\xF1" => "\xC3\xB1", "\xF2" => "\xC3\xB2", "\xF3" => "\xC3\xB3", "\xF4" => "\xC3\xB4", "\xF5" => "\xC3\xB5", "\xF6" => "\xC3\xB6", "\xF7" => "\xC3\xB7", "\xF8" => "\xC3\xB8", "\xF9" => "\xC3\xB9", "\xFA" => "\xC3\xBA", "\xFB" => "\xC3\xBB", "\xFC" => "\xC3\xBC", "\xFD" => "\xC3\xBD", "\xFE" => "\xC3\xBE", "\xFF" => "\xC3\xBF");
-
- return strtr($string, $convert_table);
- }
-
- /**
- * Change a string from one encoding to another
- *
- * @param string $data Raw data in $input encoding
- * @param string $input Encoding of $data
- * @param string $output Encoding you want
- * @return string|boolean False if we can't convert it
- */
- public static function change_encoding($data, $input, $output)
- {
- $input = SimplePie_Misc::encoding($input);
- $output = SimplePie_Misc::encoding($output);
-
- // We fail to fail on non US-ASCII bytes
- if ($input === 'US-ASCII')
- {
- static $non_ascii_octects = '';
- if (!$non_ascii_octects)
- {
- for ($i = 0x80; $i <= 0xFF; $i++)
- {
- $non_ascii_octects .= chr($i);
- }
- }
- $data = substr($data, 0, strcspn($data, $non_ascii_octects));
- }
-
- // This is first, as behaviour of this is completely predictable
- if ($input === 'windows-1252' && $output === 'UTF-8')
- {
- return SimplePie_Misc::windows_1252_to_utf8($data);
- }
- // This is second, as behaviour of this varies only with PHP version (the middle part of this expression checks the encoding is supported).
- elseif (function_exists('mb_convert_encoding') && ($return = SimplePie_Misc::change_encoding_mbstring($data, $input, $output)))
- {
- return $return;
- }
- // This is last, as behaviour of this varies with OS userland and PHP version
- elseif (function_exists('iconv') && ($return = SimplePie_Misc::change_encoding_iconv($data, $input, $output)))
- {
- return $return;
- }
- // If we can't do anything, just fail
- else
- {
- return false;
- }
- }
-
- protected static function change_encoding_mbstring($data, $input, $output)
- {
- if ($input === 'windows-949')
- {
- $input = 'EUC-KR';
- }
- if ($output === 'windows-949')
- {
- $output = 'EUC-KR';
- }
- if ($input === 'Windows-31J')
- {
- $input = 'SJIS';
- }
- if ($output === 'Windows-31J')
- {
- $output = 'SJIS';
- }
-
- // Check that the encoding is supported
- if (@mb_convert_encoding("\x80", 'UTF-16BE', $input) === "\x00\x80")
- {
- return false;
- }
- if (!in_array($input, mb_list_encodings()))
- {
- return false;
- }
-
- // Let's do some conversion
- if ($return = @mb_convert_encoding($data, $output, $input))
- {
- return $return;
- }
-
- return false;
- }
-
- protected static function change_encoding_iconv($data, $input, $output)
- {
- return @iconv($input, $output, $data);
- }
-
- /**
- * Normalize an encoding name
- *
- * This is automatically generated by create.php
- *
- * To generate it, run `php create.php` on the command line, and copy the
- * output to replace this function.
- *
- * @param string $charset Character set to standardise
- * @return string Standardised name
- */
- public static function encoding($charset)
- {
- // Normalization from UTS #22
- switch (strtolower(preg_replace('/(?:[^a-zA-Z0-9]+|([^0-9])0+)/', '\1', $charset)))
- {
- case 'adobestandardencoding':
- case 'csadobestandardencoding':
- return 'Adobe-Standard-Encoding';
-
- case 'adobesymbolencoding':
- case 'cshppsmath':
- return 'Adobe-Symbol-Encoding';
-
- case 'ami1251':
- case 'amiga1251':
- return 'Amiga-1251';
-
- case 'ansix31101983':
- case 'csat5001983':
- case 'csiso99naplps':
- case 'isoir99':
- case 'naplps':
- return 'ANSI_X3.110-1983';
-
- case 'arabic7':
- case 'asmo449':
- case 'csiso89asmo449':
- case 'iso9036':
- case 'isoir89':
- return 'ASMO_449';
-
- case 'big5':
- case 'csbig5':
- return 'Big5';
-
- case 'big5hkscs':
- return 'Big5-HKSCS';
-
- case 'bocu1':
- case 'csbocu1':
- return 'BOCU-1';
-
- case 'brf':
- case 'csbrf':
- return 'BRF';
-
- case 'bs4730':
- case 'csiso4unitedkingdom':
- case 'gb':
- case 'iso646gb':
- case 'isoir4':
- case 'uk':
- return 'BS_4730';
-
- case 'bsviewdata':
- case 'csiso47bsviewdata':
- case 'isoir47':
- return 'BS_viewdata';
-
- case 'cesu8':
- case 'cscesu8':
- return 'CESU-8';
-
- case 'ca':
- case 'csa71':
- case 'csaz243419851':
- case 'csiso121canadian1':
- case 'iso646ca':
- case 'isoir121':
- return 'CSA_Z243.4-1985-1';
-
- case 'csa72':
- case 'csaz243419852':
- case 'csiso122canadian2':
- case 'iso646ca2':
- case 'isoir122':
- return 'CSA_Z243.4-1985-2';
-
- case 'csaz24341985gr':
- case 'csiso123csaz24341985gr':
- case 'isoir123':
- return 'CSA_Z243.4-1985-gr';
-
- case 'csiso139csn369103':
- case 'csn369103':
- case 'isoir139':
- return 'CSN_369103';
-
- case 'csdecmcs':
- case 'dec':
- case 'decmcs':
- return 'DEC-MCS';
-
- case 'csiso21german':
- case 'de':
- case 'din66003':
- case 'iso646de':
- case 'isoir21':
- return 'DIN_66003';
-
- case 'csdkus':
- case 'dkus':
- return 'dk-us';
-
- case 'csiso646danish':
- case 'dk':
- case 'ds2089':
- case 'iso646dk':
- return 'DS_2089';
-
- case 'csibmebcdicatde':
- case 'ebcdicatde':
- return 'EBCDIC-AT-DE';
-
- case 'csebcdicatdea':
- case 'ebcdicatdea':
- return 'EBCDIC-AT-DE-A';
-
- case 'csebcdiccafr':
- case 'ebcdiccafr':
- return 'EBCDIC-CA-FR';
-
- case 'csebcdicdkno':
- case 'ebcdicdkno':
- return 'EBCDIC-DK-NO';
-
- case 'csebcdicdknoa':
- case 'ebcdicdknoa':
- return 'EBCDIC-DK-NO-A';
-
- case 'csebcdices':
- case 'ebcdices':
- return 'EBCDIC-ES';
-
- case 'csebcdicesa':
- case 'ebcdicesa':
- return 'EBCDIC-ES-A';
-
- case 'csebcdicess':
- case 'ebcdicess':
- return 'EBCDIC-ES-S';
-
- case 'csebcdicfise':
- case 'ebcdicfise':
- return 'EBCDIC-FI-SE';
-
- case 'csebcdicfisea':
- case 'ebcdicfisea':
- return 'EBCDIC-FI-SE-A';
-
- case 'csebcdicfr':
- case 'ebcdicfr':
- return 'EBCDIC-FR';
-
- case 'csebcdicit':
- case 'ebcdicit':
- return 'EBCDIC-IT';
-
- case 'csebcdicpt':
- case 'ebcdicpt':
- return 'EBCDIC-PT';
-
- case 'csebcdicuk':
- case 'ebcdicuk':
- return 'EBCDIC-UK';
-
- case 'csebcdicus':
- case 'ebcdicus':
- return 'EBCDIC-US';
-
- case 'csiso111ecmacyrillic':
- case 'ecmacyrillic':
- case 'isoir111':
- case 'koi8e':
- return 'ECMA-cyrillic';
-
- case 'csiso17spanish':
- case 'es':
- case 'iso646es':
- case 'isoir17':
- return 'ES';
-
- case 'csiso85spanish2':
- case 'es2':
- case 'iso646es2':
- case 'isoir85':
- return 'ES2';
-
- case 'cseucpkdfmtjapanese':
- case 'eucjp':
- case 'extendedunixcodepackedformatforjapanese':
- return 'EUC-JP';
-
- case 'cseucfixwidjapanese':
- case 'extendedunixcodefixedwidthforjapanese':
- return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
-
- case 'gb18030':
- return 'GB18030';
-
- case 'chinese':
- case 'cp936':
- case 'csgb2312':
- case 'csiso58gb231280':
- case 'gb2312':
- case 'gb231280':
- case 'gbk':
- case 'isoir58':
- case 'ms936':
- case 'windows936':
- return 'GBK';
-
- case 'cn':
- case 'csiso57gb1988':
- case 'gb198880':
- case 'iso646cn':
- case 'isoir57':
- return 'GB_1988-80';
-
- case 'csiso153gost1976874':
- case 'gost1976874':
- case 'isoir153':
- case 'stsev35888':
- return 'GOST_19768-74';
-
- case 'csiso150':
- case 'csiso150greekccitt':
- case 'greekccitt':
- case 'isoir150':
- return 'greek-ccitt';
-
- case 'csiso88greek7':
- case 'greek7':
- case 'isoir88':
- return 'greek7';
-
- case 'csiso18greek7old':
- case 'greek7old':
- case 'isoir18':
- return 'greek7-old';
-
- case 'cshpdesktop':
- case 'hpdesktop':
- return 'HP-DeskTop';
-
- case 'cshplegal':
- case 'hplegal':
- return 'HP-Legal';
-
- case 'cshpmath8':
- case 'hpmath8':
- return 'HP-Math8';
-
- case 'cshppifont':
- case 'hppifont':
- return 'HP-Pi-font';
-
- case 'cshproman8':
- case 'hproman8':
- case 'r8':
- case 'roman8':
- return 'hp-roman8';
-
- case 'hzgb2312':
- return 'HZ-GB-2312';
-
- case 'csibmsymbols':
- case 'ibmsymbols':
- return 'IBM-Symbols';
-
- case 'csibmthai':
- case 'ibmthai':
- return 'IBM-Thai';
-
- case 'cp37':
- case 'csibm37':
- case 'ebcdiccpca':
- case 'ebcdiccpnl':
- case 'ebcdiccpus':
- case 'ebcdiccpwt':
- case 'ibm37':
- return 'IBM037';
-
- case 'cp38':
- case 'csibm38':
- case 'ebcdicint':
- case 'ibm38':
- return 'IBM038';
-
- case 'cp273':
- case 'csibm273':
- case 'ibm273':
- return 'IBM273';
-
- case 'cp274':
- case 'csibm274':
- case 'ebcdicbe':
- case 'ibm274':
- return 'IBM274';
-
- case 'cp275':
- case 'csibm275':
- case 'ebcdicbr':
- case 'ibm275':
- return 'IBM275';
-
- case 'csibm277':
- case 'ebcdiccpdk':
- case 'ebcdiccpno':
- case 'ibm277':
- return 'IBM277';
-
- case 'cp278':
- case 'csibm278':
- case 'ebcdiccpfi':
- case 'ebcdiccpse':
- case 'ibm278':
- return 'IBM278';
-
- case 'cp280':
- case 'csibm280':
- case 'ebcdiccpit':
- case 'ibm280':
- return 'IBM280';
-
- case 'cp281':
- case 'csibm281':
- case 'ebcdicjpe':
- case 'ibm281':
- return 'IBM281';
-
- case 'cp284':
- case 'csibm284':
- case 'ebcdiccpes':
- case 'ibm284':
- return 'IBM284';
-
- case 'cp285':
- case 'csibm285':
- case 'ebcdiccpgb':
- case 'ibm285':
- return 'IBM285';
-
- case 'cp290':
- case 'csibm290':
- case 'ebcdicjpkana':
- case 'ibm290':
- return 'IBM290';
-
- case 'cp297':
- case 'csibm297':
- case 'ebcdiccpfr':
- case 'ibm297':
- return 'IBM297';
-
- case 'cp420':
- case 'csibm420':
- case 'ebcdiccpar1':
- case 'ibm420':
- return 'IBM420';
-
- case 'cp423':
- case 'csibm423':
- case 'ebcdiccpgr':
- case 'ibm423':
- return 'IBM423';
-
- case 'cp424':
- case 'csibm424':
- case 'ebcdiccphe':
- case 'ibm424':
- return 'IBM424';
-
- case '437':
- case 'cp437':
- case 'cspc8codepage437':
- case 'ibm437':
- return 'IBM437';
-
- case 'cp500':
- case 'csibm500':
- case 'ebcdiccpbe':
- case 'ebcdiccpch':
- case 'ibm500':
- return 'IBM500';
-
- case 'cp775':
- case 'cspc775baltic':
- case 'ibm775':
- return 'IBM775';
-
- case '850':
- case 'cp850':
- case 'cspc850multilingual':
- case 'ibm850':
- return 'IBM850';
-
- case '851':
- case 'cp851':
- case 'csibm851':
- case 'ibm851':
- return 'IBM851';
-
- case '852':
- case 'cp852':
- case 'cspcp852':
- case 'ibm852':
- return 'IBM852';
-
- case '855':
- case 'cp855':
- case 'csibm855':
- case 'ibm855':
- return 'IBM855';
-
- case '857':
- case 'cp857':
- case 'csibm857':
- case 'ibm857':
- return 'IBM857';
-
- case 'ccsid858':
- case 'cp858':
- case 'ibm858':
- case 'pcmultilingual850euro':
- return 'IBM00858';
-
- case '860':
- case 'cp860':
- case 'csibm860':
- case 'ibm860':
- return 'IBM860';
-
- case '861':
- case 'cp861':
- case 'cpis':
- case 'csibm861':
- case 'ibm861':
- return 'IBM861';
-
- case '862':
- case 'cp862':
- case 'cspc862latinhebrew':
- case 'ibm862':
- return 'IBM862';
-
- case '863':
- case 'cp863':
- case 'csibm863':
- case 'ibm863':
- return 'IBM863';
-
- case 'cp864':
- case 'csibm864':
- case 'ibm864':
- return 'IBM864';
-
- case '865':
- case 'cp865':
- case 'csibm865':
- case 'ibm865':
- return 'IBM865';
-
- case '866':
- case 'cp866':
- case 'csibm866':
- case 'ibm866':
- return 'IBM866';
-
- case 'cp868':
- case 'cpar':
- case 'csibm868':
- case 'ibm868':
- return 'IBM868';
-
- case '869':
- case 'cp869':
- case 'cpgr':
- case 'csibm869':
- case 'ibm869':
- return 'IBM869';
-
- case 'cp870':
- case 'csibm870':
- case 'ebcdiccproece':
- case 'ebcdiccpyu':
- case 'ibm870':
- return 'IBM870';
-
- case 'cp871':
- case 'csibm871':
- case 'ebcdiccpis':
- case 'ibm871':
- return 'IBM871';
-
- case 'cp880':
- case 'csibm880':
- case 'ebcdiccyrillic':
- case 'ibm880':
- return 'IBM880';
-
- case 'cp891':
- case 'csibm891':
- case 'ibm891':
- return 'IBM891';
-
- case 'cp903':
- case 'csibm903':
- case 'ibm903':
- return 'IBM903';
-
- case '904':
- case 'cp904':
- case 'csibbm904':
- case 'ibm904':
- return 'IBM904';
-
- case 'cp905':
- case 'csibm905':
- case 'ebcdiccptr':
- case 'ibm905':
- return 'IBM905';
-
- case 'cp918':
- case 'csibm918':
- case 'ebcdiccpar2':
- case 'ibm918':
- return 'IBM918';
-
- case 'ccsid924':
- case 'cp924':
- case 'ebcdiclatin9euro':
- case 'ibm924':
- return 'IBM00924';
-
- case 'cp1026':
- case 'csibm1026':
- case 'ibm1026':
- return 'IBM1026';
-
- case 'ibm1047':
- return 'IBM1047';
-
- case 'ccsid1140':
- case 'cp1140':
- case 'ebcdicus37euro':
- case 'ibm1140':
- return 'IBM01140';
-
- case 'ccsid1141':
- case 'cp1141':
- case 'ebcdicde273euro':
- case 'ibm1141':
- return 'IBM01141';
-
- case 'ccsid1142':
- case 'cp1142':
- case 'ebcdicdk277euro':
- case 'ebcdicno277euro':
- case 'ibm1142':
- return 'IBM01142';
-
- case 'ccsid1143':
- case 'cp1143':
- case 'ebcdicfi278euro':
- case 'ebcdicse278euro':
- case 'ibm1143':
- return 'IBM01143';
-
- case 'ccsid1144':
- case 'cp1144':
- case 'ebcdicit280euro':
- case 'ibm1144':
- return 'IBM01144';
-
- case 'ccsid1145':
- case 'cp1145':
- case 'ebcdices284euro':
- case 'ibm1145':
- return 'IBM01145';
-
- case 'ccsid1146':
- case 'cp1146':
- case 'ebcdicgb285euro':
- case 'ibm1146':
- return 'IBM01146';
-
- case 'ccsid1147':
- case 'cp1147':
- case 'ebcdicfr297euro':
- case 'ibm1147':
- return 'IBM01147';
-
- case 'ccsid1148':
- case 'cp1148':
- case 'ebcdicinternational500euro':
- case 'ibm1148':
- return 'IBM01148';
-
- case 'ccsid1149':
- case 'cp1149':
- case 'ebcdicis871euro':
- case 'ibm1149':
- return 'IBM01149';
-
- case 'csiso143iecp271':
- case 'iecp271':
- case 'isoir143':
- return 'IEC_P27-1';
-
- case 'csiso49inis':
- case 'inis':
- case 'isoir49':
- return 'INIS';
-
- case 'csiso50inis8':
- case 'inis8':
- case 'isoir50':
- return 'INIS-8';
-
- case 'csiso51iniscyrillic':
- case 'iniscyrillic':
- case 'isoir51':
- return 'INIS-cyrillic';
-
- case 'csinvariant':
- case 'invariant':
- return 'INVARIANT';
-
- case 'iso2022cn':
- return 'ISO-2022-CN';
-
- case 'iso2022cnext':
- return 'ISO-2022-CN-EXT';
-
- case 'csiso2022jp':
- case 'iso2022jp':
- return 'ISO-2022-JP';
-
- case 'csiso2022jp2':
- case 'iso2022jp2':
- return 'ISO-2022-JP-2';
-
- case 'csiso2022kr':
- case 'iso2022kr':
- return 'ISO-2022-KR';
-
- case 'cswindows30latin1':
- case 'iso88591windows30latin1':
- return 'ISO-8859-1-Windows-3.0-Latin-1';
-
- case 'cswindows31latin1':
- case 'iso88591windows31latin1':
- return 'ISO-8859-1-Windows-3.1-Latin-1';
-
- case 'csisolatin2':
- case 'iso88592':
- case 'iso885921987':
- case 'isoir101':
- case 'l2':
- case 'latin2':
- return 'ISO-8859-2';
-
- case 'cswindows31latin2':
- case 'iso88592windowslatin2':
- return 'ISO-8859-2-Windows-Latin-2';
-
- case 'csisolatin3':
- case 'iso88593':
- case 'iso885931988':
- case 'isoir109':
- case 'l3':
- case 'latin3':
- return 'ISO-8859-3';
-
- case 'csisolatin4':
- case 'iso88594':
- case 'iso885941988':
- case 'isoir110':
- case 'l4':
- case 'latin4':
- return 'ISO-8859-4';
-
- case 'csisolatincyrillic':
- case 'cyrillic':
- case 'iso88595':
- case 'iso885951988':
- case 'isoir144':
- return 'ISO-8859-5';
-
- case 'arabic':
- case 'asmo708':
- case 'csisolatinarabic':
- case 'ecma114':
- case 'iso88596':
- case 'iso885961987':
- case 'isoir127':
- return 'ISO-8859-6';
-
- case 'csiso88596e':
- case 'iso88596e':
- return 'ISO-8859-6-E';
-
- case 'csiso88596i':
- case 'iso88596i':
- return 'ISO-8859-6-I';
-
- case 'csisolatingreek':
- case 'ecma118':
- case 'elot928':
- case 'greek':
- case 'greek8':
- case 'iso88597':
- case 'iso885971987':
- case 'isoir126':
- return 'ISO-8859-7';
-
- case 'csisolatinhebrew':
- case 'hebrew':
- case 'iso88598':
- case 'iso885981988':
- case 'isoir138':
- return 'ISO-8859-8';
-
- case 'csiso88598e':
- case 'iso88598e':
- return 'ISO-8859-8-E';
-
- case 'csiso88598i':
- case 'iso88598i':
- return 'ISO-8859-8-I';
-
- case 'cswindows31latin5':
- case 'iso88599windowslatin5':
- return 'ISO-8859-9-Windows-Latin-5';
-
- case 'csisolatin6':
- case 'iso885910':
- case 'iso8859101992':
- case 'isoir157':
- case 'l6':
- case 'latin6':
- return 'ISO-8859-10';
-
- case 'iso885913':
- return 'ISO-8859-13';
-
- case 'iso885914':
- case 'iso8859141998':
- case 'isoceltic':
- case 'isoir199':
- case 'l8':
- case 'latin8':
- return 'ISO-8859-14';
-
- case 'iso885915':
- case 'latin9':
- return 'ISO-8859-15';
-
- case 'iso885916':
- case 'iso8859162001':
- case 'isoir226':
- case 'l10':
- case 'latin10':
- return 'ISO-8859-16';
-
- case 'iso10646j1':
- return 'ISO-10646-J-1';
-
- case 'csunicode':
- case 'iso10646ucs2':
- return 'ISO-10646-UCS-2';
-
- case 'csucs4':
- case 'iso10646ucs4':
- return 'ISO-10646-UCS-4';
-
- case 'csunicodeascii':
- case 'iso10646ucsbasic':
- return 'ISO-10646-UCS-Basic';
-
- case 'csunicodelatin1':
- case 'iso10646':
- case 'iso10646unicodelatin1':
- return 'ISO-10646-Unicode-Latin1';
-
- case 'csiso10646utf1':
- case 'iso10646utf1':
- return 'ISO-10646-UTF-1';
-
- case 'csiso115481':
- case 'iso115481':
- case 'isotr115481':
- return 'ISO-11548-1';
-
- case 'csiso90':
- case 'isoir90':
- return 'iso-ir-90';
-
- case 'csunicodeibm1261':
- case 'isounicodeibm1261':
- return 'ISO-Unicode-IBM-1261';
-
- case 'csunicodeibm1264':
- case 'isounicodeibm1264':
- return 'ISO-Unicode-IBM-1264';
-
- case 'csunicodeibm1265':
- case 'isounicodeibm1265':
- return 'ISO-Unicode-IBM-1265';
-
- case 'csunicodeibm1268':
- case 'isounicodeibm1268':
- return 'ISO-Unicode-IBM-1268';
-
- case 'csunicodeibm1276':
- case 'isounicodeibm1276':
- return 'ISO-Unicode-IBM-1276';
-
- case 'csiso646basic1983':
- case 'iso646basic1983':
- case 'ref':
- return 'ISO_646.basic:1983';
-
- case 'csiso2intlrefversion':
- case 'irv':
- case 'iso646irv1983':
- case 'isoir2':
- return 'ISO_646.irv:1983';
-
- case 'csiso2033':
- case 'e13b':
- case 'iso20331983':
- case 'isoir98':
- return 'ISO_2033-1983';
-
- case 'csiso5427cyrillic':
- case 'iso5427':
- case 'isoir37':
- return 'ISO_5427';
-
- case 'iso5427cyrillic1981':
- case 'iso54271981':
- case 'isoir54':
- return 'ISO_5427:1981';
-
- case 'csiso5428greek':
- case 'iso54281980':
- case 'isoir55':
- return 'ISO_5428:1980';
-
- case 'csiso6937add':
- case 'iso6937225':
- case 'isoir152':
- return 'ISO_6937-2-25';
-
- case 'csisotextcomm':
- case 'iso69372add':
- case 'isoir142':
- return 'ISO_6937-2-add';
-
- case 'csiso8859supp':
- case 'iso8859supp':
- case 'isoir154':
- case 'latin125':
- return 'ISO_8859-supp';
-
- case 'csiso10367box':
- case 'iso10367box':
- case 'isoir155':
- return 'ISO_10367-box';
-
- case 'csiso15italian':
- case 'iso646it':
- case 'isoir15':
- case 'it':
- return 'IT';
-
- case 'csiso13jisc6220jp':
- case 'isoir13':
- case 'jisc62201969':
- case 'jisc62201969jp':
- case 'katakana':
- case 'x2017':
- return 'JIS_C6220-1969-jp';
-
- case 'csiso14jisc6220ro':
- case 'iso646jp':
- case 'isoir14':
- case 'jisc62201969ro':
- case 'jp':
- return 'JIS_C6220-1969-ro';
-
- case 'csiso42jisc62261978':
- case 'isoir42':
- case 'jisc62261978':
- return 'JIS_C6226-1978';
-
- case 'csiso87jisx208':
- case 'isoir87':
- case 'jisc62261983':
- case 'jisx2081983':
- case 'x208':
- return 'JIS_C6226-1983';
-
- case 'csiso91jisc62291984a':
- case 'isoir91':
- case 'jisc62291984a':
- case 'jpocra':
- return 'JIS_C6229-1984-a';
-
- case 'csiso92jisc62991984b':
- case 'iso646jpocrb':
- case 'isoir92':
- case 'jisc62291984b':
- case 'jpocrb':
- return 'JIS_C6229-1984-b';
-
- case 'csiso93jis62291984badd':
- case 'isoir93':
- case 'jisc62291984badd':
- case 'jpocrbadd':
- return 'JIS_C6229-1984-b-add';
-
- case 'csiso94jis62291984hand':
- case 'isoir94':
- case 'jisc62291984hand':
- case 'jpocrhand':
- return 'JIS_C6229-1984-hand';
-
- case 'csiso95jis62291984handadd':
- case 'isoir95':
- case 'jisc62291984handadd':
- case 'jpocrhandadd':
- return 'JIS_C6229-1984-hand-add';
-
- case 'csiso96jisc62291984kana':
- case 'isoir96':
- case 'jisc62291984kana':
- return 'JIS_C6229-1984-kana';
-
- case 'csjisencoding':
- case 'jisencoding':
- return 'JIS_Encoding';
-
- case 'cshalfwidthkatakana':
- case 'jisx201':
- case 'x201':
- return 'JIS_X0201';
-
- case 'csiso159jisx2121990':
- case 'isoir159':
- case 'jisx2121990':
- case 'x212':
- return 'JIS_X0212-1990';
-
- case 'csiso141jusib1002':
- case 'iso646yu':
- case 'isoir141':
- case 'js':
- case 'jusib1002':
- case 'yu':
- return 'JUS_I.B1.002';
-
- case 'csiso147macedonian':
- case 'isoir147':
- case 'jusib1003mac':
- case 'macedonian':
- return 'JUS_I.B1.003-mac';
-
- case 'csiso146serbian':
- case 'isoir146':
- case 'jusib1003serb':
- case 'serbian':
- return 'JUS_I.B1.003-serb';
-
- case 'koi7switched':
- return 'KOI7-switched';
-
- case 'cskoi8r':
- case 'koi8r':
- return 'KOI8-R';
-
- case 'koi8u':
- return 'KOI8-U';
-
- case 'csksc5636':
- case 'iso646kr':
- case 'ksc5636':
- return 'KSC5636';
-
- case 'cskz1048':
- case 'kz1048':
- case 'rk1048':
- case 'strk10482002':
- return 'KZ-1048';
-
- case 'csiso19latingreek':
- case 'isoir19':
- case 'latingreek':
- return 'latin-greek';
-
- case 'csiso27latingreek1':
- case 'isoir27':
- case 'latingreek1':
- return 'Latin-greek-1';
-
- case 'csiso158lap':
- case 'isoir158':
- case 'lap':
- case 'latinlap':
- return 'latin-lap';
-
- case 'csmacintosh':
- case 'mac':
- case 'macintosh':
- return 'macintosh';
-
- case 'csmicrosoftpublishing':
- case 'microsoftpublishing':
- return 'Microsoft-Publishing';
-
- case 'csmnem':
- case 'mnem':
- return 'MNEM';
-
- case 'csmnemonic':
- case 'mnemonic':
- return 'MNEMONIC';
-
- case 'csiso86hungarian':
- case 'hu':
- case 'iso646hu':
- case 'isoir86':
- case 'msz77953':
- return 'MSZ_7795.3';
-
- case 'csnatsdano':
- case 'isoir91':
- case 'natsdano':
- return 'NATS-DANO';
-
- case 'csnatsdanoadd':
- case 'isoir92':
- case 'natsdanoadd':
- return 'NATS-DANO-ADD';
-
- case 'csnatssefi':
- case 'isoir81':
- case 'natssefi':
- return 'NATS-SEFI';
-
- case 'csnatssefiadd':
- case 'isoir82':
- case 'natssefiadd':
- return 'NATS-SEFI-ADD';
-
- case 'csiso151cuba':
- case 'cuba':
- case 'iso646cu':
- case 'isoir151':
- case 'ncnc1081':
- return 'NC_NC00-10:81';
-
- case 'csiso69french':
- case 'fr':
- case 'iso646fr':
- case 'isoir69':
- case 'nfz62010':
- return 'NF_Z_62-010';
-
- case 'csiso25french':
- case 'iso646fr1':
- case 'isoir25':
- case 'nfz620101973':
- return 'NF_Z_62-010_(1973)';
-
- case 'csiso60danishnorwegian':
- case 'csiso60norwegian1':
- case 'iso646no':
- case 'isoir60':
- case 'no':
- case 'ns45511':
- return 'NS_4551-1';
-
- case 'csiso61norwegian2':
- case 'iso646no2':
- case 'isoir61':
- case 'no2':
- case 'ns45512':
- return 'NS_4551-2';
-
- case 'osdebcdicdf3irv':
- return 'OSD_EBCDIC_DF03_IRV';
-
- case 'osdebcdicdf41':
- return 'OSD_EBCDIC_DF04_1';
-
- case 'osdebcdicdf415':
- return 'OSD_EBCDIC_DF04_15';
-
- case 'cspc8danishnorwegian':
- case 'pc8danishnorwegian':
- return 'PC8-Danish-Norwegian';
-
- case 'cspc8turkish':
- case 'pc8turkish':
- return 'PC8-Turkish';
-
- case 'csiso16portuguese':
- case 'iso646pt':
- case 'isoir16':
- case 'pt':
- return 'PT';
-
- case 'csiso84portuguese2':
- case 'iso646pt2':
- case 'isoir84':
- case 'pt2':
- return 'PT2';
-
- case 'cp154':
- case 'csptcp154':
- case 'cyrillicasian':
- case 'pt154':
- case 'ptcp154':
- return 'PTCP154';
-
- case 'scsu':
- return 'SCSU';
-
- case 'csiso10swedish':
- case 'fi':
- case 'iso646fi':
- case 'iso646se':
- case 'isoir10':
- case 'se':
- case 'sen850200b':
- return 'SEN_850200_B';
-
- case 'csiso11swedishfornames':
- case 'iso646se2':
- case 'isoir11':
- case 'se2':
- case 'sen850200c':
- return 'SEN_850200_C';
-
- case 'csiso102t617bit':
- case 'isoir102':
- case 't617bit':
- return 'T.61-7bit';
-
- case 'csiso103t618bit':
- case 'isoir103':
- case 't61':
- case 't618bit':
- return 'T.61-8bit';
-
- case 'csiso128t101g2':
- case 'isoir128':
- case 't101g2':
- return 'T.101-G2';
-
- case 'cstscii':
- case 'tscii':
- return 'TSCII';
-
- case 'csunicode11':
- case 'unicode11':
- return 'UNICODE-1-1';
-
- case 'csunicode11utf7':
- case 'unicode11utf7':
- return 'UNICODE-1-1-UTF-7';
-
- case 'csunknown8bit':
- case 'unknown8bit':
- return 'UNKNOWN-8BIT';
-
- case 'ansix341968':
- case 'ansix341986':
- case 'ascii':
- case 'cp367':
- case 'csascii':
- case 'ibm367':
- case 'iso646irv1991':
- case 'iso646us':
- case 'isoir6':
- case 'us':
- case 'usascii':
- return 'US-ASCII';
-
- case 'csusdk':
- case 'usdk':
- return 'us-dk';
-
- case 'utf7':
- return 'UTF-7';
-
- case 'utf8':
- return 'UTF-8';
-
- case 'utf16':
- return 'UTF-16';
-
- case 'utf16be':
- return 'UTF-16BE';
-
- case 'utf16le':
- return 'UTF-16LE';
-
- case 'utf32':
- return 'UTF-32';
-
- case 'utf32be':
- return 'UTF-32BE';
-
- case 'utf32le':
- return 'UTF-32LE';
-
- case 'csventurainternational':
- case 'venturainternational':
- return 'Ventura-International';
-
- case 'csventuramath':
- case 'venturamath':
- return 'Ventura-Math';
-
- case 'csventuraus':
- case 'venturaus':
- return 'Ventura-US';
-
- case 'csiso70videotexsupp1':
- case 'isoir70':
- case 'videotexsuppl':
- return 'videotex-suppl';
-
- case 'csviqr':
- case 'viqr':
- return 'VIQR';
-
- case 'csviscii':
- case 'viscii':
- return 'VISCII';
-
- case 'csshiftjis':
- case 'cswindows31j':
- case 'mskanji':
- case 'shiftjis':
- case 'windows31j':
- return 'Windows-31J';
-
- case 'iso885911':
- case 'tis620':
- return 'windows-874';
-
- case 'cseuckr':
- case 'csksc56011987':
- case 'euckr':
- case 'isoir149':
- case 'korean':
- case 'ksc5601':
- case 'ksc56011987':
- case 'ksc56011989':
- case 'windows949':
- return 'windows-949';
-
- case 'windows1250':
- return 'windows-1250';
-
- case 'windows1251':
- return 'windows-1251';
-
- case 'cp819':
- case 'csisolatin1':
- case 'ibm819':
- case 'iso88591':
- case 'iso885911987':
- case 'isoir100':
- case 'l1':
- case 'latin1':
- case 'windows1252':
- return 'windows-1252';
-
- case 'windows1253':
- return 'windows-1253';
-
- case 'csisolatin5':
- case 'iso88599':
- case 'iso885991989':
- case 'isoir148':
- case 'l5':
- case 'latin5':
- case 'windows1254':
- return 'windows-1254';
-
- case 'windows1255':
- return 'windows-1255';
-
- case 'windows1256':
- return 'windows-1256';
-
- case 'windows1257':
- return 'windows-1257';
-
- case 'windows1258':
- return 'windows-1258';
-
- default:
- return $charset;
- }
- }
-
- public static function get_curl_version()
- {
- if (is_array($curl = curl_version()))
- {
- $curl = $curl['version'];
- }
- elseif (substr($curl, 0, 5) === 'curl/')
- {
- $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5));
- }
- elseif (substr($curl, 0, 8) === 'libcurl/')
- {
- $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8));
- }
- else
- {
- $curl = 0;
- }
- return $curl;
- }
-
- /**
- * Strip HTML comments
- *
- * @param string $data Data to strip comments from
- * @return string Comment stripped string
- */
- public static function strip_comments($data)
- {
- $output = '';
- while (($start = strpos($data, '<!--')) !== false)
- {
- $output .= substr($data, 0, $start);
- if (($end = strpos($data, '-->', $start)) !== false)
- {
- $data = substr_replace($data, '', 0, $end + 3);
- }
- else
- {
- $data = '';
- }
- }
- return $output . $data;
- }
-
- public static function parse_date($dt)
- {
- $parser = SimplePie_Parse_Date::get();
- return $parser->parse($dt);
- }
-
- /**
- * Decode HTML entities
- *
- * @deprecated Use DOMDocument instead
- * @param string $data Input data
- * @return string Output data
- */
- public static function entities_decode($data)
- {
- $decoder = new SimplePie_Decode_HTML_Entities($data);
- return $decoder->parse();
- }
-
- /**
- * Remove RFC822 comments
- *
- * @param string $data Data to strip comments from
- * @return string Comment stripped string
- */
- public static function uncomment_rfc822($string)
- {
- $string = (string) $string;
- $position = 0;
- $length = strlen($string);
- $depth = 0;
-
- $output = '';
-
- while ($position < $length && ($pos = strpos($string, '(', $position)) !== false)
- {
- $output .= substr($string, $position, $pos - $position);
- $position = $pos + 1;
- if ($string[$pos - 1] !== '\\')
- {
- $depth++;
- while ($depth && $position < $length)
- {
- $position += strcspn($string, '()', $position);
- if ($string[$position - 1] === '\\')
- {
- $position++;
- continue;
- }
- elseif (isset($string[$position]))
- {
- switch ($string[$position])
- {
- case '(':
- $depth++;
- break;
-
- case ')':
- $depth--;
- break;
- }
- $position++;
- }
- else
- {
- break;
- }
- }
- }
- else
- {
- $output .= '(';
- }
- }
- $output .= substr($string, $position);
-
- return $output;
- }
-
- public static function parse_mime($mime)
- {
- if (($pos = strpos($mime, ';')) === false)
- {
- return trim($mime);
- }
- else
- {
- return trim(substr($mime, 0, $pos));
- }
- }
-
- public static function atom_03_construct_type($attribs)
- {
- if (isset($attribs['']['mode']) && strtolower(trim($attribs['']['mode']) === 'base64'))
- {
- $mode = SIMPLEPIE_CONSTRUCT_BASE64;
- }
- else
- {
- $mode = SIMPLEPIE_CONSTRUCT_NONE;
- }
- if (isset($attribs['']['type']))
- {
- switch (strtolower(trim($attribs['']['type'])))
- {
- case 'text':
- case 'text/plain':
- return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
-
- case 'html':
- case 'text/html':
- return SIMPLEPIE_CONSTRUCT_HTML | $mode;
-
- case 'xhtml':
- case 'application/xhtml+xml':
- return SIMPLEPIE_CONSTRUCT_XHTML | $mode;
-
- default:
- return SIMPLEPIE_CONSTRUCT_NONE | $mode;
- }
- }
- else
- {
- return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
- }
- }
-
- public static function atom_10_construct_type($attribs)
- {
- if (isset($attribs['']['type']))
- {
- switch (strtolower(trim($attribs['']['type'])))
- {
- case 'text':
- return SIMPLEPIE_CONSTRUCT_TEXT;
-
- case 'html':
- return SIMPLEPIE_CONSTRUCT_HTML;
-
- case 'xhtml':
- return SIMPLEPIE_CONSTRUCT_XHTML;
-
- default:
- return SIMPLEPIE_CONSTRUCT_NONE;
- }
- }
- return SIMPLEPIE_CONSTRUCT_TEXT;
- }
-
- public static function atom_10_content_construct_type($attribs)
- {
- if (isset($attribs['']['type']))
- {
- $type = strtolower(trim($attribs['']['type']));
- switch ($type)
- {
- case 'text':
- return SIMPLEPIE_CONSTRUCT_TEXT;
-
- case 'html':
- return SIMPLEPIE_CONSTRUCT_HTML;
-
- case 'xhtml':
- return SIMPLEPIE_CONSTRUCT_XHTML;
- }
- if (in_array(substr($type, -4), array('+xml', '/xml')) || substr($type, 0, 5) === 'text/')
- {
- return SIMPLEPIE_CONSTRUCT_NONE;
- }
- else
- {
- return SIMPLEPIE_CONSTRUCT_BASE64;
- }
- }
- else
- {
- return SIMPLEPIE_CONSTRUCT_TEXT;
- }
- }
-
- public static function is_isegment_nz_nc($string)
- {
- return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string);
- }
-
- public static function space_seperated_tokens($string)
- {
- $space_characters = "\x20\x09\x0A\x0B\x0C\x0D";
- $string_length = strlen($string);
-
- $position = strspn($string, $space_characters);
- $tokens = array();
-
- while ($position < $string_length)
- {
- $len = strcspn($string, $space_characters, $position);
- $tokens[] = substr($string, $position, $len);
- $position += $len;
- $position += strspn($string, $space_characters, $position);
- }
-
- return $tokens;
- }
-
- /**
- * Converts a unicode codepoint to a UTF-8 character
- *
- * @static
- * @param int $codepoint Unicode codepoint
- * @return string UTF-8 character
- */
- public static function codepoint_to_utf8($codepoint)
- {
- $codepoint = (int) $codepoint;
- if ($codepoint < 0)
- {
- return false;
- }
- else if ($codepoint <= 0x7f)
- {
- return chr($codepoint);
- }
- else if ($codepoint <= 0x7ff)
- {
- return chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f));
- }
- else if ($codepoint <= 0xffff)
- {
- return chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
- }
- else if ($codepoint <= 0x10ffff)
- {
- return chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
- }
- else
- {
- // U+FFFD REPLACEMENT CHARACTER
- return "\xEF\xBF\xBD";
- }
- }
-
- /**
- * Similar to parse_str()
- *
- * Returns an associative array of name/value pairs, where the value is an
- * array of values that have used the same name
- *
- * @static
- * @param string $str The input string.
- * @return array
- */
- public static function parse_str($str)
- {
- $return = array();
- $str = explode('&', $str);
-
- foreach ($str as $section)
- {
- if (strpos($section, '=') !== false)
- {
- list($name, $value) = explode('=', $section, 2);
- $return[urldecode($name)][] = urldecode($value);
- }
- else
- {
- $return[urldecode($section)][] = null;
- }
- }
-
- return $return;
- }
-
- /**
- * Detect XML encoding, as per XML 1.0 Appendix F.1
- *
- * @todo Add support for EBCDIC
- * @param string $data XML data
- * @param SimplePie_Registry $registry Class registry
- * @return array Possible encodings
- */
- public static function xml_encoding($data, $registry)
- {
- // UTF-32 Big Endian BOM
- if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
- {
- $encoding[] = 'UTF-32BE';
- }
- // UTF-32 Little Endian BOM
- elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
- {
- $encoding[] = 'UTF-32LE';
- }
- // UTF-16 Big Endian BOM
- elseif (substr($data, 0, 2) === "\xFE\xFF")
- {
- $encoding[] = 'UTF-16BE';
- }
- // UTF-16 Little Endian BOM
- elseif (substr($data, 0, 2) === "\xFF\xFE")
- {
- $encoding[] = 'UTF-16LE';
- }
- // UTF-8 BOM
- elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
- {
- $encoding[] = 'UTF-8';
- }
- // UTF-32 Big Endian Without BOM
- elseif (substr($data, 0, 20) === "\x00\x00\x00\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C")
- {
- if ($pos = strpos($data, "\x00\x00\x00\x3F\x00\x00\x00\x3E"))
- {
- $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32BE', 'UTF-8')));
- if ($parser->parse())
- {
- $encoding[] = $parser->encoding;
- }
- }
- $encoding[] = 'UTF-32BE';
- }
- // UTF-32 Little Endian Without BOM
- elseif (substr($data, 0, 20) === "\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C\x00\x00\x00")
- {
- if ($pos = strpos($data, "\x3F\x00\x00\x00\x3E\x00\x00\x00"))
- {
- $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32LE', 'UTF-8')));
- if ($parser->parse())
- {
- $encoding[] = $parser->encoding;
- }
- }
- $encoding[] = 'UTF-32LE';
- }
- // UTF-16 Big Endian Without BOM
- elseif (substr($data, 0, 10) === "\x00\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C")
- {
- if ($pos = strpos($data, "\x00\x3F\x00\x3E"))
- {
- $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16BE', 'UTF-8')));
- if ($parser->parse())
- {
- $encoding[] = $parser->encoding;
- }
- }
- $encoding[] = 'UTF-16BE';
- }
- // UTF-16 Little Endian Without BOM
- elseif (substr($data, 0, 10) === "\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C\x00")
- {
- if ($pos = strpos($data, "\x3F\x00\x3E\x00"))
- {
- $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16LE', 'UTF-8')));
- if ($parser->parse())
- {
- $encoding[] = $parser->encoding;
- }
- }
- $encoding[] = 'UTF-16LE';
- }
- // US-ASCII (or superset)
- elseif (substr($data, 0, 5) === "\x3C\x3F\x78\x6D\x6C")
- {
- if ($pos = strpos($data, "\x3F\x3E"))
- {
- $parser = $registry->create('XML_Declaration_Parser', array(substr($data, 5, $pos - 5)));
- if ($parser->parse())
- {
- $encoding[] = $parser->encoding;
- }
- }
- $encoding[] = 'UTF-8';
- }
- // Fallback to UTF-8
- else
- {
- $encoding[] = 'UTF-8';
- }
- return $encoding;
- }
-
- public static function output_javascript()
- {
- if (function_exists('ob_gzhandler'))
- {
- ob_start('ob_gzhandler');
- }
- header('Content-type: text/javascript; charset: UTF-8');
- header('Cache-Control: must-revalidate');
- header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
- ?>
-function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) {
- if (placeholder != '') {
- document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" href="'+link+'" src="'+placeholder+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="false" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
- }
- else {
- document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" src="'+link+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="true" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
- }
-}
-
-function embed_flash(bgcolor, width, height, link, loop, type) {
- document.writeln('<embed src="'+link+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="'+type+'" quality="high" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'" loop="'+loop+'"></embed>');
-}
-
-function embed_flv(width, height, link, placeholder, loop, player) {
- document.writeln('<embed src="'+player+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="'+width+'" height="'+height+'" wmode="transparent" flashvars="file='+link+'&autostart=false&repeat='+loop+'&showdigits=true&showfsbutton=false"></embed>');
-}
-
-function embed_wmedia(width, height, link) {
- document.writeln('<embed type="application/x-mplayer2" src="'+link+'" autosize="1" width="'+width+'" height="'+height+'" showcontrols="1" showstatusbar="0" showdisplay="0" autostart="0"></embed>');
-}
- <?php
- }
-
- /**
- * Get the SimplePie build timestamp
- *
- * Uses the git index if it exists, otherwise uses the modification time
- * of the newest file.
- */
- public static function get_build()
- {
- $root = dirname(dirname(__FILE__));
- if (file_exists($root . '/.git/index'))
- {
- return filemtime($root . '/.git/index');
- }
- elseif (file_exists($root . '/SimplePie'))
- {
- $time = 0;
- foreach (glob($root . '/SimplePie/*.php') as $file)
- {
- if (($mtime = filemtime($file)) > $time)
- {
- $time = $mtime;
- }
- }
- return $time;
- }
- elseif (file_exists(dirname(__FILE__) . '/Core.php'))
- {
- return filemtime(dirname(__FILE__) . '/Core.php');
- }
- else
- {
- return filemtime(__FILE__);
- }
- }
-
- /**
- * Format debugging information
- */
- public static function debug(&$sp)
- {
- $info = 'SimplePie ' . SIMPLEPIE_VERSION . ' Build ' . SIMPLEPIE_BUILD . "\n";
- $info .= 'PHP ' . PHP_VERSION . "\n";
- if ($sp->error() !== null)
- {
- $info .= 'Error occurred: ' . $sp->error() . "\n";
- }
- else
- {
- $info .= "No error found.\n";
- }
- $info .= "Extensions:\n";
- $extensions = array('pcre', 'curl', 'zlib', 'mbstring', 'iconv', 'xmlreader', 'xml');
- foreach ($extensions as $ext)
- {
- if (extension_loaded($ext))
- {
- $info .= " $ext loaded\n";
- switch ($ext)
- {
- case 'pcre':
- $info .= ' Version ' . PCRE_VERSION . "\n";
- break;
- case 'curl':
- $version = curl_version();
- $info .= ' Version ' . $version['version'] . "\n";
- break;
- case 'mbstring':
- $info .= ' Overloading: ' . mb_get_info('func_overload') . "\n";
- break;
- case 'iconv':
- $info .= ' Version ' . ICONV_VERSION . "\n";
- break;
- case 'xml':
- $info .= ' Version ' . LIBXML_DOTTED_VERSION . "\n";
- break;
- }
- }
- else
- {
- $info .= " $ext not loaded\n";
- }
- }
- return $info;
- }
-
- public static function silence_errors($num, $str)
- {
- // No-op
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Net/IPv6.php b/3rdparty/simplepie/library/SimplePie/Net/IPv6.php
deleted file mode 100755
index da80d8aca..000000000
--- a/3rdparty/simplepie/library/SimplePie/Net/IPv6.php
+++ /dev/null
@@ -1,276 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-
-/**
- * Class to validate and to work with IPv6 addresses.
- *
- * @package SimplePie
- * @subpackage HTTP
- * @copyright 2003-2005 The PHP Group
- * @license http://www.opensource.org/licenses/bsd-license.php
- * @link http://pear.php.net/package/Net_IPv6
- * @author Alexander Merz <alexander.merz@web.de>
- * @author elfrink at introweb dot nl
- * @author Josh Peck <jmp at joshpeck dot org>
- * @author Geoffrey Sneddon <geoffers@gmail.com>
- */
-class SimplePie_Net_IPv6
-{
- /**
- * Uncompresses an IPv6 address
- *
- * RFC 4291 allows you to compress concecutive zero pieces in an address to
- * '::'. This method expects a valid IPv6 address and expands the '::' to
- * the required number of zero pieces.
- *
- * Example: FF01::101 -> FF01:0:0:0:0:0:0:101
- * ::1 -> 0:0:0:0:0:0:0:1
- *
- * @author Alexander Merz <alexander.merz@web.de>
- * @author elfrink at introweb dot nl
- * @author Josh Peck <jmp at joshpeck dot org>
- * @copyright 2003-2005 The PHP Group
- * @license http://www.opensource.org/licenses/bsd-license.php
- * @param string $ip An IPv6 address
- * @return string The uncompressed IPv6 address
- */
- public static function uncompress($ip)
- {
- $c1 = -1;
- $c2 = -1;
- if (substr_count($ip, '::') === 1)
- {
- list($ip1, $ip2) = explode('::', $ip);
- if ($ip1 === '')
- {
- $c1 = -1;
- }
- else
- {
- $c1 = substr_count($ip1, ':');
- }
- if ($ip2 === '')
- {
- $c2 = -1;
- }
- else
- {
- $c2 = substr_count($ip2, ':');
- }
- if (strpos($ip2, '.') !== false)
- {
- $c2++;
- }
- // ::
- if ($c1 === -1 && $c2 === -1)
- {
- $ip = '0:0:0:0:0:0:0:0';
- }
- // ::xxx
- else if ($c1 === -1)
- {
- $fill = str_repeat('0:', 7 - $c2);
- $ip = str_replace('::', $fill, $ip);
- }
- // xxx::
- else if ($c2 === -1)
- {
- $fill = str_repeat(':0', 7 - $c1);
- $ip = str_replace('::', $fill, $ip);
- }
- // xxx::xxx
- else
- {
- $fill = ':' . str_repeat('0:', 6 - $c2 - $c1);
- $ip = str_replace('::', $fill, $ip);
- }
- }
- return $ip;
- }
-
- /**
- * Compresses an IPv6 address
- *
- * RFC 4291 allows you to compress concecutive zero pieces in an address to
- * '::'. This method expects a valid IPv6 address and compresses consecutive
- * zero pieces to '::'.
- *
- * Example: FF01:0:0:0:0:0:0:101 -> FF01::101
- * 0:0:0:0:0:0:0:1 -> ::1
- *
- * @see uncompress()
- * @param string $ip An IPv6 address
- * @return string The compressed IPv6 address
- */
- public static function compress($ip)
- {
- // Prepare the IP to be compressed
- $ip = self::uncompress($ip);
- $ip_parts = self::split_v6_v4($ip);
-
- // Replace all leading zeros
- $ip_parts[0] = preg_replace('/(^|:)0+([0-9])/', '\1\2', $ip_parts[0]);
-
- // Find bunches of zeros
- if (preg_match_all('/(?:^|:)(?:0(?::|$))+/', $ip_parts[0], $matches, PREG_OFFSET_CAPTURE))
- {
- $max = 0;
- $pos = null;
- foreach ($matches[0] as $match)
- {
- if (strlen($match[0]) > $max)
- {
- $max = strlen($match[0]);
- $pos = $match[1];
- }
- }
-
- $ip_parts[0] = substr_replace($ip_parts[0], '::', $pos, $max);
- }
-
- if ($ip_parts[1] !== '')
- {
- return implode(':', $ip_parts);
- }
- else
- {
- return $ip_parts[0];
- }
- }
-
- /**
- * Splits an IPv6 address into the IPv6 and IPv4 representation parts
- *
- * RFC 4291 allows you to represent the last two parts of an IPv6 address
- * using the standard IPv4 representation
- *
- * Example: 0:0:0:0:0:0:13.1.68.3
- * 0:0:0:0:0:FFFF:129.144.52.38
- *
- * @param string $ip An IPv6 address
- * @return array [0] contains the IPv6 represented part, and [1] the IPv4 represented part
- */
- private static function split_v6_v4($ip)
- {
- if (strpos($ip, '.') !== false)
- {
- $pos = strrpos($ip, ':');
- $ipv6_part = substr($ip, 0, $pos);
- $ipv4_part = substr($ip, $pos + 1);
- return array($ipv6_part, $ipv4_part);
- }
- else
- {
- return array($ip, '');
- }
- }
-
- /**
- * Checks an IPv6 address
- *
- * Checks if the given IP is a valid IPv6 address
- *
- * @param string $ip An IPv6 address
- * @return bool true if $ip is a valid IPv6 address
- */
- public static function check_ipv6($ip)
- {
- $ip = self::uncompress($ip);
- list($ipv6, $ipv4) = self::split_v6_v4($ip);
- $ipv6 = explode(':', $ipv6);
- $ipv4 = explode('.', $ipv4);
- if (count($ipv6) === 8 && count($ipv4) === 1 || count($ipv6) === 6 && count($ipv4) === 4)
- {
- foreach ($ipv6 as $ipv6_part)
- {
- // The section can't be empty
- if ($ipv6_part === '')
- return false;
-
- // Nor can it be over four characters
- if (strlen($ipv6_part) > 4)
- return false;
-
- // Remove leading zeros (this is safe because of the above)
- $ipv6_part = ltrim($ipv6_part, '0');
- if ($ipv6_part === '')
- $ipv6_part = '0';
-
- // Check the value is valid
- $value = hexdec($ipv6_part);
- if (dechex($value) !== strtolower($ipv6_part) || $value < 0 || $value > 0xFFFF)
- return false;
- }
- if (count($ipv4) === 4)
- {
- foreach ($ipv4 as $ipv4_part)
- {
- $value = (int) $ipv4_part;
- if ((string) $value !== $ipv4_part || $value < 0 || $value > 0xFF)
- return false;
- }
- }
- return true;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Checks if the given IP is a valid IPv6 address
- *
- * @codeCoverageIgnore
- * @deprecated Use {@see SimplePie_Net_IPv6::check_ipv6()} instead
- * @see check_ipv6
- * @param string $ip An IPv6 address
- * @return bool true if $ip is a valid IPv6 address
- */
- public static function checkIPv6($ip)
- {
- return self::check_ipv6($ip);
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Parse/Date.php b/3rdparty/simplepie/library/SimplePie/Parse/Date.php
deleted file mode 100755
index d51f500d3..000000000
--- a/3rdparty/simplepie/library/SimplePie/Parse/Date.php
+++ /dev/null
@@ -1,983 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-
-/**
- * Date Parser
- *
- * @package SimplePie
- * @subpackage Parsing
- */
-class SimplePie_Parse_Date
-{
- /**
- * Input data
- *
- * @access protected
- * @var string
- */
- var $date;
-
- /**
- * List of days, calendar day name => ordinal day number in the week
- *
- * @access protected
- * @var array
- */
- var $day = array(
- // English
- 'mon' => 1,
- 'monday' => 1,
- 'tue' => 2,
- 'tuesday' => 2,
- 'wed' => 3,
- 'wednesday' => 3,
- 'thu' => 4,
- 'thursday' => 4,
- 'fri' => 5,
- 'friday' => 5,
- 'sat' => 6,
- 'saturday' => 6,
- 'sun' => 7,
- 'sunday' => 7,
- // Dutch
- 'maandag' => 1,
- 'dinsdag' => 2,
- 'woensdag' => 3,
- 'donderdag' => 4,
- 'vrijdag' => 5,
- 'zaterdag' => 6,
- 'zondag' => 7,
- // French
- 'lundi' => 1,
- 'mardi' => 2,
- 'mercredi' => 3,
- 'jeudi' => 4,
- 'vendredi' => 5,
- 'samedi' => 6,
- 'dimanche' => 7,
- // German
- 'montag' => 1,
- 'dienstag' => 2,
- 'mittwoch' => 3,
- 'donnerstag' => 4,
- 'freitag' => 5,
- 'samstag' => 6,
- 'sonnabend' => 6,
- 'sonntag' => 7,
- // Italian
- 'lunedì' => 1,
- 'martedì' => 2,
- 'mercoledì' => 3,
- 'giovedì' => 4,
- 'venerdì' => 5,
- 'sabato' => 6,
- 'domenica' => 7,
- // Spanish
- 'lunes' => 1,
- 'martes' => 2,
- 'miércoles' => 3,
- 'jueves' => 4,
- 'viernes' => 5,
- 'sábado' => 6,
- 'domingo' => 7,
- // Finnish
- 'maanantai' => 1,
- 'tiistai' => 2,
- 'keskiviikko' => 3,
- 'torstai' => 4,
- 'perjantai' => 5,
- 'lauantai' => 6,
- 'sunnuntai' => 7,
- // Hungarian
- 'hétfő' => 1,
- 'kedd' => 2,
- 'szerda' => 3,
- 'csütörtok' => 4,
- 'péntek' => 5,
- 'szombat' => 6,
- 'vasárnap' => 7,
- // Greek
- 'Δευ' => 1,
- 'Τρι' => 2,
- 'Τετ' => 3,
- 'Πεμ' => 4,
- 'Παρ' => 5,
- 'Σαβ' => 6,
- 'Κυρ' => 7,
- );
-
- /**
- * List of months, calendar month name => calendar month number
- *
- * @access protected
- * @var array
- */
- var $month = array(
- // English
- 'jan' => 1,
- 'january' => 1,
- 'feb' => 2,
- 'february' => 2,
- 'mar' => 3,
- 'march' => 3,
- 'apr' => 4,
- 'april' => 4,
- 'may' => 5,
- // No long form of May
- 'jun' => 6,
- 'june' => 6,
- 'jul' => 7,
- 'july' => 7,
- 'aug' => 8,
- 'august' => 8,
- 'sep' => 9,
- 'september' => 8,
- 'oct' => 10,
- 'october' => 10,
- 'nov' => 11,
- 'november' => 11,
- 'dec' => 12,
- 'december' => 12,
- // Dutch
- 'januari' => 1,
- 'februari' => 2,
- 'maart' => 3,
- 'april' => 4,
- 'mei' => 5,
- 'juni' => 6,
- 'juli' => 7,
- 'augustus' => 8,
- 'september' => 9,
- 'oktober' => 10,
- 'november' => 11,
- 'december' => 12,
- // French
- 'janvier' => 1,
- 'février' => 2,
- 'mars' => 3,
- 'avril' => 4,
- 'mai' => 5,
- 'juin' => 6,
- 'juillet' => 7,
- 'août' => 8,
- 'septembre' => 9,
- 'octobre' => 10,
- 'novembre' => 11,
- 'décembre' => 12,
- // German
- 'januar' => 1,
- 'februar' => 2,
- 'märz' => 3,
- 'april' => 4,
- 'mai' => 5,
- 'juni' => 6,
- 'juli' => 7,
- 'august' => 8,
- 'september' => 9,
- 'oktober' => 10,
- 'november' => 11,
- 'dezember' => 12,
- // Italian
- 'gennaio' => 1,
- 'febbraio' => 2,
- 'marzo' => 3,
- 'aprile' => 4,
- 'maggio' => 5,
- 'giugno' => 6,
- 'luglio' => 7,
- 'agosto' => 8,
- 'settembre' => 9,
- 'ottobre' => 10,
- 'novembre' => 11,
- 'dicembre' => 12,
- // Spanish
- 'enero' => 1,
- 'febrero' => 2,
- 'marzo' => 3,
- 'abril' => 4,
- 'mayo' => 5,
- 'junio' => 6,
- 'julio' => 7,
- 'agosto' => 8,
- 'septiembre' => 9,
- 'setiembre' => 9,
- 'octubre' => 10,
- 'noviembre' => 11,
- 'diciembre' => 12,
- // Finnish
- 'tammikuu' => 1,
- 'helmikuu' => 2,
- 'maaliskuu' => 3,
- 'huhtikuu' => 4,
- 'toukokuu' => 5,
- 'kesäkuu' => 6,
- 'heinäkuu' => 7,
- 'elokuu' => 8,
- 'suuskuu' => 9,
- 'lokakuu' => 10,
- 'marras' => 11,
- 'joulukuu' => 12,
- // Hungarian
- 'január' => 1,
- 'február' => 2,
- 'március' => 3,
- 'április' => 4,
- 'május' => 5,
- 'június' => 6,
- 'július' => 7,
- 'augusztus' => 8,
- 'szeptember' => 9,
- 'október' => 10,
- 'november' => 11,
- 'december' => 12,
- // Greek
- 'Ιαν' => 1,
- 'Φεβ' => 2,
- 'Μάώ' => 3,
- 'Μαώ' => 3,
- 'Απρ' => 4,
- 'Μάι' => 5,
- 'Μαϊ' => 5,
- 'Μαι' => 5,
- 'Ιούν' => 6,
- 'Ιον' => 6,
- 'Ιούλ' => 7,
- 'Ιολ' => 7,
- 'Αύγ' => 8,
- 'Αυγ' => 8,
- 'Σεπ' => 9,
- 'Οκτ' => 10,
- 'Νοέ' => 11,
- 'Δεκ' => 12,
- );
-
- /**
- * List of timezones, abbreviation => offset from UTC
- *
- * @access protected
- * @var array
- */
- var $timezone = array(
- 'ACDT' => 37800,
- 'ACIT' => 28800,
- 'ACST' => 34200,
- 'ACT' => -18000,
- 'ACWDT' => 35100,
- 'ACWST' => 31500,
- 'AEDT' => 39600,
- 'AEST' => 36000,
- 'AFT' => 16200,
- 'AKDT' => -28800,
- 'AKST' => -32400,
- 'AMDT' => 18000,
- 'AMT' => -14400,
- 'ANAST' => 46800,
- 'ANAT' => 43200,
- 'ART' => -10800,
- 'AZOST' => -3600,
- 'AZST' => 18000,
- 'AZT' => 14400,
- 'BIOT' => 21600,
- 'BIT' => -43200,
- 'BOT' => -14400,
- 'BRST' => -7200,
- 'BRT' => -10800,
- 'BST' => 3600,
- 'BTT' => 21600,
- 'CAST' => 18000,
- 'CAT' => 7200,
- 'CCT' => 23400,
- 'CDT' => -18000,
- 'CEDT' => 7200,
- 'CET' => 3600,
- 'CGST' => -7200,
- 'CGT' => -10800,
- 'CHADT' => 49500,
- 'CHAST' => 45900,
- 'CIST' => -28800,
- 'CKT' => -36000,
- 'CLDT' => -10800,
- 'CLST' => -14400,
- 'COT' => -18000,
- 'CST' => -21600,
- 'CVT' => -3600,
- 'CXT' => 25200,
- 'DAVT' => 25200,
- 'DTAT' => 36000,
- 'EADT' => -18000,
- 'EAST' => -21600,
- 'EAT' => 10800,
- 'ECT' => -18000,
- 'EDT' => -14400,
- 'EEST' => 10800,
- 'EET' => 7200,
- 'EGT' => -3600,
- 'EKST' => 21600,
- 'EST' => -18000,
- 'FJT' => 43200,
- 'FKDT' => -10800,
- 'FKST' => -14400,
- 'FNT' => -7200,
- 'GALT' => -21600,
- 'GEDT' => 14400,
- 'GEST' => 10800,
- 'GFT' => -10800,
- 'GILT' => 43200,
- 'GIT' => -32400,
- 'GST' => 14400,
- 'GST' => -7200,
- 'GYT' => -14400,
- 'HAA' => -10800,
- 'HAC' => -18000,
- 'HADT' => -32400,
- 'HAE' => -14400,
- 'HAP' => -25200,
- 'HAR' => -21600,
- 'HAST' => -36000,
- 'HAT' => -9000,
- 'HAY' => -28800,
- 'HKST' => 28800,
- 'HMT' => 18000,
- 'HNA' => -14400,
- 'HNC' => -21600,
- 'HNE' => -18000,
- 'HNP' => -28800,
- 'HNR' => -25200,
- 'HNT' => -12600,
- 'HNY' => -32400,
- 'IRDT' => 16200,
- 'IRKST' => 32400,
- 'IRKT' => 28800,
- 'IRST' => 12600,
- 'JFDT' => -10800,
- 'JFST' => -14400,
- 'JST' => 32400,
- 'KGST' => 21600,
- 'KGT' => 18000,
- 'KOST' => 39600,
- 'KOVST' => 28800,
- 'KOVT' => 25200,
- 'KRAST' => 28800,
- 'KRAT' => 25200,
- 'KST' => 32400,
- 'LHDT' => 39600,
- 'LHST' => 37800,
- 'LINT' => 50400,
- 'LKT' => 21600,
- 'MAGST' => 43200,
- 'MAGT' => 39600,
- 'MAWT' => 21600,
- 'MDT' => -21600,
- 'MESZ' => 7200,
- 'MEZ' => 3600,
- 'MHT' => 43200,
- 'MIT' => -34200,
- 'MNST' => 32400,
- 'MSDT' => 14400,
- 'MSST' => 10800,
- 'MST' => -25200,
- 'MUT' => 14400,
- 'MVT' => 18000,
- 'MYT' => 28800,
- 'NCT' => 39600,
- 'NDT' => -9000,
- 'NFT' => 41400,
- 'NMIT' => 36000,
- 'NOVST' => 25200,
- 'NOVT' => 21600,
- 'NPT' => 20700,
- 'NRT' => 43200,
- 'NST' => -12600,
- 'NUT' => -39600,
- 'NZDT' => 46800,
- 'NZST' => 43200,
- 'OMSST' => 25200,
- 'OMST' => 21600,
- 'PDT' => -25200,
- 'PET' => -18000,
- 'PETST' => 46800,
- 'PETT' => 43200,
- 'PGT' => 36000,
- 'PHOT' => 46800,
- 'PHT' => 28800,
- 'PKT' => 18000,
- 'PMDT' => -7200,
- 'PMST' => -10800,
- 'PONT' => 39600,
- 'PST' => -28800,
- 'PWT' => 32400,
- 'PYST' => -10800,
- 'PYT' => -14400,
- 'RET' => 14400,
- 'ROTT' => -10800,
- 'SAMST' => 18000,
- 'SAMT' => 14400,
- 'SAST' => 7200,
- 'SBT' => 39600,
- 'SCDT' => 46800,
- 'SCST' => 43200,
- 'SCT' => 14400,
- 'SEST' => 3600,
- 'SGT' => 28800,
- 'SIT' => 28800,
- 'SRT' => -10800,
- 'SST' => -39600,
- 'SYST' => 10800,
- 'SYT' => 7200,
- 'TFT' => 18000,
- 'THAT' => -36000,
- 'TJT' => 18000,
- 'TKT' => -36000,
- 'TMT' => 18000,
- 'TOT' => 46800,
- 'TPT' => 32400,
- 'TRUT' => 36000,
- 'TVT' => 43200,
- 'TWT' => 28800,
- 'UYST' => -7200,
- 'UYT' => -10800,
- 'UZT' => 18000,
- 'VET' => -14400,
- 'VLAST' => 39600,
- 'VLAT' => 36000,
- 'VOST' => 21600,
- 'VUT' => 39600,
- 'WAST' => 7200,
- 'WAT' => 3600,
- 'WDT' => 32400,
- 'WEST' => 3600,
- 'WFT' => 43200,
- 'WIB' => 25200,
- 'WIT' => 32400,
- 'WITA' => 28800,
- 'WKST' => 18000,
- 'WST' => 28800,
- 'YAKST' => 36000,
- 'YAKT' => 32400,
- 'YAPT' => 36000,
- 'YEKST' => 21600,
- 'YEKT' => 18000,
- );
-
- /**
- * Cached PCRE for SimplePie_Parse_Date::$day
- *
- * @access protected
- * @var string
- */
- var $day_pcre;
-
- /**
- * Cached PCRE for SimplePie_Parse_Date::$month
- *
- * @access protected
- * @var string
- */
- var $month_pcre;
-
- /**
- * Array of user-added callback methods
- *
- * @access private
- * @var array
- */
- var $built_in = array();
-
- /**
- * Array of user-added callback methods
- *
- * @access private
- * @var array
- */
- var $user = array();
-
- /**
- * Create new SimplePie_Parse_Date object, and set self::day_pcre,
- * self::month_pcre, and self::built_in
- *
- * @access private
- */
- public function __construct()
- {
- $this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')';
- $this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')';
-
- static $cache;
- if (!isset($cache[get_class($this)]))
- {
- $all_methods = get_class_methods($this);
-
- foreach ($all_methods as $method)
- {
- if (strtolower(substr($method, 0, 5)) === 'date_')
- {
- $cache[get_class($this)][] = $method;
- }
- }
- }
-
- foreach ($cache[get_class($this)] as $method)
- {
- $this->built_in[] = $method;
- }
- }
-
- /**
- * Get the object
- *
- * @access public
- */
- public static function get()
- {
- static $object;
- if (!$object)
- {
- $object = new SimplePie_Parse_Date;
- }
- return $object;
- }
-
- /**
- * Parse a date
- *
- * @final
- * @access public
- * @param string $date Date to parse
- * @return int Timestamp corresponding to date string, or false on failure
- */
- public function parse($date)
- {
- foreach ($this->user as $method)
- {
- if (($returned = call_user_func($method, $date)) !== false)
- {
- return $returned;
- }
- }
-
- foreach ($this->built_in as $method)
- {
- if (($returned = call_user_func(array($this, $method), $date)) !== false)
- {
- return $returned;
- }
- }
-
- return false;
- }
-
- /**
- * Add a callback method to parse a date
- *
- * @final
- * @access public
- * @param callback $callback
- */
- public function add_callback($callback)
- {
- if (is_callable($callback))
- {
- $this->user[] = $callback;
- }
- else
- {
- trigger_error('User-supplied function must be a valid callback', E_USER_WARNING);
- }
- }
-
- /**
- * Parse a superset of W3C-DTF (allows hyphens and colons to be omitted, as
- * well as allowing any of upper or lower case "T", horizontal tabs, or
- * spaces to be used as the time seperator (including more than one))
- *
- * @access protected
- * @return int Timestamp
- */
- public function date_w3cdtf($date)
- {
- static $pcre;
- if (!$pcre)
- {
- $year = '([0-9]{4})';
- $month = $day = $hour = $minute = $second = '([0-9]{2})';
- $decimal = '([0-9]*)';
- $zone = '(?:(Z)|([+\-])([0-9]{1,2}):?([0-9]{1,2}))';
- $pcre = '/^' . $year . '(?:-?' . $month . '(?:-?' . $day . '(?:[Tt\x09\x20]+' . $hour . '(?::?' . $minute . '(?::?' . $second . '(?:.' . $decimal . ')?)?)?' . $zone . ')?)?)?$/';
- }
- if (preg_match($pcre, $date, $match))
- {
- /*
- Capturing subpatterns:
- 1: Year
- 2: Month
- 3: Day
- 4: Hour
- 5: Minute
- 6: Second
- 7: Decimal fraction of a second
- 8: Zulu
- 9: Timezone ±
- 10: Timezone hours
- 11: Timezone minutes
- */
-
- // Fill in empty matches
- for ($i = count($match); $i <= 3; $i++)
- {
- $match[$i] = '1';
- }
-
- for ($i = count($match); $i <= 7; $i++)
- {
- $match[$i] = '0';
- }
-
- // Numeric timezone
- if (isset($match[9]) && $match[9] !== '')
- {
- $timezone = $match[10] * 3600;
- $timezone += $match[11] * 60;
- if ($match[9] === '-')
- {
- $timezone = 0 - $timezone;
- }
- }
- else
- {
- $timezone = 0;
- }
-
- // Convert the number of seconds to an integer, taking decimals into account
- $second = round($match[6] + $match[7] / pow(10, strlen($match[7])));
-
- return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Remove RFC822 comments
- *
- * @access protected
- * @param string $data Data to strip comments from
- * @return string Comment stripped string
- */
- public function remove_rfc2822_comments($string)
- {
- $string = (string) $string;
- $position = 0;
- $length = strlen($string);
- $depth = 0;
-
- $output = '';
-
- while ($position < $length && ($pos = strpos($string, '(', $position)) !== false)
- {
- $output .= substr($string, $position, $pos - $position);
- $position = $pos + 1;
- if ($string[$pos - 1] !== '\\')
- {
- $depth++;
- while ($depth && $position < $length)
- {
- $position += strcspn($string, '()', $position);
- if ($string[$position - 1] === '\\')
- {
- $position++;
- continue;
- }
- elseif (isset($string[$position]))
- {
- switch ($string[$position])
- {
- case '(':
- $depth++;
- break;
-
- case ')':
- $depth--;
- break;
- }
- $position++;
- }
- else
- {
- break;
- }
- }
- }
- else
- {
- $output .= '(';
- }
- }
- $output .= substr($string, $position);
-
- return $output;
- }
-
- /**
- * Parse RFC2822's date format
- *
- * @access protected
- * @return int Timestamp
- */
- public function date_rfc2822($date)
- {
- static $pcre;
- if (!$pcre)
- {
- $wsp = '[\x09\x20]';
- $fws = '(?:' . $wsp . '+|' . $wsp . '*(?:\x0D\x0A' . $wsp . '+)+)';
- $optional_fws = $fws . '?';
- $day_name = $this->day_pcre;
- $month = $this->month_pcre;
- $day = '([0-9]{1,2})';
- $hour = $minute = $second = '([0-9]{2})';
- $year = '([0-9]{2,4})';
- $num_zone = '([+\-])([0-9]{2})([0-9]{2})';
- $character_zone = '([A-Z]{1,5})';
- $zone = '(?:' . $num_zone . '|' . $character_zone . ')';
- $pcre = '/(?:' . $optional_fws . $day_name . $optional_fws . ',)?' . $optional_fws . $day . $fws . $month . $fws . $year . $fws . $hour . $optional_fws . ':' . $optional_fws . $minute . '(?:' . $optional_fws . ':' . $optional_fws . $second . ')?' . $fws . $zone . '/i';
- }
- if (preg_match($pcre, $this->remove_rfc2822_comments($date), $match))
- {
- /*
- Capturing subpatterns:
- 1: Day name
- 2: Day
- 3: Month
- 4: Year
- 5: Hour
- 6: Minute
- 7: Second
- 8: Timezone ±
- 9: Timezone hours
- 10: Timezone minutes
- 11: Alphabetic timezone
- */
-
- // Find the month number
- $month = $this->month[strtolower($match[3])];
-
- // Numeric timezone
- if ($match[8] !== '')
- {
- $timezone = $match[9] * 3600;
- $timezone += $match[10] * 60;
- if ($match[8] === '-')
- {
- $timezone = 0 - $timezone;
- }
- }
- // Character timezone
- elseif (isset($this->timezone[strtoupper($match[11])]))
- {
- $timezone = $this->timezone[strtoupper($match[11])];
- }
- // Assume everything else to be -0000
- else
- {
- $timezone = 0;
- }
-
- // Deal with 2/3 digit years
- if ($match[4] < 50)
- {
- $match[4] += 2000;
- }
- elseif ($match[4] < 1000)
- {
- $match[4] += 1900;
- }
-
- // Second is optional, if it is empty set it to zero
- if ($match[7] !== '')
- {
- $second = $match[7];
- }
- else
- {
- $second = 0;
- }
-
- return gmmktime($match[5], $match[6], $second, $month, $match[2], $match[4]) - $timezone;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Parse RFC850's date format
- *
- * @access protected
- * @return int Timestamp
- */
- public function date_rfc850($date)
- {
- static $pcre;
- if (!$pcre)
- {
- $space = '[\x09\x20]+';
- $day_name = $this->day_pcre;
- $month = $this->month_pcre;
- $day = '([0-9]{1,2})';
- $year = $hour = $minute = $second = '([0-9]{2})';
- $zone = '([A-Z]{1,5})';
- $pcre = '/^' . $day_name . ',' . $space . $day . '-' . $month . '-' . $year . $space . $hour . ':' . $minute . ':' . $second . $space . $zone . '$/i';
- }
- if (preg_match($pcre, $date, $match))
- {
- /*
- Capturing subpatterns:
- 1: Day name
- 2: Day
- 3: Month
- 4: Year
- 5: Hour
- 6: Minute
- 7: Second
- 8: Timezone
- */
-
- // Month
- $month = $this->month[strtolower($match[3])];
-
- // Character timezone
- if (isset($this->timezone[strtoupper($match[8])]))
- {
- $timezone = $this->timezone[strtoupper($match[8])];
- }
- // Assume everything else to be -0000
- else
- {
- $timezone = 0;
- }
-
- // Deal with 2 digit year
- if ($match[4] < 50)
- {
- $match[4] += 2000;
- }
- else
- {
- $match[4] += 1900;
- }
-
- return gmmktime($match[5], $match[6], $match[7], $month, $match[2], $match[4]) - $timezone;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Parse C99's asctime()'s date format
- *
- * @access protected
- * @return int Timestamp
- */
- public function date_asctime($date)
- {
- static $pcre;
- if (!$pcre)
- {
- $space = '[\x09\x20]+';
- $wday_name = $this->day_pcre;
- $mon_name = $this->month_pcre;
- $day = '([0-9]{1,2})';
- $hour = $sec = $min = '([0-9]{2})';
- $year = '([0-9]{4})';
- $terminator = '\x0A?\x00?';
- $pcre = '/^' . $wday_name . $space . $mon_name . $space . $day . $space . $hour . ':' . $min . ':' . $sec . $space . $year . $terminator . '$/i';
- }
- if (preg_match($pcre, $date, $match))
- {
- /*
- Capturing subpatterns:
- 1: Day name
- 2: Month
- 3: Day
- 4: Hour
- 5: Minute
- 6: Second
- 7: Year
- */
-
- $month = $this->month[strtolower($match[2])];
- return gmmktime($match[4], $match[5], $match[6], $month, $match[3], $match[7]);
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Parse dates using strtotime()
- *
- * @access protected
- * @return int Timestamp
- */
- public function date_strtotime($date)
- {
- $strtotime = strtotime($date);
- if ($strtotime === -1 || $strtotime === false)
- {
- return false;
- }
- else
- {
- return $strtotime;
- }
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/Parser.php b/3rdparty/simplepie/library/SimplePie/Parser.php
deleted file mode 100755
index d698552ca..000000000
--- a/3rdparty/simplepie/library/SimplePie/Parser.php
+++ /dev/null
@@ -1,407 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Parses XML into something sane
- *
- *
- * This class can be overloaded with {@see SimplePie::set_parser_class()}
- *
- * @package SimplePie
- * @subpackage Parsing
- */
-class SimplePie_Parser
-{
- var $error_code;
- var $error_string;
- var $current_line;
- var $current_column;
- var $current_byte;
- var $separator = ' ';
- var $namespace = array('');
- var $element = array('');
- var $xml_base = array('');
- var $xml_base_explicit = array(false);
- var $xml_lang = array('');
- var $data = array();
- var $datas = array(array());
- var $current_xhtml_construct = -1;
- var $encoding;
- protected $registry;
-
- public function set_registry(SimplePie_Registry $registry)
- {
- $this->registry = $registry;
- }
-
- public function parse(&$data, $encoding)
- {
- // Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character
- if (strtoupper($encoding) === 'US-ASCII')
- {
- $this->encoding = 'UTF-8';
- }
- else
- {
- $this->encoding = $encoding;
- }
-
- // Strip BOM:
- // UTF-32 Big Endian BOM
- if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
- {
- $data = substr($data, 4);
- }
- // UTF-32 Little Endian BOM
- elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
- {
- $data = substr($data, 4);
- }
- // UTF-16 Big Endian BOM
- elseif (substr($data, 0, 2) === "\xFE\xFF")
- {
- $data = substr($data, 2);
- }
- // UTF-16 Little Endian BOM
- elseif (substr($data, 0, 2) === "\xFF\xFE")
- {
- $data = substr($data, 2);
- }
- // UTF-8 BOM
- elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
- {
- $data = substr($data, 3);
- }
-
- if (substr($data, 0, 5) === '<?xml' && strspn(substr($data, 5, 1), "\x09\x0A\x0D\x20") && ($pos = strpos($data, '?>')) !== false)
- {
- $declaration = $this->registry->create('XML_Declaration_Parser', array(substr($data, 5, $pos - 5)));
- if ($declaration->parse())
- {
- $data = substr($data, $pos + 2);
- $data = '<?xml version="' . $declaration->version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' . $data;
- }
- else
- {
- $this->error_string = 'SimplePie bug! Please report this!';
- return false;
- }
- }
-
- $return = true;
-
- static $xml_is_sane = null;
- if ($xml_is_sane === null)
- {
- $parser_check = xml_parser_create();
- xml_parse_into_struct($parser_check, '<foo>&amp;</foo>', $values);
- xml_parser_free($parser_check);
- $xml_is_sane = isset($values[0]['value']);
- }
-
- // Create the parser
- if ($xml_is_sane)
- {
- $xml = xml_parser_create_ns($this->encoding, $this->separator);
- xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);
- xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0);
- xml_set_object($xml, $this);
- xml_set_character_data_handler($xml, 'cdata');
- xml_set_element_handler($xml, 'tag_open', 'tag_close');
-
- // Parse!
- if (!xml_parse($xml, $data, true))
- {
- $this->error_code = xml_get_error_code($xml);
- $this->error_string = xml_error_string($this->error_code);
- $return = false;
- }
- $this->current_line = xml_get_current_line_number($xml);
- $this->current_column = xml_get_current_column_number($xml);
- $this->current_byte = xml_get_current_byte_index($xml);
- xml_parser_free($xml);
- return $return;
- }
- else
- {
- libxml_clear_errors();
- $xml = new XMLReader();
- $xml->xml($data);
- while (@$xml->read())
- {
- switch ($xml->nodeType)
- {
-
- case constant('XMLReader::END_ELEMENT'):
- if ($xml->namespaceURI !== '')
- {
- $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
- }
- else
- {
- $tagName = $xml->localName;
- }
- $this->tag_close(null, $tagName);
- break;
- case constant('XMLReader::ELEMENT'):
- $empty = $xml->isEmptyElement;
- if ($xml->namespaceURI !== '')
- {
- $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
- }
- else
- {
- $tagName = $xml->localName;
- }
- $attributes = array();
- while ($xml->moveToNextAttribute())
- {
- if ($xml->namespaceURI !== '')
- {
- $attrName = $xml->namespaceURI . $this->separator . $xml->localName;
- }
- else
- {
- $attrName = $xml->localName;
- }
- $attributes[$attrName] = $xml->value;
- }
- $this->tag_open(null, $tagName, $attributes);
- if ($empty)
- {
- $this->tag_close(null, $tagName);
- }
- break;
- case constant('XMLReader::TEXT'):
-
- case constant('XMLReader::CDATA'):
- $this->cdata(null, $xml->value);
- break;
- }
- }
- if ($error = libxml_get_last_error())
- {
- $this->error_code = $error->code;
- $this->error_string = $error->message;
- $this->current_line = $error->line;
- $this->current_column = $error->column;
- return false;
- }
- else
- {
- return true;
- }
- }
- }
-
- public function get_error_code()
- {
- return $this->error_code;
- }
-
- public function get_error_string()
- {
- return $this->error_string;
- }
-
- public function get_current_line()
- {
- return $this->current_line;
- }
-
- public function get_current_column()
- {
- return $this->current_column;
- }
-
- public function get_current_byte()
- {
- return $this->current_byte;
- }
-
- public function get_data()
- {
- return $this->data;
- }
-
- public function tag_open($parser, $tag, $attributes)
- {
- list($this->namespace[], $this->element[]) = $this->split_ns($tag);
-
- $attribs = array();
- foreach ($attributes as $name => $value)
- {
- list($attrib_namespace, $attribute) = $this->split_ns($name);
- $attribs[$attrib_namespace][$attribute] = $value;
- }
-
- if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base']))
- {
- $base = $this->registry->call('Misc', 'absolutize_url', array($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base)));
- if ($base !== false)
- {
- $this->xml_base[] = $base;
- $this->xml_base_explicit[] = true;
- }
- }
- else
- {
- $this->xml_base[] = end($this->xml_base);
- $this->xml_base_explicit[] = end($this->xml_base_explicit);
- }
-
- if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang']))
- {
- $this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang'];
- }
- else
- {
- $this->xml_lang[] = end($this->xml_lang);
- }
-
- if ($this->current_xhtml_construct >= 0)
- {
- $this->current_xhtml_construct++;
- if (end($this->namespace) === SIMPLEPIE_NAMESPACE_XHTML)
- {
- $this->data['data'] .= '<' . end($this->element);
- if (isset($attribs['']))
- {
- foreach ($attribs[''] as $name => $value)
- {
- $this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"';
- }
- }
- $this->data['data'] .= '>';
- }
- }
- else
- {
- $this->datas[] =& $this->data;
- $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][];
- $this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang));
- if ((end($this->namespace) === SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] === 'xml')
- || (end($this->namespace) === SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] === 'xhtml')
- || (end($this->namespace) === SIMPLEPIE_NAMESPACE_RSS_20 && in_array(end($this->element), array('title')))
- || (end($this->namespace) === SIMPLEPIE_NAMESPACE_RSS_090 && in_array(end($this->element), array('title')))
- || (end($this->namespace) === SIMPLEPIE_NAMESPACE_RSS_10 && in_array(end($this->element), array('title'))))
- {
- $this->current_xhtml_construct = 0;
- }
- }
- }
-
- public function cdata($parser, $cdata)
- {
- if ($this->current_xhtml_construct >= 0)
- {
- $this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding);
- }
- else
- {
- $this->data['data'] .= $cdata;
- }
- }
-
- public function tag_close($parser, $tag)
- {
- if ($this->current_xhtml_construct >= 0)
- {
- $this->current_xhtml_construct--;
- if (end($this->namespace) === SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param')))
- {
- $this->data['data'] .= '</' . end($this->element) . '>';
- }
- }
- if ($this->current_xhtml_construct === -1)
- {
- $this->data =& $this->datas[count($this->datas) - 1];
- array_pop($this->datas);
- }
-
- array_pop($this->element);
- array_pop($this->namespace);
- array_pop($this->xml_base);
- array_pop($this->xml_base_explicit);
- array_pop($this->xml_lang);
- }
-
- public function split_ns($string)
- {
- static $cache = array();
- if (!isset($cache[$string]))
- {
- if ($pos = strpos($string, $this->separator))
- {
- static $separator_length;
- if (!$separator_length)
- {
- $separator_length = strlen($this->separator);
- }
- $namespace = substr($string, 0, $pos);
- $local_name = substr($string, $pos + $separator_length);
- if (strtolower($namespace) === SIMPLEPIE_NAMESPACE_ITUNES)
- {
- $namespace = SIMPLEPIE_NAMESPACE_ITUNES;
- }
-
- // Normalize the Media RSS namespaces
- if ($namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG ||
- $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG2 ||
- $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG3 ||
- $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG4 ||
- $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG5 )
- {
- $namespace = SIMPLEPIE_NAMESPACE_MEDIARSS;
- }
- $cache[$string] = array($namespace, $local_name);
- }
- else
- {
- $cache[$string] = array('', $string);
- }
- }
- return $cache[$string];
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Rating.php b/3rdparty/simplepie/library/SimplePie/Rating.php
deleted file mode 100755
index 8689e5dfb..000000000
--- a/3rdparty/simplepie/library/SimplePie/Rating.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Handles `<media:rating>` or `<itunes:explicit>` tags as defined in Media RSS and iTunes RSS respectively
- *
- * Used by {@see SimplePie_Enclosure::get_rating()} and {@see SimplePie_Enclosure::get_ratings()}
- *
- * This class can be overloaded with {@see SimplePie::set_rating_class()}
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Rating
-{
- /**
- * Rating scheme
- *
- * @var string
- * @see get_scheme()
- */
- var $scheme;
-
- /**
- * Rating value
- *
- * @var string
- * @see get_value()
- */
- var $value;
-
- /**
- * Constructor, used to input the data
- *
- * For documentation on all the parameters, see the corresponding
- * properties and their accessors
- */
- public function __construct($scheme = null, $value = null)
- {
- $this->scheme = $scheme;
- $this->value = $value;
- }
-
- /**
- * String-ified version
- *
- * @return string
- */
- public function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- /**
- * Get the organizational scheme for the rating
- *
- * @return string|null
- */
- public function get_scheme()
- {
- if ($this->scheme !== null)
- {
- return $this->scheme;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the value of the rating
- *
- * @return string|null
- */
- public function get_value()
- {
- if ($this->value !== null)
- {
- return $this->value;
- }
- else
- {
- return null;
- }
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Registry.php b/3rdparty/simplepie/library/SimplePie/Registry.php
deleted file mode 100755
index 1072cdebb..000000000
--- a/3rdparty/simplepie/library/SimplePie/Registry.php
+++ /dev/null
@@ -1,225 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Handles creating objects and calling methods
- *
- * Access this via {@see SimplePie::get_registry()}
- *
- * @package SimplePie
- */
-class SimplePie_Registry
-{
- /**
- * Default class mapping
- *
- * Overriding classes *must* subclass these.
- *
- * @var array
- */
- protected $default = array(
- 'Cache' => 'SimplePie_Cache',
- 'Locator' => 'SimplePie_Locator',
- 'Parser' => 'SimplePie_Parser',
- 'File' => 'SimplePie_File',
- 'Sanitize' => 'SimplePie_Sanitize',
- 'Item' => 'SimplePie_Item',
- 'Author' => 'SimplePie_Author',
- 'Category' => 'SimplePie_Category',
- 'Enclosure' => 'SimplePie_Enclosure',
- 'Caption' => 'SimplePie_Caption',
- 'Copyright' => 'SimplePie_Copyright',
- 'Credit' => 'SimplePie_Credit',
- 'Rating' => 'SimplePie_Rating',
- 'Restriction' => 'SimplePie_Restriction',
- 'Content_Type_Sniffer' => 'SimplePie_Content_Type_Sniffer',
- 'Source' => 'SimplePie_Source',
- 'Misc' => 'SimplePie_Misc',
- 'XML_Declaration_Parser' => 'SimplePie_XML_Declaration_Parser',
- 'Parse_Date' => 'SimplePie_Parse_Date',
- );
-
- /**
- * Class mapping
- *
- * @see register()
- * @var array
- */
- protected $classes = array();
-
- /**
- * Legacy classes
- *
- * @see register()
- * @var array
- */
- protected $legacy = array();
-
- /**
- * Constructor
- *
- * No-op
- */
- public function __construct() { }
-
- /**
- * Register a class
- *
- * @param string $type See {@see $default} for names
- * @param string $class Class name, must subclass the corresponding default
- * @param bool $legacy Whether to enable legacy support for this class
- * @return bool Successfulness
- */
- public function register($type, $class, $legacy = false)
- {
- if (!is_subclass_of($class, $this->default[$type]))
- {
- return false;
- }
-
- $this->classes[$type] = $class;
-
- if ($legacy)
- {
- $this->legacy[] = $class;
- }
-
- return true;
- }
-
- /**
- * Get the class registered for a type
- *
- * Where possible, use {@see create()} or {@see call()} instead
- *
- * @param string $type
- * @return string|null
- */
- public function get_class($type)
- {
- if (!empty($this->classes[$type]))
- {
- return $this->classes[$type];
- }
- if (!empty($this->default[$type]))
- {
- return $this->default[$type];
- }
-
- return null;
- }
-
- /**
- * Create a new instance of a given type
- *
- * @param string $type
- * @param array $parameters Parameters to pass to the constructor
- * @return object Instance of class
- */
- public function &create($type, $parameters = array())
- {
- $class = $this->get_class($type);
-
- if (in_array($class, $this->legacy))
- {
- switch ($type)
- {
- case 'locator':
- // Legacy: file, timeout, useragent, file_class, max_checked_feeds, content_type_sniffer_class
- // Specified: file, timeout, useragent, max_checked_feeds
- $replacement = array($this->get_class('file'), $parameters[3], $this->get_class('content_type_sniffer'));
- array_splice($parameters, 3, 1, $replacement);
- break;
- }
- }
-
- if (!method_exists($class, '__construct'))
- {
- $instance = new $class;
- }
- else
- {
- $reflector = new ReflectionClass($class);
- $instance = $reflector->newInstanceArgs($parameters);
- }
-
- if (method_exists($instance, 'set_registry'))
- {
- $instance->set_registry($this);
- }
- return $instance;
- }
-
- /**
- * Call a static method for a type
- *
- * @param string $type
- * @param string $method
- * @param array $parameters
- * @return mixed
- */
- public function &call($type, $method, $parameters = array())
- {
- $class = $this->get_class($type);
-
- if (in_array($class, $this->legacy))
- {
- switch ($type)
- {
- case 'Cache':
- // For backwards compatibility with old non-static
- // Cache::create() methods
- if ($method === 'get_handler')
- {
- $result = @call_user_func_array(array($class, 'create'), $parameters);
- return $result;
- }
- break;
- }
- }
-
- $result = call_user_func_array(array($class, $method), $parameters);
- return $result;
- }
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/library/SimplePie/Restriction.php b/3rdparty/simplepie/library/SimplePie/Restriction.php
deleted file mode 100755
index 4ba371bfb..000000000
--- a/3rdparty/simplepie/library/SimplePie/Restriction.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Handles `<media:restriction>` as defined in Media RSS
- *
- * Used by {@see SimplePie_Enclosure::get_restriction()} and {@see SimplePie_Enclosure::get_restrictions()}
- *
- * This class can be overloaded with {@see SimplePie::set_restriction_class()}
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Restriction
-{
- /**
- * Relationship ('allow'/'deny')
- *
- * @var string
- * @see get_relationship()
- */
- var $relationship;
-
- /**
- * Type of restriction
- *
- * @var string
- * @see get_type()
- */
- var $type;
-
- /**
- * Restricted values
- *
- * @var string
- * @see get_value()
- */
- var $value;
-
- /**
- * Constructor, used to input the data
- *
- * For documentation on all the parameters, see the corresponding
- * properties and their accessors
- */
- public function __construct($relationship = null, $type = null, $value = null)
- {
- $this->relationship = $relationship;
- $this->type = $type;
- $this->value = $value;
- }
-
- /**
- * String-ified version
- *
- * @return string
- */
- public function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- /**
- * Get the relationship
- *
- * @return string|null Either 'allow' or 'deny'
- */
- public function get_relationship()
- {
- if ($this->relationship !== null)
- {
- return $this->relationship;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the type
- *
- * @return string|null
- */
- public function get_type()
- {
- if ($this->type !== null)
- {
- return $this->type;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Get the list of restricted things
- *
- * @return string|null
- */
- public function get_value()
- {
- if ($this->value !== null)
- {
- return $this->value;
- }
- else
- {
- return null;
- }
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Sanitize.php b/3rdparty/simplepie/library/SimplePie/Sanitize.php
deleted file mode 100755
index 6810cc49f..000000000
--- a/3rdparty/simplepie/library/SimplePie/Sanitize.php
+++ /dev/null
@@ -1,549 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Used for data cleanup and post-processing
- *
- *
- * This class can be overloaded with {@see SimplePie::set_sanitize_class()}
- *
- * @package SimplePie
- * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shorten a string while preserving HTML tags
- */
-class SimplePie_Sanitize
-{
- // Private vars
- var $base;
-
- // Options
- var $remove_div = true;
- var $image_handler = '';
- var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
- var $encode_instead_of_strip = false;
- var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
- var $strip_comments = false;
- var $output_encoding = 'UTF-8';
- var $enable_cache = true;
- var $cache_location = './cache';
- var $cache_name_function = 'md5';
- var $timeout = 10;
- var $useragent = '';
- var $force_fsockopen = false;
- var $replace_url_attributes = null;
-
- public function __construct()
- {
- // Set defaults
- $this->set_url_replacements(null);
- }
-
- public function remove_div($enable = true)
- {
- $this->remove_div = (bool) $enable;
- }
-
- public function set_image_handler($page = false)
- {
- if ($page)
- {
- $this->image_handler = (string) $page;
- }
- else
- {
- $this->image_handler = false;
- }
- }
-
- public function set_registry(SimplePie_Registry $registry)
- {
- $this->registry = $registry;
- }
-
- public function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache')
- {
- if (isset($enable_cache))
- {
- $this->enable_cache = (bool) $enable_cache;
- }
-
- if ($cache_location)
- {
- $this->cache_location = (string) $cache_location;
- }
-
- if ($cache_name_function)
- {
- $this->cache_name_function = (string) $cache_name_function;
- }
- }
-
- public function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false)
- {
- if ($timeout)
- {
- $this->timeout = (string) $timeout;
- }
-
- if ($useragent)
- {
- $this->useragent = (string) $useragent;
- }
-
- if ($force_fsockopen)
- {
- $this->force_fsockopen = (string) $force_fsockopen;
- }
- }
-
- public function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'))
- {
- if ($tags)
- {
- if (is_array($tags))
- {
- $this->strip_htmltags = $tags;
- }
- else
- {
- $this->strip_htmltags = explode(',', $tags);
- }
- }
- else
- {
- $this->strip_htmltags = false;
- }
- }
-
- public function encode_instead_of_strip($encode = false)
- {
- $this->encode_instead_of_strip = (bool) $encode;
- }
-
- public function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
- {
- if ($attribs)
- {
- if (is_array($attribs))
- {
- $this->strip_attributes = $attribs;
- }
- else
- {
- $this->strip_attributes = explode(',', $attribs);
- }
- }
- else
- {
- $this->strip_attributes = false;
- }
- }
-
- public function strip_comments($strip = false)
- {
- $this->strip_comments = (bool) $strip;
- }
-
- public function set_output_encoding($encoding = 'UTF-8')
- {
- $this->output_encoding = (string) $encoding;
- }
-
- /**
- * Set element/attribute key/value pairs of HTML attributes
- * containing URLs that need to be resolved relative to the feed
- *
- * Defaults to |a|@href, |area|@href, |blockquote|@cite, |del|@cite,
- * |form|@action, |img|@longdesc, |img|@src, |input|@src, |ins|@cite,
- * |q|@cite
- *
- * @since 1.0
- * @param array|null $element_attribute Element/attribute key/value pairs, null for default
- */
- public function set_url_replacements($element_attribute = null)
- {
- if ($element_attribute === null)
- {
- $element_attribute = array(
- 'a' => 'href',
- 'area' => 'href',
- 'blockquote' => 'cite',
- 'del' => 'cite',
- 'form' => 'action',
- 'img' => array(
- 'longdesc',
- 'src'
- ),
- 'input' => 'src',
- 'ins' => 'cite',
- 'q' => 'cite'
- );
- }
- $this->replace_url_attributes = (array) $element_attribute;
- }
-
- public function sanitize($data, $type, $base = '')
- {
- $data = trim($data);
- if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI)
- {
- if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML)
- {
- if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data))
- {
- $type |= SIMPLEPIE_CONSTRUCT_HTML;
- }
- else
- {
- $type |= SIMPLEPIE_CONSTRUCT_TEXT;
- }
- }
-
- if ($type & SIMPLEPIE_CONSTRUCT_BASE64)
- {
- $data = base64_decode($data);
- }
-
- if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML))
- {
-
- $document = new DOMDocument();
- $document->encoding = 'UTF-8';
- $data = $this->preprocess($data, $type);
-
- set_error_handler(array('SimplePie_Misc', 'silence_errors'));
- $document->loadHTML($data);
- restore_error_handler();
-
- // Strip comments
- if ($this->strip_comments)
- {
- $xpath = new DOMXPath($document);
- $comments = $xpath->query('//comment()');
-
- foreach ($comments as $comment)
- {
- $comment->parentNode->removeChild($comment);
- }
- }
-
- // Strip out HTML tags and attributes that might cause various security problems.
- // Based on recommendations by Mark Pilgrim at:
- // http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely
- if ($this->strip_htmltags)
- {
- foreach ($this->strip_htmltags as $tag)
- {
- $this->strip_tag($tag, $document, $type);
- }
- }
-
- if ($this->strip_attributes)
- {
- foreach ($this->strip_attributes as $attrib)
- {
- $this->strip_attr($attrib, $document);
- }
- }
-
- // Replace relative URLs
- $this->base = $base;
- foreach ($this->replace_url_attributes as $element => $attributes)
- {
- $this->replace_urls($document, $element, $attributes);
- }
-
- // If image handling (caching, etc.) is enabled, cache and rewrite all the image tags.
- if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache)
- {
- $images = $document->getElementsByTagName('img');
- foreach ($images as $img)
- {
- if ($img->hasAttribute('src'))
- {
- $image_url = call_user_func($this->cache_name_function, $img->getAttribute('src'));
- $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, $image_url, 'spi'));
-
- if ($cache->load())
- {
- $img->setAttribute('src', $this->image_handler . $image_url);
- }
- else
- {
- $file = $this->registry->create('File', array($img['attribs']['src']['data'], $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen));
- $headers = $file->headers;
-
- if ($file->success && ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)))
- {
- if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
- {
- $img->setAttribute('src', $this->image_handler . $image_url);
- }
- else
- {
- trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
- }
- }
- }
- }
- }
- }
-
- // Remove the DOCTYPE
- // Seems to cause segfaulting if we don't do this
- if ($document->firstChild instanceof DOMDocumentType)
- {
- $document->removeChild($document->firstChild);
- }
-
- // Move everything from the body to the root
- $real_body = $document->getElementsByTagName('body')->item(0)->childNodes->item(0);
- $document->replaceChild($real_body, $document->firstChild);
-
- // Finally, convert to a HTML string
- $data = trim($document->saveHTML());
-
- if ($this->remove_div)
- {
- $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '', $data);
- $data = preg_replace('/<\/div>$/', '', $data);
- }
- else
- {
- $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data);
- }
- }
-
- if ($type & SIMPLEPIE_CONSTRUCT_IRI)
- {
- $absolute = $this->registry->call('Misc', 'absolutize_url', array($data, $base));
- if ($absolute !== false)
- {
- $data = $absolute;
- }
- }
-
- if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI))
- {
- $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
- }
-
- if ($this->output_encoding !== 'UTF-8')
- {
- $data = $this->registry->call('Misc', 'change_encoding', array($data, 'UTF-8', $this->output_encoding));
- }
- }
- return $data;
- }
-
- protected function preprocess($html, $type)
- {
- $ret = '';
- if ($type & ~SIMPLEPIE_CONSTRUCT_XHTML)
- {
- // Atom XHTML constructs are wrapped with a div by default
- // Note: No protection if $html contains a stray </div>!
- $html = '<div>' . $html . '</div>';
- $ret .= '<!DOCTYPE html>';
- $content_type = 'text/html';
- }
- else
- {
- $ret .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
- $content_type = 'application/xhtml+xml';
- }
-
- $ret .= '<html><head>';
- $ret .= '<meta http-equiv="Content-Type" content="' . $content_type . '; charset=utf-8" />';
- $ret .= '</head><body>' . $html . '</body></html>';
- return $ret;
- }
-
- public function replace_urls($document, $tag, $attributes)
- {
- if (!is_array($attributes))
- {
- $attributes = array($attributes);
- }
-
- if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags))
- {
- $elements = $document->getElementsByTagName($tag);
- foreach ($elements as $element)
- {
- foreach ($attributes as $attribute)
- {
- if ($element->hasAttribute($attribute))
- {
- $value = $this->registry->call('Misc', 'absolutize_url', array($element->getAttribute($attribute), $this->base));
- if ($value !== false)
- {
- $element->setAttribute($attribute, $value);
- }
- }
- }
- }
- }
- }
-
- public function do_strip_htmltags($match)
- {
- if ($this->encode_instead_of_strip)
- {
- if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
- {
- $match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8');
- $match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8');
- return "&lt;$match[1]$match[2]&gt;$match[3]&lt;/$match[1]&gt;";
- }
- else
- {
- return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8');
- }
- }
- elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
- {
- return $match[4];
- }
- else
- {
- return '';
- }
- }
-
- protected function strip_tag($tag, $document, $type)
- {
- $xpath = new DOMXPath($document);
- $elements = $xpath->query('body//' . $tag);
- if ($this->encode_instead_of_strip)
- {
- foreach ($elements as $element)
- {
- $fragment = $document->createDocumentFragment();
-
- // For elements which aren't script or style, include the tag itself
- if (!in_array($tag, array('script', 'style')))
- {
- $text = '<' . $tag;
- if ($element->hasAttributes())
- {
- $attrs = array();
- foreach ($element->attributes as $name => $attr)
- {
- $value = $attr->value;
-
- // In XHTML, empty values should never exist, so we repeat the value
- if (empty($value) && ($type & SIMPLEPIE_CONSTRUCT_XHTML))
- {
- $value = $name;
- }
- // For HTML, empty is fine
- elseif (empty($value) && ($type & SIMPLEPIE_CONSTRUCT_HTML))
- {
- $attrs[] = $name;
- continue;
- }
-
- // Standard attribute text
- $attrs[] = $name . '="' . $attr->value . '"';
- }
- $text .= ' ' . implode(' ', $attrs);
- }
- $text .= '>';
- $fragment->appendChild(new DOMText($text));
- }
-
- $number = $element->childNodes->length;
- for ($i = $number; $i > 0; $i--)
- {
- $child = $element->childNodes->item(0);
- $fragment->appendChild($child);
- }
-
- if (!in_array($tag, array('script', 'style')))
- {
- $fragment->appendChild(new DOMText('</' . $tag . '>'));
- }
-
- $element->parentNode->replaceChild($fragment, $element);
- }
-
- return;
- }
- elseif (in_array($tag, array('script', 'style')))
- {
- foreach ($elements as $element)
- {
- $element->parentNode->removeChild($element);
- }
-
- return;
- }
- else
- {
- foreach ($elements as $element)
- {
- $fragment = $document->createDocumentFragment();
- $number = $element->childNodes->length;
- for ($i = $number; $i > 0; $i--)
- {
- $child = $element->childNodes->item(0);
- $fragment->appendChild($child);
- }
-
- $element->parentNode->replaceChild($fragment, $element);
- }
- }
- }
-
- protected function strip_attr($attrib, $document)
- {
- $xpath = new DOMXPath($document);
- $elements = $xpath->query('//*[@' . $attrib . ']');
-
- foreach ($elements as $element)
- {
- $element->removeAttribute($attrib);
- }
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/Source.php b/3rdparty/simplepie/library/SimplePie/Source.php
deleted file mode 100755
index 51d8e6c25..000000000
--- a/3rdparty/simplepie/library/SimplePie/Source.php
+++ /dev/null
@@ -1,611 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * Handles `<atom:source>`
- *
- * Used by {@see SimplePie_Item::get_source()}
- *
- * This class can be overloaded with {@see SimplePie::set_source_class()}
- *
- * @package SimplePie
- * @subpackage API
- */
-class SimplePie_Source
-{
- var $item;
- var $data = array();
- protected $registry;
-
- public function __construct($item, $data)
- {
- $this->item = $item;
- $this->data = $data;
- }
-
- public function set_registry(SimplePie_Registry $registry)
- {
- $this->registry = $registry;
- }
-
- public function __toString()
- {
- return md5(serialize($this->data));
- }
-
- public function get_source_tags($namespace, $tag)
- {
- if (isset($this->data['child'][$namespace][$tag]))
- {
- return $this->data['child'][$namespace][$tag];
- }
- else
- {
- return null;
- }
- }
-
- public function get_base($element = array())
- {
- return $this->item->get_base($element);
- }
-
- public function sanitize($data, $type, $base = '')
- {
- return $this->item->sanitize($data, $type, $base);
- }
-
- public function get_item()
- {
- return $this->item;
- }
-
- public function get_title()
- {
- if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- public function get_category($key = 0)
- {
- $categories = $this->get_categories();
- if (isset($categories[$key]))
- {
- return $categories[$key];
- }
- else
- {
- return null;
- }
- }
-
- public function get_categories()
- {
- $categories = array();
-
- foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['attribs']['']['term']))
- {
- $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
- }
- foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
- {
- // This is really the label, but keep this as the term also for BC.
- // Label will also work on retrieving because that falls back to term.
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- if (isset($category['attribs']['']['domain']))
- {
- $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = null;
- }
- $categories[] = $this->registry->create('Category', array($term, $scheme, null));
- }
- foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
- {
- $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
- foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
- {
- $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
-
- if (!empty($categories))
- {
- return array_unique($categories);
- }
- else
- {
- return null;
- }
- }
-
- public function get_author($key = 0)
- {
- $authors = $this->get_authors();
- if (isset($authors[$key]))
- {
- return $authors[$key];
- }
- else
- {
- return null;
- }
- }
-
- public function get_authors()
- {
- $authors = array();
- foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
- {
- $name = null;
- $uri = null;
- $email = null;
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
- {
- $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
- {
- $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
- }
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
- {
- $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $uri !== null)
- {
- $authors[] = $this->registry->create('Author', array($name, $uri, $email));
- }
- }
- if ($author = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
- {
- $name = null;
- $url = null;
- $email = null;
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
- {
- $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
- {
- $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
- }
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
- {
- $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $url !== null)
- {
- $authors[] = $this->registry->create('Author', array($name, $url, $email));
- }
- }
- foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
- {
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
- foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
- {
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
- foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
- {
- $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
- }
-
- if (!empty($authors))
- {
- return array_unique($authors);
- }
- else
- {
- return null;
- }
- }
-
- public function get_contributor($key = 0)
- {
- $contributors = $this->get_contributors();
- if (isset($contributors[$key]))
- {
- return $contributors[$key];
- }
- else
- {
- return null;
- }
- }
-
- public function get_contributors()
- {
- $contributors = array();
- foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)
- {
- $name = null;
- $uri = null;
- $email = null;
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
- {
- $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
- {
- $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
- {
- $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $uri !== null)
- {
- $contributors[] = $this->registry->create('Author', array($name, $uri, $email));
- }
- }
- foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)
- {
- $name = null;
- $url = null;
- $email = null;
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
- {
- $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
- {
- $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
- }
- if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
- {
- $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $url !== null)
- {
- $contributors[] = $this->registry->create('Author', array($name, $url, $email));
- }
- }
-
- if (!empty($contributors))
- {
- return array_unique($contributors);
- }
- else
- {
- return null;
- }
- }
-
- public function get_link($key = 0, $rel = 'alternate')
- {
- $links = $this->get_links($rel);
- if (isset($links[$key]))
- {
- return $links[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Added for parity between the parent-level and the item/entry-level.
- */
- public function get_permalink()
- {
- return $this->get_link(0);
- }
-
- public function get_links($rel = 'alternate')
- {
- if (!isset($this->data['links']))
- {
- $this->data['links'] = array();
- if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
- {
- foreach ($links as $link)
- {
- if (isset($link['attribs']['']['href']))
- {
- $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
- $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
- }
- }
- }
- if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
- {
- foreach ($links as $link)
- {
- if (isset($link['attribs']['']['href']))
- {
- $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
- $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-
- }
- }
- }
- if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
-
- $keys = array_keys($this->data['links']);
- foreach ($keys as $key)
- {
- if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key)))
- {
- if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
- {
- $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
- }
- else
- {
- $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
- }
- }
- elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
- {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
- }
- $this->data['links'][$key] = array_unique($this->data['links'][$key]);
- }
- }
-
- if (isset($this->data['links'][$rel]))
- {
- return $this->data['links'][$rel];
- }
- else
- {
- return null;
- }
- }
-
- public function get_description()
- {
- if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- else
- {
- return null;
- }
- }
-
- public function get_copyright()
- {
- if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright'))
- {
- return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'copyright'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- public function get_language()
- {
- if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'language'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($this->data['xml_lang']))
- {
- return $this->sanitize($this->data['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- public function get_latitude()
- {
- if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
- {
- return (float) $return[0]['data'];
- }
- elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
- {
- return (float) $match[1];
- }
- else
- {
- return null;
- }
- }
-
- public function get_longitude()
- {
- if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
- {
- return (float) $return[0]['data'];
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
- {
- return (float) $return[0]['data'];
- }
- elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
- {
- return (float) $match[2];
- }
- else
- {
- return null;
- }
- }
-
- public function get_image_url()
- {
- if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
- {
- return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- else
- {
- return null;
- }
- }
-}
-
diff --git a/3rdparty/simplepie/library/SimplePie/XML/Declaration/Parser.php b/3rdparty/simplepie/library/SimplePie/XML/Declaration/Parser.php
deleted file mode 100755
index aec19f10a..000000000
--- a/3rdparty/simplepie/library/SimplePie/XML/Declaration/Parser.php
+++ /dev/null
@@ -1,362 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-
-/**
- * Parses the XML Declaration
- *
- * @package SimplePie
- * @subpackage Parsing
- */
-class SimplePie_XML_Declaration_Parser
-{
- /**
- * XML Version
- *
- * @access public
- * @var string
- */
- var $version = '1.0';
-
- /**
- * Encoding
- *
- * @access public
- * @var string
- */
- var $encoding = 'UTF-8';
-
- /**
- * Standalone
- *
- * @access public
- * @var bool
- */
- var $standalone = false;
-
- /**
- * Current state of the state machine
- *
- * @access private
- * @var string
- */
- var $state = 'before_version_name';
-
- /**
- * Input data
- *
- * @access private
- * @var string
- */
- var $data = '';
-
- /**
- * Input data length (to avoid calling strlen() everytime this is needed)
- *
- * @access private
- * @var int
- */
- var $data_length = 0;
-
- /**
- * Current position of the pointer
- *
- * @var int
- * @access private
- */
- var $position = 0;
-
- /**
- * Create an instance of the class with the input data
- *
- * @access public
- * @param string $data Input data
- */
- public function __construct($data)
- {
- $this->data = $data;
- $this->data_length = strlen($this->data);
- }
-
- /**
- * Parse the input data
- *
- * @access public
- * @return bool true on success, false on failure
- */
- public function parse()
- {
- while ($this->state && $this->state !== 'emit' && $this->has_data())
- {
- $state = $this->state;
- $this->$state();
- }
- $this->data = '';
- if ($this->state === 'emit')
- {
- return true;
- }
- else
- {
- $this->version = '';
- $this->encoding = '';
- $this->standalone = '';
- return false;
- }
- }
-
- /**
- * Check whether there is data beyond the pointer
- *
- * @access private
- * @return bool true if there is further data, false if not
- */
- public function has_data()
- {
- return (bool) ($this->position < $this->data_length);
- }
-
- /**
- * Advance past any whitespace
- *
- * @return int Number of whitespace characters passed
- */
- public function skip_whitespace()
- {
- $whitespace = strspn($this->data, "\x09\x0A\x0D\x20", $this->position);
- $this->position += $whitespace;
- return $whitespace;
- }
-
- /**
- * Read value
- */
- public function get_value()
- {
- $quote = substr($this->data, $this->position, 1);
- if ($quote === '"' || $quote === "'")
- {
- $this->position++;
- $len = strcspn($this->data, $quote, $this->position);
- if ($this->has_data())
- {
- $value = substr($this->data, $this->position, $len);
- $this->position += $len + 1;
- return $value;
- }
- }
- return false;
- }
-
- public function before_version_name()
- {
- if ($this->skip_whitespace())
- {
- $this->state = 'version_name';
- }
- else
- {
- $this->state = false;
- }
- }
-
- public function version_name()
- {
- if (substr($this->data, $this->position, 7) === 'version')
- {
- $this->position += 7;
- $this->skip_whitespace();
- $this->state = 'version_equals';
- }
- else
- {
- $this->state = false;
- }
- }
-
- public function version_equals()
- {
- if (substr($this->data, $this->position, 1) === '=')
- {
- $this->position++;
- $this->skip_whitespace();
- $this->state = 'version_value';
- }
- else
- {
- $this->state = false;
- }
- }
-
- public function version_value()
- {
- if ($this->version = $this->get_value())
- {
- $this->skip_whitespace();
- if ($this->has_data())
- {
- $this->state = 'encoding_name';
- }
- else
- {
- $this->state = 'emit';
- }
- }
- else
- {
- $this->state = false;
- }
- }
-
- public function encoding_name()
- {
- if (substr($this->data, $this->position, 8) === 'encoding')
- {
- $this->position += 8;
- $this->skip_whitespace();
- $this->state = 'encoding_equals';
- }
- else
- {
- $this->state = 'standalone_name';
- }
- }
-
- public function encoding_equals()
- {
- if (substr($this->data, $this->position, 1) === '=')
- {
- $this->position++;
- $this->skip_whitespace();
- $this->state = 'encoding_value';
- }
- else
- {
- $this->state = false;
- }
- }
-
- public function encoding_value()
- {
- if ($this->encoding = $this->get_value())
- {
- $this->skip_whitespace();
- if ($this->has_data())
- {
- $this->state = 'standalone_name';
- }
- else
- {
- $this->state = 'emit';
- }
- }
- else
- {
- $this->state = false;
- }
- }
-
- public function standalone_name()
- {
- if (substr($this->data, $this->position, 10) === 'standalone')
- {
- $this->position += 10;
- $this->skip_whitespace();
- $this->state = 'standalone_equals';
- }
- else
- {
- $this->state = false;
- }
- }
-
- public function standalone_equals()
- {
- if (substr($this->data, $this->position, 1) === '=')
- {
- $this->position++;
- $this->skip_whitespace();
- $this->state = 'standalone_value';
- }
- else
- {
- $this->state = false;
- }
- }
-
- public function standalone_value()
- {
- if ($standalone = $this->get_value())
- {
- switch ($standalone)
- {
- case 'yes':
- $this->standalone = true;
- break;
-
- case 'no':
- $this->standalone = false;
- break;
-
- default:
- $this->state = false;
- return;
- }
-
- $this->skip_whitespace();
- if ($this->has_data())
- {
- $this->state = false;
- }
- else
- {
- $this->state = 'emit';
- }
- }
- else
- {
- $this->state = false;
- }
- }
-}
diff --git a/3rdparty/simplepie/library/SimplePie/gzdecode.php b/3rdparty/simplepie/library/SimplePie/gzdecode.php
deleted file mode 100755
index 52e024ea9..000000000
--- a/3rdparty/simplepie/library/SimplePie/gzdecode.php
+++ /dev/null
@@ -1,371 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-
-/**
- * Decode 'gzip' encoded HTTP data
- *
- * @package SimplePie
- * @subpackage HTTP
- * @link http://www.gzip.org/format.txt
- */
-class SimplePie_gzdecode
-{
- /**
- * Compressed data
- *
- * @access private
- * @var string
- * @see gzdecode::$data
- */
- var $compressed_data;
-
- /**
- * Size of compressed data
- *
- * @access private
- * @var int
- */
- var $compressed_size;
-
- /**
- * Minimum size of a valid gzip string
- *
- * @access private
- * @var int
- */
- var $min_compressed_size = 18;
-
- /**
- * Current position of pointer
- *
- * @access private
- * @var int
- */
- var $position = 0;
-
- /**
- * Flags (FLG)
- *
- * @access private
- * @var int
- */
- var $flags;
-
- /**
- * Uncompressed data
- *
- * @access public
- * @see gzdecode::$compressed_data
- * @var string
- */
- var $data;
-
- /**
- * Modified time
- *
- * @access public
- * @var int
- */
- var $MTIME;
-
- /**
- * Extra Flags
- *
- * @access public
- * @var int
- */
- var $XFL;
-
- /**
- * Operating System
- *
- * @access public
- * @var int
- */
- var $OS;
-
- /**
- * Subfield ID 1
- *
- * @access public
- * @see gzdecode::$extra_field
- * @see gzdecode::$SI2
- * @var string
- */
- var $SI1;
-
- /**
- * Subfield ID 2
- *
- * @access public
- * @see gzdecode::$extra_field
- * @see gzdecode::$SI1
- * @var string
- */
- var $SI2;
-
- /**
- * Extra field content
- *
- * @access public
- * @see gzdecode::$SI1
- * @see gzdecode::$SI2
- * @var string
- */
- var $extra_field;
-
- /**
- * Original filename
- *
- * @access public
- * @var string
- */
- var $filename;
-
- /**
- * Human readable comment
- *
- * @access public
- * @var string
- */
- var $comment;
-
- /**
- * Don't allow anything to be set
- *
- * @param string $name
- * @param mixed $value
- */
- public function __set($name, $value)
- {
- trigger_error("Cannot write property $name", E_USER_ERROR);
- }
-
- /**
- * Set the compressed string and related properties
- *
- * @param string $data
- */
- public function __construct($data)
- {
- $this->compressed_data = $data;
- $this->compressed_size = strlen($data);
- }
-
- /**
- * Decode the GZIP stream
- *
- * @return bool Successfulness
- */
- public function parse()
- {
- if ($this->compressed_size >= $this->min_compressed_size)
- {
- // Check ID1, ID2, and CM
- if (substr($this->compressed_data, 0, 3) !== "\x1F\x8B\x08")
- {
- return false;
- }
-
- // Get the FLG (FLaGs)
- $this->flags = ord($this->compressed_data[3]);
-
- // FLG bits above (1 << 4) are reserved
- if ($this->flags > 0x1F)
- {
- return false;
- }
-
- // Advance the pointer after the above
- $this->position += 4;
-
- // MTIME
- $mtime = substr($this->compressed_data, $this->position, 4);
- // Reverse the string if we're on a big-endian arch because l is the only signed long and is machine endianness
- if (current(unpack('S', "\x00\x01")) === 1)
- {
- $mtime = strrev($mtime);
- }
- $this->MTIME = current(unpack('l', $mtime));
- $this->position += 4;
-
- // Get the XFL (eXtra FLags)
- $this->XFL = ord($this->compressed_data[$this->position++]);
-
- // Get the OS (Operating System)
- $this->OS = ord($this->compressed_data[$this->position++]);
-
- // Parse the FEXTRA
- if ($this->flags & 4)
- {
- // Read subfield IDs
- $this->SI1 = $this->compressed_data[$this->position++];
- $this->SI2 = $this->compressed_data[$this->position++];
-
- // SI2 set to zero is reserved for future use
- if ($this->SI2 === "\x00")
- {
- return false;
- }
-
- // Get the length of the extra field
- $len = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
- $this->position += 2;
-
- // Check the length of the string is still valid
- $this->min_compressed_size += $len + 4;
- if ($this->compressed_size >= $this->min_compressed_size)
- {
- // Set the extra field to the given data
- $this->extra_field = substr($this->compressed_data, $this->position, $len);
- $this->position += $len;
- }
- else
- {
- return false;
- }
- }
-
- // Parse the FNAME
- if ($this->flags & 8)
- {
- // Get the length of the filename
- $len = strcspn($this->compressed_data, "\x00", $this->position);
-
- // Check the length of the string is still valid
- $this->min_compressed_size += $len + 1;
- if ($this->compressed_size >= $this->min_compressed_size)
- {
- // Set the original filename to the given string
- $this->filename = substr($this->compressed_data, $this->position, $len);
- $this->position += $len + 1;
- }
- else
- {
- return false;
- }
- }
-
- // Parse the FCOMMENT
- if ($this->flags & 16)
- {
- // Get the length of the comment
- $len = strcspn($this->compressed_data, "\x00", $this->position);
-
- // Check the length of the string is still valid
- $this->min_compressed_size += $len + 1;
- if ($this->compressed_size >= $this->min_compressed_size)
- {
- // Set the original comment to the given string
- $this->comment = substr($this->compressed_data, $this->position, $len);
- $this->position += $len + 1;
- }
- else
- {
- return false;
- }
- }
-
- // Parse the FHCRC
- if ($this->flags & 2)
- {
- // Check the length of the string is still valid
- $this->min_compressed_size += $len + 2;
- if ($this->compressed_size >= $this->min_compressed_size)
- {
- // Read the CRC
- $crc = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
-
- // Check the CRC matches
- if ((crc32(substr($this->compressed_data, 0, $this->position)) & 0xFFFF) === $crc)
- {
- $this->position += 2;
- }
- else
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- }
-
- // Decompress the actual data
- if (($this->data = gzinflate(substr($this->compressed_data, $this->position, -8))) === false)
- {
- return false;
- }
- else
- {
- $this->position = $this->compressed_size - 8;
- }
-
- // Check CRC of data
- $crc = current(unpack('V', substr($this->compressed_data, $this->position, 4)));
- $this->position += 4;
- /*if (extension_loaded('hash') && sprintf('%u', current(unpack('V', hash('crc32b', $this->data)))) !== sprintf('%u', $crc))
- {
- return false;
- }*/
-
- // Check ISIZE of data
- $isize = current(unpack('V', substr($this->compressed_data, $this->position, 4)));
- $this->position += 4;
- if (sprintf('%u', strlen($this->data) & 0xFFFFFFFF) !== sprintf('%u', $isize))
- {
- return false;
- }
-
- // Wow, against all odds, we've actually got a valid gzip string
- return true;
- }
- else
- {
- return false;
- }
- }
-}
diff --git a/3rdparty/simplepie/phpunit.xml.dist b/3rdparty/simplepie/phpunit.xml.dist
deleted file mode 100755
index 3dd32efc1..000000000
--- a/3rdparty/simplepie/phpunit.xml.dist
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit colors="true" bootstrap="tests/bootstrap.php">
- <testsuites>
- <testsuite name="SimplePie Test Suite">
- <directory>./tests</directory>
- </testsuite>
- <testsuite name="Old Tests">
- <file>tests/oldtests.php</file>
- </testsuite>
- </testsuites>
-
- <filter>
- <blacklist>
- <directory suffix=".php">tests</directory>
- </blacklist>
- <whitelist>
- <directory suffix=".php">SimplePie</directory>
- </whitelist>
- </filter>
-</phpunit>
diff --git a/3rdparty/simplepie/tests/AllTests.php b/3rdparty/simplepie/tests/AllTests.php
deleted file mode 100755
index eda9511c8..000000000
--- a/3rdparty/simplepie/tests/AllTests.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2011 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-require_once dirname(__FILE__) . '/bootstrap.php';
-
-require_once dirname(__FILE__) . '/EncodingTest.php';
-require_once dirname(__FILE__) . '/IRITest.php';
-require_once dirname(__FILE__) . '/LocatorTest.php';
-require_once dirname(__FILE__) . '/ItemTest.php';
-require_once dirname(__FILE__) . '/oldtests.php';
-
-class AllTests
-{
- public static function suite()
- {
- $suite = new PHPUnit_Framework_TestSuite();
- $suite->setName('SimplePie');
-
- $suite->addTestSuite('CacheTest');
- $suite->addTestSuite('EncodingTest');
- $suite->addTestSuite('IRITest');
- $suite->addTestSuite('LocatorTest');
- $suite->addTestSuite('HTTPParserTest');
- $suite->addTestSuite('ItemTest');
- $suite->addTestSuite('OldTest');
-
- return $suite;
- }
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/CacheTest.php b/3rdparty/simplepie/tests/CacheTest.php
deleted file mode 100755
index cfc431e15..000000000
--- a/3rdparty/simplepie/tests/CacheTest.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.4-dev
- * @copyright 2004-2011 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-/**
- * This is a dirty, dirty hack
- */
-class Exception_Success extends Exception {
-
-}
-
-class Mock_CacheLegacy extends SimplePie_Cache
-{
- public static function get_handler($location, $filename, $extension)
- {
- trigger_error('Legacy cache class should not have get_handler() called');
- }
- public function create($location, $filename, $extension)
- {
- throw new Exception_Success('Correct function called');
- }
-}
-
-class Mock_CacheNew extends SimplePie_Cache
-{
- public static function get_handler($location, $filename, $extension)
- {
- throw new Exception_Success('Correct function called');
- }
- public function create($location, $filename, $extension)
- {
- trigger_error('New cache class should not have create() called');
- }
-}
-
-class CacheTest extends PHPUnit_Framework_TestCase
-{
- /**
- * @expectedException Exception_Success
- */
- public function testDirectOverrideLegacy()
- {
- $feed = new SimplePie();
- $feed->set_cache_class('Mock_CacheLegacy');
- $feed->get_registry()->register('File', 'Mock_File');
- $feed->set_feed_url('http://example.com/feed/');
-
- $feed->init();
- }
-
- /**
- * @expectedException Exception_Success
- */
- public function testDirectOverrideNew()
- {
- $feed = new SimplePie();
- $feed->get_registry()->register('Cache', 'Mock_CacheNew');
- $feed->get_registry()->register('File', 'Mock_File');
- $feed->set_feed_url('http://example.com/feed/');
-
- $feed->init();
- }
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/EncodingTest.php b/3rdparty/simplepie/tests/EncodingTest.php
deleted file mode 100755
index 3d33074d6..000000000
--- a/3rdparty/simplepie/tests/EncodingTest.php
+++ /dev/null
@@ -1,211 +0,0 @@
-<?php
-/**
- * Encoding tests for SimplePie_Misc::change_encoding() and SimplePie_Misc::encoding()
- *
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2011 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-require_once dirname(__FILE__) . '/bootstrap.php';
-
-class EncodingTest extends PHPUnit_Framework_TestCase
-{
- /**
- * Test if we have mbstring
- *
- * Used for depends
- */
- public function test_has_mbstring()
- {
- $this->assertTrue(function_exists('mb_convert_encoding'));
- }
-
- /**
- * Test if we have iconv (crazy if we don't)
- *
- * Used for depends
- */
- public function test_has_iconv()
- {
- $this->assertTrue(function_exists('iconv'));
- }
-
- /**#@+
- * UTF-8 methods
- */
- /**
- * Provider for the convert toUTF8* tests
- */
- public static function toUTF8()
- {
- return array(
- array('A', 'A', 'ASCII'),
- array("\xa1\xdb", "\xe2\x88\x9e", 'Big5'),
- array("\xa1\xe7", "\xe2\x88\x9e", 'EUC-JP'),
- array("\xa1\xde", "\xe2\x88\x9e", 'GBK'),
- array("\x81\x87", "\xe2\x88\x9e", 'Shift_JIS'),
- array("\x2b\x49\x68\x34\x2d", "\xe2\x88\x9e", 'UTF-7'),
- array("\xfe\xff\x22\x1e", "\xe2\x88\x9e", 'UTF-16'),
- array("\xff\xfe\x1e\x22", "\xe2\x88\x9e", 'UTF-16'),
- array("\x22\x1e", "\xe2\x88\x9e", 'UTF-16BE'),
- array("\x1e\x22", "\xe2\x88\x9e", 'UTF-16LE'),
- );
- }
-
- /**
- * Special cases with mbstring handling
- */
- public static function toUTF8_mbstring()
- {
- return array(
- array("\xa1\xc4", "\xe2\x88\x9e", 'EUC-KR'),
- );
- }
-
- /**
- * Special cases with iconv handling
- */
- public static function toUTF8_iconv()
- {
- return array(
- array("\xfe\xff\x22\x1e", "\xe2\x88\x9e", 'UTF-16'),
- );
- }
-
- /**
- * Convert * to UTF-8
- *
- * @dataProvider toUTF8
- */
- public function test_convert_UTF8($input, $expected, $encoding)
- {
- $encoding = SimplePie_Misc::encoding($encoding);
- $this->assertEquals($expected, SimplePie_Misc::change_encoding($input, $encoding, 'UTF-8'));
- }
-
- /**
- * Convert * to UTF-8 using mbstring
- *
- * Special cases only
- * @depends test_has_mbstring
- * @dataProvider toUTF8_mbstring
- */
- public function test_convert_UTF8_mbstring($input, $expected, $encoding)
- {
- $encoding = SimplePie_Misc::encoding($encoding);
- if (version_compare(phpversion(), '5.3', '<'))
- {
- $this->assertEquals($expected, Mock_Misc::__callStatic('change_encoding_mbstring', array($input, $encoding, 'UTF-8')));
- }
- else
- {
- $this->assertEquals($expected, Mock_Misc::change_encoding_mbstring($input, $encoding, 'UTF-8'));
- }
- }
-
- /**
- * Convert * to UTF-8 using iconv
- *
- * Special cases only
- * @depends test_has_iconv
- * @dataProvider toUTF8_iconv
- */
- public function test_convert_UTF8_iconv($input, $expected, $encoding)
- {
- $encoding = SimplePie_Misc::encoding($encoding);
- if (version_compare(phpversion(), '5.3', '<'))
- {
- $this->assertEquals($expected, Mock_Misc::__callStatic('change_encoding_iconv', array($input, $encoding, 'UTF-8')));
- }
- else {
- $this->assertEquals($expected, Mock_Misc::change_encoding_iconv($input, $encoding, 'UTF-8'));
- }
- }
- /**#@-*/
-
- /**#@+
- * UTF-16 methods
- */
- public static function toUTF16()
- {
- return array(
- array("\x22\x1e", "\x22\x1e", 'UTF-16BE'),
- array("\x1e\x22", "\x22\x1e", 'UTF-16LE'),
- );
- }
-
- /**
- * Convert * to UTF-16
- * @dataProvider toUTF16
- */
- public function test_convert_UTF16($input, $expected, $encoding)
- {
- $encoding = SimplePie_Misc::encoding($encoding);
- $this->assertEquals($expected, SimplePie_Misc::change_encoding($input, $encoding, 'UTF-16'));
- }
- /**#@-*/
-
- public function test_nonexistant()
- {
- $this->assertFalse(SimplePie_Misc::change_encoding('', 'TESTENC', 'UTF-8'));
- }
-
- public static function assertEquals($expected, $actual, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
- {
- if (is_string($expected))
- {
- $expected = bin2hex($expected);
- }
- if (is_string($actual))
- {
- $actual = bin2hex($actual);
- }
- parent::assertEquals($expected, $actual, $message, $delta, $maxDepth, $canonicalize, $ignoreCase);
- }
-}
-
-class Mock_Misc extends SimplePie_Misc
-{
- public static function __callStatic($name, $args)
- {
- return call_user_func_array(array('SimplePie_Misc', $name), $args);
- }
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/HTTPParserTest.php b/3rdparty/simplepie/tests/HTTPParserTest.php
deleted file mode 100755
index 217f53bd5..000000000
--- a/3rdparty/simplepie/tests/HTTPParserTest.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/**
- * HTTP parsing tests
- *
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2011 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-require_once dirname(__FILE__) . '/bootstrap.php';
-
-class HTTPParserTest extends PHPUnit_Framework_TestCase
-{
- public static function chunkedProvider()
- {
- return array(
- array(
- "25\r\nThis is the data in the first chunk\r\n\r\n1A\r\nand this is the second one\r\n0\r\n",
- "This is the data in the first chunk\r\nand this is the second one"
- ),
- array(
- "02\r\nab\r\n04\r\nra\nc\r\n06\r\nadabra\r\n0\r\nnothing\n",
- "abra\ncadabra"
- ),
- array(
- "02\r\nab\r\n04\r\nra\nc\r\n06\r\nadabra\r\n0c\r\n\nall we got\n",
- "abra\ncadabra\nall we got\n"
- ),
- );
- }
-
- /**
- * @dataProvider chunkedProvider
- */
- public function testChunkedNormal($data, $expected)
- {
- $data = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nTransfer-Encoding: chunked\r\n\r\n" . $data;
- $parser = new SimplePie_HTTP_Parser($data);
- $this->assertTrue($parser->parse());
- $this->assertEquals(1.1, $parser->http_version);
- $this->assertEquals(200, $parser->status_code);
- $this->assertEquals('OK', $parser->reason);
- $this->assertEquals(array('content-type' => 'text/plain'), $parser->headers);
- $this->assertEquals($expected, $parser->body);
-
- }
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/IRITest.php b/3rdparty/simplepie/tests/IRITest.php
deleted file mode 100755
index 2492e3c88..000000000
--- a/3rdparty/simplepie/tests/IRITest.php
+++ /dev/null
@@ -1,468 +0,0 @@
-<?php
-
-/**
- * IRI test cases
- *
- * Copyright (c) 2008-2012 Geoffrey Sneddon.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package IRI
- * @author Geoffrey Sneddon
- * @copyright 2008-2012 Geoffrey Sneddon
- * @license http://www.opensource.org/licenses/bsd-license.php
- * @link http://hg.gsnedders.com/iri/
- *
- */
-
-require_once dirname(__FILE__) . '/bootstrap.php';
-
-class IRITest extends PHPUnit_Framework_TestCase
-{
- public static function rfc3986_tests()
- {
- return array(
- // Normal
- array('g:h', 'g:h'),
- array('g', 'http://a/b/c/g'),
- array('./g', 'http://a/b/c/g'),
- array('g/', 'http://a/b/c/g/'),
- array('/g', 'http://a/g'),
- array('//g', 'http://g/'),
- array('?y', 'http://a/b/c/d;p?y'),
- array('g?y', 'http://a/b/c/g?y'),
- array('#s', 'http://a/b/c/d;p?q#s'),
- array('g#s', 'http://a/b/c/g#s'),
- array('g?y#s', 'http://a/b/c/g?y#s'),
- array(';x', 'http://a/b/c/;x'),
- array('g;x', 'http://a/b/c/g;x'),
- array('g;x?y#s', 'http://a/b/c/g;x?y#s'),
- array('', 'http://a/b/c/d;p?q'),
- array('.', 'http://a/b/c/'),
- array('./', 'http://a/b/c/'),
- array('..', 'http://a/b/'),
- array('../', 'http://a/b/'),
- array('../g', 'http://a/b/g'),
- array('../..', 'http://a/'),
- array('../../', 'http://a/'),
- array('../../g', 'http://a/g'),
- // Abnormal
- array('../../../g', 'http://a/g'),
- array('../../../../g', 'http://a/g'),
- array('/./g', 'http://a/g'),
- array('/../g', 'http://a/g'),
- array('g.', 'http://a/b/c/g.'),
- array('.g', 'http://a/b/c/.g'),
- array('g..', 'http://a/b/c/g..'),
- array('..g', 'http://a/b/c/..g'),
- array('./../g', 'http://a/b/g'),
- array('./g/.', 'http://a/b/c/g/'),
- array('g/./h', 'http://a/b/c/g/h'),
- array('g/../h', 'http://a/b/c/h'),
- array('g;x=1/./y', 'http://a/b/c/g;x=1/y'),
- array('g;x=1/../y', 'http://a/b/c/y'),
- array('g?y/./x', 'http://a/b/c/g?y/./x'),
- array('g?y/../x', 'http://a/b/c/g?y/../x'),
- array('g#s/./x', 'http://a/b/c/g#s/./x'),
- array('g#s/../x', 'http://a/b/c/g#s/../x'),
- array('http:g', 'http:g'),
- );
- }
-
- /**
- * @dataProvider rfc3986_tests
- */
- public function testStringRFC3986($relative, $expected)
- {
- $base = new SimplePie_IRI('http://a/b/c/d;p?q');
- $this->assertEquals($expected, SimplePie_IRI::absolutize($base, $relative)->get_iri());
- }
-
- /**
- * @dataProvider rfc3986_tests
- */
- public function testObjectRFC3986($relative, $expected)
- {
- $base = new SimplePie_IRI('http://a/b/c/d;p?q');
- $expected = new SimplePie_IRI($expected);
- $this->assertEquals($expected, SimplePie_IRI::absolutize($base, $relative));
- }
-
- /**
- * @dataProvider rfc3986_tests
- */
- public function testBothStringRFC3986($relative, $expected)
- {
- $base = 'http://a/b/c/d;p?q';
- $this->assertEquals($expected, SimplePie_IRI::absolutize($base, $relative)->get_iri());
- $this->assertEquals($expected, (string) SimplePie_IRI::absolutize($base, $relative));
- }
-
- public static function sp_tests()
- {
- return array(
- array('http://a/b/c/d', 'f%0o', 'http://a/b/c/f%250o'),
- array('http://a/b/', 'c', 'http://a/b/c'),
- array('http://a/', 'b', 'http://a/b'),
- array('http://a/', '/b', 'http://a/b'),
- array('http://a/b', 'c', 'http://a/c'),
- array('http://a/b/', "c\x0Ad", 'http://a/b/c%0Ad'),
- array('http://a/b/', "c\x0A\x0B", 'http://a/b/c%0A%0B'),
- array('http://a/b/c', '//0', 'http://0/'),
- array('http://a/b/c', '0', 'http://a/b/0'),
- array('http://a/b/c', '?0', 'http://a/b/c?0'),
- array('http://a/b/c', '#0', 'http://a/b/c#0'),
- array('http://0/b/c', 'd', 'http://0/b/d'),
- array('http://a/b/c?0', 'd', 'http://a/b/d'),
- array('http://a/b/c#0', 'd', 'http://a/b/d'),
- array('http://example.com', '//example.net', 'http://example.net/'),
- array('http:g', 'a', 'http:a'),
- );
- }
-
- /**
- * @dataProvider sp_tests
- */
- public function testStringSP($base, $relative, $expected)
- {
- $base = new SimplePie_IRI($base);
- $this->assertEquals($expected, SimplePie_IRI::absolutize($base, $relative)->get_iri());
- }
-
- /**
- * @dataProvider sp_tests
- */
- public function testObjectSP($base, $relative, $expected)
- {
- $base = new SimplePie_IRI($base);
- $expected = new SimplePie_IRI($expected);
- $this->assertEquals($expected, SimplePie_IRI::absolutize($base, $relative));
- }
-
- public static function query_tests()
- {
- return array(
- array('a=b&c=d', 'http://example.com/?a=b&c=d'),
- array('a=b%26c=d', 'http://example.com/?a=b%26c=d'),
- array('url=http%3A%2F%2Fexample.com%3Fa%3Db', 'http://example.com/?url=http%3A%2F%2Fexample.com%3Fa%3Db'),
- array('url=http%3A%2F%2Fexample.com%3Fa%3Db%26c%3Dd', 'http://example.com/?url=http%3A%2F%2Fexample.com%3Fa%3Db%26c%3Dd'),
- );
- }
-
- /**
- * @dataProvider query_tests
- */
- public function testStringQuery($query, $expected)
- {
- $base = new SimplePie_IRI('http://example.com/');
- $base->set_query($query);
- $this->assertEquals($expected, $base->get_iri());
- }
-
- /**
- * @dataProvider query_tests
- */
- public function testObjectQuery($query, $expected)
- {
- $base = new SimplePie_IRI('http://example.com/');
- $base->set_query($query);
- $expected = new SimplePie_IRI($expected);
- $this->assertEquals($expected, $base);
- }
-
- public static function absolutize_tests()
- {
- return array(
- array('http://example.com/', 'foo/111:bar', 'http://example.com/foo/111:bar'),
- array('http://example.com/#foo', '', 'http://example.com/'),
- );
- }
-
- /**
- * @dataProvider absolutize_tests
- */
- public function testAbsolutizeString($base, $relative, $expected)
- {
- $base = new SimplePie_IRI($base);
- $this->assertEquals($expected, SimplePie_IRI::absolutize($base, $relative)->get_iri());
- }
-
- /**
- * @dataProvider absolutize_tests
- */
- public function testAbsolutizeObject($base, $relative, $expected)
- {
- $base = new SimplePie_IRI($base);
- $expected = new SimplePie_IRI($expected);
- $this->assertEquals($expected, SimplePie_IRI::absolutize($base, $relative));
- }
-
- public static function normalization_tests()
- {
- return array(
- array('example://a/b/c/%7Bfoo%7D', 'example://a/b/c/%7Bfoo%7D'),
- array('eXAMPLE://a/./b/../b/%63/%7bfoo%7d', 'example://a/b/c/%7Bfoo%7D'),
- array('example://%61/', 'example://a/'),
- array('example://%41/', 'example://a/'),
- array('example://A/', 'example://a/'),
- array('example://a/', 'example://a/'),
- array('example://%25A/', 'example://%25a/'),
- array('HTTP://EXAMPLE.com/', 'http://example.com/'),
- array('http://example.com/', 'http://example.com/'),
- array('http://example.com:', 'http://example.com/'),
- array('http://example.com:80', 'http://example.com/'),
- array('http://@example.com', 'http://@example.com/'),
- array('http://', 'http://'),
- array('http://example.com?', 'http://example.com/?'),
- array('http://example.com#', 'http://example.com/#'),
- array('https://example.com/', 'https://example.com/'),
- array('https://example.com:', 'https://example.com/'),
- array('https://@example.com', 'https://@example.com/'),
- array('https://example.com?', 'https://example.com/?'),
- array('https://example.com#', 'https://example.com/#'),
- array('file://localhost/foobar', 'file:/foobar'),
- array('http://[0:0:0:0:0:0:0:1]', 'http://[::1]/'),
- array('http://[2001:db8:85a3:0000:0000:8a2e:370:7334]', 'http://[2001:db8:85a3::8a2e:370:7334]/'),
- array('http://[0:0:0:0:0:ffff:c0a8:a01]', 'http://[::ffff:c0a8:a01]/'),
- array('http://[ffff:0:0:0:0:0:0:0]', 'http://[ffff::]/'),
- array('http://[::ffff:192.0.2.128]', 'http://[::ffff:192.0.2.128]/'),
- array('http://[invalid]', 'http:'),
- array('http://[0:0:0:0:0:0:0:1]:', 'http://[::1]/'),
- array('http://[0:0:0:0:0:0:0:1]:80', 'http://[::1]/'),
- array('http://[0:0:0:0:0:0:0:1]:1234', 'http://[::1]:1234/'),
- // Punycode decoding helps with normalisation of IRIs, but is not
- // needed for URIs, so we don't really care about it here
- //array('http://xn--tdali-d8a8w.lv', 'http://tūdaliņ.lv'),
- //array('http://t%C5%ABdali%C5%86.lv', 'http://tūdaliņ.lv'),
- array('http://Aa@example.com', 'http://Aa@example.com/'),
- array('http://example.com?Aa', 'http://example.com/?Aa'),
- array('http://example.com/Aa', 'http://example.com/Aa'),
- array('http://example.com#Aa', 'http://example.com/#Aa'),
- array('http://[0:0:0:0:0:0:0:0]', 'http://[::]/'),
- array('http:.', 'http:'),
- array('http:..', 'http:'),
- array('http:./', 'http:'),
- array('http:../', 'http:'),
- array('http://example.com/%3A', 'http://example.com/%3A'),
- array('http://example.com/:', 'http://example.com/:'),
- array('http://example.com/%C2', 'http://example.com/%C2'),
- array('http://example.com/%C2a', 'http://example.com/%C2a'),
- array('http://example.com/%C2%00', 'http://example.com/%C2%00'),
- array('http://example.com/%C3%A9', 'http://example.com/é'),
- array('http://example.com/%C3%A9%00', 'http://example.com/é%00'),
- array('http://example.com/%C3%A9cole', 'http://example.com/école'),
- array('http://example.com/%FF', 'http://example.com/%FF'),
- array("http://example.com/\xF3\xB0\x80\x80", 'http://example.com/%F3%B0%80%80'),
- array("http://example.com/\xF3\xB0\x80\x80%00", 'http://example.com/%F3%B0%80%80%00'),
- array("http://example.com/\xF3\xB0\x80\x80a", 'http://example.com/%F3%B0%80%80a'),
- array("http://example.com?\xF3\xB0\x80\x80", "http://example.com/?\xF3\xB0\x80\x80"),
- array("http://example.com?\xF3\xB0\x80\x80%00", "http://example.com/?\xF3\xB0\x80\x80%00"),
- array("http://example.com?\xF3\xB0\x80\x80a", "http://example.com/?\xF3\xB0\x80\x80a"),
- array("http://example.com/\xEE\x80\x80", 'http://example.com/%EE%80%80'),
- array("http://example.com/\xEE\x80\x80%00", 'http://example.com/%EE%80%80%00'),
- array("http://example.com/\xEE\x80\x80a", 'http://example.com/%EE%80%80a'),
- array("http://example.com?\xEE\x80\x80", "http://example.com/?\xEE\x80\x80"),
- array("http://example.com?\xEE\x80\x80%00", "http://example.com/?\xEE\x80\x80%00"),
- array("http://example.com?\xEE\x80\x80a", "http://example.com/?\xEE\x80\x80a"),
- array("http://example.com/\xC2", 'http://example.com/%C2'),
- array("http://example.com/\xC2a", 'http://example.com/%C2a'),
- array("http://example.com/\xC2\x00", 'http://example.com/%C2%00'),
- array("http://example.com/\xC3\xA9", 'http://example.com/é'),
- array("http://example.com/\xC3\xA9\x00", 'http://example.com/é%00'),
- array("http://example.com/\xC3\xA9cole", 'http://example.com/école'),
- array("http://example.com/\xFF", 'http://example.com/%FF'),
- array("http://example.com/\xFF%00", 'http://example.com/%FF%00'),
- array("http://example.com/\xFFa", 'http://example.com/%FFa'),
- array('http://example.com/%61', 'http://example.com/a'),
- array('http://example.com?%26', 'http://example.com/?%26'),
- array('http://example.com?%61', 'http://example.com/?a'),
- array('///', '///'),
- );
- }
-
- /**
- * @dataProvider normalization_tests
- */
- public function testStringNormalization($input, $output)
- {
- $input = new SimplePie_IRI($input);
- $this->assertEquals($output, $input->get_iri());
- }
-
- /**
- * @dataProvider normalization_tests
- */
- public function testObjectNormalization($input, $output)
- {
- $input = new SimplePie_IRI($input);
- $output = new SimplePie_IRI($output);
- $this->assertEquals($output, $input);
- }
-
- public static function uri_tests() {
- return array(
- array('http://example.com/%C3%A9cole', 'http://example.com/%C3%A9cole'),
- array('http://example.com/école', 'http://example.com/%C3%A9cole'),
- array("http://example.com/\xC3\xA9cole", 'http://example.com/%C3%A9cole'),
- );
- }
-
- /**
- * @dataProvider uri_tests
- */
- public function testURIConversion($input, $output)
- {
- $input = new SimplePie_IRI($input);
- $this->assertEquals($output, $input->get_uri());
- }
-
- public static function equivalence_tests()
- {
- return array(
- array('http://É.com', 'http://%C3%89.com'),
- );
- }
-
- /**
- * @dataProvider equivalence_tests
- */
- public function testObjectEquivalence($input, $output)
- {
- $input = new SimplePie_IRI($input);
- $output = new SimplePie_IRI($output);
- $this->assertEquals($output, $input);
- }
-
- public static function not_equivalence_tests()
- {
- return array(
- array('http://example.com/foo/bar', 'http://example.com/foo%2Fbar'),
- );
- }
-
- /**
- * @dataProvider not_equivalence_tests
- */
- public function testObjectNotEquivalence($input, $output)
- {
- $input = new SimplePie_IRI($input);
- $output = new SimplePie_IRI($output);
- $this->assertNotEquals($output, $input);
- }
-
- public function testInvalidAbsolutizeBase()
- {
- $this->assertFalse(SimplePie_IRI::absolutize('://not a URL', '../'));
- }
-
- public function testInvalidAbsolutizeRelative()
- {
- $this->assertFalse(SimplePie_IRI::absolutize('http://example.com/', 'http://example.com//not a URL'));
- }
-
- public function testFullGamut()
- {
- $iri = new SimplePie_IRI();
- $iri->scheme = 'http';
- $iri->userinfo = 'user:password';
- $iri->host = 'example.com';
- $iri->path = '/test/';
- $iri->fragment = 'test';
-
- $this->assertEquals('http', $iri->scheme);
- $this->assertEquals('user:password', $iri->userinfo);
- $this->assertEquals('example.com', $iri->host);
- $this->assertEquals(80, $iri->port);
- $this->assertEquals('/test/', $iri->path);
- $this->assertEquals('test', $iri->fragment);
- }
-
- public function testReadAliased()
- {
- $iri = new SimplePie_IRI();
- $iri->scheme = 'http';
- $iri->userinfo = 'user:password';
- $iri->host = 'example.com';
- $iri->path = '/test/';
- $iri->fragment = 'test';
-
- $this->assertEquals('http', $iri->ischeme);
- $this->assertEquals('user:password', $iri->iuserinfo);
- $this->assertEquals('example.com', $iri->ihost);
- $this->assertEquals(80, $iri->iport);
- $this->assertEquals('/test/', $iri->ipath);
- $this->assertEquals('test', $iri->ifragment);
- }
-
- public function testWriteAliased()
- {
- $iri = new SimplePie_IRI();
- $iri->scheme = 'http';
- $iri->iuserinfo = 'user:password';
- $iri->ihost = 'example.com';
- $iri->ipath = '/test/';
- $iri->ifragment = 'test';
-
- $this->assertEquals('http', $iri->scheme);
- $this->assertEquals('user:password', $iri->userinfo);
- $this->assertEquals('example.com', $iri->host);
- $this->assertEquals(80, $iri->port);
- $this->assertEquals('/test/', $iri->path);
- $this->assertEquals('test', $iri->fragment);
- }
-
- /**
- * @expectedException PHPUnit_Framework_Error_Notice
- */
- public function testNonexistantProperty()
- {
- $iri = new SimplePie_IRI();
- $this->assertFalse(isset($iri->nonexistant_prop));
- $should_fail = $iri->nonexistant_prop;
- }
-
- public function testBlankHost()
- {
- $iri = new SimplePie_IRI('http://example.com/a/?b=c#d');
- $iri->host = null;
-
- $this->assertEquals(null, $iri->host);
- $this->assertEquals('http:/a/?b=c#d', (string) $iri);
- }
-
- public function testBadPort()
- {
- $iri = new SimplePie_IRI();
- $iri->port = 'example';
-
- $this->assertEquals(null, $iri->port);
- }
-}
-
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/ItemTest.php b/3rdparty/simplepie/tests/ItemTest.php
deleted file mode 100755
index 08394399d..000000000
--- a/3rdparty/simplepie/tests/ItemTest.php
+++ /dev/null
@@ -1,210 +0,0 @@
-<?php
-/**
- * Tests for SimplePie_Item
- *
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2011 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-require_once dirname(__FILE__) . '/bootstrap.php';
-
-class ItemTest extends PHPUnit_Framework_TestCase
-{
- /**
- * Run a test using a sprintf template and data
- *
- * @param string $template
- */
- protected function checkFromTemplate($template, $data, $expected)
- {
- if (!is_array($data))
- {
- $data = array($data);
- }
- $xml = vsprintf($template, $data);
- $feed = new SimplePie();
- $feed->set_raw_data($xml);
- $feed->enable_cache(false);
- $feed->init();
-
- return $feed;
- }
-
- public static function titleprovider()
- {
- return array(
- array('Feed Title', 'Feed Title'),
-
- // RSS Profile tests
- array('AT&amp;T', 'AT&amp;T'),
- array('AT&#x26;T', 'AT&amp;T'),
- array("Bill &amp; Ted's Excellent Adventure", "Bill &amp; Ted's Excellent Adventure"),
- array("Bill &#x26; Ted's Excellent Adventure", "Bill &amp; Ted's Excellent Adventure"),
- array('The &amp; entity', 'The &amp; entity'),
- array('The &#x26; entity', 'The &amp; entity'),
- array('The &amp;amp; entity', 'The &amp;amp; entity'),
- array('The &#x26;amp; entity', 'The &amp;amp; entity'),
- array('I &lt;3 Phil Ringnalda', 'I &lt;3 Phil Ringnalda'),
- array('I &#x3C;3 Phil Ringnalda', 'I &lt;3 Phil Ringnalda'),
- array('A &lt; B', 'A &lt; B'),
- array('A &#x3C; B', 'A &lt; B'),
- array('A&lt;B', 'A&lt;B'),
- array('A&#x3C;B', 'A&lt;B'),
- array("Nice &lt;gorilla&gt; what's he weigh?", "Nice &lt;gorilla&gt; what's he weigh?"),
- array("Nice &#x3C;gorilla&gt; what's he weigh?", "Nice &lt;gorilla&gt; what's he weigh?"),
- );
- }
-
- /**
- * @dataProvider titleprovider
- */
- public function testTitleRSS20($title, $expected)
- {
- $data =
-'<rss version="2.0">
- <channel>
- <title>%s</title>
- </channel>
-</rss>';
- $feed = $this->checkFromTemplate($data, $title, $expected);
- $this->assertEquals($expected, $feed->get_title());
- }
-
- /**
- * @dataProvider titleprovider
- */
- public function testTitleRSS20WithDC10($title, $expected)
- {
- $data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:title>%s</dc:title>
- </channel>
-</rss>';
- $feed = $this->checkFromTemplate($data, $title, $expected);
- $this->assertEquals($expected, $feed->get_title());
- }
-
- /**
- * @dataProvider titleprovider
- */
- public function testTitleRSS20WithDC11($title, $expected)
- {
- $data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:title>%s</dc:title>
- </channel>
-</rss>';
- $feed = $this->checkFromTemplate($data, $title, $expected);
- $this->assertEquals($expected, $feed->get_title());
- }
-
- /**
- * @dataProvider titleprovider
- */
- public function testTitleRSS20WithAtom03($title, $expected)
- {
- $data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:title>%s</a:title>
- </channel>
-</rss>';
- $feed = $this->checkFromTemplate($data, $title, $expected);
- $this->assertEquals($expected, $feed->get_title());
- }
-
- /**
- * @dataProvider titleprovider
- */
- public function testTitleRSS20WithAtom10($title, $expected)
- {
- $data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:title>%s</a:title>
- </channel>
-</rss>';
- $feed = $this->checkFromTemplate($data, $title, $expected);
- $this->assertEquals($expected, $feed->get_title());
- }
-
- /**
- * Based on a test from old bug 18
- *
- * @dataProvider titleprovider
- */
- public function testTitleRSS20WithImageTitle($title, $expected)
- {
- $data =
-'<rss version="2.0">
- <channel>
- <title>%s</title>
- <image>
- <title>Image title</title>
- </image>
- </channel>
-</rss>';
- $feed = $this->checkFromTemplate($data, $title, $expected);
- $this->assertEquals($expected, $feed->get_title());
- }
-
- /**
- * Based on a test from old bug 18
- *
- * @dataProvider titleprovider
- */
- public function testTitleRSS20WithImageTitleReversed($title, $expected)
- {
- $data =
-'<rss version="2.0">
- <channel>
- <image>
- <title>Image title</title>
- </image>
- <title>%s</title>
- </channel>
-</rss>';
- $feed = $this->checkFromTemplate($data, $title, $expected);
- $this->assertEquals($expected, $feed->get_title());
- }
-}
diff --git a/3rdparty/simplepie/tests/LocatorTest.php b/3rdparty/simplepie/tests/LocatorTest.php
deleted file mode 100755
index 748e334f9..000000000
--- a/3rdparty/simplepie/tests/LocatorTest.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-/**
- * Tests for autodiscovery
- *
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version 1.3.1
- * @copyright 2004-2011 Ryan Parman, Geoffrey Sneddon, Ryan McCue
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @author Ryan McCue
- * @link http://simplepie.org/ SimplePie
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- */
-
-require_once dirname(__FILE__) . '/bootstrap.php';
-
-class LocatorTest extends PHPUnit_Framework_TestCase
-{
- public static function feedmimetypes()
- {
- return array(
- array('application/rss+xml'),
- array('application/rdf+xml'),
- array('text/rdf'),
- array('application/atom+xml'),
- array('text/xml'),
- array('application/xml'),
- );
- }
- /**
- * @dataProvider feedmimetypes
- */
- public function testAutodiscoverOnFeed($mime)
- {
- $data = new MockSimplePie_File('http://example.com/feed.xml');
- $data->headers['content-type'] = $mime;
-
- $locator = new SimplePie_Locator($data, 0, null, false);
-
- $registry = new SimplePie_Registry();
- $registry->register('File', 'MockSimplePie_File');
- $locator->set_registry($registry);
-
- $feed = $locator->find(SIMPLEPIE_LOCATOR_ALL, $all);
- $this->assertEquals($feed, $data);
- }
-
- public function testInvalidMIMEType()
- {
- $data = new MockSimplePie_File('http://example.com/feed.xml');
- $data->headers['content-type'] = 'application/pdf';
-
- $locator = new SimplePie_Locator($data, 0, null, false);
-
- $registry = new SimplePie_Registry();
- $registry->register('File', 'MockSimplePie_File');
- $locator->set_registry($registry);
-
- $feed = $locator->find(SIMPLEPIE_LOCATOR_ALL, $all);
- $this->assertEquals($feed, null);
- }
-
- public function testDirectNoDOM()
- {
- $data = new MockSimplePie_File('http://example.com/feed.xml');
-
- $registry = new SimplePie_Registry();
- $locator = new SimplePie_Locator($data, 0, null, false);
- $locator->dom = null;
- $locator->set_registry($registry);
-
- $this->assertTrue($locator->is_feed($data));
- $this->assertEquals($locator->find(SIMPLEPIE_LOCATOR_ALL, $found), $data);
- }
-
- /**
- * @expectedException SimplePie_Exception
- */
- public function testFailDiscoveryNoDOM()
- {
- $data = new MockSimplePie_File('http://example.com/feed.xml');
- $data->headers['content-type'] = 'text/html';
- $data->body = '<!DOCTYPE html><html><body>Hi!</body></html>';
-
- $registry = new SimplePie_Registry();
- $locator = new SimplePie_Locator($data, 0, null, false);
- $locator->dom = null;
- $locator->set_registry($registry);
-
- $this->assertFalse($locator->is_feed($data));
- $this->assertFalse($locator->find(SIMPLEPIE_LOCATOR_ALL, $found));
- }
-
- /**
- * Tests from Firefox
- *
- * Tests are used under the LGPL license, see file for license
- * information
- */
- public static function firefoxtests()
- {
- $data = array(
- array(new SimplePie_File(dirname(__FILE__) . '/data/fftests.html'))
- );
- foreach ($data as &$row)
- {
- $row[0]->headers = array('content-type' => 'text/html');
- $row[0]->method = SIMPLEPIE_FILE_SOURCE_REMOTE;
- $row[0]->url = 'http://example.com/';
- }
-
- return $data;
- }
-
- /**
- * @dataProvider firefoxtests
- */
- public function test_from_file($data)
- {
- $locator = new SimplePie_Locator($data, 0, null, false);
-
- $registry = new SimplePie_Registry();
- $registry->register('File', 'MockSimplePie_File');
- $locator->set_registry($registry);
-
- $expected = array();
- $document = new DOMDocument();
- $document->loadHTML($data->body);
- $xpath = new DOMXPath($document);
- foreach ($xpath->query('//link') as $element)
- {
- $expected[] = 'http://example.com' . $element->getAttribute('href');
- }
- //$expected = SimplePie_Misc::get_element('link', $data->body);
-
- $feed = $locator->find(SIMPLEPIE_LOCATOR_ALL, $all);
- $this->assertFalse($locator->is_feed($data), 'HTML document not be a feed itself');
- $this->assertInstanceOf('MockSimplePie_File', $feed);
- $success = array_filter($expected, array(get_class(), 'filter_success'));
-
- $found = array_map(array(get_class(), 'map_url_file'), $all);
- $this->assertEquals($success, $found);
- }
-
- protected static function filter_success($url)
- {
- return (stripos($url, 'bogus') === false);
- }
-
- protected static function map_url_file($file)
- {
- return $file->url;
- }
-}
-
-/**
- * Acts as a fake feed request
- */
-class MockSimplePie_File extends SimplePie_File
-{
- public function __construct($url)
- {
- $this->url = $url;
- $this->headers = array(
- 'content-type' => 'application/atom+xml'
- );
- $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE;
- $this->body = '<?xml charset="utf-8"?><feed />';
- $this->status_code = 200;
- }
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/bootstrap.php b/3rdparty/simplepie/tests/bootstrap.php
deleted file mode 100755
index 518b66f69..000000000
--- a/3rdparty/simplepie/tests/bootstrap.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-
-require_once dirname(dirname(__FILE__)) . '/autoloader.php';
diff --git a/3rdparty/simplepie/tests/data/fftests.html b/3rdparty/simplepie/tests/data/fftests.html
deleted file mode 100755
index 283f722ef..000000000
--- a/3rdparty/simplepie/tests/data/fftests.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=377611
-
-From Firefox Source Code, mozilla.org, licensed under LGPL 2.1:
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
--->
- <head>
- <title>Test for feed discovery</title>
-
- <!-- Straight up standard -->
- <link rel="alternate" type="application/atom+xml" title="1" href="/1.atom" />
- <link rel="alternate" type="application/rss+xml" title="2" href="/2.rss" />
- <link rel="feed" title="3" href="/3.xml" />
-
- <!-- rel is a space-separated list -->
- <link rel=" alternate " type="application/atom+xml" title="4" href="/4.atom" />
- <link rel="foo alternate" type="application/atom+xml" title="5" href="/5.atom" />
- <link rel="alternate foo" type="application/atom+xml" title="6" href="/6.atom" />
- <link rel="foo alternate foo" type="application/atom+xml" title="7" href="/7.atom" />
- <link rel="meat feed cake" title="8" href="/8.atom" />
-
- <!-- rel is case-insensitive -->
- <link rel="ALTERNate" type="application/atom+xml" title="9" href="/9.atom" />
- <link rel="fEEd" title="10" href="/10.atom" />
-
- <!-- type can have leading and trailing whitespace -->
- <link rel="alternate" type=" application/atom+xml " title="11" href="/11.atom" />
-
- <!-- type is case-insensitive -->
- <link rel="alternate" type="aPPliCAtion/ATom+xML" title="12" href="/12.atom" />
-
- <!-- "feed stylesheet" is a feed, though "alternate stylesheet" isn't -->
- <link rel="feed stylesheet" title="13" href="/13.atom" />
-
- <!-- hyphens or letters around rel not allowed -->
- <link rel="disabled-alternate" type="application/atom+xml" title="Bogus1" href="/Bogus1" />
- <link rel="alternates" type="application/atom+xml" title="Bogus2" href="/Bogus2" />
- <link rel=" alternate-like" type="application/atom+xml" title="Bogus3" href="/Bogus3" />
-
- <!-- don't tolerate text/xml if title includes 'rss' not as a word -->
- <link rel="alternate" type="text/xml" title="Bogus4 scissorsshaped" href="/Bogus4" />
-
- <!-- don't tolerate application/xml if title includes 'rss' not as a word -->
- <link rel="alternate" type="application/xml" title="Bogus5 scissorsshaped" href="/Bogus5" />
-
- <!-- don't tolerate application/rdf+xml if title includes 'rss' not as a word -->
- <link rel="alternate" type="application/rdf+xml" title="Bogus6 scissorsshaped" href="/Bogus6" />
-
- <!-- don't tolerate random types -->
- <link rel="alternate" type="text/plain" title="Bogus7 rss" href="/Bogus7" />
-
- <!-- don't find Atom by title -->
- <link rel="foopy" type="application/atom+xml" title="Bogus8 Atom and RSS" href="/Bogus8" />
-
- <!-- don't find application/rss+xml by title -->
- <link rel="goats" type="application/rss+xml" title="Bogus9 RSS and Atom" href="/Bogus9" />
-
- <!-- don't find application/rdf+xml by title -->
- <link rel="alternate" type="application/rdf+xml" title="Bogus10 RSS and Atom" href="/Bogus10" />
-
- <!-- don't find application/xml by title -->
- <link rel="alternate" type="application/xml" title="Bogus11 RSS and Atom" href="/Bogus11" />
-
- <!-- don't find text/xml by title -->
- <link rel="alternate" type="text/xml" title="Bogus12 RSS and Atom" href="/Bogus12" />
-
- <!-- alternate and stylesheet isn't a feed -->
- <link rel="alternate stylesheet" type="application/rss+xml" title="Bogus13 RSS" href="/Bogus13" />
- </head>
- <body>
- <script type="text/javascript">
- window.onload = function() {
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-
- var tests = new Array();
-
- var currentWindow =
- window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
- .getInterface(Components.interfaces.nsIWebNavigation)
- .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
- .rootTreeItem
- .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
- .getInterface(Components.interfaces.nsIDOMWindow);
- var browser = currentWindow.gBrowser.selectedBrowser;
-
- var discovered = browser.feeds;
- tests.push({ check: discovered.length > 0,
- message: "some feeds should be discovered" });
-
- var feeds = [];
-
- for each (var aFeed in discovered) {
- feeds[aFeed.href] = true;
- }
-
- for each (var aLink in document.getElementsByTagName("link")) {
- // ignore real stylesheets, and anything without an href property
- if (aLink.type != "text/css" && aLink.href) {
- if (/bogus/i.test(aLink.title)) {
- tests.push({ check: !feeds[aLink.href],
- message: "don't discover " + aLink.href });
- } else {
- tests.push({ check: feeds[aLink.href],
- message: "should discover " + aLink.href });
- }
- }
- }
- window.arguments[0].tests = tests;
- window.close();
- }
- </script>
- </body>
-</html>
-
diff --git a/3rdparty/simplepie/tests/oldtests.php b/3rdparty/simplepie/tests/oldtests.php
deleted file mode 100755
index 4f6ad51b9..000000000
--- a/3rdparty/simplepie/tests/oldtests.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-date_default_timezone_set('UTC');
-error_reporting(E_ALL | E_STRICT);
-
-require_once dirname(__FILE__) . '/bootstrap.php';
-require_once dirname(__FILE__) . '/oldtests/compat_test_harness.php';
-require_once dirname(__FILE__) . '/oldtests/functions.php';
-
-class OldTest extends PHPUnit_Framework_TestCase
-{
- public function getTests()
- {
- $test_folders = array(
- 'absolutize',
- 'date',
- 'feed_category_label',
- 'feed_copyright',
- 'feed_description',
- 'feed_image_height',
- 'feed_image_link',
- 'feed_image_title',
- 'feed_image_url',
- 'feed_image_width',
- 'feed_language',
- 'feed_link',
- 'feed_title',
- 'first_item_author_name',
- 'first_item_category_label',
- 'first_item_content',
- 'first_item_contributor_name',
- 'first_item_date',
- 'first_item_description',
- 'first_item_id',
- 'first_item_latitude',
- 'first_item_longitude',
- 'first_item_permalink',
- 'first_item_title',
- 'itunes_rss'
- );
-
- $master = new Unit_Test2_Group('SimplePie Test Suite');
-
- foreach ($test_folders as $test)
- {
- $test_group = new SimplePie_Unit_Test2_Group(ucwords(str_replace('_', ' ', $test)));
- $test_group->load_folder(dirname(__FILE__) . '/oldtests/' . $test);
- $master->add($test_group);
- }
-
- $test_group = new SimplePie_Unit_Test2_Group('Who knows a <title> from a hole in the ground?');
- $test_group->load_folder(dirname(__FILE__) . '/oldtests/who_knows_a_title_from_a_hole_in_the_ground');
- $master->add($test_group);
-
- $tests = array();
- $groups = array($master);
- while ($group = array_shift($groups))
- {
- foreach ($group->tests as $group_tests)
- {
- foreach ($group_tests as $test)
- {
- if ($test instanceof Unit_Test2)
- {
- $tests[] = array($test);
- }
- elseif ($test instanceof Unit_Test2_Group)
- {
- $groups[] = $test;
- }
- }
- }
- }
- return $tests;
- }
-
- /**
- * @dataProvider getTests
- */
- public function testOld($test)
- {
- $test->run();
- $this->assertSame($test->expected, $test->result);
- }
-}
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/README b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/README
deleted file mode 100755
index 385dc74f8..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/README
+++ /dev/null
@@ -1 +0,0 @@
-The tests enclosed within come from RFC 3986 section 5.4 and all share the same base URL \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/1.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/1.php
deleted file mode 100755
index f55e62d8b..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/1.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_1 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '../../../g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/10.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/10.php
deleted file mode 100755
index 668cda63c..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/10.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_10 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = './g/.';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/11.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/11.php
deleted file mode 100755
index eda10a60b..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/11.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_11 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g/./h';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g/h';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/12.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/12.php
deleted file mode 100755
index b66d71f60..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/12.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_12 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g/../h';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/h';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/13.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/13.php
deleted file mode 100755
index 06b5e326c..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/13.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_13 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g;x=1/./y';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g;x=1/y';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/14.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/14.php
deleted file mode 100755
index 4a40af5ad..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/14.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_14 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g;x=1/../y';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/y';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/15.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/15.php
deleted file mode 100755
index bef790e70..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/15.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_15 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g?y/./x';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g?y/./x';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/16.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/16.php
deleted file mode 100755
index 932cda4b5..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/16.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_16 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g?y/../x';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g?y/../x';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/17.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/17.php
deleted file mode 100755
index 8d626b68f..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/17.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_17 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g#s/./x';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g#s/./x';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/18.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/18.php
deleted file mode 100755
index 7a53018cf..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/18.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_18 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g#s/../x';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g#s/../x';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/19.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/19.php
deleted file mode 100755
index 289c1abc2..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/19.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_19 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'http:g';
- }
-
- function expected()
- {
- $this->expected = 'http:g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/2.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/2.php
deleted file mode 100755
index 9a0534554..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/2.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_2 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '../../../../g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/3.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/3.php
deleted file mode 100755
index f96f5468f..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/3.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_3 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '/./g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/4.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/4.php
deleted file mode 100755
index 64e359fe6..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/4.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_4 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '/../g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/5.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/5.php
deleted file mode 100755
index dfd8e42be..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/5.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_5 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g.';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g.';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/6.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/6.php
deleted file mode 100755
index 3125b0044..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/6.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_6 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '.g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/.g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/7.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/7.php
deleted file mode 100755
index 82f97b0ce..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/7.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_7 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g..';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g..';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/8.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/8.php
deleted file mode 100755
index 836ede076..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/8.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_8 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '..g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/..g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/9.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/9.php
deleted file mode 100755
index 4917d4ceb..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/abnormal/9.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Abnormal_9 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = './../g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/base.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/base.php
deleted file mode 100755
index 913aeec9d..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/base.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986 extends SimplePie_Absolutize_Test
-{
- function SimplePie_Absolutize_Test_RFC3986()
- {
- // Ugly hack so it only applies to this and none of its children
- if (!is_subclass_of($this, 'SimplePie_Absolutize_Test_RFC3986'))
- {
- $this->test = false;
- }
- // Only call the parent constructor if it exists
- if (is_callable(array('parent', 'SimplePie_Absolutize_Test')))
- {
- parent::SimplePie_Absolutize_Test();
- }
- }
-
- function init()
- {
- $this->data['base'] = 'http://a/b/c/d;p?q';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/1.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/1.php
deleted file mode 100755
index 0550ff030..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/1.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_1 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g:h';
- }
-
- function expected()
- {
- $this->expected = 'g:h';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/10.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/10.php
deleted file mode 100755
index 86eab935c..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/10.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_10 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g#s';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g#s';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/11.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/11.php
deleted file mode 100755
index caa262bff..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/11.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_11 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g?y#s';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g?y#s';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/12.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/12.php
deleted file mode 100755
index 8425386a4..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/12.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_12 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = ';x';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/;x';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/13.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/13.php
deleted file mode 100755
index 8fc624930..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/13.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_13 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g;x';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g;x';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/14.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/14.php
deleted file mode 100755
index bef64c3c2..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/14.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_14 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g;x?y#s';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g;x?y#s';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/15.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/15.php
deleted file mode 100755
index d3af1a4e5..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/15.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_15 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/d;p?q';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/16.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/16.php
deleted file mode 100755
index d511971e1..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/16.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_16 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '.';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/17.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/17.php
deleted file mode 100755
index 0c4581bcc..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/17.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_17 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = './';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/18.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/18.php
deleted file mode 100755
index 8e25cc5d0..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/18.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_18 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '..';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/19.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/19.php
deleted file mode 100755
index 53cd164d7..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/19.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_19 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '../';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/2.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/2.php
deleted file mode 100755
index c98f815e0..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/2.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_2 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/20.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/20.php
deleted file mode 100755
index 3a3348ad3..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/20.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_20 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '../g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/21.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/21.php
deleted file mode 100755
index e6bd90001..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/21.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_21 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '../..';
- }
-
- function expected()
- {
- $this->expected = 'http://a/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/22.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/22.php
deleted file mode 100755
index 0a6cf9732..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/22.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_22 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '../../';
- }
-
- function expected()
- {
- $this->expected = 'http://a/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/23.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/23.php
deleted file mode 100755
index fcd90f01e..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/23.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_23 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '../../g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/3.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/3.php
deleted file mode 100755
index d5401736c..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/3.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_3 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = './g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/4.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/4.php
deleted file mode 100755
index 9eff412aa..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/4.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_4 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g/';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/5.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/5.php
deleted file mode 100755
index 82681cb64..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/5.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_5 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '/g';
- }
-
- function expected()
- {
- $this->expected = 'http://a/g';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/6.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/6.php
deleted file mode 100755
index cda13a4ac..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/6.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_6 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '//g';
- }
-
- function expected()
- {
- $this->expected = 'http://g/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/7.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/7.php
deleted file mode 100755
index e97ecd372..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/7.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_7 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '?y';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/d;p?y';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/8.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/8.php
deleted file mode 100755
index 0ac6fe46c..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/8.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_8 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = 'g?y';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/g?y';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/9.php b/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/9.php
deleted file mode 100755
index d790df845..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/RFC3986.5.4/normal/9.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_RFC3986_Normal_9 extends SimplePie_Absolutize_Test_RFC3986
-{
- function data()
- {
- $this->data['relative'] = '#s';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/d;p?q#s';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/1091.0.1.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/1091.0.1.php
deleted file mode 100755
index 9f3c1bb6b..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/1091.0.1.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_1091_Test_0_1 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://example.com';
- $this->data['relative'] = '//example.net';
- }
-
- function expected()
- {
- $this->expected = 'http://example.net/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/1091.0.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/1091.0.php
deleted file mode 100755
index a81eb060d..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/1091.0.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_1091_Test_0 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http:g';
- $this->data['relative'] = 'a';
- }
-
- function expected()
- {
- $this->expected = 'http:a';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.0.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.0.php
deleted file mode 100755
index 95bf7897c..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.0.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_274_Test_0 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b/';
- $this->data['relative'] = 'c';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.1.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.1.php
deleted file mode 100755
index 409b3feab..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.1.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_274_Test_1 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/';
- $this->data['relative'] = 'b';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.2.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.2.php
deleted file mode 100755
index c3b159e98..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.2.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_274_Test_2 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/';
- $this->data['relative'] = '/b';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.3.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.3.php
deleted file mode 100755
index 4b268e44f..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/274.3.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_274_Test_3 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b';
- $this->data['relative'] = 'c';
- }
-
- function expected()
- {
- $this->expected = 'http://a/c';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/579.0.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/579.0.php
deleted file mode 100755
index b899d973f..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/579.0.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_579_Test_0 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b/';
- $this->data['relative'] = "b\x0Ac";
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/b%0Ac';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.0.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.0.php
deleted file mode 100755
index 1c268e65e..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.0.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_691_Test_0 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b/c';
- $this->data['relative'] = 'zero://a/b/c';
- }
-
- function expected()
- {
- $this->expected = 'zero://a/b/c';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.1.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.1.php
deleted file mode 100755
index c2b5be013..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.1.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_691_Test_1 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b/c';
- $this->data['relative'] = '//0';
- }
-
- function expected()
- {
- $this->expected = 'http://0/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.2.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.2.php
deleted file mode 100755
index c3ce0855d..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.2.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_691_Test_2 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b/c';
- $this->data['relative'] = '0';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/0';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.3.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.3.php
deleted file mode 100755
index 2bfd95a1d..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.3.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_691_Test_3 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b/c';
- $this->data['relative'] = '?0';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c?0';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.4.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.4.php
deleted file mode 100755
index 9c82198c6..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.4.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_691_Test_4 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b/c';
- $this->data['relative'] = '#0';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c#0';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.5.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.5.php
deleted file mode 100755
index 10a93b95b..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.5.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_691_Test_5 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'zero://a/b/c';
- $this->data['relative'] = 'd';
- }
-
- function expected()
- {
- $this->expected = 'zero://a/b/d';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.6.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.6.php
deleted file mode 100755
index 6a9ef397f..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.6.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_691_Test_6 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://0/b/c';
- $this->data['relative'] = 'd';
- }
-
- function expected()
- {
- $this->expected = 'http://0/b/d';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.7.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.7.php
deleted file mode 100755
index ab51d7499..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.7.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_691_Test_7 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b/c?0';
- $this->data['relative'] = 'd';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/d';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.8.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.8.php
deleted file mode 100755
index 4c1ee0eb8..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/691.8.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_691_Test_8 extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b/c#0';
- $this->data['relative'] = 'd';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/d';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/pct_encoding_invalid_second_char.php b/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/pct_encoding_invalid_second_char.php
deleted file mode 100755
index 75dc2bb10..000000000
--- a/3rdparty/simplepie/tests/oldtests/absolutize/SPtests/bugs/pct_encoding_invalid_second_char.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class SimplePie_Absolutize_Test_Bug_Pct_Encoding_Invalid_Second_Char extends SimplePie_Absolutize_Test
-{
- function data()
- {
- $this->data['base'] = 'http://a/b/c/d';
- $this->data['relative'] = 'f%0o';
- }
-
- function expected()
- {
- $this->expected = 'http://a/b/c/f%250o';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/compat_test_harness.php b/3rdparty/simplepie/tests/oldtests/compat_test_harness.php
deleted file mode 100755
index 87a0bb6ee..000000000
--- a/3rdparty/simplepie/tests/oldtests/compat_test_harness.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-
-class Unit_Test2
-{
- public $test = true;
- public $name;
- public $expected;
- public $result;
- protected $data;
-
- /**
- * Set the test name to the class name by default, replacing "_" with " "
- */
- public function Unit_Test2()
- {
- $this->name = str_replace('_', ' ', get_class($this));
- }
-
- /**
- * Whether this class is a test
- */
- public function is_test()
- {
- return (bool) $this->test;
- }
-
- /**
- * Test name
- */
- public function name()
- {
- return $this->name;
- }
-
- public function run()
- {
- $this->init();
- $this->data();
- $this->expected();
- $this->test();
- }
-
- protected function init() {}
- protected function data() {}
- protected function expected() {}
- protected function test() {}
-}
-
-class Unit_Test2_Group
-{
- public $name;
- public $tests;
-
- public function Unit_Test2_Group($name)
- {
- $this->name = $name;
- }
-
- /**
- * Add a test (a Unit_Test2 child, or a Unit_Test2_Group)
- *
- * @param object $test Test to add
- */
- public function add($test)
- {
- $this->tests[$test->name][] = $test;
- }
-
- /**
- * Remove a test
- *
- * @param string $name Test name
- */
- public function remove($name)
- {
- unset($this->tests[$name]);
- }
-
- /**
- * Load tests in folder
- *
- * This loads all the Unit_Test2 classes within files with the same
- * extension as this file within the specified folder
- *
- * @param string $folder Folder name
- */
- public function load_folder($folder)
- {
- static $extension = null;
- if (!$extension)
- {
- $extension = pathinfo(__FILE__, PATHINFO_EXTENSION);
- }
- $files = Unit_Test2_Files::get_files($folder);
- $count_classes = count(get_declared_classes());
- foreach ($files as $file)
- {
- if (is_file($file) && pathinfo($file, PATHINFO_EXTENSION) === $extension)
- {
- include $file;
- }
- }
- $classes = array_slice(get_declared_classes(), $count_classes);
- foreach ($classes as $class)
- {
- if (is_subclass_of($class, 'Unit_Test2'))
- {
- $class = new $class;
- if ($class->is_test())
- {
- $this->add($class);
- }
- }
- }
- }
-}
-
-/**
- * File listing class
- *
- * @package Unit Test
- */
-class Unit_Test2_Files
-{
- /**
- * Get a list of files/folders within $dir
- *
- * @param string $dir Folder to get listing for
- * @return array
- */
- static public function get_files($dir)
- {
- $files = array();
- if ($dh = opendir($dir))
- {
- while (($file = readdir($dh)) !== false)
- {
- if (substr($file, 0, 1) != '.')
- {
- $files[] = "$dir/$file";
- }
- }
- closedir($dh);
- usort($files, array(__CLASS__, 'sort_files'));
- foreach ($files as $file)
- {
- if (is_dir($file))
- {
- array_splice($files, array_search($file, $files), 0, Unit_Test2_Files::get_files($file));
- }
- }
- }
- return $files;
- }
-
- /**
- * Sort files/folders with files listed before inner folders
- *
- * @param string $a File/folder 1
- * @param string $b File/folder 2
- * @return int
- */
- static public function sort_files($a, $b)
- {
- if (is_dir($a) && is_dir($b))
- {
- return strnatcmp($a, $b);
- }
- else if (is_dir($a))
- {
- return 1;
- }
- else if (is_dir($b))
- {
- return -1;
- }
- else
- {
- return strnatcmp($a, $b);
- }
- }
-} \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/RFC3339/1.php b/3rdparty/simplepie/tests/oldtests/date/RFC3339/1.php
deleted file mode 100755
index 3ae32bcc6..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/RFC3339/1.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC3339_1 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = '1985-04-12T23:20:50.52Z';
- }
-
- function expected()
- {
- $this->expected = 482196051;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/RFC3339/2.php b/3rdparty/simplepie/tests/oldtests/date/RFC3339/2.php
deleted file mode 100755
index 682c48e9d..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/RFC3339/2.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC3339_2 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = '1996-12-19T16:39:57-08:00';
- }
-
- function expected()
- {
- $this->expected = 851042397;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/RFC3339/3.php b/3rdparty/simplepie/tests/oldtests/date/RFC3339/3.php
deleted file mode 100755
index 241739a7a..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/RFC3339/3.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC3339_3 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = '1996-12-20T00:39:57Z';
- }
-
- function expected()
- {
- $this->expected = 851042397;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/RFC3339/README b/3rdparty/simplepie/tests/oldtests/date/RFC3339/README
deleted file mode 100755
index da6e9bd7b..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/RFC3339/README
+++ /dev/null
@@ -1 +0,0 @@
-The tests enclosed within come from RFC 3339 section 5.8 \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/four_digit_year.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/four_digit_year.php
deleted file mode 100755
index b0208821f..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/four_digit_year.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_Four_Digit_Year extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 1994 13:15:30 GMT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/full_name_of_day.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/full_name_of_day.php
deleted file mode 100755
index 9874d526f..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/full_name_of_day.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_Full_Name_Of_Day extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Friday, 05 Nov 94 13:15:30 GMT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/invalid_day.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/invalid_day.php
deleted file mode 100755
index 0af95f3b6..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/invalid_day.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_Invalid_Day extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Vendredi, 05 Nov 94 13:15:30 GMT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/invalid_timezone.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/invalid_timezone.php
deleted file mode 100755
index 753633b3e..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/invalid_timezone.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_Invalid_Timezone extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 UTC';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/mismatch_name_of_day.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/mismatch_name_of_day.php
deleted file mode 100755
index 02054cdf6..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/invalid/mismatch_name_of_day.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_Mismatch_Name_Of_Day extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Mon, 05 Nov 94 13:15:30 GMT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/1.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/1.php
deleted file mode 100755
index c8a65b628..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/1.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_1 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 GMT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/10.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/10.php
deleted file mode 100755
index fbae6451d..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/10.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_10 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 06:15:30 MST';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/11.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/11.php
deleted file mode 100755
index 635fe2a98..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/11.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_11 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 07:15:30 MDT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/12.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/12.php
deleted file mode 100755
index 7afa82e59..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/12.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_12 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 05:15:30 PST';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/13.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/13.php
deleted file mode 100755
index dfdaa3466..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/13.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_13 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 06:15:30 PDT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/14.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/14.php
deleted file mode 100755
index f45b660af..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/14.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_14 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 A';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/15.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/15.php
deleted file mode 100755
index ecf32ebc6..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/15.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_15 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 B';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/16.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/16.php
deleted file mode 100755
index 1defa0f56..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/16.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_16 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 C';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/17.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/17.php
deleted file mode 100755
index c14bc9e6e..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/17.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_17 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 D';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/18.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/18.php
deleted file mode 100755
index 1ef501662..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/18.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_18 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 E';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/19.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/19.php
deleted file mode 100755
index 4cd090909..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/19.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_19 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 F';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/2.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/2.php
deleted file mode 100755
index c9f76e202..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/2.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_2 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = '05 Nov 94 13:15:30 GMT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/20.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/20.php
deleted file mode 100755
index b60f499dc..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/20.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_20 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 G';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/21.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/21.php
deleted file mode 100755
index c689c547d..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/21.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_21 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 H';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/22.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/22.php
deleted file mode 100755
index 9dfb091b0..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/22.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_22 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 I';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/23.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/23.php
deleted file mode 100755
index 7fb0c81c3..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/23.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_23 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 K';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/24.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/24.php
deleted file mode 100755
index a90fe568f..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/24.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_24 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 L';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/25.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/25.php
deleted file mode 100755
index 525440d45..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/25.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_25 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 M';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/26.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/26.php
deleted file mode 100755
index 95a6475f8..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/26.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_26 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 N';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/27.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/27.php
deleted file mode 100755
index d13d39164..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/27.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_27 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 O';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/28.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/28.php
deleted file mode 100755
index 9ef9d6c92..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/28.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_28 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 P';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/29.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/29.php
deleted file mode 100755
index 8ef58be10..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/29.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_29 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 Q';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/3.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/3.php
deleted file mode 100755
index fcb29201f..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/3.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_3 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 5 Nov 94 13:15:30 GMT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/30.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/30.php
deleted file mode 100755
index d28f23cd0..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/30.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_30 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 R';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/31.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/31.php
deleted file mode 100755
index af1f5adcc..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/31.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_31 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 S';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/32.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/32.php
deleted file mode 100755
index da2067903..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/32.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_32 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 T';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/33.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/33.php
deleted file mode 100755
index 1c92362d4..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/33.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_33 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 U';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/34.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/34.php
deleted file mode 100755
index cf3ecb343..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/34.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_34 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 V';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/35.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/35.php
deleted file mode 100755
index 900401323..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/35.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_35 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 W';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/36.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/36.php
deleted file mode 100755
index 2f9c015bc..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/36.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_36 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 X';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/37.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/37.php
deleted file mode 100755
index a50940682..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/37.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_37 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 Y';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/38.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/38.php
deleted file mode 100755
index fc8a1d80c..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/38.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_38 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 Z';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/39.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/39.php
deleted file mode 100755
index 975a348d8..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/39.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_39 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 +0000';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/4.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/4.php
deleted file mode 100755
index c6767f83c..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/4.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_4 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15 GMT';
- }
-
- function expected()
- {
- $this->expected = 784041300;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/40.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/40.php
deleted file mode 100755
index 78e5be9fb..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/40.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_40 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 -0000';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/41.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/41.php
deleted file mode 100755
index d5bdfe40b..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/41.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_41 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 14:15:30 +0100';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/42.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/42.php
deleted file mode 100755
index eeae5e18e..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/42.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_42 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 12:15:30 -0100';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/43.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/43.php
deleted file mode 100755
index f97a2f102..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/43.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_43 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri(day), 05 Nov(ember) 94 13:15:30 GMT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/44.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/44.php
deleted file mode 100755
index d12b919b0..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/44.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_44 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri(day), 05 Nov(ember) 94 13:15:30 A';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/5.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/5.php
deleted file mode 100755
index cbb13360c..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/5.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_5 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 13:15:30 UT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/6.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/6.php
deleted file mode 100755
index d89efb0eb..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/6.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_6 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 08:15:30 EST';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/7.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/7.php
deleted file mode 100755
index f6574c7c9..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/7.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_7 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 09:15:30 EDT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/8.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/8.php
deleted file mode 100755
index 2b6a1afa1..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/8.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_8 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 07:15:30 CST';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/9.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/9.php
deleted file mode 100755
index bfb5d37c8..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/RFC2822/valid/9.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_RFC2822_9 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'Fri, 05 Nov 94 08:15:30 CDT';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/bugs/157.0.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/bugs/157.0.php
deleted file mode 100755
index e08a62bc3..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/bugs/157.0.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_Bug_157_Test_0 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = 'meep';
- }
-
- function expected()
- {
- $this->expected = false;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/SPtests/bugs/259.0.php b/3rdparty/simplepie/tests/oldtests/date/SPtests/bugs/259.0.php
deleted file mode 100755
index a50c7f35f..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/SPtests/bugs/259.0.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_Bug_259_Test_0 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = '1994-11-05T08:15:30-0500';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/W3CDTF/1.php b/3rdparty/simplepie/tests/oldtests/date/W3CDTF/1.php
deleted file mode 100755
index d11a59f38..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/W3CDTF/1.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_W3CDTF_1 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = '1994-11-05T08:15:30-05:00';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/W3CDTF/2.php b/3rdparty/simplepie/tests/oldtests/date/W3CDTF/2.php
deleted file mode 100755
index 9904e2ba1..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/W3CDTF/2.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class SimplePie_Date_Test_W3CDTF_2 extends SimplePie_Date_Test
-{
- function data()
- {
- $this->data = '1994-11-05T13:15:30Z';
- }
-
- function expected()
- {
- $this->expected = 784041330;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/date/W3CDTF/README b/3rdparty/simplepie/tests/oldtests/date/W3CDTF/README
deleted file mode 100755
index 4ace48d48..000000000
--- a/3rdparty/simplepie/tests/oldtests/date/W3CDTF/README
+++ /dev/null
@@ -1 +0,0 @@
-The tests enclosed within come from the W3C Date and Time Formats note \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/0.3/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/0.3/dc/1.0/subject.php
deleted file mode 100755
index 735222265..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/0.3/dc/1.0/subject.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_Atom_03_DC_10_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <dc:subject>Feed Category</dc:subject>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/0.3/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/0.3/dc/1.1/subject.php
deleted file mode 100755
index 81c0fc3d5..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/0.3/dc/1.1/subject.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_Atom_03_DC_11_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:subject>Feed Category</dc:subject>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/dc/1.0/subject.php
deleted file mode 100755
index ffe2eb68d..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/dc/1.0/subject.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_Atom_10_DC_10_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <dc:subject>Feed Category</dc:subject>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/dc/1.1/subject.php
deleted file mode 100755
index 89fd41849..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/dc/1.1/subject.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_Atom_10_DC_11_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:subject>Feed Category</dc:subject>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/label.php
deleted file mode 100755
index eacf3706f..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/label.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_Atom_10_Category_Label extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <category label="Feed Category"/>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/term.php
deleted file mode 100755
index d387f69d4..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/atom/1.0/term.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_Atom_10_Category_Term extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <category term="Feed Category"/>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/bugs/21.0.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/bugs/21.0.php
deleted file mode 100755
index 1091385d4..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/bugs/21.0.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_Bug_21_Test_0 extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <category term="Example category"/>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Example category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/atom/1.0/label.php
deleted file mode 100755
index 2b91b3916..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/atom/1.0/label.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_090_Atom_10_Category_Label extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category label="Feed Category"/>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/atom/1.0/term.php
deleted file mode 100755
index cc797910c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/atom/1.0/term.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_090_Atom_10_Category_Term extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category term="Feed Category"/>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/dc/1.0/subject.php
deleted file mode 100755
index 92b50d29e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/dc/1.0/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_090_DC_10_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/dc/1.1/subject.php
deleted file mode 100755
index e75f4b8bc..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.90/dc/1.1/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_090_DC_11_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/atom/1.0/label.php
deleted file mode 100755
index 0570fa8b7..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/atom/1.0/label.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_091_Netscape_Atom_10_Category_Label extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category label="Feed Category"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/atom/1.0/term.php
deleted file mode 100755
index 51ce0f0dd..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/atom/1.0/term.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_091_Netscape_Atom_10_Category_Term extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category term="Feed Category"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/dc/1.0/subject.php
deleted file mode 100755
index dde6bea49..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/dc/1.0/subject.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_091_Netscape_DC_10_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/dc/1.1/subject.php
deleted file mode 100755
index 6678e1dd6..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-netscape/dc/1.1/subject.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_091_Netscape_DC_11_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/atom/1.0/label.php
deleted file mode 100755
index e144ba952..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/atom/1.0/label.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_091_Userland_Atom_10_Category_Label extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category label="Feed Category"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/atom/1.0/term.php
deleted file mode 100755
index 034502990..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/atom/1.0/term.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_091_Userland_Atom_10_Category_Term extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category term="Feed Category"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/dc/1.0/subject.php
deleted file mode 100755
index 30be08cb1..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/dc/1.0/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_091_Userland_DC_10_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/dc/1.1/subject.php
deleted file mode 100755
index 2f3e7b9ce..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.91-userland/dc/1.1/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_091_Userland_DC_11_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/atom/1.0/label.php
deleted file mode 100755
index 38af20b99..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/atom/1.0/label.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_092_Atom_10_Category_Label extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category label="Feed Category"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/atom/1.0/term.php
deleted file mode 100755
index 2539a6d7b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/atom/1.0/term.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_092_Atom_10_Category_Term extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category term="Feed Category"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/dc/1.0/subject.php
deleted file mode 100755
index 0decfee44..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/dc/1.0/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_092_DC_10_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/dc/1.1/subject.php
deleted file mode 100755
index 1108b4fa8..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/0.92/dc/1.1/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_092_DC_11_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/atom/1.0/label.php
deleted file mode 100755
index 6c171bd03..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/atom/1.0/label.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_10_Atom_10_Category_Label extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category label="Feed Category"/>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/atom/1.0/term.php
deleted file mode 100755
index 78923a5e6..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/atom/1.0/term.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_10_Atom_10_Category_Term extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category term="Feed Category"/>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/dc/1.0/subject.php
deleted file mode 100755
index 169e56027..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/dc/1.0/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_10_DC_10_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/dc/1.1/subject.php
deleted file mode 100755
index 845b8d6c9..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/1.0/dc/1.1/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_10_DC_11_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/atom/1.0/label.php
deleted file mode 100755
index 24b8d6555..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/atom/1.0/label.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_20_Atom_10_Category_Label extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category label="Feed Category"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/atom/1.0/term.php
deleted file mode 100755
index 99e166c73..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/atom/1.0/term.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_20_Atom_10_Category_Term extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:category term="Feed Category"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/category.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/category.php
deleted file mode 100755
index 5bd28af3a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/category.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_20_Category extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <category>Feed Category</category>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/dc/1.0/subject.php
deleted file mode 100755
index b13e9f5cb..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/dc/1.0/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_20_DC_10_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/dc/1.1/subject.php
deleted file mode 100755
index edaee1a07..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_category_label/SPtests/rss/2.0/dc/1.1/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Category_Label_Test_RSS_20_DC_11_Subject extends SimplePie_Feed_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:subject>Feed Category</dc:subject>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/0.3/dc/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/0.3/dc/1.0/rights.php
deleted file mode 100755
index fc3058b0d..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/0.3/dc/1.0/rights.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_Atom_03_DC_10 extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <dc:rights>Example Copyright Information</dc:rights>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/0.3/dc/1.1/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/0.3/dc/1.1/rights.php
deleted file mode 100755
index 65a26725c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/0.3/dc/1.1/rights.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_Atom_03_DC_11 extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:rights>Example Copyright Information</dc:rights>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/dc/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/dc/1.0/rights.php
deleted file mode 100755
index 6b1cd5dd1..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/dc/1.0/rights.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_Atom_10_DC_10 extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <dc:rights>Example Copyright Information</dc:rights>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/dc/1.1/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/dc/1.1/rights.php
deleted file mode 100755
index 98bcde948..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/dc/1.1/rights.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_Atom_10_DC_11 extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:rights>Example Copyright Information</dc:rights>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/rights.php
deleted file mode 100755
index 3e0b7f6f0..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/atom/1.0/rights.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_Atom_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <rights>Example Copyright Information</rights>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/atom/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/atom/1.0/rights.php
deleted file mode 100755
index c45fb268c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/atom/1.0/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_090_Atom_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:rights>Example Copyright Information</a:rights>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/dc/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/dc/1.0/rights.php
deleted file mode 100755
index b5b5df1a3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/dc/1.0/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_090_DC_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/dc/1.1/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/dc/1.1/rights.php
deleted file mode 100755
index 528d5b56d..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.90/dc/1.1/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_090_DC_11_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/atom/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/atom/1.0/rights.php
deleted file mode 100755
index 718aa8862..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/atom/1.0/rights.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_091_Netscape_Atom_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:rights>Example Copyright Information</a:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/copyright.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/copyright.php
deleted file mode 100755
index cceec1f2d..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/copyright.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_091_Netscape_Copyright extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <copyright>Example Copyright Information</copyright>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/dc/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/dc/1.0/rights.php
deleted file mode 100755
index 7422cde33..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/dc/1.0/rights.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_091_Netscape_DC_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/dc/1.1/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/dc/1.1/rights.php
deleted file mode 100755
index 5506ee84f..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-netscape/dc/1.1/rights.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_091_Netscape_DC_11_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/atom/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/atom/1.0/rights.php
deleted file mode 100755
index 32a1efa80..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/atom/1.0/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_091_Userland_Atom_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:rights>Example Copyright Information</a:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/copyright.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/copyright.php
deleted file mode 100755
index 2da3ceb0b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/copyright.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_091_Userland_Copyright extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <copyright>Example Copyright Information</copyright>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/dc/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/dc/1.0/rights.php
deleted file mode 100755
index 44daa979e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/dc/1.0/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_091_Userland_DC_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/dc/1.1/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/dc/1.1/rights.php
deleted file mode 100755
index aaa13264b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.91-userland/dc/1.1/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_091_Userland_DC_11_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/atom/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/atom/1.0/rights.php
deleted file mode 100755
index 8b70888ea..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/atom/1.0/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_092_Atom_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:rights>Example Copyright Information</a:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/copyright.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/copyright.php
deleted file mode 100755
index f364e7b3c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/copyright.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_092_Copyright extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <copyright>Example Copyright Information</copyright>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/dc/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/dc/1.0/rights.php
deleted file mode 100755
index 68a8a5c9a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/dc/1.0/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_092_DC_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/dc/1.1/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/dc/1.1/rights.php
deleted file mode 100755
index 6607d1674..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/0.92/dc/1.1/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_092_DC_11_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/atom/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/atom/1.0/rights.php
deleted file mode 100755
index 4f8a2f343..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/atom/1.0/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_10_Atom_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:rights>Example Copyright Information</a:rights>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/dc/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/dc/1.0/rights.php
deleted file mode 100755
index efa34b39b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/dc/1.0/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_10_DC_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/dc/1.1/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/dc/1.1/rights.php
deleted file mode 100755
index 803f5e024..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/1.0/dc/1.1/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_10_DC_11_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/atom/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/atom/1.0/rights.php
deleted file mode 100755
index cd2e63764..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/atom/1.0/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_20_Atom_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:rights>Example Copyright Information</a:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/copyright.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/copyright.php
deleted file mode 100755
index 273424bf4..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/copyright.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_20_Copyright extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <copyright>Example Copyright Information</copyright>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/dc/1.0/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/dc/1.0/rights.php
deleted file mode 100755
index e866e6708..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/dc/1.0/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_20_DC_10_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/dc/1.1/rights.php b/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/dc/1.1/rights.php
deleted file mode 100755
index 9c251592c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_copyright/SPtests/rss/2.0/dc/1.1/rights.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Copyright_Test_RSS_20_DC_11_Rights extends SimplePie_Feed_Copyright_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:rights>Example Copyright Information</dc:rights>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Example Copyright Information';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/dc/1.0/description.php
deleted file mode 100755
index c6fc4cd31..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/dc/1.0/description.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_Atom_03_DC_10_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <dc:description>Feed Description</dc:description>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/dc/1.1/description.php
deleted file mode 100755
index 3b466a4ff..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/dc/1.1/description.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_Atom_03_DC_11_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:description>Feed Description</dc:description>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/tagline.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/tagline.php
deleted file mode 100755
index 41ddd356b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/0.3/tagline.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_Atom_03_Tagline extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <tagline>Feed Description</tagline>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/dc/1.0/description.php
deleted file mode 100755
index ebd9f0e42..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/dc/1.0/description.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_Atom_10_DC_10_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <dc:description>Feed Description</dc:description>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/dc/1.1/description.php
deleted file mode 100755
index 31e4d277b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/dc/1.1/description.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_Atom_10_DC_11_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:description>Feed Description</dc:description>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/subtitle.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/subtitle.php
deleted file mode 100755
index da830bf80..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/atom/1.0/subtitle.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_Atom_10_Subtitle extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <subtitle>Feed Description</subtitle>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/atom/0.3/tagline.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/atom/0.3/tagline.php
deleted file mode 100755
index e6cb8aba3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/atom/0.3/tagline.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_090_Atom_03_Tagline extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:tagline>Feed Description</a:tagline>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/atom/1.0/subtitle.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/atom/1.0/subtitle.php
deleted file mode 100755
index 3824094e5..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/atom/1.0/subtitle.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_090_Atom_10_Subtitle extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:subtitle>Feed Description</a:subtitle>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/dc/1.0/description.php
deleted file mode 100755
index 12170525c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_090_DC_10_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/dc/1.1/description.php
deleted file mode 100755
index 3db65728c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_090_DC_11_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/description.php
deleted file mode 100755
index 52d7cf0c3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.90/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_090_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <channel>
- <description>Feed Description</description>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/atom/0.3/tagline.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/atom/0.3/tagline.php
deleted file mode 100755
index d8eedbc3d..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/atom/0.3/tagline.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_091_Netscape_Atom_03_Tagline extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:tagline>Feed Description</a:tagline>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/atom/1.0/subtitle.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/atom/1.0/subtitle.php
deleted file mode 100755
index 9339d490e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/atom/1.0/subtitle.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_091_Netscape_Atom_10_Subtitle extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:subtitle>Feed Description</a:subtitle>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/dc/1.0/description.php
deleted file mode 100755
index ba0cca251..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/dc/1.0/description.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_091_Netscape_DC_10_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/dc/1.1/description.php
deleted file mode 100755
index 10592c12f..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/dc/1.1/description.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_091_Netscape_DC_11_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/description.php
deleted file mode 100755
index 291854d27..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-netscape/description.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_091_Netscape_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <description>Feed Description</description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/atom/0.3/tagline.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/atom/0.3/tagline.php
deleted file mode 100755
index 2a44a8eb3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/atom/0.3/tagline.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_091_Userland_Atom_03_Tagline extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:tagline>Feed Description</a:tagline>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/atom/1.0/subtitle.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/atom/1.0/subtitle.php
deleted file mode 100755
index dab053e14..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/atom/1.0/subtitle.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_091_Userland_Atom_10_Subtitle extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:subtitle>Feed Description</a:subtitle>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/dc/1.0/description.php
deleted file mode 100755
index 652b7a642..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_091_Userland_DC_10_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/dc/1.1/description.php
deleted file mode 100755
index 653a6cfe4..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_091_Userland_DC_11_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/description.php
deleted file mode 100755
index afc408b57..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.91-userland/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_091_Userland_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <description>Feed Description</description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/atom/0.3/tagline.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/atom/0.3/tagline.php
deleted file mode 100755
index 6573f30da..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/atom/0.3/tagline.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_092_Atom_03_Tagline extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:tagline>Feed Description</a:tagline>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/atom/1.0/subtitle.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/atom/1.0/subtitle.php
deleted file mode 100755
index 168185e2e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/atom/1.0/subtitle.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_092_Atom_10_Subtitle extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:subtitle>Feed Description</a:subtitle>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/dc/1.0/description.php
deleted file mode 100755
index 690a52c54..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_092_DC_10_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/dc/1.1/description.php
deleted file mode 100755
index 27e3e6bc3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_092_DC_11_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/description.php
deleted file mode 100755
index ac17b67ce..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/0.92/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_092_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <description>Feed Description</description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/atom/0.3/tagline.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/atom/0.3/tagline.php
deleted file mode 100755
index 4a86e3bae..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/atom/0.3/tagline.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_10_Atom_03_Tagline extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:tagline>Feed Description</a:tagline>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/atom/1.0/subtitle.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/atom/1.0/subtitle.php
deleted file mode 100755
index c193059de..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/atom/1.0/subtitle.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_10_Atom_10_Subtitle extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:subtitle>Feed Description</a:subtitle>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/dc/1.0/description.php
deleted file mode 100755
index 79135f67a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_10_DC_10_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/dc/1.1/description.php
deleted file mode 100755
index dd4e64dd7..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_10_DC_11_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/description.php
deleted file mode 100755
index 82a2479a3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_10_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <channel>
- <description>Feed Description</description>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/atom/0.3/tagline.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/atom/0.3/tagline.php
deleted file mode 100755
index 7e13698d5..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/atom/0.3/tagline.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_20_Atom_03_Tagline extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:tagline>Feed Description</a:tagline>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/atom/1.0/subtitle.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/atom/1.0/subtitle.php
deleted file mode 100755
index 91807079b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/atom/1.0/subtitle.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_20_Atom_10_Subtitle extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:subtitle>Feed Description</a:subtitle>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/dc/1.0/description.php
deleted file mode 100755
index 4b094096e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_20_DC_10_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/dc/1.1/description.php
deleted file mode 100755
index 00088e8e2..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_20_DC_11_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:description>Feed Description</dc:description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/description.php b/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/description.php
deleted file mode 100755
index 1364082f8..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_description/SPtests/rss/2.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Description_Test_RSS_20_Description extends SimplePie_Feed_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <description>Feed Description</description>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/atom/1.0/icon-default.php
deleted file mode 100755
index 32e821fb4..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_Atom_10_Icon_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <icon>http://example.com/</icon>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?>
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/atom/1.0/logo-default.php
deleted file mode 100755
index d3d31c3b4..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_Atom_10_Logo_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <logo>http://example.com/</logo>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?>
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/atom/1.0/icon-default.php
deleted file mode 100755
index c8251bebf..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_090_Atom_10_Icon_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?>
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/atom/1.0/logo-default.php
deleted file mode 100755
index 207f9d9f2..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_090_Atom_10_Logo_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?>
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/url-default.php
deleted file mode 100755
index f267b8430..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.90/url-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_090_URL_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <image>
- <url>http://example.com/</url>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?>
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/atom/1.0/icon-default.php
deleted file mode 100755
index 842b9fd54..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_091_Netscape_Atom_10_Icon_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/atom/1.0/logo-default.php
deleted file mode 100755
index 73a878c9a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_091_Netscape_Atom_10_Logo_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/height.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/height.php
deleted file mode 100755
index 7e3cbe8a1..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/height.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_091_Netscape_Height extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <image>
- <height>100</height>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 100.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/url-default.php
deleted file mode 100755
index 43fea9a40..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-netscape/url-default.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_091_Netscape_URL_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 31.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/atom/1.0/icon-default.php
deleted file mode 100755
index 7e0222c09..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_091_Userland_Atom_10_Icon_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/atom/1.0/logo-default.php
deleted file mode 100755
index 8e3f16024..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_091_Userland_Atom_10_Logo_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/height.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/height.php
deleted file mode 100755
index 5b7ba7311..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/height.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_091_Userland_Height extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <image>
- <height>100</height>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 100.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/url-default.php
deleted file mode 100755
index 4eafec9d4..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.91-userland/url-default.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_091_Userland_URL_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 31.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/atom/1.0/icon-default.php
deleted file mode 100755
index f1a4d70b4..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_092_Atom_10_Icon_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/atom/1.0/logo-default.php
deleted file mode 100755
index c4e27f3da..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_092_Atom_10_Logo_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/height.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/height.php
deleted file mode 100755
index fc284167c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/height.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_092_Height extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <image>
- <height>100</height>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 100.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/url-default.php
deleted file mode 100755
index 97dbd1169..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/0.92/url-default.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_092_URL_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 31.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/atom/1.0/icon-default.php
deleted file mode 100755
index 0db522702..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_10_Atom_10_Icon_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/atom/1.0/logo-default.php
deleted file mode 100755
index 41f76403c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_10_Atom_10_Logo_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/url-default.php
deleted file mode 100755
index f96878c68..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/1.0/url-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_10_URL_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <image>
- <url>http://example.com/</url>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/atom/1.0/icon-default.php
deleted file mode 100755
index 71cd42c23..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_20_Atom_10_Icon_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/atom/1.0/logo-default.php
deleted file mode 100755
index 77a9514de..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_20_Atom_10_Logo_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/height.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/height.php
deleted file mode 100755
index 02d80e871..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/height.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_20_Height extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <image>
- <height>100</height>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 100.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/url-default.php
deleted file mode 100755
index e603375cc..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_height/SPtests/rss/2.0/url-default.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Height_Test_RSS_20_URL_Default extends SimplePie_Feed_Image_Height_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 31.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.90/link.php b/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.90/link.php
deleted file mode 100755
index ddcc91408..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.90/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Link_Test_RSS_090_Link extends SimplePie_Feed_Image_Link_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <image>
- <link>http://example.com/</link>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.91-netscape/link.php b/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.91-netscape/link.php
deleted file mode 100755
index 0b7515ef4..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.91-netscape/link.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Link_Test_RSS_091_Netscape_Link extends SimplePie_Feed_Image_Link_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <image>
- <link>http://example.com/</link>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.91-userland/link.php b/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.91-userland/link.php
deleted file mode 100755
index 14827b59b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.91-userland/link.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Link_Test_RSS_091_Userland_Link extends SimplePie_Feed_Image_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <image>
- <link>http://example.com/</link>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.92/link.php b/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.92/link.php
deleted file mode 100755
index 3a59984a7..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/0.92/link.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Link_Test_RSS_092_Link extends SimplePie_Feed_Image_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <image>
- <link>http://example.com/</link>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/1.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/1.0/link.php
deleted file mode 100755
index a30f6bc8e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Link_Test_RSS_10_Link extends SimplePie_Feed_Image_Link_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <image>
- <link>http://example.com/</link>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/2.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/2.0/link.php
deleted file mode 100755
index 75c8deb33..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_link/SPtests/rss/2.0/link.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Link_Test_RSS_20_Link extends SimplePie_Feed_Image_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <image>
- <link>http://example.com/</link>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/dc/1.0/title.php
deleted file mode 100755
index cbcde3e40..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/dc/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_090_DC_10_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <image>
- <dc:title>Image Title</dc:title>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/dc/1.1/title.php
deleted file mode 100755
index 314a3e9bb..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/dc/1.1/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_090_DC_11_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <image>
- <dc:title>Image Title</dc:title>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/title.php
deleted file mode 100755
index c7c54124e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.90/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_090_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <image>
- <title>Image Title</title>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/dc/1.0/title.php
deleted file mode 100755
index d355feb01..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/dc/1.0/title.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_091_Netscape_DC_10_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <image>
- <dc:title>Image Title</dc:title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/dc/1.1/title.php
deleted file mode 100755
index d79d83653..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/dc/1.1/title.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_091_Netscape_DC_11_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <image>
- <dc:title>Image Title</dc:title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/title.php
deleted file mode 100755
index 6a380a9b0..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-netscape/title.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_091_Netscape_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <image>
- <title>Image Title</title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/dc/1.0/title.php
deleted file mode 100755
index 243b7436a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/dc/1.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_091_Userland_DC_10_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <image>
- <dc:title>Image Title</dc:title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/dc/1.1/title.php
deleted file mode 100755
index 356cba89e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/dc/1.1/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_091_Userland_DC_11_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <image>
- <dc:title>Image Title</dc:title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/title.php
deleted file mode 100755
index 4e989d085..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.91-userland/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_091_Userland_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <image>
- <title>Image Title</title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/dc/1.0/title.php
deleted file mode 100755
index 4f57e5167..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/dc/1.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_092_DC_10_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <image>
- <dc:title>Image Title</dc:title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/dc/1.1/title.php
deleted file mode 100755
index 61c2e5c05..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/dc/1.1/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_092_DC_11_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <image>
- <dc:title>Image Title</dc:title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/title.php
deleted file mode 100755
index 505168984..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/0.92/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_092_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <image>
- <title>Image Title</title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/dc/1.0/title.php
deleted file mode 100755
index bdebd712e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/dc/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_10_DC_10_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <image>
- <dc:title>Image Title</dc:title>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/dc/1.1/title.php
deleted file mode 100755
index 1333d4961..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/dc/1.1/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_10_DC_11_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <image>
- <dc:title>Image Title</dc:title>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/title.php
deleted file mode 100755
index a0f167e76..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_10_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <image>
- <title>Image Title</title>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/dc/1.0/title.php
deleted file mode 100755
index 23d39e652..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/dc/1.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_20_DC_10_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <image>
- <dc:title>Image Title</dc:title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/dc/1.1/title.php
deleted file mode 100755
index 0f34fbcba..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/dc/1.1/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_20_DC_11_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <image>
- <dc:title>Image Title</dc:title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/title.php
deleted file mode 100755
index 1eef83666..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_title/SPtests/rss/2.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Title_Test_RSS_20_Title extends SimplePie_Feed_Image_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <image>
- <title>Image Title</title>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Image Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/atom/1.0/icon.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/atom/1.0/icon.php
deleted file mode 100755
index c532ea072..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/atom/1.0/icon.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_Atom_10_Icon extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <icon>http://example.com/</icon>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/atom/1.0/logo.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/atom/1.0/logo.php
deleted file mode 100755
index bd557474f..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/atom/1.0/logo.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_Atom_10_Logo extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <logo>http://example.com/</logo>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/atom/1.0/icon.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/atom/1.0/icon.php
deleted file mode 100755
index 4dc802b95..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/atom/1.0/icon.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_090_Atom_10_Icon extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/atom/1.0/logo.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/atom/1.0/logo.php
deleted file mode 100755
index d3a390c8a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/atom/1.0/logo.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_090_Atom_10_Logo extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/url.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/url.php
deleted file mode 100755
index 16c0615ae..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.90/url.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_090_URL extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <image>
- <url>http://example.com/</url>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/atom/1.0/icon.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/atom/1.0/icon.php
deleted file mode 100755
index ded856a72..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/atom/1.0/icon.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_091_Netscape_Atom_10_Icon extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/atom/1.0/logo.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/atom/1.0/logo.php
deleted file mode 100755
index 1e4bdabb8..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/atom/1.0/logo.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_091_Netscape_Atom_10_Logo extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/url.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/url.php
deleted file mode 100755
index 2db6903e3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-netscape/url.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_091_Netscape_URL extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/atom/1.0/icon.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/atom/1.0/icon.php
deleted file mode 100755
index fc898fefe..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/atom/1.0/icon.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_091_Userland_Atom_10_Icon extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/atom/1.0/logo.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/atom/1.0/logo.php
deleted file mode 100755
index c9134c60a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/atom/1.0/logo.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_091_Userland_Atom_10_Logo extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/url.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/url.php
deleted file mode 100755
index e6e19fc5a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.91-userland/url.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_091_Userland_URL extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/atom/1.0/icon.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/atom/1.0/icon.php
deleted file mode 100755
index 61e0a2fd5..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/atom/1.0/icon.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_092_Atom_10_Icon extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/atom/1.0/logo.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/atom/1.0/logo.php
deleted file mode 100755
index 82cc9bc7a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/atom/1.0/logo.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_092_Atom_10_Logo extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/url.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/url.php
deleted file mode 100755
index a8aa09f79..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/0.92/url.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_092_URL extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/atom/1.0/icon.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/atom/1.0/icon.php
deleted file mode 100755
index 18018b094..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/atom/1.0/icon.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_10_Atom_10_Icon extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/atom/1.0/logo.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/atom/1.0/logo.php
deleted file mode 100755
index a66cbd8eb..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/atom/1.0/logo.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_10_Atom_10_Logo extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/url.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/url.php
deleted file mode 100755
index 58ce1fdeb..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/1.0/url.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_10_URL extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <image>
- <url>http://example.com/</url>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/atom/1.0/icon.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/atom/1.0/icon.php
deleted file mode 100755
index 7393af860..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/atom/1.0/icon.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_20_Atom_10_Icon extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/atom/1.0/logo.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/atom/1.0/logo.php
deleted file mode 100755
index 775db3516..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/atom/1.0/logo.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_20_Atom_10_Logo extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/url.php b/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/url.php
deleted file mode 100755
index b8301ef71..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_url/SPtests/rss/2.0/url.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_URL_Test_RSS_20_URL extends SimplePie_Feed_Image_URL_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/atom/1.0/icon-default.php
deleted file mode 100755
index e409a08f3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_Atom_10_Icon_Default extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <icon>http://example.com/</icon>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?>
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/atom/1.0/logo-default.php
deleted file mode 100755
index 36a63866f..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_Atom_10_Logo_Default extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <logo>http://example.com/</logo>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?>
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/atom/1.0/icon-default.php
deleted file mode 100755
index efa0f5ae1..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_090_Atom_10_Icon extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/atom/1.0/logo-default.php
deleted file mode 100755
index c9e93afcb..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_090_Atom_10_Logo extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/url-default.php
deleted file mode 100755
index 075fa6d6e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.90/url-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_090 extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <image>
- <url>http://example.com/</url>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/atom/1.0/icon-default.php
deleted file mode 100755
index e60f59265..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_091_Netscape_Atom_10_Icon extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/atom/1.0/logo-default.php
deleted file mode 100755
index 7abbe210e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_091_Netscape_Atom_10_Logo extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/url-default.php
deleted file mode 100755
index 4849fcdfc..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/url-default.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_091_Netscape extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 88.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/width.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/width.php
deleted file mode 100755
index 608147fda..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-netscape/width.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_091_Netscape_Width extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <image>
- <width>100</width>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 100.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/atom/1.0/icon-default.php
deleted file mode 100755
index 351b8d831..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_091_Userland_Atom_10_Icon extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/atom/1.0/logo-default.php
deleted file mode 100755
index 7b35b750a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_091_Userland_Atom_10_Logo extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/url-default.php
deleted file mode 100755
index 49010e074..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/url-default.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_091_Userland extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 88.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/width.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/width.php
deleted file mode 100755
index 84749ffd7..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.91-userland/width.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_091_Userland_Width extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <image>
- <width>100</width>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 100.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/atom/1.0/icon-default.php
deleted file mode 100755
index ddbbb4e94..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_092_Atom_10_Icon extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/atom/1.0/logo-default.php
deleted file mode 100755
index b30d364f3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_092_Atom_10_Logo extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/url-default.php
deleted file mode 100755
index c0b17b562..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/url-default.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_092 extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 88.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/width.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/width.php
deleted file mode 100755
index 6bf6f45d5..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/0.92/width.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_092_Width extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <image>
- <width>100</width>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 100.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/atom/1.0/icon-default.php
deleted file mode 100755
index 39571a476..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_10_Atom_10_Icon extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/atom/1.0/logo-default.php
deleted file mode 100755
index cdb34bd22..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_10_Atom_10_Logo extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/url-default.php
deleted file mode 100755
index 4ad0bf41e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/1.0/url-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_10 extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <image>
- <url>http://example.com/</url>
- </image>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/atom/1.0/icon-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/atom/1.0/icon-default.php
deleted file mode 100755
index 152c32418..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/atom/1.0/icon-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_20_Atom_10_Icon extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:icon>http://example.com/</a:icon>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/atom/1.0/logo-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/atom/1.0/logo-default.php
deleted file mode 100755
index 112985a68..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/atom/1.0/logo-default.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_20_Atom_10_Logo extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:logo>http://example.com/</a:logo>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/url-default.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/url-default.php
deleted file mode 100755
index bc9bf7da9..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/url-default.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_20 extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <image>
- <url>http://example.com/</url>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 88.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/width.php b/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/width.php
deleted file mode 100755
index 3572f9a8b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_image_width/SPtests/rss/2.0/width.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Image_Width_Test_RSS_20_Width extends SimplePie_Feed_Image_Width_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <image>
- <width>100</width>
- </image>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 100.0;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/dc/1.0/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/dc/1.0/language.php
deleted file mode 100755
index a338cd68a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/dc/1.0/language.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_Atom_03_DC_10_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <dc:language>en-GB</dc:language>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/dc/1.1/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/dc/1.1/language.php
deleted file mode 100755
index 3e9b8f28b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/dc/1.1/language.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_Atom_03_DC_11_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:language>en-GB</dc:language>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/xml_lang.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/xml_lang.php
deleted file mode 100755
index c8f16e586..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/0.3/xml_lang.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_Atom_03_xmllang extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xml:lang="en-GB">
- <title>Feed Title</title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/dc/1.0/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/dc/1.0/language.php
deleted file mode 100755
index 408861877..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/dc/1.0/language.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_Atom_10_DC_10_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <dc:language>en-GB</dc:language>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/dc/1.1/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/dc/1.1/language.php
deleted file mode 100755
index 0fd63dbfa..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/dc/1.1/language.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_Atom_10_DC_11_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:language>en-GB</dc:language>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/xml_lang.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/xml_lang.php
deleted file mode 100755
index b8dd959a1..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/atom/1.0/xml_lang.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_Atom_10_xmllang extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
- <title>Feed Title</title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.90/dc/1.0/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.90/dc/1.0/language.php
deleted file mode 100755
index 1fb9378f0..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.90/dc/1.0/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_090_DC_10_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.90/dc/1.1/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.90/dc/1.1/language.php
deleted file mode 100755
index 7bd5409ad..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.90/dc/1.1/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_090_DC_11_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/dc/1.0/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/dc/1.0/language.php
deleted file mode 100755
index 852c3b344..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/dc/1.0/language.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_091_Netscape_DC_10_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/dc/1.1/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/dc/1.1/language.php
deleted file mode 100755
index dfccbad99..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/dc/1.1/language.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_091_Netscape_DC_11_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/language.php
deleted file mode 100755
index 2da182f56..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-netscape/language.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_091_Netscape_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <language>en-GB</language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/dc/1.0/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/dc/1.0/language.php
deleted file mode 100755
index b0db9c0b2..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/dc/1.0/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_091_Userland_DC_10_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/dc/1.1/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/dc/1.1/language.php
deleted file mode 100755
index 3de203ba4..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/dc/1.1/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_091_Userland_DC_11_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/language.php
deleted file mode 100755
index d3b5cb5e1..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.91-userland/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_091_Userland_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <language>en-GB</language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/dc/1.0/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/dc/1.0/language.php
deleted file mode 100755
index f2fa9cb1b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/dc/1.0/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_092_DC_10_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/dc/1.1/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/dc/1.1/language.php
deleted file mode 100755
index 3aaa4bd6c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/dc/1.1/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_092_DC_11_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/language.php
deleted file mode 100755
index 6292787f9..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/0.92/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_092_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <language>en-GB</language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/1.0/dc/1.0/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/1.0/dc/1.0/language.php
deleted file mode 100755
index c038f0b36..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/1.0/dc/1.0/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_10_DC_10_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/1.0/dc/1.1/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/1.0/dc/1.1/language.php
deleted file mode 100755
index 2e5163ea1..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/1.0/dc/1.1/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_10_DC_11_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/dc/1.0/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/dc/1.0/language.php
deleted file mode 100755
index 2afed9d88..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/dc/1.0/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_20_DC_10_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/dc/1.1/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/dc/1.1/language.php
deleted file mode 100755
index 1dec61005..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/dc/1.1/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_20_DC_11_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:language>en-GB</dc:language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/language.php b/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/language.php
deleted file mode 100755
index 99cd84fc2..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_language/SPtests/rss/2.0/language.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Language_Test_RSS_20_Language extends SimplePie_Feed_Language_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <language>en-GB</language>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'en-GB';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/0.3/link.php
deleted file mode 100755
index 9f69b5a43..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/0.3/link.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_Atom_03_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <link href="http://example.com/"/>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/0.3/link_@rel_alternate.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/0.3/link_@rel_alternate.php
deleted file mode 100755
index f4b5736e6..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/0.3/link_@rel_alternate.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_Atom_03_Link_Alternate extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <link href="http://example.com/" rel="alternate"/>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link.php
deleted file mode 100755
index 7c528c9b5..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_Atom_10_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <link href="http://example.com/"/>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link_@rel_absolute_iri.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link_@rel_absolute_iri.php
deleted file mode 100755
index c91cc0e16..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link_@rel_absolute_iri.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_Atom_10_Link_Absolute_IRI extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <link href="http://example.com/" rel="http://www.iana.org/assignments/relation/alternate"/>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link_@rel_alternate.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link_@rel_alternate.php
deleted file mode 100755
index 8e1ede100..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/atom/1.0/link_@rel_alternate.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_Atom_10_Link_Relative_IRI extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <link href="http://example.com/" rel="alternate"/>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/atom/0.3/link.php
deleted file mode 100755
index 2f048b9f9..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/atom/0.3/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_090_Atom_03_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/atom/1.0/link.php
deleted file mode 100755
index 47ed9d852..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/atom/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_090_Atom_10_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/link.php
deleted file mode 100755
index 35088b517..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.90/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_090_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <channel>
- <link>http://example.com/</link>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/atom/0.3/link.php
deleted file mode 100755
index c50a8ed79..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/atom/0.3/link.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_091_Netscape_Atom_03_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/atom/1.0/link.php
deleted file mode 100755
index 58ac9f486..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/atom/1.0/link.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_091_Netscape_Atom_10_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/link.php
deleted file mode 100755
index bebc3b2c1..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-netscape/link.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_091_Netscape_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <link>http://example.com/</link>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/atom/0.3/link.php
deleted file mode 100755
index 737a1fb38..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/atom/0.3/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_091_Userland_Atom_03_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/atom/1.0/link.php
deleted file mode 100755
index b168918b0..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/atom/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_091_Userland_Atom_10_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/link.php
deleted file mode 100755
index ce1709cbd..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.91-userland/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_091_Userland_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <link>http://example.com/</link>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/atom/0.3/link.php
deleted file mode 100755
index 94bcd514f..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/atom/0.3/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_092_Atom_03_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/atom/1.0/link.php
deleted file mode 100755
index ecfd94feb..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/atom/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_092_Atom_10_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/link.php
deleted file mode 100755
index 10d3a675a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/0.92/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_092_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <link>http://example.com/</link>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/atom/0.3/link.php
deleted file mode 100755
index f64c9f530..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/atom/0.3/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_10_Atom_03_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/atom/1.0/link.php
deleted file mode 100755
index 9317d0037..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/atom/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_10_Atom_10_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/link.php
deleted file mode 100755
index fefa7a947..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_10_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <channel>
- <link>http://example.com/</link>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/atom/0.3/link.php
deleted file mode 100755
index 5f9e76189..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/atom/0.3/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_20_Atom_03_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/atom/1.0/link.php
deleted file mode 100755
index cb7aeccdd..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/atom/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_20_Atom_10_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:link href="http://example.com/"/>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/link.php b/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/link.php
deleted file mode 100755
index 125c33bfc..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_link/SPtests/rss/2.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Link_Test_RSS_20_Link extends SimplePie_Feed_Link_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <link>http://example.com/</link>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/dc/1.0/title.php
deleted file mode 100755
index ab0a13978..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/dc/1.0/title.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Atom_03_DC_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <dc:title>Feed Title</dc:title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/dc/1.1/title.php
deleted file mode 100755
index 20db9d9a1..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/dc/1.1/title.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Atom_03_DC_11_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:title>Feed Title</dc:title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/title.php
deleted file mode 100755
index 236afed1a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/0.3/title.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Atom_03_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <title>Feed Title</title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/dc/1.0/title.php
deleted file mode 100755
index c95b5e70c..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/dc/1.0/title.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Atom_10_DC_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <dc:title>Feed Title</dc:title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/dc/1.1/title.php
deleted file mode 100755
index a67f90925..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/dc/1.1/title.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Atom_10_DC_11_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:title>Feed Title</dc:title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/title.php
deleted file mode 100755
index bfbf2aeed..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/atom/1.0/title.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Atom_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <title>Feed Title</title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/16.0.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/16.0.php
deleted file mode 100755
index ab92612ae..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/16.0.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Bug_16_Test_0 extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
-"http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <title>Feed with DOCTYPE</title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed with DOCTYPE';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/174.0.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/174.0.php
deleted file mode 100755
index 9625463b7..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/174.0.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Bug_174_Test_0 extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<?xml version = "1.0" encoding = "UTF-8" ?>
-<feed xmlns="http://www.w3.org/2005/Atom">
- <title>Spaces in prolog</title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Spaces in prolog';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.0.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.0.php
deleted file mode 100755
index 4d1c394b5..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.0.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Bug_20_Test_0 extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<a:feed xmlns:a="http://www.w3.org/2005/Atom" xmlns="http://www.w3.org/1999/xhtml">
- <a:title>Non-default namespace</a:title>
-</a:feed>';
- }
-
- function expected()
- {
- $this->expected = 'Non-default namespace';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.1.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.1.php
deleted file mode 100755
index f46fc622b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.1.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Bug_20_Test_1 extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<a:feed xmlns:a="http://www.w3.org/2005/Atom" xmlns="http://www.w3.org/1999/xhtml">
- <a:title type="xhtml"><div>Non-default namespace</div></a:title>
-</a:feed>';
- }
-
- function expected()
- {
- $this->expected = 'Non-default namespace';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.2.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.2.php
deleted file mode 100755
index ed7d75e42..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/20.2.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Bug_20_Test_2 extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:h="http://www.w3.org/1999/xhtml">
- <title type="xhtml"><h:div>Non-default namespace</h:div></title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Non-default namespace';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/272.0.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/272.0.php
deleted file mode 100755
index 5bd731613..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/272.0.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Bug_272_Test_0 extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <title>Ampersand: <![CDATA[&]]></title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Ampersand: &amp;';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/272.1.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/272.1.php
deleted file mode 100755
index 5beda2ded..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/bugs/272.1.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_Bug_272_Test_1 extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <title><![CDATA[&]]>: Ampersand</title>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = '&amp;: Ampersand';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/atom/0.3/title.php
deleted file mode 100755
index 146f566f3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/atom/0.3/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_090_Atom_03_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:title>Feed Title</a:title>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/atom/1.0/title.php
deleted file mode 100755
index 6e6ce9387..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/atom/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_090_Atom_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:title>Feed Title</a:title>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/dc/1.0/title.php
deleted file mode 100755
index e359b34db..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/dc/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_090_DC_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:title>Feed Title</dc:title>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/dc/1.1/title.php
deleted file mode 100755
index a060e3c6f..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/dc/1.1/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_090_DC_11_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:title>Feed Title</dc:title>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/title.php
deleted file mode 100755
index cfde01d28..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.90/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_090_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <channel>
- <title>Feed Title</title>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/atom/0.3/title.php
deleted file mode 100755
index 51e0ef749..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/atom/0.3/title.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_091_Netscape_Atom_03_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:title>Feed Title</a:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/atom/1.0/title.php
deleted file mode 100755
index 2daf561f6..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/atom/1.0/title.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_091_Netscape_Atom_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:title>Feed Title</a:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/dc/1.0/title.php
deleted file mode 100755
index c95fcd4d8..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/dc/1.0/title.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_091_Netscape_DC_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:title>Feed Title</dc:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/dc/1.1/title.php
deleted file mode 100755
index b5c9c5211..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/dc/1.1/title.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_091_Netscape_DC_11_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:title>Feed Title</dc:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/title.php
deleted file mode 100755
index 928bbbe81..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-netscape/title.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_091_Netscape_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <title>Feed Title</title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/atom/0.3/title.php
deleted file mode 100755
index b104820c0..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/atom/0.3/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_091_Userland_Atom_03_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:title>Feed Title</a:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/atom/1.0/title.php
deleted file mode 100755
index f109e13de..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/atom/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_091_Userland_Atom_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:title>Feed Title</a:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/dc/1.0/title.php
deleted file mode 100755
index 2d6e60833..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/dc/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_091_Userland_DC_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:title>Feed Title</dc:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/dc/1.1/title.php
deleted file mode 100755
index 6436bb446..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/dc/1.1/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_091_Userland_DC_11_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:title>Feed Title</dc:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/title.php
deleted file mode 100755
index 5ce3b1d4e..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.91-userland/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_091_Userland_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <title>Feed Title</title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/atom/0.3/title.php
deleted file mode 100755
index 48209c77b..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/atom/0.3/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_092_Atom_03_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:title>Feed Title</a:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/atom/1.0/title.php
deleted file mode 100755
index 7af135c4d..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/atom/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_092_Atom_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:title>Feed Title</a:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/dc/1.0/title.php
deleted file mode 100755
index dac1d51ef..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/dc/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_092_DC_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:title>Feed Title</dc:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/dc/1.1/title.php
deleted file mode 100755
index 48ad28654..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/dc/1.1/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_092_DC_11_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:title>Feed Title</dc:title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/title.php
deleted file mode 100755
index fe948f0d3..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/0.92/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_092_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <title>Feed Title</title>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/atom/0.3/title.php
deleted file mode 100755
index 753863a24..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/atom/0.3/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_10_Atom_03_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <a:title>Feed Title</a:title>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/atom/1.0/title.php
deleted file mode 100755
index 8b8bfe95f..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/atom/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_10_Atom_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <a:title>Feed Title</a:title>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/dc/1.0/title.php
deleted file mode 100755
index 2239c10f6..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/dc/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_10_DC_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <dc:title>Feed Title</dc:title>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/dc/1.1/title.php
deleted file mode 100755
index d764d2715..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/dc/1.1/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_10_DC_11_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <dc:title>Feed Title</dc:title>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/title.php b/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/title.php
deleted file mode 100755
index bcf55cf8a..000000000
--- a/3rdparty/simplepie/tests/oldtests/feed_title/SPtests/rss/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_Feed_Title_Test_RSS_10_Title extends SimplePie_Feed_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <channel>
- <title>Feed Title</title>
- </channel>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Feed Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/dc/1.0/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/dc/1.0/creator.php
deleted file mode 100755
index c095916ed..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/dc/1.0/creator.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_Atom_03_DC_10_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:creator>Item Author</dc:creator>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/dc/1.1/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/dc/1.1/creator.php
deleted file mode 100755
index d113d437d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/dc/1.1/creator.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_Atom_03_DC_11_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:creator>Item Author</dc:creator>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/feed.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/feed.php
deleted file mode 100755
index 9227ed53a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/feed.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Atom_03_Inheritance_Feed_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <author>
- <name>Item Author</name>
- </author>
- <entry>
- <title>Item Title</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/name.php
deleted file mode 100755
index 85b59cc8a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/0.3/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_Atom_03_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <author>
- <name>Item Author</name>
- </author>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/dc/1.0/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/dc/1.0/creator.php
deleted file mode 100755
index 46e152993..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/dc/1.0/creator.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_Atom_10_DC_10_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:creator>Item Author</dc:creator>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/dc/1.1/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/dc/1.1/creator.php
deleted file mode 100755
index ef57ca7d5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/dc/1.1/creator.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_Atom_10_DC_11_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:creator>Item Author</dc:creator>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/feed.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/feed.php
deleted file mode 100755
index cc8507066..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/feed.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Atom_10_Inheritance_Feed_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <author>
- <name>Item Author</name>
- </author>
- <entry>
- <title>Item Title</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/name.php
deleted file mode 100755
index 6bdbee31e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_Atom_10_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <author>
- <name>Item Author</name>
- </author>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/source.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/source.php
deleted file mode 100755
index 34a59d7d5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/atom/1.0/source.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Atom_10_Inheritance_Source_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <source>
- <author>
- <name>Item Author</name>
- </author>
- </source>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/atom/0.3/name.php
deleted file mode 100755
index 98c19b55d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/atom/0.3/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_090_Atom_03_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/atom/1.0/name.php
deleted file mode 100755
index 5e9f2f3e0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/atom/1.0/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_090_Atom_10_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/dc/1.0/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/dc/1.0/creator.php
deleted file mode 100755
index 36fec5ca8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/dc/1.0/creator.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_090_DC_10_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/dc/1.1/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/dc/1.1/creator.php
deleted file mode 100755
index 1468447aa..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.90/dc/1.1/creator.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_090_DC_11_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/atom/0.3/name.php
deleted file mode 100755
index 0103bb1ea..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/atom/0.3/name.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_091_Netscape_Atom_03_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/atom/1.0/name.php
deleted file mode 100755
index 14e96823f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/atom/1.0/name.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_091_Netscape_Atom_10_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/dc/1.0/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/dc/1.0/creator.php
deleted file mode 100755
index bb5b6ba33..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/dc/1.0/creator.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_091_Netscape_DC_10_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/dc/1.1/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/dc/1.1/creator.php
deleted file mode 100755
index 8e0792208..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-netscape/dc/1.1/creator.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_091_Netscape_DC_11_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/atom/0.3/name.php
deleted file mode 100755
index ce3a62058..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/atom/0.3/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_091_Userland_Atom_03_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/atom/1.0/name.php
deleted file mode 100755
index 4645cd09c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/atom/1.0/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_091_Userland_Atom_10_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/dc/1.0/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/dc/1.0/creator.php
deleted file mode 100755
index 75c5ddc38..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/dc/1.0/creator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_091_Userland_DC_10_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/dc/1.1/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/dc/1.1/creator.php
deleted file mode 100755
index 58ad0a22f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.91-userland/dc/1.1/creator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_091_Userland_DC_11_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/atom/0.3/name.php
deleted file mode 100755
index 083b40626..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/atom/0.3/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_092_Atom_03_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/atom/1.0/name.php
deleted file mode 100755
index 41a017624..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/atom/1.0/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_092_Atom_10_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/dc/1.0/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/dc/1.0/creator.php
deleted file mode 100755
index dbf9f8ba6..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/dc/1.0/creator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_092_DC_10_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/dc/1.1/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/dc/1.1/creator.php
deleted file mode 100755
index 1cdfdfd9b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/0.92/dc/1.1/creator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_092_DC_11_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/atom/0.3/name.php
deleted file mode 100755
index 42f912573..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/atom/0.3/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_10_Atom_03_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/atom/1.0/name.php
deleted file mode 100755
index 927d365d7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/atom/1.0/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_10_Atom_10_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/dc/1.0/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/dc/1.0/creator.php
deleted file mode 100755
index 9193b8b07..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/dc/1.0/creator.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_10_DC_10_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/dc/1.1/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/dc/1.1/creator.php
deleted file mode 100755
index e66373a57..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/1.0/dc/1.1/creator.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_10_DC_11_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/atom/0.3/name.php
deleted file mode 100755
index 2a9b6b7a1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/atom/0.3/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_20_Atom_03_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/atom/1.0/name.php
deleted file mode 100755
index fc0d9df84..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/atom/1.0/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_20_Atom_10_Name extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:author>
- <a:name>Item Author</a:name>
- </a:author>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/author.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/author.php
deleted file mode 100755
index cf0c7fce2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/author.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_20_Author extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <author>example@example.com (Item Author)</author>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/dc/1.0/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/dc/1.0/creator.php
deleted file mode 100755
index 35c64dee0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/dc/1.0/creator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_20_DC_10_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/dc/1.1/creator.php b/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/dc/1.1/creator.php
deleted file mode 100755
index 18e4e67f4..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_author_name/SPtests/rss/2.0/dc/1.1/creator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Author_Name_Test_RSS_20_DC_11_Creator extends SimplePie_First_Item_Author_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:creator>Item Author</dc:creator>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Author';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/0.3/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/0.3/dc/1.0/subject.php
deleted file mode 100755
index 8f39d5f5c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/0.3/dc/1.0/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_Atom_03_DC_10_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:subject>Item Category</dc:subject>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/0.3/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/0.3/dc/1.1/subject.php
deleted file mode 100755
index 72bcfe293..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/0.3/dc/1.1/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_Atom_03_DC_11_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:subject>Item Category</dc:subject>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/dc/1.0/subject.php
deleted file mode 100755
index d72d6f9d5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/dc/1.0/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_Atom_10_DC_10_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:subject>Item Category</dc:subject>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/dc/1.1/subject.php
deleted file mode 100755
index 9850757a9..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/dc/1.1/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_Atom_10_DC_11_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:subject>Item Category</dc:subject>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/label.php
deleted file mode 100755
index 1f2eb256f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/label.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_Atom_10_Category_Label extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <category label="Item Category"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/term.php
deleted file mode 100755
index 0689665ce..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/atom/1.0/term.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_Atom_10_Category_Term extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <category term="Item Category"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/bugs/21.0.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/bugs/21.0.php
deleted file mode 100755
index 774020471..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/bugs/21.0.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_Bug_21_Test_0 extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <category term="Example category"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Example category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/atom/1.0/label.php
deleted file mode 100755
index 4897dbdc5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/atom/1.0/label.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_090_Atom_10_Category_Label extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:category label="Item Category"/>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/atom/1.0/term.php
deleted file mode 100755
index 5cffbd7ea..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/atom/1.0/term.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_090_Atom_10_Category_Term extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:category term="Item Category"/>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/dc/1.0/subject.php
deleted file mode 100755
index ed415507a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/dc/1.0/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_090_DC_10_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/dc/1.1/subject.php
deleted file mode 100755
index 6979f957f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.90/dc/1.1/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_090_DC_11_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/atom/1.0/label.php
deleted file mode 100755
index cbd00ec02..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/atom/1.0/label.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_091_Netscape_Atom_10_Category_Label extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:category label="Item Category"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/atom/1.0/term.php
deleted file mode 100755
index d1c3522e2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/atom/1.0/term.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_091_Netscape_Atom_10_Category_Term extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:category term="Item Category"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/dc/1.0/subject.php
deleted file mode 100755
index 6a1a93e4e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/dc/1.0/subject.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_091_Netscape_DC_10_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/dc/1.1/subject.php
deleted file mode 100755
index 9cfb63341..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-netscape/dc/1.1/subject.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_091_Netscape_DC_11_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/atom/1.0/label.php
deleted file mode 100755
index bc9b9ed84..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/atom/1.0/label.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_091_Userland_Atom_10_Category_Label extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:category label="Item Category"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/atom/1.0/term.php
deleted file mode 100755
index aacd5c852..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/atom/1.0/term.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_091_Userland_Atom_10_Category_Term extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:category term="Item Category"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/dc/1.0/subject.php
deleted file mode 100755
index 5dfb24697..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/dc/1.0/subject.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_091_Userland_DC_10_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/dc/1.1/subject.php
deleted file mode 100755
index 6f583b760..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.91-userland/dc/1.1/subject.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_091_Userland_DC_11_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/atom/1.0/label.php
deleted file mode 100755
index 9713aaae5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/atom/1.0/label.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_092_Atom_10_Category_Label extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:category label="Item Category"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/atom/1.0/term.php
deleted file mode 100755
index bc426d0da..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/atom/1.0/term.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_092_Atom_10_Category_Term extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:category term="Item Category"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/category.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/category.php
deleted file mode 100755
index 1ede84491..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/category.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_092_Category extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <item>
- <category>Item Category</category>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/dc/1.0/subject.php
deleted file mode 100755
index 28d099422..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/dc/1.0/subject.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_092_DC_10_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/dc/1.1/subject.php
deleted file mode 100755
index bf41df8ac..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/0.92/dc/1.1/subject.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_092_DC_11_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/atom/1.0/label.php
deleted file mode 100755
index 101ef3396..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/atom/1.0/label.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_10_Atom_10_Category_Label extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:category label="Item Category"/>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/atom/1.0/term.php
deleted file mode 100755
index fa57fb34e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/atom/1.0/term.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_10_Atom_10_Category_Term extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:category term="Item Category"/>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/dc/1.0/subject.php
deleted file mode 100755
index 7e2d5c6fd..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/dc/1.0/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_10_DC_10_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/dc/1.1/subject.php
deleted file mode 100755
index 1839c18f0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/1.0/dc/1.1/subject.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_10_DC_11_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/atom/1.0/label.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/atom/1.0/label.php
deleted file mode 100755
index 41c2cd6c6..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/atom/1.0/label.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_20_Atom_10_Category_Label extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:category label="Item Category"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/atom/1.0/term.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/atom/1.0/term.php
deleted file mode 100755
index b257106e4..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/atom/1.0/term.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_20_Atom_10_Category_Term extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:category term="Item Category"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/category.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/category.php
deleted file mode 100755
index c691b2395..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/category.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_20_Category extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <category>Item Category</category>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/dc/1.0/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/dc/1.0/subject.php
deleted file mode 100755
index 26f43606d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/dc/1.0/subject.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_20_DC_10_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/dc/1.1/subject.php b/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/dc/1.1/subject.php
deleted file mode 100755
index 8c8ab3f59..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_category_label/SPtests/rss/2.0/dc/1.1/subject.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Category_Label_Test_RSS_20_DC_11_Subject extends SimplePie_First_Item_Category_Label_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:subject>Item Category</dc:subject>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Category';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/content.php
deleted file mode 100755
index 7c7efb32d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_Atom_03_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <content>Item Description</content>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/dc/1.0/description.php
deleted file mode 100755
index d964440c2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_Atom_03_DC_10_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:description>Item Description</dc:description>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/dc/1.1/description.php
deleted file mode 100755
index 79a91f4d8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_Atom_03_DC_11_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:description>Item Description</dc:description>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/summary.php
deleted file mode 100755
index 420f00702..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/0.3/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_Atom_03_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <summary>Item Description</summary>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/content.php
deleted file mode 100755
index a35d9bac8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_Atom_10_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <content>Item Description</content>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/dc/1.0/description.php
deleted file mode 100755
index 37ec188f2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_Atom_10_DC_10_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:description>Item Description</dc:description>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/dc/1.1/description.php
deleted file mode 100755
index dca7893cf..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_Atom_10_DC_11_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:description>Item Description</dc:description>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/summary.php
deleted file mode 100755
index 42028baac..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/atom/1.0/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_Atom_10_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <summary>Item Description</summary>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/0.3/content.php
deleted file mode 100755
index ee5a6226c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/0.3/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_090_Atom_03_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:content>Item Description</a:content>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/0.3/summary.php
deleted file mode 100755
index f1d8a56eb..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/0.3/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_090_Atom_03_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:summary>Item Description</a:summary>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/1.0/content.php
deleted file mode 100755
index 4c12dcb54..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/1.0/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_090_Atom_10_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:content>Item Description</a:content>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/1.0/summary.php
deleted file mode 100755
index cc6de11ea..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/atom/1.0/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_090_Atom_10_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:summary>Item Description</a:summary>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/dc/1.0/description.php
deleted file mode 100755
index 26c18ca29..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_090_DC_10_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:description>Item Description</dc:description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/dc/1.1/description.php
deleted file mode 100755
index 495efcba0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_090_DC_11_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:description>Item Description</dc:description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/description.php
deleted file mode 100755
index d373c988c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.90/description.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_090_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <item>
- <description>Item Description</description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- // <description> isn't technically in 0.90, but we support it for compatibility
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/0.3/content.php
deleted file mode 100755
index 9ddd30750..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/0.3/content.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Netscape_Atom_03_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/0.3/summary.php
deleted file mode 100755
index 1833d359f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/0.3/summary.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Netscape_Atom_03_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/1.0/content.php
deleted file mode 100755
index 7a4ac164e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/1.0/content.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Netscape_Atom_10_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/1.0/summary.php
deleted file mode 100755
index e90f938e8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/atom/1.0/summary.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Netscape_Atom_10_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/dc/1.0/description.php
deleted file mode 100755
index 9606684c8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/dc/1.0/description.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Netscape_DC_10_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/dc/1.1/description.php
deleted file mode 100755
index 5b9a2aede..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/dc/1.1/description.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Netscape_DC_11_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/description.php
deleted file mode 100755
index 0b1e8e618..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-netscape/description.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Netscape_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <item>
- <description>Item Description</description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/0.3/content.php
deleted file mode 100755
index 4287801e7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/0.3/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Userland_Atom_03_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/0.3/summary.php
deleted file mode 100755
index 690a0eced..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/0.3/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Userland_Atom_03_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/1.0/content.php
deleted file mode 100755
index cab5aa6e9..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/1.0/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Userland_Atom_10_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/1.0/summary.php
deleted file mode 100755
index f0f50d0a0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/atom/1.0/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Userland_Atom_10_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/dc/1.0/description.php
deleted file mode 100755
index 4a63d5e4f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/dc/1.0/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Userland_DC_10_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/dc/1.1/description.php
deleted file mode 100755
index d745953fb..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/dc/1.1/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Userland_DC_11_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/description.php
deleted file mode 100755
index 70353eeb9..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.91-userland/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_091_Userland_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <item>
- <description>Item Description</description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/0.3/content.php
deleted file mode 100755
index 728dfb2d5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/0.3/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_092_Atom_03_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/0.3/summary.php
deleted file mode 100755
index 195ef3601..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/0.3/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_092_Atom_03_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/1.0/content.php
deleted file mode 100755
index f24278523..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/1.0/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_092_Atom_10_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/1.0/summary.php
deleted file mode 100755
index 4f6c31450..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/atom/1.0/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_092_Atom_10_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/dc/1.0/description.php
deleted file mode 100755
index 8e5519261..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/dc/1.0/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_092_DC_10_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/dc/1.1/description.php
deleted file mode 100755
index 831b7c5a3..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/dc/1.1/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_092_DC_11_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/description.php
deleted file mode 100755
index eacb8ccfd..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/0.92/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_092_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <item>
- <description>Item Description</description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/0.3/content.php
deleted file mode 100755
index bbb324a6e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/0.3/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_10_Atom_03_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:content>Item Description</a:content>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/0.3/summary.php
deleted file mode 100755
index 522508bf9..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/0.3/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_10_Atom_03_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:summary>Item Description</a:summary>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/1.0/content.php
deleted file mode 100755
index 6d63fd157..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/1.0/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_10_Atom_10_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:content>Item Description</a:content>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/1.0/summary.php
deleted file mode 100755
index 7d252362f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/atom/1.0/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_10_Atom_10_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:summary>Item Description</a:summary>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/dc/1.0/description.php
deleted file mode 100755
index 8e7ea6a91..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_10_DC_10_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:description>Item Description</dc:description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/dc/1.1/description.php
deleted file mode 100755
index b648349b5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_10_DC_11_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:description>Item Description</dc:description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/description.php
deleted file mode 100755
index c38cb6a4d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_10_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <item>
- <description>Item Description</description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/0.3/content.php
deleted file mode 100755
index 9d8d7a436..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/0.3/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_20_Atom_03_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/0.3/summary.php
deleted file mode 100755
index 3964ec9b3..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/0.3/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_20_Atom_03_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/1.0/content.php
deleted file mode 100755
index fac5d7d8f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/1.0/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_20_Atom_10_Content extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/1.0/summary.php
deleted file mode 100755
index 13e8b7318..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/atom/1.0/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_20_Atom_10_Summary extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/dc/1.0/description.php
deleted file mode 100755
index a4844832e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/dc/1.0/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_20_DC_10_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/dc/1.1/description.php
deleted file mode 100755
index 27eae4f7a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/dc/1.1/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_20_DC_11_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/description.php
deleted file mode 100755
index bdbb248b0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_content/SPtests/rss/2.0/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Content_Test_RSS_20_Description extends SimplePie_First_Item_Content_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <description>Item Description</description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/atom/0.3/name.php
deleted file mode 100755
index 5dc4380e1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/atom/0.3/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_Atom_03_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <contributor>
- <name>Item Contributor</name>
- </contributor>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/atom/1.0/name.php
deleted file mode 100755
index 25185c514..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/atom/1.0/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_Atom_10_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <contributor>
- <name>Item Contributor</name>
- </contributor>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.90/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.90/atom/0.3/name.php
deleted file mode 100755
index 281edd065..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.90/atom/0.3/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_090_Atom_03_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.90/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.90/atom/1.0/name.php
deleted file mode 100755
index a03949c2c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.90/atom/1.0/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_090_Atom_10_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-netscape/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-netscape/atom/0.3/name.php
deleted file mode 100755
index 58f3cc079..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-netscape/atom/0.3/name.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_091_Netscape_Atom_03_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-netscape/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-netscape/atom/1.0/name.php
deleted file mode 100755
index 3cfc61c57..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-netscape/atom/1.0/name.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_091_Netscape_Atom_10_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-userland/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-userland/atom/0.3/name.php
deleted file mode 100755
index 18d9764ab..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-userland/atom/0.3/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_091_Userland_Atom_03_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-userland/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-userland/atom/1.0/name.php
deleted file mode 100755
index 4978f7c6e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.91-userland/atom/1.0/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_091_Userland_Atom_10_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.92/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.92/atom/0.3/name.php
deleted file mode 100755
index f1d4c6002..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.92/atom/0.3/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_092_Atom_03_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.92/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.92/atom/1.0/name.php
deleted file mode 100755
index 0f3f7ed54..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/0.92/atom/1.0/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_092_Atom_10_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/1.0/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/1.0/atom/0.3/name.php
deleted file mode 100755
index 25386d641..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/1.0/atom/0.3/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_10_Atom_03_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/1.0/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/1.0/atom/1.0/name.php
deleted file mode 100755
index f925e1d0e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/1.0/atom/1.0/name.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_10_Atom_10_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/2.0/atom/0.3/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/2.0/atom/0.3/name.php
deleted file mode 100755
index 228307f11..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/2.0/atom/0.3/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_20_Atom_03_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/2.0/atom/1.0/name.php b/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/2.0/atom/1.0/name.php
deleted file mode 100755
index 16a49e81f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_contributor_name/SPtests/rss/2.0/atom/1.0/name.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Contributor_Name_Test_RSS_20_Atom_10_Name extends SimplePie_First_Item_Contributor_Name_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:contributor>
- <a:name>Item Contributor</a:name>
- </a:contributor>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Contributor';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/created.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/created.php
deleted file mode 100755
index 11536de7b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/created.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_Atom_03_Created extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <created>2007-01-11T16:00:00Z</created>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/dc/1.0/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/dc/1.0/date.php
deleted file mode 100755
index c0ef7e379..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/dc/1.0/date.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_Atom_03_DC_10_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/dc/1.1/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/dc/1.1/date.php
deleted file mode 100755
index fe865c0b7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/dc/1.1/date.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_Atom_03_DC_11_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/issued.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/issued.php
deleted file mode 100755
index 003c60f6d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/issued.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_Atom_03_Issued extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <issued>2007-01-11T16:00:00Z</issued>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/modified.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/modified.php
deleted file mode 100755
index 3d52614e7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/0.3/modified.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_Atom_03_Modified extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <modified>2007-01-11T16:00:00Z</modified>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/dc/1.0/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/dc/1.0/date.php
deleted file mode 100755
index ae950d342..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/dc/1.0/date.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_Atom_10_DC_10_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/dc/1.1/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/dc/1.1/date.php
deleted file mode 100755
index 12b2aff76..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/dc/1.1/date.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_Atom_10_DC_11_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/published.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/published.php
deleted file mode 100755
index 2aa2311ee..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/published.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_Atom_10_Published extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <published>2007-01-11T16:00:00Z</published>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/updated.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/updated.php
deleted file mode 100755
index e94af475a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/atom/1.0/updated.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_Atom_10_Updated extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <updated>2007-01-11T16:00:00Z</updated>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/bugs/876.0.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/bugs/876.0.php
deleted file mode 100755
index 8e01cdd00..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/bugs/876.0.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_Bug_876_Test_0 extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <pubDate></pubDate>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = null;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/created.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/created.php
deleted file mode 100755
index 46ecaa346..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/created.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_090_Atom_03_Created extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:created>2007-01-11T16:00:00Z</a:created>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/issued.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/issued.php
deleted file mode 100755
index 42c5f968c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/issued.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_090_Atom_03_Issued extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:issued>2007-01-11T16:00:00Z</a:issued>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/modified.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/modified.php
deleted file mode 100755
index 835cde9a4..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/0.3/modified.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_090_Atom_03_Modified extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:modified>2007-01-11T16:00:00Z</a:modified>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/1.0/published.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/1.0/published.php
deleted file mode 100755
index 695911ac0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/1.0/published.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_090_Atom_10_Published extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:published>2007-01-11T16:00:00Z</a:published>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/1.0/updated.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/1.0/updated.php
deleted file mode 100755
index dfc04231a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/atom/1.0/updated.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_090_Atom_10_Updated extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:updated>2007-01-11T16:00:00Z</a:updated>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/dc/1.0/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/dc/1.0/date.php
deleted file mode 100755
index ef4dd3605..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/dc/1.0/date.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_090_DC_10_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/dc/1.1/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/dc/1.1/date.php
deleted file mode 100755
index f87766f55..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.90/dc/1.1/date.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_090_DC_11_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/created.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/created.php
deleted file mode 100755
index 641b8eb71..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/created.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Netscape_Atom_03_Created extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:created>2007-01-11T16:00:00Z</a:created>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/issued.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/issued.php
deleted file mode 100755
index 9d5068c44..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/issued.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Netscape_Atom_03_Issued extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:issued>2007-01-11T16:00:00Z</a:issued>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/modified.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/modified.php
deleted file mode 100755
index 7e11d8bc1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/0.3/modified.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Netscape_Atom_03_Modified extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:modified>2007-01-11T16:00:00Z</a:modified>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/1.0/published.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/1.0/published.php
deleted file mode 100755
index 4de5d2aa7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/1.0/published.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Netscape_Atom_10_Published extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:published>2007-01-11T16:00:00Z</a:published>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/1.0/updated.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/1.0/updated.php
deleted file mode 100755
index 21f48c0d2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/atom/1.0/updated.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Netscape_Atom_10_Updated extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:updated>2007-01-11T16:00:00Z</a:updated>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/dc/1.0/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/dc/1.0/date.php
deleted file mode 100755
index ab2eab16c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/dc/1.0/date.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Netscape_DC_10_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/dc/1.1/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/dc/1.1/date.php
deleted file mode 100755
index 777febe1b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-netscape/dc/1.1/date.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Netscape_DC_11_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/created.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/created.php
deleted file mode 100755
index d851d34ec..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/created.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Userland_Atom_03_Created extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:created>2007-01-11T16:00:00Z</a:created>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/issued.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/issued.php
deleted file mode 100755
index ed543b49b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/issued.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Userland_Atom_03_Issued extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:issued>2007-01-11T16:00:00Z</a:issued>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/modified.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/modified.php
deleted file mode 100755
index b85252295..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/0.3/modified.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Userland_Atom_03_Modified extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:modified>2007-01-11T16:00:00Z</a:modified>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/1.0/published.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/1.0/published.php
deleted file mode 100755
index 452dc2f90..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/1.0/published.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Userland_Atom_10_Published extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:published>2007-01-11T16:00:00Z</a:published>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/1.0/updated.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/1.0/updated.php
deleted file mode 100755
index 14acc746f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/atom/1.0/updated.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Userland_Atom_10_Updated extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:updated>2007-01-11T16:00:00Z</a:updated>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/dc/1.0/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/dc/1.0/date.php
deleted file mode 100755
index 540704e5a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/dc/1.0/date.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Userland_DC_10_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/dc/1.1/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/dc/1.1/date.php
deleted file mode 100755
index 7d38369d6..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.91-userland/dc/1.1/date.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_091_Userland_DC_11_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/created.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/created.php
deleted file mode 100755
index 1b2a87185..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/created.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_092_Atom_03_Created extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:created>2007-01-11T16:00:00Z</a:created>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/issued.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/issued.php
deleted file mode 100755
index bf891fc8d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/issued.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_092_Atom_03_Issued extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:issued>2007-01-11T16:00:00Z</a:issued>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/modified.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/modified.php
deleted file mode 100755
index 652cdb883..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/0.3/modified.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_092_Atom_03_Modified extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:modified>2007-01-11T16:00:00Z</a:modified>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/1.0/published.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/1.0/published.php
deleted file mode 100755
index 544055779..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/1.0/published.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_092_Atom_10_Published extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:published>2007-01-11T16:00:00Z</a:published>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/1.0/updated.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/1.0/updated.php
deleted file mode 100755
index 2c39fdf5b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/atom/1.0/updated.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_092_Atom_10_Updated extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:updated>2007-01-11T16:00:00Z</a:updated>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/dc/1.0/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/dc/1.0/date.php
deleted file mode 100755
index 3b76563e2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/dc/1.0/date.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_092_DC_10_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/dc/1.1/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/dc/1.1/date.php
deleted file mode 100755
index 466df4688..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/0.92/dc/1.1/date.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_092_DC_11_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/created.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/created.php
deleted file mode 100755
index b3f7db7e2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/created.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_10_Atom_03_Created extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:created>2007-01-11T16:00:00Z</a:created>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/issued.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/issued.php
deleted file mode 100755
index 7d59d4d99..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/issued.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_10_Atom_03_Issued extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:issued>2007-01-11T16:00:00Z</a:issued>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/modified.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/modified.php
deleted file mode 100755
index fa6b3a932..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/0.3/modified.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_10_Atom_03_Modified extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:modified>2007-01-11T16:00:00Z</a:modified>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/1.0/published.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/1.0/published.php
deleted file mode 100755
index cc5bea3dc..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/1.0/published.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_10_Atom_10_Published extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:published>2007-01-11T16:00:00Z</a:published>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/1.0/updated.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/1.0/updated.php
deleted file mode 100755
index e578c58fd..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/atom/1.0/updated.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_10_Atom_10_Updated extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:updated>2007-01-11T16:00:00Z</a:updated>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/dc/1.0/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/dc/1.0/date.php
deleted file mode 100755
index 5d3e6170b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/dc/1.0/date.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_10_DC_10_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/dc/1.1/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/dc/1.1/date.php
deleted file mode 100755
index d897a418c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/1.0/dc/1.1/date.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_10_DC_11_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/created.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/created.php
deleted file mode 100755
index 27206e6c2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/created.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_20_Atom_03_Created extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:created>2007-01-11T16:00:00Z</a:created>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/issued.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/issued.php
deleted file mode 100755
index feb659ea7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/issued.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_20_Atom_03_Issued extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:issued>2007-01-11T16:00:00Z</a:issued>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/modified.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/modified.php
deleted file mode 100755
index 8636075f0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/0.3/modified.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_20_Atom_03_Modified extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:modified>2007-01-11T16:00:00Z</a:modified>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/1.0/published.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/1.0/published.php
deleted file mode 100755
index 6af2c9f10..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/1.0/published.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_20_Atom_10_Published extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:published>2007-01-11T16:00:00Z</a:published>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/1.0/updated.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/1.0/updated.php
deleted file mode 100755
index 67fc954d0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/atom/1.0/updated.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_20_Atom_10_Updated extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:updated>2007-01-11T16:00:00Z</a:updated>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/dc/1.0/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/dc/1.0/date.php
deleted file mode 100755
index 2b7741f99..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/dc/1.0/date.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_20_DC_10_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/dc/1.1/date.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/dc/1.1/date.php
deleted file mode 100755
index 658e140f3..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/dc/1.1/date.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_20_DC_11_Date extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:date>2007-01-11T16:00:00Z</dc:date>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/pubdate.php b/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/pubdate.php
deleted file mode 100755
index 797b1a951..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_date/SPtests/rss/2.0/pubdate.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Date_Test_RSS_20_pubDate extends SimplePie_First_Item_Date_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <pubDate>2007-01-11T16:00:00Z</pubDate>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 1168531200;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/content.php
deleted file mode 100755
index 9ac11e32a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_Atom_03_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <content>Item Description</content>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/dc/1.0/description.php
deleted file mode 100755
index e02d402c8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_Atom_03_DC_10_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:description>Item Description</dc:description>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/dc/1.1/description.php
deleted file mode 100755
index cdc8b2154..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_Atom_03_DC_11_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:description>Item Description</dc:description>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/summary.php
deleted file mode 100755
index 6db7f6b50..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/0.3/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_Atom_03_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <summary>Item Description</summary>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/content.php
deleted file mode 100755
index 4a3140209..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_Atom_10_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <content>Item Description</content>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/dc/1.0/description.php
deleted file mode 100755
index 3bed47f97..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_Atom_10_DC_10_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:description>Item Description</dc:description>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/dc/1.1/description.php
deleted file mode 100755
index 8c2ce46b0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_Atom_10_DC_11_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:description>Item Description</dc:description>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/summary.php
deleted file mode 100755
index 1c08a0687..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/atom/1.0/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_Atom_10_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <summary>Item Description</summary>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/0.3/content.php
deleted file mode 100755
index e4a5a43f5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/0.3/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_090_Atom_03_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:content>Item Description</a:content>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/0.3/summary.php
deleted file mode 100755
index b24991f12..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/0.3/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_090_Atom_03_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:summary>Item Description</a:summary>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/1.0/content.php
deleted file mode 100755
index 2ed702431..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/1.0/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_090_Atom_10_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:content>Item Description</a:content>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/1.0/summary.php
deleted file mode 100755
index 68a7dcc59..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/atom/1.0/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_090_Atom_10_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:summary>Item Description</a:summary>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/dc/1.0/description.php
deleted file mode 100755
index dfdcd5722..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_090_DC_10_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:description>Item Description</dc:description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/dc/1.1/description.php
deleted file mode 100755
index 53e050510..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_090_DC_11_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:description>Item Description</dc:description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/description.php
deleted file mode 100755
index 70a048f17..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.90/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_090_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <item>
- <description>Item Description</description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/0.3/content.php
deleted file mode 100755
index f7fd15262..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/0.3/content.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Netscape_Atom_03_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/0.3/summary.php
deleted file mode 100755
index d839aa9e1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/0.3/summary.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Netscape_Atom_03_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/1.0/content.php
deleted file mode 100755
index f182dfc66..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/1.0/content.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Netscape_Atom_10_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/1.0/summary.php
deleted file mode 100755
index 5e5f2a8a5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/atom/1.0/summary.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Netscape_Atom_10_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/dc/1.0/description.php
deleted file mode 100755
index 216cb39c0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/dc/1.0/description.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Netscape_DC_10_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/dc/1.1/description.php
deleted file mode 100755
index e706be1ff..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/dc/1.1/description.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Netscape_DC_11_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/description.php
deleted file mode 100755
index 8886ac35b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-netscape/description.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Netscape_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <item>
- <description>Item Description</description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/0.3/content.php
deleted file mode 100755
index 0a0301887..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/0.3/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Userland_Atom_03_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/0.3/summary.php
deleted file mode 100755
index a0a9e6f34..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/0.3/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Userland_Atom_03_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/1.0/content.php
deleted file mode 100755
index c3eae044a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/1.0/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Userland_Atom_10_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/1.0/summary.php
deleted file mode 100755
index 27b66ce70..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/atom/1.0/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Userland_Atom_10_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/dc/1.0/description.php
deleted file mode 100755
index d25e0cd61..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/dc/1.0/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Userland_DC_10_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/dc/1.1/description.php
deleted file mode 100755
index 8fb97cf71..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/dc/1.1/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Userland_DC_11_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/description.php
deleted file mode 100755
index f01c5ff5c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.91-userland/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_091_Userland_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <item>
- <description>Item Description</description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/0.3/content.php
deleted file mode 100755
index c906a96a7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/0.3/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_092_Atom_03_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/0.3/summary.php
deleted file mode 100755
index da2a88f70..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/0.3/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_092_Atom_03_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/1.0/content.php
deleted file mode 100755
index d245f0037..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/1.0/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_092_Atom_10_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/1.0/summary.php
deleted file mode 100755
index 9ea440e87..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/atom/1.0/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_092_Atom_10_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/dc/1.0/description.php
deleted file mode 100755
index 09a9f6027..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/dc/1.0/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_092_DC_10_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/dc/1.1/description.php
deleted file mode 100755
index 56e1f8351..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/dc/1.1/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_092_DC_11_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/description.php
deleted file mode 100755
index 76d7a0222..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/0.92/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_092_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <item>
- <description>Item Description</description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/0.3/content.php
deleted file mode 100755
index e3f5cb7bf..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/0.3/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_10_Atom_03_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:content>Item Description</a:content>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/0.3/summary.php
deleted file mode 100755
index f920bc9a5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/0.3/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_10_Atom_03_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:summary>Item Description</a:summary>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/1.0/content.php
deleted file mode 100755
index 1a68571d4..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/1.0/content.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_10_Atom_10_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:content>Item Description</a:content>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/1.0/summary.php
deleted file mode 100755
index 3e9190464..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/atom/1.0/summary.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_10_Atom_10_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:summary>Item Description</a:summary>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/dc/1.0/description.php
deleted file mode 100755
index 187d4f11e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/dc/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_10_DC_10_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:description>Item Description</dc:description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/dc/1.1/description.php
deleted file mode 100755
index 487cf5cc3..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/dc/1.1/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_10_DC_11_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:description>Item Description</dc:description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/description.php
deleted file mode 100755
index 21ec6f0c5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/1.0/description.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_10_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <item>
- <description>Item Description</description>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/0.3/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/0.3/content.php
deleted file mode 100755
index 29bf9f2c4..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/0.3/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_20_Atom_03_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/0.3/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/0.3/summary.php
deleted file mode 100755
index f853e231a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/0.3/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_20_Atom_03_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/1.0/content.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/1.0/content.php
deleted file mode 100755
index d712ece73..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/1.0/content.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_20_Atom_10_Content extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:content>Item Description</a:content>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/1.0/summary.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/1.0/summary.php
deleted file mode 100755
index ab0aa2d20..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/atom/1.0/summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_20_Atom_10_Summary extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:summary>Item Description</a:summary>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/dc/1.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/dc/1.0/description.php
deleted file mode 100755
index 19fa60a63..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/dc/1.0/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_20_DC_10_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/dc/1.1/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/dc/1.1/description.php
deleted file mode 100755
index 08e5c1795..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/dc/1.1/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_20_DC_11_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:description>Item Description</dc:description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/description.php b/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/description.php
deleted file mode 100755
index d2b16bef2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_description/SPtests/rss/2.0/description.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Description_Test_RSS_20_Description extends SimplePie_First_Item_Description_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <description>Item Description</description>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Description';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/dc/1.0/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/dc/1.0/identifier.php
deleted file mode 100755
index 44a34d499..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/dc/1.0/identifier.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_Atom_03_DC_10_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:identifier>http://example.com/</dc:identifier>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/dc/1.1/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/dc/1.1/identifier.php
deleted file mode 100755
index ddb9ca094..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/dc/1.1/identifier.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_Atom_03_DC_11_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:identifier>http://example.com/</dc:identifier>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/id.php
deleted file mode 100755
index de783213a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/0.3/id.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_Atom_03_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <id>http://example.com/</id>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/dc/1.0/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/dc/1.0/identifier.php
deleted file mode 100755
index cdba6bf0d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/dc/1.0/identifier.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_Atom_10_DC_10_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:identifier>http://example.com/</dc:identifier>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/dc/1.1/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/dc/1.1/identifier.php
deleted file mode 100755
index e1f8d40c7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/dc/1.1/identifier.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_Atom_10_DC_11_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:identifier>http://example.com/</dc:identifier>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/id.php
deleted file mode 100755
index f9bd4e2b9..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/atom/1.0/id.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_Atom_10_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <id>http://example.com/</id>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/atom/0.3/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/atom/0.3/id.php
deleted file mode 100755
index fd7065463..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/atom/0.3/id.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_090_Atom_03_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:id>http://example.com/</a:id>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/atom/1.0/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/atom/1.0/id.php
deleted file mode 100755
index d78046f25..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/atom/1.0/id.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_090_Atom_10_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:id>http://example.com/</a:id>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/dc/1.0/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/dc/1.0/identifier.php
deleted file mode 100755
index 7e873436b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/dc/1.0/identifier.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_090_DC_10_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/dc/1.1/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/dc/1.1/identifier.php
deleted file mode 100755
index 6a6b7a399..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.90/dc/1.1/identifier.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_090_DC_11_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/atom/0.3/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/atom/0.3/id.php
deleted file mode 100755
index 0d2396fce..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/atom/0.3/id.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_091_Netscape_Atom_03_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:id>http://example.com/</a:id>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/atom/1.0/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/atom/1.0/id.php
deleted file mode 100755
index 982f0712d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/atom/1.0/id.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_091_Netscape_Atom_10_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:id>http://example.com/</a:id>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/dc/1.0/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/dc/1.0/identifier.php
deleted file mode 100755
index 693b10ec7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/dc/1.0/identifier.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_091_Netscape_DC_10_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/dc/1.1/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/dc/1.1/identifier.php
deleted file mode 100755
index 0e1683b2c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-netscape/dc/1.1/identifier.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_091_Netscape_DC_11_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/atom/0.3/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/atom/0.3/id.php
deleted file mode 100755
index 0ef6eabcb..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/atom/0.3/id.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_091_Userland_Atom_03_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:id>http://example.com/</a:id>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/atom/1.0/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/atom/1.0/id.php
deleted file mode 100755
index 36a4a00f5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/atom/1.0/id.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_091_Userland_Atom_10_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:id>http://example.com/</a:id>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/dc/1.0/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/dc/1.0/identifier.php
deleted file mode 100755
index f5b6b114f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/dc/1.0/identifier.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_091_Userland_DC_10_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/dc/1.1/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/dc/1.1/identifier.php
deleted file mode 100755
index c9668f27d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.91-userland/dc/1.1/identifier.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_091_Userland_DC_11_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/atom/0.3/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/atom/0.3/id.php
deleted file mode 100755
index b8fefd284..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/atom/0.3/id.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_092_Atom_03_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:id>http://example.com/</a:id>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/atom/1.0/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/atom/1.0/id.php
deleted file mode 100755
index 2dd2ee2b1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/atom/1.0/id.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_092_Atom_10_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:id>http://example.com/</a:id>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/dc/1.0/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/dc/1.0/identifier.php
deleted file mode 100755
index 3d60d9a98..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/dc/1.0/identifier.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_092_DC_10_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/dc/1.1/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/dc/1.1/identifier.php
deleted file mode 100755
index fb6989a47..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/0.92/dc/1.1/identifier.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_092_DC_11_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/atom/0.3/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/atom/0.3/id.php
deleted file mode 100755
index 095302d0f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/atom/0.3/id.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_10_Atom_03_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:id>http://example.com/</a:id>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/atom/1.0/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/atom/1.0/id.php
deleted file mode 100755
index 65fb43c45..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/atom/1.0/id.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_10_Atom_10_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:id>http://example.com/</a:id>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/dc/1.0/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/dc/1.0/identifier.php
deleted file mode 100755
index e9194ca29..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/dc/1.0/identifier.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_10_DC_10_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/dc/1.1/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/dc/1.1/identifier.php
deleted file mode 100755
index be2907fcb..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/1.0/dc/1.1/identifier.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_10_DC_11_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/atom/0.3/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/atom/0.3/id.php
deleted file mode 100755
index 5c090f750..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/atom/0.3/id.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_20_Atom_03_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:id>http://example.com/</a:id>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/atom/1.0/id.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/atom/1.0/id.php
deleted file mode 100755
index fb4cd5471..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/atom/1.0/id.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_20_Atom_10_ID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:id>http://example.com/</a:id>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/dc/1.0/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/dc/1.0/identifier.php
deleted file mode 100755
index dc9e67269..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/dc/1.0/identifier.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_20_DC_10_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/dc/1.1/identifier.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/dc/1.1/identifier.php
deleted file mode 100755
index 3acc1bda7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/dc/1.1/identifier.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_20_DC_11_Identifier extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:identifier>http://example.com/</dc:identifier>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/guid.php b/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/guid.php
deleted file mode 100755
index 9af6e3a76..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_id/SPtests/rss/2.0/guid.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_ID_Test_RSS_20_GUID extends SimplePie_First_Item_ID_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <guid>http://example.com/</guid>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/0.3/geo/lat.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/0.3/geo/lat.php
deleted file mode 100755
index fe187c6f9..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/0.3/geo/lat.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_Atom_03_Geo_Lat extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <entry>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/0.3/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/0.3/georss/point.php
deleted file mode 100755
index 641c812a4..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/0.3/georss/point.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_Atom_03_Georss_Point extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:georss="http://www.georss.org/georss">
- <entry>
- <georss:point>55.701 12.552</georss:point>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/1.0/geo/lat.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/1.0/geo/lat.php
deleted file mode 100755
index fad25f8cf..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/1.0/geo/lat.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_Atom_10_Geo_Lat extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <entry>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/1.0/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/1.0/georss/point.php
deleted file mode 100755
index 10a028a92..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/atom/1.0/georss/point.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_Atom_10_Georss_Point extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss">
- <entry>
- <georss:point>55.701 12.552</georss:point>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.90/geo/lat.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.90/geo/lat.php
deleted file mode 100755
index 2881be89e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.90/geo/lat.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_090_Geo_Lat extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.90/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.90/georss/point.php
deleted file mode 100755
index 9cbfcbf86..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.90/georss/point.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_090_Georss_Point extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:georss="http://www.georss.org/georss">
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-netscape/geo/lat.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-netscape/geo/lat.php
deleted file mode 100755
index 9dad031db..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-netscape/geo/lat.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_091_Netscape_Geo_Lat extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <channel>
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-netscape/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-netscape/georss/point.php
deleted file mode 100755
index eed539da6..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-netscape/georss/point.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_091_Netscape_Georss_Point extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:georss="http://www.georss.org/georss">
- <channel>
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-userland/geo/lat.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-userland/geo/lat.php
deleted file mode 100755
index b22e5c808..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-userland/geo/lat.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_091_Userland_Geo_Lat extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <channel>
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-userland/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-userland/georss/point.php
deleted file mode 100755
index 49c9cf10b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.91-userland/georss/point.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_091_Userland_Georss_Point extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:georss="http://www.georss.org/georss">
- <channel>
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.92/geo/lat.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.92/geo/lat.php
deleted file mode 100755
index 5c22e0278..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.92/geo/lat.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_092_Geo_Lat extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <channel>
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.92/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.92/georss/point.php
deleted file mode 100755
index 70845a61c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/0.92/georss/point.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_092_Georss_Point extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:georss="http://www.georss.org/georss">
- <channel>
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/1.0/geo/lat.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/1.0/geo/lat.php
deleted file mode 100755
index bfe8aaedf..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/1.0/geo/lat.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_10_Geo_Lat extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/1.0/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/1.0/georss/point.php
deleted file mode 100755
index e5da44330..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/1.0/georss/point.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_10_Georss_Point extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:georss="http://www.georss.org/georss">
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/2.0/geo/lat.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/2.0/geo/lat.php
deleted file mode 100755
index 0eb4cbf90..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/2.0/geo/lat.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_20_Geo_Lat extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <channel>
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/2.0/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/2.0/georss/point.php
deleted file mode 100755
index ccb54ba37..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_latitude/SPtests/rss/2.0/georss/point.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Latitude_Test_RSS_20_Georss_Point extends SimplePie_First_Item_Latitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:georss="http://www.georss.org/georss">
- <channel>
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 55.701;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/0.3/geo/long.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/0.3/geo/long.php
deleted file mode 100755
index 334fd1827..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/0.3/geo/long.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_Atom_03_Geo_Long extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <entry>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/0.3/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/0.3/georss/point.php
deleted file mode 100755
index fec93693b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/0.3/georss/point.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_Atom_03_Georss_Point extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:georss="http://www.georss.org/georss">
- <entry>
- <georss:point>55.701 12.552</georss:point>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/1.0/geo/long.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/1.0/geo/long.php
deleted file mode 100755
index 96cd8fe1a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/1.0/geo/long.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_Atom_10_Geo_Long extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <entry>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/1.0/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/1.0/georss/point.php
deleted file mode 100755
index a0e4864d8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/atom/1.0/georss/point.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_Atom_10_Georss_Point extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss">
- <entry>
- <georss:point>55.701 12.552</georss:point>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.90/geo/long.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.90/geo/long.php
deleted file mode 100755
index 4656bbc9b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.90/geo/long.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_090_Geo_Long extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.90/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.90/georss/point.php
deleted file mode 100755
index 4dfbf8d74..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.90/georss/point.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_090_Georss_Point extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:georss="http://www.georss.org/georss">
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-netscape/geo/long.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-netscape/geo/long.php
deleted file mode 100755
index e2070c5c7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-netscape/geo/long.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_091_Netscape_Geo_Long extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <channel>
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-netscape/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-netscape/georss/point.php
deleted file mode 100755
index 343651ec2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-netscape/georss/point.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_091_Netscape_Georss_Point extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:georss="http://www.georss.org/georss">
- <channel>
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-userland/geo/long.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-userland/geo/long.php
deleted file mode 100755
index 19f92d20b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-userland/geo/long.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_091_Userland_Geo_Long extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <channel>
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-userland/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-userland/georss/point.php
deleted file mode 100755
index 1bbc35d69..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.91-userland/georss/point.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_091_Userland_Georss_Point extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:georss="http://www.georss.org/georss">
- <channel>
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.92/geo/long.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.92/geo/long.php
deleted file mode 100755
index 27a4ac88d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.92/geo/long.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_092_Geo_Long extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <channel>
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.92/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.92/georss/point.php
deleted file mode 100755
index 837e7d355..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/0.92/georss/point.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_092_Georss_Point extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:georss="http://www.georss.org/georss">
- <channel>
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/1.0/geo/long.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/1.0/geo/long.php
deleted file mode 100755
index e7e6f302d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/1.0/geo/long.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_10_Geo_Long extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/1.0/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/1.0/georss/point.php
deleted file mode 100755
index 536381ece..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/1.0/georss/point.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_10_Georss_Point extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:georss="http://www.georss.org/georss">
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/2.0/geo/long.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/2.0/geo/long.php
deleted file mode 100755
index f3ae64bab..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/2.0/geo/long.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_20_Geo_Long extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
- <channel>
- <item>
- <geo:lat>55.701</geo:lat>
- <geo:long>12.552</geo:long>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/2.0/georss/point.php b/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/2.0/georss/point.php
deleted file mode 100755
index c1a7a94a4..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_longitude/SPtests/rss/2.0/georss/point.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Longitude_Test_RSS_20_Georss_Point extends SimplePie_First_Item_Longitude_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:georss="http://www.georss.org/georss">
- <channel>
- <item>
- <georss:point>55.701 12.552</georss:point>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 12.552;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/0.3/enclosure.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/0.3/enclosure.php
deleted file mode 100755
index 0c849473f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/0.3/enclosure.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Atom_03_Enclosure extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <link href="http://example.com/" rel="enclosure"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/0.3/link.php
deleted file mode 100755
index d45380ec1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/0.3/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Atom_03_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <link href="http://example.com/"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/1.0/enclosure.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/1.0/enclosure.php
deleted file mode 100755
index 1c27385c6..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/1.0/enclosure.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Atom_10_Enclosure extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <link href="http://example.com/" rel="enclosure"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/1.0/link.php
deleted file mode 100755
index f998b2cd6..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/atom/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Atom_10_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <link href="http://example.com/"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.0.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.0.php
deleted file mode 100755
index 12f56b8c2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.0.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Bug_10_Test_0 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <guid>http://example.com/</guid>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.1.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.1.php
deleted file mode 100755
index 78f115049..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.1.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Bug_10_Test_1 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <guid isPermaLink="true">http://example.com/</guid>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.2.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.2.php
deleted file mode 100755
index 1611e3f7c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.2.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Bug_10_Test_2 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <guid isPermaLink="meep">http://example.com/</guid>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.3.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.3.php
deleted file mode 100755
index ed9dbf407..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/10.3.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Bug_10_Test_3 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <guid isPermaLink="false">http://example.com/</guid>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = NULL;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/156.0.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/156.0.php
deleted file mode 100755
index 0f9c5151d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/156.0.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Bug_156_Test_0 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <enclosure url="http://example.com/" length="1" type="audio/mpeg"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.0.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.0.php
deleted file mode 100755
index a71dd3249..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.0.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Bug_176_Test_0 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <link rel="related" href="http://example.com/related"/>
- <link rel="via" href="http://example.com/via"/>
- <link rel="alternate" href="http://example.com/alternate"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/alternate';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.1.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.1.php
deleted file mode 100755
index 0c217d283..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.1.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Bug_176_Test_1 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <link rel="alternate" href="http://example.com/alternate"/>
- <link rel="related" href="http://example.com/related"/>
- <link rel="via" href="http://example.com/via"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/alternate';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.2.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.2.php
deleted file mode 100755
index 6464d2a2a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/176.2.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Bug_176_Test_2 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <link rel="related" href="http://example.com/related"/>
- <link rel="alternate" href="http://example.com/alternate"/>
- <link rel="via" href="http://example.com/via"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/alternate';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/640.0.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/640.0.php
deleted file mode 100755
index a897bc82e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/bugs/640.0.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Bug_640_Test_0 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xml:base="http://example.com/" >
- <entry>
- <link href=""/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/atom/0.3/link.php
deleted file mode 100755
index fa52293bf..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/atom/0.3/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_090_Atom_03_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:link href="http://example.com/"/>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/atom/1.0/link.php
deleted file mode 100755
index c5df9496b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/atom/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_090_Atom_10_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:link href="http://example.com/"/>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/link.php
deleted file mode 100755
index 72f585e4d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.90/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_090_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <item>
- <link>http://example.com/</link>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/atom/0.3/link.php
deleted file mode 100755
index 0b7881ee8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/atom/0.3/link.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_091_Netscape_Atom_03_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:link href="http://example.com/"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/atom/1.0/link.php
deleted file mode 100755
index 11bb1e8a2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/atom/1.0/link.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_091_Netscape_Atom_10_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:link href="http://example.com/"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/link.php
deleted file mode 100755
index 5e5d36bca..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-netscape/link.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_091_Netscape_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <item>
- <link>http://example.com/</link>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/0.91-userland.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/0.91-userland.php
deleted file mode 100755
index a559dade2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/0.91-userland.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_091_Userland_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <item>
- <link>http://example.com/</link>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom0.3-enclosure.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom0.3-enclosure.php
deleted file mode 100755
index 4a95c94d3..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom0.3-enclosure.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_091_Userland_Atom_03_Link_Enclosure extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:link href="http://example.com/" rel="enclosure"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom0.3.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom0.3.php
deleted file mode 100755
index be336dd2e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom0.3.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_091_Userland_Atom_03_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:link href="http://example.com/"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom1.0-enclosure.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom1.0-enclosure.php
deleted file mode 100755
index 21dd730d2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom1.0-enclosure.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_091_Userland_Atom_10_Link_Enclosure extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:link href="http://example.com/" rel="enclosure"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom1.0.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom1.0.php
deleted file mode 100755
index 61c07f3f1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.91-userland/atom1.0.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_091_Userland_Atom_10_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:link href="http://example.com/"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/atom/0.3/link.php
deleted file mode 100755
index dbf60a01b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/atom/0.3/link.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_092_Atom_03_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:link href="http://example.com/"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/atom/1.0/link.php
deleted file mode 100755
index a289f29ac..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/atom/1.0/link.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_092_Atom_10_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:link href="http://example.com/"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/link.php
deleted file mode 100755
index b3ca8fd34..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/0.92/link.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_092_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <item>
- <link>http://example.com/</link>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/atom/0.3/link.php
deleted file mode 100755
index 9149aa8d8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/atom/0.3/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_10_Atom_03_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:link href="http://example.com/"/>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/atom/1.0/link.php
deleted file mode 100755
index 7d64ed73c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/atom/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_10_Atom_10_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:link href="http://example.com/"/>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/link.php
deleted file mode 100755
index 2eb4b4fc0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/1.0/link.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_10_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <item>
- <link>http://example.com/</link>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/atom/0.3/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/atom/0.3/link.php
deleted file mode 100755
index 881212b2a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/atom/0.3/link.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_20_Atom_03_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:link href="http://example.com/"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/atom/1.0/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/atom/1.0/link.php
deleted file mode 100755
index 224636dff..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/atom/1.0/link.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_20_Atom_10_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:link href="http://example.com/"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/enclosure.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/enclosure.php
deleted file mode 100755
index b58d06c05..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/enclosure.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_20_Enclosure extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <enclosure url="http://example.com/" length="1" type="text/html"/>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/link.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/link.php
deleted file mode 100755
index 54734d94b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/rss/2.0/link.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_RSS_20_Link extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <link>http://example.com/</link>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/1.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/1.php
deleted file mode 100755
index 9e9be33cd..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/1.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Atom_10_xmlbase_1 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xml:base="http://example.com/">
- <entry>
- <link rel="alternate" href="/alternate"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/alternate';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/2.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/2.php
deleted file mode 100755
index dccbbd79e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/2.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Atom_10_xmlbase_2 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry xml:base="http://example.com/">
- <link rel="alternate" href="/alternate"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/alternate';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/3.php b/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/3.php
deleted file mode 100755
index 3cb4732c1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_permalink/SPtests/xmlbase/3.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Permalink_Test_Atom_10_xmlbase_3 extends SimplePie_First_Item_Permalink_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xml:base="http://example.org/">
- <entry>
- <link rel="alternate" href="//example.com/alternate"/>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'http://example.com/alternate';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/dc/1.0/title.php
deleted file mode 100755
index c70757657..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/dc/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_DC_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:title>Item Title</dc:title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/dc/1.1/title.php
deleted file mode 100755
index 9c4bedb32..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/dc/1.1/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_DC_11_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:title>Item Title</dc:title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/title.php
deleted file mode 100755
index db7d19fb5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/0.3/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <title>Item Title</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/dc/1.0/title.php
deleted file mode 100755
index f9af26c08..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/dc/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_DC_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <entry>
- <dc:title>Item Title</dc:title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/dc/1.1/title.php
deleted file mode 100755
index db83ac959..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/dc/1.1/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_DC_11_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <entry>
- <dc:title>Item Title</dc:title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/title.php
deleted file mode 100755
index 857fcd765..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/atom/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Item Title</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/174.0.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/174.0.php
deleted file mode 100755
index a515e88f4..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/174.0.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_174_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<?xml version="1.0" encoding = "UTF-8" ?>
-<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Item Title</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.1.php
deleted file mode 100755
index 5c046aba3..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.1.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_179_Post_10_Test_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Title 1</title>
- <updated>2003-12-15T18:30:02Z</updated>
- </entry>
- <entry>
- <title>Title 2</title>
- <updated>2003-12-14T18:30:02Z</updated>
- </entry>
- <entry>
- <title>Title 3</title>
- <updated>2003-12-13T18:30:02Z</updated>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Title 1';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.2.php
deleted file mode 100755
index 32dc55104..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.2.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_179_Post_10_Test_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Title 2</title>
- <updated>2003-12-14T18:30:02Z</updated>
- </entry>
- <entry>
- <title>Title 1</title>
- <updated>2003-12-15T18:30:02Z</updated>
- </entry>
- <entry>
- <title>Title 3</title>
- <updated>2003-12-13T18:30:02Z</updated>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Title 1';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.php
deleted file mode 100755
index 2d964696b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/179.0.10.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_179_Post_10_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Title 1</title>
- <updated>2003-12-13T18:30:02Z</updated>
- </entry>
- <entry>
- <title>Title 2</title>
- <updated>2003-12-13T18:30:02Z</updated>
- </entry>
- <entry>
- <title>Title 3</title>
- <updated>2003-12-13T18:30:02Z</updated>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Title 1';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/270.0.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/270.0.php
deleted file mode 100755
index 4e494133a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/270.0.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_270_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><![CDATA[<title>]]></div></content>
- <title>The title</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'The title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/431.0.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/431.0.php
deleted file mode 100755
index 691b0e7da..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/431.0.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_431_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <title>Item title</title>
- <image>
- <title>Image title</title>
- </image>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/431.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/431.1.php
deleted file mode 100755
index 38f8ae34d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/431.1.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_431_Test_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <image>
- <title>Image title</title>
- </image>
- <title>Item title</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.0.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.0.php
deleted file mode 100755
index 17611a0a3..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.0.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_475_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <source>
- <title>Source Title</title>
- </source>
- <title>Item Title</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.1.php
deleted file mode 100755
index 9bcfa3968..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.1.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_475_Test_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Item Title</title>
- <source>
- <title>Source Title</title>
- </source>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.2.php
deleted file mode 100755
index 388bc72d2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.2.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_475_Test_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Item Title</title>
- <x:foo xmlns:x="urn:foo">
- <title>Extension Title</title>
- </x:foo>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.3.php
deleted file mode 100755
index d9d076bb2..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/475.3.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_475_Test_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <x:foo xmlns:x="urn:foo">
- <title>Extension Title</title>
- </x:foo>
- <title>Item Title</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.0.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.0.php
deleted file mode 100755
index 6d963b324..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.0.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_508_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'
-<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Item <!--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa--> Title</title>
- </entry>
-</feed>
-';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.1.php
deleted file mode 100755
index a40f411f6..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.1.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_508_Test_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'
-<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Item <!--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa--><!--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa--> Title</title>
- </entry>
-</feed>
-';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.2.php
deleted file mode 100755
index 2785d76cc..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.2.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_508_Test_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'
-<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Itemaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <!--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa--> Title</title>
- </entry>
-</feed>
-';
- }
-
- function expected()
- {
- $this->expected = 'Itemaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.3.php
deleted file mode 100755
index 2ead51e00..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/508.3.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_508_Test_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'
-<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Itemaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <!--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa--><!--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa--> Title</title>
- </entry>
-</feed>
-';
- }
-
- function expected()
- {
- $this->expected = 'Itemaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/564.0.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/564.0.php
deleted file mode 100755
index a814c296a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/564.0.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_564_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="html"><![CDATA[<blink>A<blink>B</blink>C</blink>]]></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'ABC';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/629.0.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/629.0.php
deleted file mode 100755
index 82115daf7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/629.0.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_629_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <x:foo xmlns:x="urn:foo">
- <entry>
- <title>Extension title</title>
- </entry>
- </x:foo>
- <entry>
- <title>Item title</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/629.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/629.1.php
deleted file mode 100755
index 6966e9fb6..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/629.1.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_629_Test_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Item title</title>
- </entry>
- <x:foo xmlns:x="urn:foo">
- <entry>
- <title>Extension title</title>
- </entry>
- </x:foo>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/666.0.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/666.0.php
deleted file mode 100755
index c5d4de155..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/666.0.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_666_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <channel>
- <title>Feed Title</title>
- </channel>
- <item>
- <title>Item Title</title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/666.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/666.1.php
deleted file mode 100755
index 5e23fbbaa..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/666.1.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_666_Test_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <channel>
- <title>Feed Title</title>
- </channel>
- <item>
- <title>Item Title</title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/828.0.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/828.0.php
deleted file mode 100755
index 35d36b673..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/828.0.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_828_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Item &lt;!-- Title</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'Item &lt;!-- Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/968.0.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/968.0.php
deleted file mode 100755
index 6bed207a7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/bugs/968.0.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Bug_968_Test_0 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data = "\xFF\xFE" . chunk_split(
-'<?xml version="1.0" encoding="UTF-16LE"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title>Item Title</title>
- </entry>
-</feed>', 1, "\x00");
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.1.php
deleted file mode 100755
index 6c70c3013..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.1.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_Title_HTML_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <title type="text/html" mode="escaped">This &amp;amp; this</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.2.php
deleted file mode 100755
index 18d99d795..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.2.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_Title_Text_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <title type="text/plain">This &amp;amp; this</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.3.php
deleted file mode 100755
index 33ffe3b13..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/1.3.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_Title_XHTML_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <title type="application/xhtml+xml" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml">This &amp;amp; this</div></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.1.php
deleted file mode 100755
index bef4945e1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.1.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_Title_HTML_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <title type="text/html" mode="escaped"><![CDATA[This &amp;amp; this]]></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.2.php
deleted file mode 100755
index f9da9e9a4..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.2.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_Title_Text_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <title type="text/plain"><![CDATA[This &amp;amp; this]]></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.3.php
deleted file mode 100755
index 05801eed1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/2.3.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_Title_XHTML_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <title type="application/xhtml+xml" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><![CDATA[This &amp;amp; this]]></div></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.1.php
deleted file mode 100755
index 43ff189b8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.1.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_Title_HTML_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <title type="text/html" mode="escaped">This <![CDATA[&amp;]]>amp; this</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.2.php
deleted file mode 100755
index 94fe1afef..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.2.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_Title_Text_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <title type="text/plain">This <![CDATA[&amp;]]>amp; this</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.3.php
deleted file mode 100755
index 92ee35a90..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/0.3/3.3.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_03_Title_XHTML_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed version="0.3" xmlns="http://purl.org/atom/ns#">
- <entry>
- <title type="application/xhtml+xml" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml">This <![CDATA[&amp;]]>amp; this</div></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.1.php
deleted file mode 100755
index 8ebf20dd5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.1.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title_HTML_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="html">This &amp;amp; this</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.2.php
deleted file mode 100755
index e5634cb28..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.2.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title_Text_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="text">This &amp;amp; this</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.3.php
deleted file mode 100755
index 789c2a580..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/1.3.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title_XHTML_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This &amp;amp; this</div></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.1.php
deleted file mode 100755
index 481e29f57..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.1.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title_HTML_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="html"><![CDATA[This &amp;amp; this]]></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.2.php
deleted file mode 100755
index 4def434a0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.2.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title_Text_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="text"><![CDATA[This &amp;amp; this]]></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.3.php
deleted file mode 100755
index 9a6ce970d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/2.3.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title_XHTML_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><![CDATA[This &amp;amp; this]]></div></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.1.php
deleted file mode 100755
index 0c3491e27..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.1.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title_HTML_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="html">This <![CDATA[&amp;]]>amp; this</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.2.php
deleted file mode 100755
index 44961c42b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.2.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title_Text_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="text">This <![CDATA[&amp;]]>amp; this</title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.3.php
deleted file mode 100755
index 349e45649..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/atom/1.0/3.3.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title_XHTML_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This <![CDATA[&amp;]]>amp; this</div></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/1.php
deleted file mode 100755
index 0f34ce7a6..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/1.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_090_Title_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <item>
- <title>This &amp;amp; this</title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/2.php
deleted file mode 100755
index 37ab27f1c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/2.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_090_Title_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <item>
- <title><![CDATA[This &amp;amp; this]]></title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/3.php
deleted file mode 100755
index cd7d3ff8f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.90/3.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_090_Title_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <item>
- <title>This <![CDATA[&amp;]]>amp; this</title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/1.php
deleted file mode 100755
index 8d96de3c9..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/1.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Netscape_Title_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <item>
- <title>This &amp;amp; this</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/2.php
deleted file mode 100755
index be9460b9f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/2.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Netscape_Title_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <item>
- <title><![CDATA[This &amp;amp; this]]></title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/3.php
deleted file mode 100755
index 60047dc0d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-netscape/3.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Netscape_Title_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <item>
- <title>This <![CDATA[&amp;]]>amp; this</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/1.php
deleted file mode 100755
index c98ba9379..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/1.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Userland_Title_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <item>
- <title>This &amp;amp; this</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/2.php
deleted file mode 100755
index 62cabfbc6..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/2.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Userland_Title_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <item>
- <title><![CDATA[This &amp;amp; this]]></title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/3.php
deleted file mode 100755
index b5a93dbd7..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.91-userland/3.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Userland_Title_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <item>
- <title>This <![CDATA[&amp;]]>amp; this</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/1.php
deleted file mode 100755
index 8e00ad68e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/1.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_092_Title_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <item>
- <title>This &amp;amp; this</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/2.php
deleted file mode 100755
index 7960a729c..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/2.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_092_Title_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <item>
- <title><![CDATA[This &amp;amp; this]]></title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/3.php
deleted file mode 100755
index 4f7308257..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/0.92/3.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_092_Title_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <item>
- <title>This <![CDATA[&amp;]]>amp; this</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/1.php
deleted file mode 100755
index 5c5207067..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/1.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_10_Title_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <item>
- <title>This &amp;amp; this</title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/2.php
deleted file mode 100755
index e8910cf87..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/2.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_10_Title_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <item>
- <title><![CDATA[This &amp;amp; this]]></title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/3.php
deleted file mode 100755
index e736e29fc..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/1.0/3.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_10_Title_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <item>
- <title>This <![CDATA[&amp;]]>amp; this</title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/1.php
deleted file mode 100755
index 9d552daf0..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/1.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_20_Title_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <title>This &amp;amp; this</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/2.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/2.php
deleted file mode 100755
index a79bd280a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/2.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_20_Title_2 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <title><![CDATA[This &amp;amp; this]]></title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/3.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/3.php
deleted file mode 100755
index 241cd2f89..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/entities/rss/2.0/3.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_20_Title_3 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <title>This <![CDATA[&amp;]]>amp; this</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'This &amp;amp;amp; this';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/atom/0.3/title.php
deleted file mode 100755
index 42a72a308..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/atom/0.3/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_090_Atom_03_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:title>Item Title</a:title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/atom/1.0/title.php
deleted file mode 100755
index 544a6e83b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/atom/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_090_Atom_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:title>Item Title</a:title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/dc/1.0/title.php
deleted file mode 100755
index f718d0623..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/dc/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_090_DC_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:title>Item Title</dc:title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/dc/1.1/title.php
deleted file mode 100755
index 137c5917e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/dc/1.1/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_090_DC_11_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:title>Item Title</dc:title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/title.php
deleted file mode 100755
index 64f2a45b1..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.90/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_090_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
- <item>
- <title>Item Title</title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/atom/0.3/title.php
deleted file mode 100755
index 39965f00b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/atom/0.3/title.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Netscape_Atom_03_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:title>Item Title</a:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/atom/1.0/title.php
deleted file mode 100755
index 838949ca4..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/atom/1.0/title.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Netscape_Atom_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:title>Item Title</a:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/dc/1.0/title.php
deleted file mode 100755
index 672bb57ed..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/dc/1.0/title.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Netscape_DC_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:title>Item Title</dc:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/dc/1.1/title.php
deleted file mode 100755
index dca7ed182..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/dc/1.1/title.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Netscape_DC_11_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:title>Item Title</dc:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/title.php
deleted file mode 100755
index 5b07bb81f..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-netscape/title.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Netscape_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
- <channel>
- <item>
- <title>Item Title</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/atom/0.3/title.php
deleted file mode 100755
index 30ebf1a28..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/atom/0.3/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Userland_Atom_03_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:title>Item Title</a:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/atom/1.0/title.php
deleted file mode 100755
index 610cf123a..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/atom/1.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Userland_Atom_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:title>Item Title</a:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/dc/1.0/title.php
deleted file mode 100755
index 4697173a8..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/dc/1.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Userland_DC_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:title>Item Title</dc:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/dc/1.1/title.php
deleted file mode 100755
index 33e76fa89..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/dc/1.1/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Userland_DC_11_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:title>Item Title</dc:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/title.php
deleted file mode 100755
index 384144ce5..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.91-userland/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_091_Userland_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.91">
- <channel>
- <item>
- <title>Item Title</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/atom/0.3/title.php
deleted file mode 100755
index 1f3850e49..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/atom/0.3/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_092_Atom_03_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:title>Item Title</a:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/atom/1.0/title.php
deleted file mode 100755
index 1aa2fad6d..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/atom/1.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_092_Atom_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:title>Item Title</a:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/dc/1.0/title.php
deleted file mode 100755
index b2446210e..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/dc/1.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_092_DC_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:title>Item Title</dc:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/dc/1.1/title.php
deleted file mode 100755
index 7e8b18c7b..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/dc/1.1/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_092_DC_11_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:title>Item Title</dc:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/title.php
deleted file mode 100755
index c6d5ce811..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/0.92/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_092_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="0.92">
- <channel>
- <item>
- <title>Item Title</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/atom/0.3/title.php
deleted file mode 100755
index f23da2034..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/atom/0.3/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_10_Atom_03_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://purl.org/atom/ns#">
- <item>
- <a:title>Item Title</a:title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/atom/1.0/title.php
deleted file mode 100755
index 98e889811..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/atom/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_10_Atom_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:a="http://www.w3.org/2005/Atom">
- <item>
- <a:title>Item Title</a:title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/dc/1.0/title.php
deleted file mode 100755
index b2b0c3b23..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/dc/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_10_DC_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <item>
- <dc:title>Item Title</dc:title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/dc/1.1/title.php
deleted file mode 100755
index 4ebaa9966..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/dc/1.1/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_10_DC_11_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <item>
- <dc:title>Item Title</dc:title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/title.php
deleted file mode 100755
index 4e20cbfcf..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/1.0/title.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
- <item>
- <title>Item Title</title>
- </item>
-</rdf:RDF>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/atom/0.3/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/atom/0.3/title.php
deleted file mode 100755
index 8060ccbce..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/atom/0.3/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_20_Atom_03_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://purl.org/atom/ns#">
- <channel>
- <item>
- <a:title>Item Title</a:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/atom/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/atom/1.0/title.php
deleted file mode 100755
index 162d93159..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/atom/1.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_20_Atom_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:a="http://www.w3.org/2005/Atom">
- <channel>
- <item>
- <a:title>Item Title</a:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/dc/1.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/dc/1.0/title.php
deleted file mode 100755
index f2a9bea94..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/dc/1.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_20_DC_10_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.0/">
- <channel>
- <item>
- <dc:title>Item Title</dc:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/dc/1.1/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/dc/1.1/title.php
deleted file mode 100755
index c4c920f74..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/dc/1.1/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_20_DC_11_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <channel>
- <item>
- <dc:title>Item Title</dc:title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/title.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/title.php
deleted file mode 100755
index 5a1c396a9..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/rss/2.0/title.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_RSS_20_Title extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<rss version="2.0">
- <channel>
- <item>
- <title>Item Title</title>
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'Item Title';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/xmlbase/1.php b/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/xmlbase/1.php
deleted file mode 100755
index f84b827ae..000000000
--- a/3rdparty/simplepie/tests/oldtests/first_item_title/SPtests/xmlbase/1.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class SimplePie_First_Item_Title_Test_Atom_10_Title_xmlbase_1 extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<feed xmlns="http://www.w3.org/2005/Atom">
- <entry>
- <title type="xhtml" xml:base="http://example.com/"><div xmlns="http://www.w3.org/1999/xhtml"><p xml:base="/test/"><a href="bleh">Link</a></p></div></title>
- </entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = '<p><a href="http://example.com/bleh">Link</a></p>';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/functions.php b/3rdparty/simplepie/tests/oldtests/functions.php
deleted file mode 100755
index 0a3f30351..000000000
--- a/3rdparty/simplepie/tests/oldtests/functions.php
+++ /dev/null
@@ -1,369 +0,0 @@
-<?php
-
-class SimplePie_Unit_Test2_Group extends Unit_Test2_Group {}
-
-class SimplePie_Unit_Test2 extends Unit_Test2 {}
-
-class SimplePie_Feed_Test extends SimplePie_Unit_Test2
-{
- function feed()
- {
- $feed = new SimplePie();
- $feed->set_raw_data($this->data);
- $feed->enable_cache(false);
- $feed->init();
- return $feed;
- }
-}
-
-class SimplePie_Feed_Author_Test extends SimplePie_Feed_Test
-{
- function author()
- {
- $feed = $this->feed();
- if ($author = $item->get_author())
- {
- return $author;
- }
- else
- {
- return false;
- }
- }
-}
-
-class SimplePie_Feed_Category_Test extends SimplePie_Feed_Test
-{
- function category()
- {
- $feed = $this->feed();
- if ($category = $feed->get_category())
- {
- return $category;
- }
- else
- {
- return false;
- }
- }
-}
-
-class SimplePie_First_Item_Test extends SimplePie_Feed_Test
-{
- function first_item()
- {
- $feed = $this->feed();
- if ($item = $feed->get_item(0))
- {
- return $item;
- }
- else
- {
- return false;
- }
- }
-}
-
-class SimplePie_First_Item_Author_Test extends SimplePie_First_Item_Test
-{
- function author()
- {
- if ($item = $this->first_item())
- {
- if ($author = $item->get_author())
- {
- return $author;
- }
- }
- return false;
- }
-}
-
-class SimplePie_First_Item_Category_Test extends SimplePie_First_Item_Test
-{
- function category()
- {
- if ($item = $this->first_item())
- {
- if ($category = $item->get_category())
- {
- return $category;
- }
- }
- return false;
- }
-}
-
-class SimplePie_First_Item_Contributor_Test extends SimplePie_First_Item_Test
-{
- function contributor()
- {
- if ($item = $this->first_item())
- {
- if ($contributor = $item->get_contributor())
- {
- return $contributor;
- }
- }
- return false;
- }
-}
-
-class SimplePie_Absolutize_Test extends SimplePie_Unit_Test2
-{
- function test()
- {
- $this->result = SimplePie_Misc::absolutize_url($this->data['relative'], $this->data['base']);
- }
-}
-
-class SimplePie_Date_Test extends SimplePie_Unit_Test2
-{
- function test()
- {
- $this->result = SimplePie_Misc::parse_date($this->data);
- }
-}
-
-class SimplePie_Feed_Category_Label_Test extends SimplePie_Feed_Category_Test
-{
- function test()
- {
- if ($category = $this->category())
- {
- $this->result = $category->get_label();
- }
- }
-}
-
-class SimplePie_Feed_Copyright_Test extends SimplePie_Feed_Test
-{
- function test()
- {
- $feed = $this->feed();
- $this->result = $feed->get_copyright();
- }
-}
-
-class SimplePie_Feed_Description_Test extends SimplePie_Feed_Test
-{
- function test()
- {
- $feed = $this->feed();
- $this->result = $feed->get_description();
- }
-}
-
-class SimplePie_Feed_Image_Height_Test extends SimplePie_Feed_Test
-{
- function test()
- {
- $feed = $this->feed();
- $this->result = $feed->get_image_height();
- }
-}
-
-class SimplePie_Feed_Image_Link_Test extends SimplePie_Feed_Test
-{
- function test()
- {
- $feed = $this->feed();
- $this->result = $feed->get_image_link();
- }
-}
-
-class SimplePie_Feed_Image_Title_Test extends SimplePie_Feed_Test
-{
- function test()
- {
- $feed = $this->feed();
- $this->result = $feed->get_image_title();
- }
-}
-
-class SimplePie_Feed_Image_URL_Test extends SimplePie_Feed_Test
-{
- function test()
- {
- $feed = $this->feed();
- $this->result = $feed->get_image_url();
- }
-}
-
-class SimplePie_Feed_Image_Width_Test extends SimplePie_Feed_Test
-{
- function test()
- {
- $feed = $this->feed();
- $this->result = $feed->get_image_width();
- }
-}
-
-class SimplePie_Feed_Language_Test extends SimplePie_Feed_Test
-{
- function test()
- {
- $feed = $this->feed();
- $this->result = $feed->get_language();
- }
-}
-
-class SimplePie_Feed_Link_Test extends SimplePie_Feed_Test
-{
- function test()
- {
- $feed = $this->feed();
- $this->result = $feed->get_link();
- }
-}
-
-class SimplePie_Feed_Title_Test extends SimplePie_Feed_Test
-{
- function test()
- {
- $feed = $this->feed();
- $this->result = $feed->get_title();
- }
-}
-
-class SimplePie_First_Item_Author_Name_Test extends SimplePie_First_Item_Author_Test
-{
- function test()
- {
- if ($author = $this->author())
- {
- $this->result = $author->get_name();
- }
- }
-}
-
-class SimplePie_First_Item_Category_Label_Test extends SimplePie_First_Item_Category_Test
-{
- function test()
- {
- if ($category = $this->category())
- {
- $this->result = $category->get_label();
- }
- }
-}
-
-class SimplePie_First_Item_Content_Test extends SimplePie_First_Item_Test
-{
- function test()
- {
- if ($item = $this->first_item())
- {
- $this->result = $item->get_content();
- }
- }
-}
-
-class SimplePie_First_Item_Contributor_Name_Test extends SimplePie_First_Item_Contributor_Test
-{
- function test()
- {
- if ($contributor = $this->contributor())
- {
- $this->result = $contributor->get_name();
- }
- }
-}
-
-class SimplePie_First_Item_Date_Test extends SimplePie_First_Item_Test
-{
- function test()
- {
- if ($item = $this->first_item())
- {
- $this->result = $item->get_date('U');
- }
- }
-}
-
-class SimplePie_First_Item_Description_Test extends SimplePie_First_Item_Test
-{
- function test()
- {
- if ($item = $this->first_item())
- {
- $this->result = $item->get_description();
- }
- }
-}
-
-class SimplePie_First_Item_ID_Test extends SimplePie_First_Item_Test
-{
- function test()
- {
- if ($item = $this->first_item())
- {
- $this->result = $item->get_id();
- }
- }
-}
-
-class SimplePie_First_Item_Latitude_Test extends SimplePie_First_Item_Test
-{
- function test()
- {
- if ($item = $this->first_item())
- {
- $this->result = $item->get_latitude();
- }
- }
-}
-
-class SimplePie_First_Item_Longitude_Test extends SimplePie_First_Item_Test
-{
- function test()
- {
- if ($item = $this->first_item())
- {
- $this->result = $item->get_longitude();
- }
- }
-}
-
-class SimplePie_First_Item_Permalink_Test extends SimplePie_First_Item_Test
-{
- function test()
- {
- if ($item = $this->first_item())
- {
- $this->result = $item->get_permalink();
- }
- }
-}
-
-class SimplePie_First_Item_Title_Test extends SimplePie_First_Item_Test
-{
- function test()
- {
- if ($item = $this->first_item())
- {
- $this->result = $item->get_title();
- }
- }
-}
-
-class SimplePie_iTunesRSS_Channel_Block_Test extends SimplePie_First_Item_Test
-{
- function test()
- {
- if ($item = $this->first_item())
- {
- if ($enclosure = $item->get_enclosure())
- {
- if ($restriction = $enclosure->get_restriction())
- {
- $this->result = $restriction->get_relationship();
- return;
- }
- }
- }
- $this->result = false;
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block.php b/3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block.php
deleted file mode 100755
index c5ecd4d13..000000000
--- a/3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_iTunesRSS_Channel_Block_Test_RSS_20 extends SimplePie_iTunesRSS_Channel_Block_Test
-{
- function data()
- {
- $this->data =
-'<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd">
- <channel>
- <itunes:block>yes</itunes:block>
- <item>
- <enclosure url="http://test.com/test.mp3" />
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'deny';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block_default.php b/3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block_default.php
deleted file mode 100755
index 0d840202b..000000000
--- a/3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block_default.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-class SimplePie_iTunesRSS_Channel_Block_Default_Test_RSS_20 extends SimplePie_iTunesRSS_Channel_Block_Test
-{
- function data()
- {
- $this->data =
-'<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd">
- <channel>
- <item>
- <enclosure url="http://test.com/test.mp3" />
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'allow';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block_reverse.php b/3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block_reverse.php
deleted file mode 100755
index 86d84e72a..000000000
--- a/3rdparty/simplepie/tests/oldtests/itunes_rss/SPtests/rss/2.0/itunes_channel_block_reverse.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SimplePie_iTunesRSS_Channel_Block_Reverse_Test_RSS_20 extends SimplePie_iTunesRSS_Channel_Block_Test
-{
- function data()
- {
- $this->data =
-'<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd">
- <channel>
- <itunes:block>no</itunes:block>
- <item>
- <enclosure url="http://test.com/test.mp3" />
- </item>
- </channel>
-</rss>';
- }
-
- function expected()
- {
- $this->expected = 'allow';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/cdata.php b/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/cdata.php
deleted file mode 100755
index 085a3fa94..000000000
--- a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/cdata.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-class who_knows_a_title_from_a_hole_in_the_ground_html_cdata extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
-<id>http://atomtests.philringnalda.com/tests/item/title/html-cdata.atom</id>
-<title>Atom item title html cdata</title>
-<updated>2005-12-18T00:13:00Z</updated>
-<author>
- <name>Phil Ringnalda</name>
- <uri>http://weblog.philringnalda.com/</uri>
-</author>
-<link rel="self" href="http://atomtests.philringnalda.com/tests/item/title/html-cdata.atom"/>
-<entry>
- <id>http://atomtests.philringnalda.com/tests/item/title/html-cdata.atom/1</id>
- <title type="html"><![CDATA[&lt;title>]]></title>
- <updated>2005-12-18T00:13:00Z</updated>
- <summary>An item with a type="html" title consisting of a less-than
-character, the word \'title\' and a greater-than character, where
-the character entity reference for the less-than is escaped by being
-in a CDATA section.</summary>
- <link href="http://atomtests.philringnalda.com/alt/title-title.html"/>
- <category term="item title"/>
-</entry>
-</feed>';
- }
-
- /**
- * @todo Change this back to the non-entity form
- */
- function expected()
- {
- // This is really just nitpicking, but this should be fixed eventually.
- //$this->expected = '&lt;title>';
- $this->expected = '&lt;title&gt;';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/entity.php b/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/entity.php
deleted file mode 100755
index d7d38c3ce..000000000
--- a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/entity.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-class who_knows_a_title_from_a_hole_in_the_ground_html_entity extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
-<id>http://atomtests.philringnalda.com/tests/item/title/html-entity.atom</id>
-<title>Atom item title html entity</title>
-<updated>2005-12-18T00:13:00Z</updated>
-<author>
- <name>Phil Ringnalda</name>
- <uri>http://weblog.philringnalda.com/</uri>
-</author>
-<link rel="self" href="http://atomtests.philringnalda.com/tests/item/title/html-entity.atom"/>
-<entry>
- <id>http://atomtests.philringnalda.com/tests/item/title/html-entity.atom/1</id>
- <title type="html">&amp;lt;title></title>
- <updated>2005-12-18T00:13:00Z</updated>
- <summary>An item with a type="html" title consisting of a less-than
-character, the word \'title\' and a greater-than character, where the
-character entity reference for the less-than character is escaped by
-replacing the ampersand with a character entity reference.</summary>
- <link href="http://atomtests.philringnalda.com/alt/title-title.html"/>
- <category term="item title"/>
-</entry>
-</feed>';
- }
-
- /**
- * @todo Change this back to the non-entity form
- */
- function expected()
- {
- // This is really just nitpicking, but this should be fixed eventually.
- //$this->expected = '&lt;title>';
- $this->expected = '&lt;title&gt;';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/ncr.php b/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/ncr.php
deleted file mode 100755
index 43ae7ca00..000000000
--- a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/html/ncr.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-class who_knows_a_title_from_a_hole_in_the_ground_html_ncr extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
-<id>http://atomtests.philringnalda.com/tests/item/title/html-ncr.atom</id>
-<title>Atom item title html NCR</title>
-<updated>2005-12-18T00:13:00Z</updated>
-<author>
- <name>Phil Ringnalda</name>
- <uri>http://weblog.philringnalda.com/</uri>
-</author>
-<link rel="self" href="http://atomtests.philringnalda.com/tests/item/title/html-ncr.atom"/>
-<entry>
- <id>http://atomtests.philringnalda.com/tests/item/title/html-ncr.atom/1</id>
- <title type="html">&#38;lt;title></title>
- <updated>2005-12-18T00:13:00Z</updated>
- <summary>An item with a type="html" title consisting of a less-than
-character, the word \'title\' and a greater-than character, where
-the HTML\'s character entity reference is escaped by replacing the
-ampersand with a numeric character reference.</summary>
- <link href="http://atomtests.philringnalda.com/alt/title-title.html"/>
- <category term="item title"/>
-</entry>
-</feed>';
- }
-
- /**
- * @todo Change this back to the non-entity form
- */
- function expected()
- {
- // This is really just nitpicking, but this should be fixed eventually.
- //$this->expected = '&lt;title>';
- $this->expected = '&lt;title&gt;';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/cdata.php b/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/cdata.php
deleted file mode 100755
index bc34aae06..000000000
--- a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/cdata.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-class who_knows_a_title_from_a_hole_in_the_ground_text_cdata extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
-<id>http://atomtests.philringnalda.com/tests/item/title/text-cdata.atom</id>
-<title>Atom item title text in CDATA</title>
-<updated>2005-12-18T00:13:00Z</updated>
-<author>
- <name>Phil Ringnalda</name>
- <uri>http://weblog.philringnalda.com/</uri>
-</author>
-<link rel="self" href="http://atomtests.philringnalda.com/tests/item/title/text-cdata.atom"/>
-<entry>
-
-<id>http://atomtests.philringnalda.com/tests/item/title/text-cdata.atom/1</id>
- <title type="text"><![CDATA[<title>]]></title>
- <updated>2005-12-18T00:13:00Z</updated>
- <summary>An item with a type="text" title consisting of a less-than
-character, the word \'title\' and a greater-than character, where
-the less-than is escaped by being in a CDATA section.</summary>
- <link href="http://atomtests.philringnalda.com/alt/title-title.html"/>
- <category term="item title"/>
-</entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = '&lt;title&gt;';
- }
-}
-
-?>
diff --git a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/entity.php b/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/entity.php
deleted file mode 100755
index c332a9315..000000000
--- a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/entity.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-class who_knows_a_title_from_a_hole_in_the_ground_text_entity extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
-<id>http://atomtests.philringnalda.com/tests/item/title/text-entity.atom</id>
-<title>Atom item title text entity</title>
-<updated>2005-12-18T00:13:00Z</updated>
-<author>
- <name>Phil Ringnalda</name>
- <uri>http://weblog.philringnalda.com/</uri>
-</author>
-<link rel="self" href="http://atomtests.philringnalda.com/tests/item/title/text-entity.atom"/>
-<entry>
- <id>http://atomtests.philringnalda.com/tests/item/title/text-entity.atom/1</id>
- <title type="text">&lt;title></title>
- <updated>2005-12-18T00:13:00Z</updated>
- <summary>An item with a type="text" title consisting of a less-than
-character, the word \'title\' and a greater-than character, where the
-less-than is escaped with its character entity reference.</summary>
- <link href="http://atomtests.philringnalda.com/alt/title-title.html"/>
- <category term="item title"/>
-</entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = '&lt;title&gt;';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/ncr.php b/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/ncr.php
deleted file mode 100755
index 21cb97c7a..000000000
--- a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/text/ncr.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-class who_knows_a_title_from_a_hole_in_the_ground_text_ncr extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
-<id>http://atomtests.philringnalda.com/tests/item/title/text-ncr.atom</id>
-<title>Atom item title text NCR</title>
-<updated>2005-12-18T00:13:00Z</updated>
-<author>
- <name>Phil Ringnalda</name>
- <uri>http://weblog.philringnalda.com/</uri>
-</author>
-<link rel="self" href="http://atomtests.philringnalda.com/tests/item/title/text-ncr.atom"/>
-<entry>
- <id>http://atomtests.philringnalda.com/tests/item/title/text-ncr.atom/1</id>
- <title type="text">&#60;title></title>
- <updated>2005-12-18T00:13:00Z</updated>
- <summary>An item with a type="text" title consisting of a less-than
-character, the word \'title\' and a greater-than character, where the
-less-than character is escaped with a numeric character reference.</summary>
- <link href="http://atomtests.philringnalda.com/alt/title-title.html"/>
- <category term="item title"/>
-</entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = '&lt;title&gt;';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/xhtml/entity.php b/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/xhtml/entity.php
deleted file mode 100755
index 3053705aa..000000000
--- a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/xhtml/entity.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-class who_knows_a_title_from_a_hole_in_the_ground_xhtml_entity extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
-<id>http://atomtests.philringnalda.com/tests/item/title/xhtml-entity.atom</id>
-<title>Atom item title xhtml entity</title>
-<updated>2005-12-18T00:13:00Z</updated>
-<author>
- <name>Phil Ringnalda</name>
- <uri>http://weblog.philringnalda.com/</uri>
-</author>
-<link rel="self" href="http://atomtests.philringnalda.com/tests/item/title/xhtml-entity.atom"/>
-<entry>
- <id>http://atomtests.philringnalda.com/tests/item/title/xhtml-entity.atom/1</id>
- <title type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">&lt;title></div></title>
- <updated>2005-12-18T00:13:00Z</updated>
- <summary>An item with a type="xhtml" title consisting of a less-than
-character, the word \'title\' and a greater-than character, where the
-less-than character is escaped with its character entity reference.</summary>
- <link href="http://atomtests.philringnalda.com/alt/title-title.html"/>
- <category term="item title"/>
-</entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = '&lt;title&gt;';
- }
-}
-
-?> \ No newline at end of file
diff --git a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/xhtml/ncr.php b/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/xhtml/ncr.php
deleted file mode 100755
index 450e7b3a7..000000000
--- a/3rdparty/simplepie/tests/oldtests/who_knows_a_title_from_a_hole_in_the_ground/xhtml/ncr.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-class who_knows_a_title_from_a_hole_in_the_ground_xhtml_ncr extends SimplePie_First_Item_Title_Test
-{
- function data()
- {
- $this->data =
-'<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
-<id>http://atomtests.philringnalda.com/tests/item/title/xhtml-ncr.atom</id>
-<title>Atom item title xhtml ncr</title>
-<updated>2005-12-18T00:13:00Z</updated>
-<author>
- <name>Phil Ringnalda</name>
- <uri>http://weblog.philringnalda.com/</uri>
-</author>
-<link rel="self" href="http://atomtests.philringnalda.com/tests/item/title/xhtml-ncr.atom"/>
-<entry>
- <id>http://atomtests.philringnalda.com/tests/item/title/xhtml-ncr.atom/1</id>
- <title type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">&#60;title></div></title>
- <updated>2005-12-18T00:13:00Z</updated>
- <summary>An item with a type="xhtml" title consisting of a less-than
-character, the word \'title\' and a greater-than character, where
-the less-than character is escaped with its numeric character reference.</summary>
- <link href="http://atomtests.philringnalda.com/alt/title-title.html"/>
- <category term="item title"/>
-</entry>
-</feed>';
- }
-
- function expected()
- {
- $this->expected = '&lt;title&gt;';
- }
-}
-
-?> \ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6fa8c3cbd..ce5d36b3f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,5 @@
owncloud-news (4.001)
-* **Enhancement**: Use cacheDuration instead of simplePieCacheDuration in config.ini
+* **Enhancement**: Get rid of cacheCuration setting and add maxRedirects setting in config.ini
owncloud-news (3.406)
* **Enhancement**: Make config.ini editable in the admin interface
diff --git a/README.md b/README.md
index 3bbbae61d..1e961c51c 100644
--- a/README.md
+++ b/README.md
@@ -166,7 +166,7 @@ The configuration is in **INI** format and looks like this:
```ini
autoPurgeMinimumInterval = 60
autoPurgeCount = 200
-cacheDuration = 1800
+maxRedirects = 10
feedFetcherTimeout = 60
useCronUpdates = true
```
@@ -174,7 +174,7 @@ useCronUpdates = true
* **autoPurgeMinimumInterval**: Minimum amount of seconds after deleted feeds and folders are removed from the database. Values below 60 seconds are ignored
* **autoPurgeCount**: Defines the minimum amount of articles that can be unread per feed before they get deleted
-* **simplePieCacheDuration**: Amount of seconds to cache feeds
+* **maxRedirects**: How many redirects the updater should follow
* **feedFetcherTimeout**: Maximum number of seconds to wait for an RSS or Atom feed to load. If a feed takes longer than that number of seconds to update, the update will be aborted
* **useCronUpdates**: To use a custom update/cron script you need to disable the cronjob which is run by ownCloud by default by setting this to false
diff --git a/appinfo/application.php b/appinfo/application.php
index bef11dd44..0faceb5be 100644
--- a/appinfo/application.php
+++ b/appinfo/application.php
@@ -17,7 +17,8 @@ require_once __DIR__ . '/autoload.php';
use \PicoFeed\Reader as PicoFeedReader;
use \PicoFeed\Config as PicoFeedConfig;
-use \PicoFeed\Favicon;
+use \PicoFeed\Client as PicoFeedClient;
+use \PicoFeed\Favicon as PicoFeedFavicon;
use \OC\Files\View;
use \OCP\AppFramework\App;
@@ -49,7 +50,7 @@ use \OCA\News\Db\MapperFactory;
use \OCA\News\Utility\OPMLExporter;
use \OCA\News\Utility\Updater;
-use \OCA\News\Utility\SimplePieAPIFactory;
+use \OCA\News\Utility\PicoFeedClientFactory;
use \OCA\News\Utility\FaviconFetcher;
use \OCA\News\Fetcher\Fetcher;
@@ -346,16 +347,6 @@ class Application extends App {
return $config;
});
- $container->registerService('simplePieCacheDirectory', function($c) {
- $directory = $c->query('CoreConfig')
- ->getSystemValue('datadirectory') . '/news/cache/simplepie';
-
- if(!is_dir($directory)) {
- mkdir($directory, 0770, true);
- }
- return $directory;
- });
-
$container->registerService('HTMLPurifier', function($c) {
$directory = $c->query('CoreConfig')
->getSystemValue('datadirectory') . '/news/cache/purifier';
@@ -390,9 +381,8 @@ class Application extends App {
$xpathEnhancerConfig = json_decode($xpathEnhancerConfig, true);
foreach($xpathEnhancerConfig as $feed => $config) {
$articleEnhancer = new XPathArticleEnhancer(
- $c->query('SimplePieAPIFactory'),
- $config,
- $c->query('Config')
+ $c->query('PicoFeedClientFactory'),
+ $config
);
$enhancer->registerEnhancer($feed, $articleEnhancer);
}
@@ -430,7 +420,7 @@ class Application extends App {
' (+https://owncloud.org/; 1 subscriber;)'
)
->setClientTimeout($config->getFeedFetcherTimeout())
- ->setMaxRedirections(10)
+ ->setMaxRedirections($config->getMaxRedirects())
->setContentFiltering(false);
// proxy settings
@@ -459,6 +449,15 @@ class Application extends App {
return $pico;
});
+ $container->registerService('PicoFeedReader', function($c) {
+ return new PicoFeedReader($c->query('PicoFeedConfig'));
+ });
+
+ $container->registerService('PicoFeedClientFactory', function($c) {
+ return new PicoFeedClientFactory($c->query('PicoFeedConfig'));
+ });
+
+
$container->registerService('Fetcher', function($c) {
$fetcher = new Fetcher();
@@ -470,12 +469,10 @@ class Application extends App {
});
$container->registerService('FeedFetcher', function($c) {
- return new FeedFetcher($c->query('SimplePieAPIFactory'),
+ return new FeedFetcher(
+ $c->query('PicoFeedReader'),
$c->query('FaviconFetcher'),
- $c->query('TimeFactory'),
- $c->query('simplePieCacheDirectory'),
- $c->query('Config'),
- $c->query('AppConfig')
+ $c->query('TimeFactory')
);
});
@@ -495,12 +492,9 @@ class Application extends App {
);
});
- $container->registerService('SimplePieAPIFactory', function() {
- return new SimplePieAPIFactory();
- });
$container->registerService('FaviconFetcher', function($c) {
- return new Favicon(
+ return new PicoFeedFavicon(
$c->query('PicoFeedConfig')
);
});
diff --git a/appinfo/autoload.php b/appinfo/autoload.php
index 81302425d..dbdc39ea3 100644
--- a/appinfo/autoload.php
+++ b/appinfo/autoload.php
@@ -20,7 +20,6 @@ require_once __DIR__ . '/../3rdparty/autoload.php';
// non composer libs
$thirdPartyLibs = [
- '\SimplePie' => 'simplepie/autoloader.php',
'\ZendXML\Security' => 'ZendXml/vendor/autoload.php',
];
diff --git a/articleenhancer/xpatharticleenhancer.php b/articleenhancer/xpatharticleenhancer.php
index 7dcb9a340..8e45636d2 100644
--- a/articleenhancer/xpatharticleenhancer.php
+++ b/articleenhancer/xpatharticleenhancer.php
@@ -17,36 +17,27 @@ use \DOMDocument;
use \DOMXpath;
use \ZendXml\Security;
+use \OCA\News\Utility\PicoFeedClientFactory;
use \OCA\News\Db\Item;
-use \OCA\News\Utility\SimplePieAPIFactory;
-use \OCA\News\Config\Config;
-
-
class XPathArticleEnhancer implements ArticleEnhancer {
-
- private $fileFactory;
private $maximumTimeout;
- private $config;
+ private $clientFactory;
private $regexXPathPair;
/**
- * @param \OCA\News\Utility\SimplePieAPIFactory $fileFactory
+ * @param \Utility\PicoFeedClientFactory $clientFactory
* @param array $regexXPathPair an associative array containing regex to
* match the url and the xpath that should be used for it to extract the
* page
- * @param \OCA\News\Config\Config $config
*/
- public function __construct(SimplePieAPIFactory $fileFactory,
- array $regexXPathPair,
- Config $config){
- $this->fileFactory = $fileFactory;
+ public function __construct(PicoFeedClientFactory $clientFactory,
+ array $regexXPathPair){
+ $this->clientFactory = $clientFactory;
$this->regexXPathPair = $regexXPathPair;
- $this->config = $config;
- $this->maximumTimeout = $config->getFeedFetcherTimeout();
}
/**
@@ -58,12 +49,7 @@ class XPathArticleEnhancer implements ArticleEnhancer {
foreach($this->regexXPathPair as $regex => $search) {
if(preg_match($regex, $item->getUrl())) {
- $file = $this->getFile($item->getUrl());
-
- // convert encoding by detecting charset from header
- $contentType = $file->headers['content-type'];
- $body = $file->body;
-
+ list($body, $contentType) = $this->getFile($item->getUrl());
if(preg_match('/(?<=charset=)[^;]*/', $contentType, $matches)) {
$encoding = $matches[0];
$body = mb_convert_encoding($body, 'HTML-ENTITIES',
@@ -103,9 +89,13 @@ class XPathArticleEnhancer implements ArticleEnhancer {
private function getFile($url) {
- return $this->fileFactory->getFile(
- $url, $this->maximumTimeout, 5, null, 'Mozilla/5.0 AppleWebKit'
- );
+ $client = $this->clientFactory->build();
+ $client->execute($url);
+ $client->setUserAgent('Mozilla/5.0 AppleWebKit');
+ return [
+ $client->getContent(),
+ $client->getEncoding()
+ ];
}
diff --git a/config/config.php b/config/config.php
index 73a930f97..8b11f0bd9 100644
--- a/config/config.php
+++ b/config/config.php
@@ -24,13 +24,9 @@ class Config {
// should still be kept for an
// undo actions
private $autoPurgeCount; // number of allowed unread articles per feed
- private $cacheDuration; // seconds
+ private $maxRedirects; // seconds
private $feedFetcherTimeout; // seconds
private $useCronUpdates; // turn off updates run by owncloud cronjob
- private $proxyHost;
- private $proxyPort;
- private $proxyUser;
- private $proxyPassword;
private $logger;
private $loggerParams;
@@ -39,7 +35,7 @@ class Config {
$this->fileSystem = $fileSystem;
$this->autoPurgeMinimumInterval = 60;
$this->autoPurgeCount = 200;
- $this->cacheDuration = 30*60;
+ $this->maxRedirects = 10;
$this->feedFetcherTimeout = 60;
$this->useCronUpdates = true;
$this->logger = $logger;
@@ -88,8 +84,8 @@ class Config {
}
- public function getCacheDuration() {
- return $this->cacheDuration;
+ public function getMaxRedirects() {
+ return $this->maxRedirects;
}
@@ -113,8 +109,8 @@ class Config {
}
- public function setCacheDuration($value) {
- $this->cacheDuration = $value;
+ public function setMaxRedirects($value) {
+ $this->maxRedirects = $value;
}
@@ -187,17 +183,12 @@ class Config {
$this->autoPurgeMinimumInterval . "\n" .
'autoPurgeCount = ' .
$this->autoPurgeCount . "\n" .
- 'cacheDuration = ' .
- $this->cacheDuration . "\n" .
+ 'maxRedirects = ' .
+ $this->maxRedirects . "\n" .
'feedFetcherTimeout = ' .
$this->feedFetcherTimeout . "\n" .
'useCronUpdates = ' .
- var_export($this->useCronUpdates, true) . "\n" .
-
- 'proxyHost = ' . $this->proxyHost . "\n" .
- 'proxyPort = ' . $this->proxyPort . "\n" .
- 'proxyUser = ' . $this->proxyUser . "\n" .
- 'proxyPassword = ' . $this->proxyPassword;
+ var_export($this->useCronUpdates, true);
;
$this->fileSystem->file_put_contents($configPath, $ini);
diff --git a/controller/admincontroller.php b/controller/admincontroller.php
index 39d75d9d2..e421c44e3 100644
--- a/controller/admincontroller.php
+++ b/controller/admincontroller.php
@@ -38,7 +38,7 @@ class AdminController extends Controller {
'autoPurgeMinimumInterval' =>
$this->config->getAutoPurgeMinimumInterval(),
'autoPurgeCount' => $this->config->getAutoPurgeCount(),
- 'cacheDuration' => $this->config->getCacheDuration(),
+ 'maxRedirects' => $this->config->getMaxRedirects(),
'feedFetcherTimeout' => $this->config->getFeedFetcherTimeout(),
'useCronUpdates' => $this->config->getUseCronUpdates(),
];
@@ -49,17 +49,17 @@ class AdminController extends Controller {
/**
* @param int $autoPurgeMinimumInterval
* @param int $autoPurgeCount
- * @param int $cacheDuration
+ * @param int $maxRedirects
* @param int $feedFetcherTimeout
* @param bool $useCronUpdates
* @return array with the updated values
*/
public function update($autoPurgeMinimumInterval, $autoPurgeCount,
- $cacheDuration, $feedFetcherTimeout,
+ $maxRedirects, $feedFetcherTimeout,
$useCronUpdates) {
$this->config->setAutoPurgeMinimumInterval($autoPurgeMinimumInterval);
$this->config->setAutoPurgeCount($autoPurgeCount);
- $this->config->setCacheDuration($cacheDuration);
+ $this->config->setMaxRedirects($maxRedirects);
$this->config->setFeedFetcherTimeout($feedFetcherTimeout);
$this->config->setUseCronUpdates($useCronUpdates);
$this->config->write($this->configPath);
@@ -68,7 +68,7 @@ class AdminController extends Controller {
'autoPurgeMinimumInterval' =>
$this->config->getAutoPurgeMinimumInterval(),
'autoPurgeCount' => $this->config->getAutoPurgeCount(),
- 'cacheDuration' => $this->config->getCacheDuration(),
+ 'maxRedirects' => $this->config->getMaxRedirects(),
'feedFetcherTimeout' => $this->config->getFeedFetcherTimeout(),
'useCronUpdates' => $this->config->getUseCronUpdates(),
];
diff --git a/fetcher/feedfetcher.php b/fetcher/feedfetcher.php
index 68036cc95..f13b6b653 100644
--- a/fetcher/feedfetcher.php
+++ b/fetcher/feedfetcher.php
@@ -14,44 +14,21 @@
namespace OCA\News\Fetcher;
use \PicoFeed\Favicon;
+use \PicoFeed\Reader;
use \OCA\News\Db\Item;
use \OCA\News\Db\Feed;
-use \OCA\News\Utility\FaviconFetcher;
-use \OCA\News\Utility\SimplePieAPIFactory;
-use \OCA\News\Config\Config;
-use \OCA\News\Config\AppConfig;
-
class FeedFetcher implements IFeedFetcher {
- private $cacheDirectory;
- private $cacheDuration;
private $faviconFetcher;
- private $simplePieFactory;
- private $fetchTimeout;
+ private $reader;
private $time;
- private $proxyHost;
- private $proxyPort;
- private $proxyAuth;
- private $appConfig;
-
- public function __construct(SimplePieAPIFactory $simplePieFactory,
- Favicon $faviconFetcher,
- $time,
- $cacheDirectory,
- Config $config,
- AppConfig $appConfig){
- $this->cacheDirectory = $cacheDirectory;
- $this->cacheDuration = $config->getCacheDuration();
- $this->fetchTimeout = $config->getFeedFetcherTimeout();
+
+ public function __construct(Reader $reader, Favicon $faviconFetcher, $time){
$this->faviconFetcher = $faviconFetcher;
- $this->simplePieFactory = $simplePieFactory;
+ $this->reader = $reader;
$this->time = $time;
- $this->proxyHost = $config->getProxyHost();
- $this->proxyPort = $config->getProxyPort();
- $this->proxyAuth = $config->getProxyAuth();
- $this->appConfig = $appConfig;
}
@@ -73,44 +50,34 @@ class FeedFetcher implements IFeedFetcher {
* element being the Feed and second element being an array of Items
*/
public function fetch($url, $getFavicon=true) {
- $simplePie = $this->simplePieFactory->getCore();
- $simplePie->set_feed_url($url);
- $simplePie->enable_cache(true);
- $simplePie->set_useragent(
- 'ownCloud News/' .
- $this->appConfig->getConfig('version') .
- ' (+https://owncloud.org/; 1 subscriber; ' .
- 'feed-url=' . $url . ')'
- );
- $simplePie->set_stupidly_fast(true); // disable simple pie sanitation
- // we use htmlpurifier
- $simplePie->set_timeout($this->fetchTimeout);
- $simplePie->set_cache_location($this->cacheDirectory);
- $simplePie->set_cache_duration($this->cacheDuration);
-
- if(trim($this->proxyHost) !== '') {
- $simplePie->set_proxyhost($this->proxyHost);
- $simplePie->set_proxyport($this->proxyPort);
- $simplePie->set_proxyuserpwd($this->proxyAuth);
- }
+ $resource = $this->reader->download($url);
+ $modified = $resource->getLastModified();
try {
- if (!$simplePie->init()) {
+ $parser = $this->reader->getParser();
+
+ // TBD: if ($resource->isModified()) { }
+ if (!$parser) {
+ throw new \Exception(
+ 'Could not find a valid feed at url ' . $url
+ );
+ }
+ $parsedFeed = $parser->execute();
+
+ if (!$parsedFeed) {
throw new \Exception(
- 'Could not initialize simple pie on feed with url ' . $url
+ 'Could not parse feed ' . $url
);
}
- // somehow $simplePie turns into a feed after init
$items = [];
- $permaLink = $simplePie->get_permalink();
- if ($feedItems = $simplePie->get_items()) {
- foreach($feedItems as $feedItem) {
- array_push($items, $this->buildItem($feedItem, $permaLink));
- }
+
+ $link = $parsedFeed->getUrl();
+ foreach($parsedFeed->getItems() as $item) {
+ $items[] = $this->buildItem($item, $link);
}
- $feed = $this->buildFeed($simplePie, $url, $getFavicon);
+ $feed = $this->buildFeed($parsedFeed, $url, $getFavicon, $modified);
return [$feed, $items];
@@ -135,52 +102,42 @@ class FeedFetcher implements IFeedFetcher {
}
- protected function buildItem($simplePieItem, $feedLink) {
+ protected function buildItem($parsedItem, $feedLink) {
$item = new Item();
$item->setStatus(0);
$item->setUnread();
- $url = $this->decodeTwice($simplePieItem->get_permalink());
+ $url = $this->decodeTwice($parsedItem->getUrl());
if (!$url) {
$url = $feedLink;
}
$item->setUrl($url);
// unescape content because angularjs helps against XSS
- $item->setTitle($this->decodeTwice($simplePieItem->get_title()));
- $guid = $simplePieItem->get_id();
+ $item->setTitle($this->decodeTwice($parsedItem->getTitle()));
+ $guid = $parsedItem->getId();
$item->setGuid($guid);
// purification is done in the service layer
- $item->setBody($simplePieItem->get_content());
+ $item->setBody($parsedItem->getContent());
// pubdate is not required. if not given use the current date
- $date = $simplePieItem->get_date('U');
- if(!$date) {
- $date = $this->time->getTime();
- }
+ $date = $parsedItem->getDate();
$item->setPubDate($date);
$item->setLastModified($this->time->getTime());
- $author = $simplePieItem->get_author();
- if ($author !== null) {
- $name = $this->decodeTwice($author->get_name());
- if ($name) {
- $item->setAuthor($name);
- } else {
- $item->setAuthor($this->decodeTwice($author->get_email()));
- }
- }
+ $author = $parsedItem->getAuthor();
+ $item->setAuthor($this->decodeTwice($author));
// TODO: make it work for video files also
- $enclosure = $simplePieItem->get_enclosure();
- if($enclosure !== null) {
- $enclosureType = $enclosure->get_type();
+ $enclosureUrl = $parsedItem->getEnclosureUrl();
+ if($enclosureUrl) {
+ $enclosureType = $parsedItem->getEnclosureType();
if(stripos($enclosureType, 'audio/') !== false ||
stripos($enclosureType, 'video/') !== false) {
$item->setEnclosureMime($enclosureType);
- $item->setEnclosureLink($enclosure->get_link());
+ $item->setEnclosureLink($enclosureUrl);
}
}
@@ -188,11 +145,11 @@ class FeedFetcher implements IFeedFetcher {
}
- protected function buildFeed($simplePieFeed, $url, $getFavicon) {
+ protected function buildFeed($parsedFeed, $url, $getFavicon, $modified) {
$feed = new Feed();
// unescape content because angularjs helps against XSS
- $title = strip_tags($this->decodeTwice($simplePieFeed->get_title()));
+ $title = strip_tags($this->decodeTwice($parsedFeed->getTitle()));
// if there is no title use the url
if(!$title) {
@@ -202,7 +159,7 @@ class FeedFetcher implements IFeedFetcher {
$feed->setTitle($title);
$feed->setUrl($url);
- $link = $simplePieFeed->get_permalink();
+ $link = $parsedFeed->getUrl();
if (!$link) {
$link = $url;
}
@@ -211,14 +168,7 @@ class FeedFetcher implements IFeedFetcher {
$feed->setAdded($this->time->getTime());
if ($getFavicon) {
- // use the favicon from the page first since most feeds use a weird
- // image
$favicon = $this->faviconFetcher->find($feed->getLink());
-
- if (!$favicon) {
- $favicon = $simplePieFeed->get_image_url();
- }
-
$feed->setFaviconLink($favicon);
}
diff --git a/js/admin/Admin.js b/js/admin/Admin.js
index 2506cf41a..83d25962a 100644
--- a/js/admin/Admin.js
+++ b/js/admin/Admin.js
@@ -21,8 +21,8 @@
$('#news input[name="news-auto-purge-minimum-interval"]');
var autoPurgeCountInput =
$('#news input[name="news-auto-purge-count"]');
- var cacheDurationInput =
- $('#news input[name="news-cache-duration"]');
+ var maxRedirectsInput =
+ $('#news input[name="news-max-redirects"]');
var feedFetcherTimeoutInput =
$('#news input[name="news-feed-fetcher-timeout"]');
var savedMessage = $('#news-saved-message');
@@ -42,7 +42,7 @@
var submit = function () {
var autoPurgeMinimumInterval = autoPurgeMinimumIntervalInput.val();
var autoPurgeCount = autoPurgeCountInput.val();
- var cacheDuration = cacheDurationInput.val();
+ var maxRedirects = maxRedirectsInput.val();
var feedFetcherTimeout = feedFetcherTimeoutInput.val();
var useCronUpdates = useCronUpdatesInput.is(':checked');
@@ -50,7 +50,7 @@
autoPurgeMinimumInterval:
parseInt(autoPurgeMinimumInterval, 10),
autoPurgeCount: parseInt(autoPurgeCount, 10),
- cacheDuration: parseInt(cacheDuration, 10),
+ maxRedirects: parseInt(maxRedirects, 10),
feedFetcherTimeout: parseInt(feedFetcherTimeout, 10),
useCronUpdates: useCronUpdates
};
@@ -68,7 +68,7 @@
autoPurgeMinimumIntervalInput
.val(data.autoPurgeMinimumInterval);
autoPurgeCountInput.val(data.autoPurgeCount);
- cacheDurationInput.val(data.cacheDuration);
+ maxRedirectsInput.val(data.maxRedirects);
feedFetcherTimeoutInput.val(data.feedFetcherTimeout);
useCronUpdatesInput.prop('checked', data.useCronUpdates);
});
diff --git a/templates/admin.php b/templates/admin.php
index 8786e892c..a73bd2f51 100644
--- a/templates/admin.php
+++ b/templates/admin.php
@@ -55,17 +55,19 @@ style('news', 'admin');
</div>
<div class="form-line">
<p>
- <label for="news-cache-duration">
- <?php p($l->t('Cache duration')); ?>
+ <label for="news-max-redirects">
+ <?php p($l->t('Maximum redirects')); ?>
</label>
</p>
<p>
<em>
- <?php p($l->t('How many seconds a feed should be cached')); ?>
+ <?php p($l->t(
+ 'How many redirects the feed fetcher should follow'
+ )); ?>
</em>
</p>
- <p><input type="text" name="news-cache-duration"
- value="<?php p($_['cacheDuration']); ?>"></p>
+ <p><input type="text" name="news-max-redirects"
+ value="<?php p($_['maxRedirects']); ?>"></p>
</div>
<div class="form-line">
<p>
diff --git a/tests/unit/articleenhancer/XPathArticleEnhancerTest.php b/tests/unit/articleenhancer/XPathArticleEnhancerTest.php
index 00c4e7cb0..33f0e75ab 100644
--- a/tests/unit/articleenhancer/XPathArticleEnhancerTest.php
+++ b/tests/unit/articleenhancer/XPathArticleEnhancerTest.php
@@ -19,78 +19,49 @@ use \OCA\News\Db\Item;
class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
private $testEnhancer;
- private $fileFactory;
- private $timeout;
- private $redirects;
- private $headers;
- private $userAgent;
- private $proxyHost;
- private $proxyPort;
- private $proxyAuth;
+ private $client;
+ private $clientFactory;
protected function setUp() {
$this->timeout = 30;
- $this->fileFactory = $this
- ->getMockBuilder('\OCA\News\Utility\SimplePieAPIFactory')
+ $this->clientFactory = $this
+ ->getMockBuilder('\OCA\News\Utility\PicoFeedClientFactory')
->disableOriginalConstructor()
->getMock();
- $this->proxyHost = 'test';
- $this->proxyPort = 3;
- $this->proxyAuth = 'hi';
- $this->config = $this->getMockBuilder(
- '\OCA\News\Config\Config')
+ $this->client = $this
+ ->getMockBuilder('\PicoFeed\Client')
->disableOriginalConstructor()
->getMock();
- $this->config->expects($this->any())
- ->method('getProxyHost')
- ->will($this->returnValue(''));
- $this->config->expects($this->any())
- ->method('getProxyAuth')
- ->will($this->returnValue($this->proxyAuth));
- $this->config->expects($this->any())
- ->method('getProxyPort')
- ->will($this->returnValue($this->proxyPort));
- $this->config->expects($this->any())
- ->method('getFeedFetcherTimeout')
- ->will($this->returnValue($this->timeout));
$this->testEnhancer = new XPathArticleEnhancer(
- $this->fileFactory,
+ $this->clientFactory,
[
'/explosm.net\/comics/' =>
'//*[@id=\'maincontent\']/div[2]/div/span',
'/explosm.net\/shorts/' => '//*[@id=\'maincontent\']/div/div',
'/explosm.net\/all/' => '//body/*',
'/themerepublic.net/' => '//*[@class=\'post hentry\']'
- ],
- $this->config
+ ]
);
- $this->redirects = 5;
- $this->headers = null;
$this->userAgent = 'Mozilla/5.0 AppleWebKit';
}
-
- public function testXPathUsesNoProxy() {
- $file = new \stdClass;
- $file->headers = ["content-type"=>"text/html; charset=utf-8"];
- $file->body = '';
- $item = new Item();
- $item->setUrl('https://www.explosm.net/comics/312');
- $item->setBody('Hello thar');
-
- $this->fileFactory->expects($this->once())
- ->method('getFile')
- ->with($this->equalTo($item->getUrl()),
- $this->equalTo($this->timeout),
- $this->equalTo($this->redirects),
- $this->equalTo($this->headers),
- $this->equalTo($this->userAgent),
- $this->equalTo(false))
- ->will($this->returnValue($file));
-
- $result = $this->testEnhancer->enhance($item);
- $this->assertEquals('Hello thar', $result->getBody());
+ private function setUpFile($body, $encoding, $url) {
+ $this->clientFactory->expects($this->once())
+ ->method('build')
+ ->will($this->returnValue($this->client));
+ $this->client->expects($this->once())
+ ->method('execute')
+ ->with($this->equalTo($url));
+ $this->client->expects($this->once())
+ ->method('setUserAgent')
+ ->with($this->equalTo($this->userAgent));
+ $this->client->expects($this->once())
+ ->method('getContent')
+ ->will($this->returnValue($body));
+ $this->client->expects($this->once())
+ ->method('getEncoding')
+ ->will($this->returnValue($encoding));
}
@@ -102,9 +73,8 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
public function testDoesModifiyArticlesThatMatch() {
- $file = new \stdClass;
- $file->headers = ["content-type"=>"text/html; charset=utf-8"];
- $file->body = '<html>
+ $encoding = 'utf-8';
+ $body = '<html>
<body>
<div id="maincontent">
<div>nooo</div>
@@ -116,14 +86,7 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
$item->setUrl('https://www.explosm.net/comics/312');
$item->setBody('Hello thar');
- $this->fileFactory->expects($this->once())
- ->method('getFile')
- ->with($this->equalTo($item->getUrl()),
- $this->equalTo($this->timeout),
- $this->equalTo($this->redirects),
- $this->equalTo($this->headers),
- $this->equalTo($this->userAgent))
- ->will($this->returnValue($file));
+ $this->setUpFile($body, $encoding, $item->getUrl());
$result = $this->testEnhancer->enhance($item);
$this->assertEquals('<div><span>hiho</span></div>', $result->getBody());
@@ -131,9 +94,8 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
public function testDoesModifiyAllArticlesThatMatch() {
- $file = new \stdClass;
- $file->headers = ["content-type"=>"text/html; charset=utf-8"];
- $file->body = '<html>
+ $encoding = 'utf-8';
+ $body = '<html>
<body>
<div id="maincontent">
<div>nooo<div>hiho</div></div>
@@ -145,14 +107,7 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
$item->setUrl('https://www.explosm.net/shorts/312');
$item->setBody('Hello thar');
- $this->fileFactory->expects($this->once())
- ->method('getFile')
- ->with($this->equalTo($item->getUrl()),
- $this->equalTo($this->timeout),
- $this->equalTo($this->redirects),
- $this->equalTo($this->headers),
- $this->equalTo($this->userAgent))
- ->will($this->returnValue($file));
+ $this->setUpFile($body, $encoding, $item->getUrl());
$result = $this->testEnhancer->enhance($item);
$this->assertEquals('<div><div>hiho</div><div>rawr</div></div>',
@@ -161,9 +116,8 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
public function testModificationHandlesEmptyResults() {
- $file = new \stdClass;
- $file->headers = ["content-type"=>"text/html; charset=utf-8"];
- $file->body = '<html>
+ $encoding = 'utf-8';
+ $body = '<html>
<body>
<div id="maincontent">
</div>
@@ -173,14 +127,7 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
$item->setUrl('https://www.explosm.net/comics/312');
$item->setBody('Hello thar');
- $this->fileFactory->expects($this->once())
- ->method('getFile')
- ->with($this->equalTo($item->getUrl()),
- $this->equalTo($this->timeout),
- $this->equalTo($this->redirects),
- $this->equalTo($this->headers),
- $this->equalTo($this->userAgent))
- ->will($this->returnValue($file));
+ $this->setUpFile($body, $encoding, $item->getUrl());
$result = $this->testEnhancer->enhance($item);
$this->assertEquals('Hello thar', $result->getBody());
@@ -188,21 +135,13 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
public function testModificationDoesNotBreakOnEmptyDom() {
- $file = new \stdClass;
- $file->headers = ["content-type"=>"text/html; charset=utf-8"];
- $file->body = '';
+ $encoding = 'utf-8';
+ $body = '';
$item = new Item();
$item->setUrl('https://www.explosm.net/comics/312');
$item->setBody('Hello thar');
- $this->fileFactory->expects($this->once())
- ->method('getFile')
- ->with($this->equalTo($item->getUrl()),
- $this->equalTo($this->timeout),
- $this->equalTo($this->redirects),
- $this->equalTo($this->headers),
- $this->equalTo($this->userAgent))
- ->will($this->returnValue($file));
+ $this->setUpFile($body, $encoding, $item->getUrl());
$result = $this->testEnhancer->enhance($item);
$this->assertEquals('Hello thar', $result->getBody());
@@ -210,9 +149,8 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
public function testModificationDoesNotBreakOnBrokenDom() {
- $file = new \stdClass;
- $file->headers = ["content-type"=>"text/html; charset=utf-8"];
- $file->body = '<html/><p>
+ $encoding = 'utf-8';
+ $body = '<html/><p>
<body>
<div id="maincontent">
</div>
@@ -222,14 +160,7 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
$item->setUrl('https://www.explosm.net/comics/312');
$item->setBody('Hello thar');
- $this->fileFactory->expects($this->once())
- ->method('getFile')
- ->with($this->equalTo($item->getUrl()),
- $this->equalTo($this->timeout),
- $this->equalTo($this->redirects),
- $this->equalTo($this->headers),
- $this->equalTo($this->userAgent))
- ->will($this->returnValue($file));
+ $this->setUpFile($body, $encoding, $item->getUrl());
$result = $this->testEnhancer->enhance($item);
$this->assertEquals('Hello thar', $result->getBody());
@@ -237,9 +168,8 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
public function testTransformRelativeUrls() {
- $file = new \stdClass;
- $file->headers = ["content-type"=>"text/html; charset=utf-8"];
- $file->body = '<html>
+ $encoding = 'utf-8';
+ $body = '<html>
<body>
<a href="../a/relative/url.html?a=1#b">link</a>
<a href="b/relative/url.html">link2</a>
@@ -250,14 +180,7 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
$item->setUrl('https://www.explosm.net/all/312');
$item->setBody('Hello thar');
- $this->fileFactory->expects($this->once())
- ->method('getFile')
- ->with($this->equalTo($item->getUrl()),
- $this->equalTo($this->timeout),
- $this->equalTo($this->redirects),
- $this->equalTo($this->headers),
- $this->equalTo($this->userAgent))
- ->will($this->returnValue($file));
+ $this->setUpFile($body, $encoding, $item->getUrl());
$result = $this->testEnhancer->enhance($item);
$this->assertEquals('<div>' .
@@ -272,9 +195,8 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
}
public function testTransformRelativeUrlSpecials() {
- $file = new \stdClass;
- $file->headers = ["content-type"=>"text/html; charset=utf-8"];
- $file->body = '<html>
+ $encoding = 'utf-8';
+ $body = '<html>
<body>
<img src="relative/url.png?a=1&b=2">
</body>
@@ -283,14 +205,7 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
$item->setUrl('https://username:secret@www.explosm.net/all/312');
$item->setBody('Hello thar');
- $this->fileFactory->expects($this->once())
- ->method('getFile')
- ->with($this->equalTo($item->getUrl()),
- $this->equalTo($this->timeout),
- $this->equalTo($this->redirects),
- $this->equalTo($this->headers),
- $this->equalTo($this->userAgent))
- ->will($this->returnValue($file));
+ $this->setUpFile($body, $encoding, $item->getUrl());
$result = $this->testEnhancer->enhance($item);
$this->assertEquals(
@@ -301,9 +216,8 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
}
public function testDontTransformAbsoluteUrlsAndMails() {
- $file = new \stdClass;
- $file->headers = ["content-type"=>"text/html; charset=utf-8"];
- $file->body = '<html>
+ $encoding = 'utf-8';
+ $body = '<html>
<body>
<img src="http://www.url.com/absolute/url.png">
<a href="mailto:test@testsite.com">mail</a>
@@ -313,14 +227,7 @@ class XPathArticleEnhancerTest extends \PHPUnit_Framework_TestCase {
$item->setUrl('https://www.explosm.net/all/312');
$item->setBody('Hello thar');
- $this->fileFactory->expects($this->once())
- ->method('getFile')
- ->with($this->equalTo($item->getUrl()),
- $this->equalTo($this->timeout),
- $this->equalTo($this->redirects),
- $this->equalTo($this->headers),
- $this->equalTo($this->userAgent))
- ->will($this->returnValue($file));
+ $this->setUpFile($body, $encoding, $item->getUrl());
$result = $this->testEnhancer->enhance($item);
$this->assertEquals(
diff --git a/tests/unit/config/ConfigTest.php b/tests/unit/config/ConfigTest.php
index 9aaac57c5..a2739de59 100644
--- a/tests/unit/config/ConfigTest.php
+++ b/tests/unit/config/ConfigTest.php
@@ -42,7 +42,7 @@ class ConfigTest extends \PHPUnit_Framework_TestCase {
public function testDefaults() {
$this->assertEquals(60, $this->config->getAutoPurgeMinimumInterval());
$this->assertEquals(200, $this->config->getAutoPurgeCount());
- $this->assertEquals(30*60, $this->config->getCacheDuration());
+ $this->assertEquals(10, $this->config->getMaxRedirects());
$this->assertEquals(60, $this->config->getFeedFetcherTimeout());
$this->assertEquals(true, $this->config->getUseCronUpdates());
$this->assertEquals(8080, $this->config->getProxyPort());
@@ -128,13 +128,9 @@ class ConfigTest extends \PHPUnit_Framework_TestCase {
public function testWrite () {
$json = 'autoPurgeMinimumInterval = 60' . "\n" .
'autoPurgeCount = 3' . "\n" .
- 'cacheDuration = 1800' . "\n" .
+ 'maxRedirects = 10' . "\n" .
'feedFetcherTimeout = 60' . "\n" .
- 'useCronUpdates = true' . "\n" .
- 'proxyHost = yo man' . "\n" .
- 'proxyPort = 12' . "\n" .
- 'proxyUser = this is a test' . "\n".
- 'proxyPassword = se';
+ 'useCronUpdates = true';
$this->config->setAutoPurgeCount(3);
$this->config->setProxyHost('yo man');
$this->config->setProxyPort(12);
@@ -165,13 +161,9 @@ class ConfigTest extends \PHPUnit_Framework_TestCase {
$json = 'autoPurgeMinimumInterval = 60' . "\n" .
'autoPurgeCount = 200' . "\n" .
- 'cacheDuration = 1800' . "\n" .
+ 'maxRedirects = 10' . "\n" .
'feedFetcherTimeout = 60' . "\n" .
- 'useCronUpdates = false' . "\n" .
- 'proxyHost = ' . "\n" .
- 'proxyPort = 8080' . "\n" .
- 'proxyUser = ' . "\n" .
- 'proxyPassword = ';
+ 'useCronUpdates = false';
$this->fileSystem->expects($this->once())
->method('file_put_contents')
@@ -205,11 +197,11 @@ class ConfigTest extends \PHPUnit_Framework_TestCase {
$this->assertSame(61, $interval);
}
- public function testCacheDuration() {
- $this->config->setCacheDuration(21);
- $duration = $this->config->getCacheDuration();
+ public function testMaxRedirects() {
+ $this->config->setMaxRedirects(21);
+ $redirects = $this->config->getMaxRedirects();
- $this->assertSame(21, $duration);
+ $this->assertSame(21, $redirects);
}
public function testFeedFetcherTimeout() {
diff --git a/tests/unit/controller/AdminControllerTest.php b/tests/unit/controller/AdminControllerTest.php
index b468823da..4a9bf7764 100644
--- a/tests/unit/controller/AdminControllerTest.php
+++ b/tests/unit/controller/AdminControllerTest.php
@@ -45,7 +45,7 @@ class AdminControllerTest extends \PHPUnit_Framework_TestCase {
$expected = [
'autoPurgeMinimumInterval' => 1,
'autoPurgeCount' => 2,
- 'cacheDuration' => 3,
+ 'maxRedirects' => 3,
'feedFetcherTimeout' => 4,
'useCronUpdates' => 5
];
@@ -56,8 +56,8 @@ class AdminControllerTest extends \PHPUnit_Framework_TestCase {
->method('getAutoPurgeCount')
->will($this->returnValue($expected['autoPurgeCount']));
$this->config->expects($this->once())
- ->method('getCacheDuration')
- ->will($this->returnValue($expected['cacheDuration']));
+ ->method('getMaxRedirects')
+ ->will($this->returnValue($expected['maxRedirects']));
$this->config->expects($this->once())
->method('getFeedFetcherTimeout')
->will($this->returnValue($expected['feedFetcherTimeout']));
@@ -80,7 +80,7 @@ class AdminControllerTest extends \PHPUnit_Framework_TestCase {
$expected = [
'autoPurgeMinimumInterval' => 1,
'autoPurgeCount' => 2,
- 'cacheDuration' => 3,
+ 'maxRedirects' => 3,
'feedFetcherTimeout' => 4,
'useCronUpdates' => 5
];
@@ -92,8 +92,8 @@ class AdminControllerTest extends \PHPUnit_Framework_TestCase {
->method('setAutoPurgeCount')
->with($this->equalTo($expected['autoPurgeCount']));
$this->config->expects($this->once())
- ->method('setCacheDuration')
- ->with($this->equalTo($expected['cacheDuration']));
+ ->method('setMaxRedirects')
+ ->with($this->equalTo($expected['maxRedirects']));
$this->config->expects($this->once())
->method('setFeedFetcherTimeout')
->with($this->equalTo($expected['feedFetcherTimeout']));
@@ -111,8 +111,8 @@ class AdminControllerTest extends \PHPUnit_Framework_TestCase {
->method('getAutoPurgeCount')
->will($this->returnValue($expected['autoPurgeCount']));
$this->config->expects($this->once())
- ->method('getCacheDuration')
- ->will($this->returnValue($expected['cacheDuration']));
+ ->method('getMaxRedirects')
+ ->will($this->returnValue($expected['maxRedirects']));
$this->config->expects($this->once())
->method('getFeedFetcherTimeout')
->will($this->returnValue($expected['feedFetcherTimeout']));
@@ -123,7 +123,7 @@ class AdminControllerTest extends \PHPUnit_Framework_TestCase {
$response = $this->controller->update(
$expected['autoPurgeMinimumInterval'],
$expected['autoPurgeCount'],
- $expected['cacheDuration'],
+ $expected['maxRedirects'],
$expected['feedFetcherTimeout'],
$expected['useCronUpdates']
);
diff --git a/tests/unit/fetcher/FeedFetcherTest.php b/tests/unit/fetcher/FeedFetcherTest.php
index ff1581082..d87d88952 100644
--- a/tests/unit/fetcher/FeedFetcherTest.php
+++ b/tests/unit/fetcher/FeedFetcherTest.php
@@ -20,21 +20,14 @@ use \OCA\News\Db\Feed;
class FeedFetcherTest extends \PHPUnit_Framework_TestCase {
private $fetcher;
- private $core;
- private $coreFactory;
+ private $parser;
+ private $reader;
+ private $client;
private $faviconFetcher;
+ private $parsedFeed;
private $url;
- private $cacheDirectory;
- private $cacheDuration;
private $time;
private $item;
- private $purifier;
- private $fetchTimeout;
- private $proxyHost;
- private $getProxyPort;
- private $proxyAuth;
- private $config;
- private $appconfig;
// items
private $permalink;
@@ -53,41 +46,25 @@ class FeedFetcherTest extends \PHPUnit_Framework_TestCase {
private $webFavicon;
protected function setUp(){
- $this->core = $this->getMock(
- '\SimplePie_Core', [
- 'set_timeout',
- 'set_feed_url',
- 'enable_cache',
- 'set_stupidly_fast',
- 'set_cache_location',
- 'set_cache_duration',
- 'set_proxyhost',
- 'set_proxyport',
- 'set_proxyuserpwd',
- 'set_useragent',
- 'init',
- 'get_permalink',
- 'get_items',
- 'get_title',
- 'get_image_url'
- ]);
- $this->coreFactory = $this->getMockBuilder(
- '\OCA\News\Utility\SimplePieAPIFactory')
+ $this->reader = $this->getMockBuilder(
+ '\PicoFeed\Reader')
->disableOriginalConstructor()
->getMock();
- $this->coreFactory->expects($this->any())
- ->method('getCore')
- ->will($this->returnValue($this->core));
- $this->item = $this->getMockBuilder(
- '\SimplePie_Item')
+ $this->parser = $this->getMockBuilder(
+ '\PicoFeed\Parser')
->disableOriginalConstructor()
->getMock();
- $this->faviconFetcher = $this->getMockBuilder(
- '\PicoFeed\Favicon')
+ $this->client = $this->getMockBuilder(
+ '\PicoFeed\Client')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->parsedFeed = $this->getMockBuilder(
+ '\PicoFeed\Feed')
->disableOriginalConstructor()
->getMock();
- $this->appconfig = $this->getMockBuilder(
- '\OCA\News\Config\AppConfig')
+
+ $this->faviconFetcher = $this->getMockBuilder(
+ '\PicoFeed\Favicon')
->disableOriginalConstructor()
->getMock();
$this->time = 2323;
@@ -95,41 +72,9 @@ class FeedFetcherTest extends \PHPUnit_Framework_TestCase {
$timeFactory->expects($this->any())
->method('getTime')
->will($this->returnValue($this->time));
- $this->cacheDuration = 100;
- $this->cacheDirectory = 'dir/';
- $this->proxyHost = 'test';
- $this->proxyPort = 30;
- $this->proxyAuth = 'hi';
- $this->fetchTimeout = 40;
- $this->config = $this->getMockBuilder(
- '\OCA\News\Config\Config')
- ->disableOriginalConstructor()
- ->getMock();
- $this->config->expects($this->any())
- ->method('getCacheDuration')
- ->will($this->returnValue($this->cacheDuration));
- $this->config->expects($this->any())
- ->method('getProxyHost')
- ->will($this->returnValue($this->proxyHost));
- $this->config->expects($this->any())
- ->method('getProxyAuth')
- ->will($this->returnValue($this->proxyAuth));
- $this->config->expects($this->any())
- ->method('getProxyPort')
- ->will($this->returnValue($this->proxyPort));
- $this->config->expects($this->any())
- ->method('getFeedFetcherTimeout')
- ->will($this->returnValue($this->fetchTimeout));
- $this->appconfig->expects($this->any())
- ->method('getConfig')
- ->with($this->equalTo('version'))
- ->will($this->returnValue(3));
- $this->fetcher = new FeedFetcher($this->coreFactory,
+ $this->fetcher = new FeedFetcher($this->reader,
$this->faviconFetcher,
- $timeFactory,
- $this->cacheDirectory,
- $this->config,
- $this->appconfig);
+ $timeFactory);
$this->url = 'http://tests';
$this->permalink = 'http://permalink';
@@ -156,65 +101,35 @@ class FeedFetcherTest extends \PHPUnit_Framework_TestCase {
$this->assertTrue($this->fetcher->canHandle($url));
}
-
- public function testDoesNotUseProxyIfNotEnabled() {
- $this->config->expects($this->any())
- ->method('getProxyHost')
- ->will($this->returnValue(''));
- $this->core->expects($this->never())
- ->method('set_proxyhost');
- $this->core->expects($this->never())
- ->method('set_proxyport');
- $this->core->expects($this->never())
- ->method('set_proxyuserpwd');
+ private function setUpReader($url='', $modified=true) {
+ $this->reader->expects($this->once())
+ ->method('download')
+ ->with($this->equalTo($url))
+ ->will($this->returnValue($this->client));
+ $this->client->expects($this->once())
+ ->method('getLastModified')
+ ->with()
+ ->will($this->returnValue($modified));
}
- public function testFetchThrowsExceptionWhenInitFailed() {
- $this->core->expects($this->once())
- ->method('set_feed_url')
- ->with($this->equalTo($this->url));
- $this->core->expects($this->once())
- ->method('enable_cache')
- ->with($this->equalTo(true));
- $this->core->expects($this->once())
- ->method('set_timeout')
- ->with($this->equalTo($this->fetchTimeout));
- $this->core->expects($this->once())
- ->method('set_cache_location')
- ->with($this->equalTo($this->cacheDirectory));
- $this->core->expects($this->once())
- ->method('set_proxyhost')
- ->with($this->equalTo($this->proxyHost));
- $this->core->expects($this->once())
- ->method('set_proxyport')
- ->with($this->equalTo($this->proxyPort));
- $this->core->expects($this->once())
- ->method('set_proxyuserpwd')
- ->with($this->equalTo($this->proxyAuth));
- $this->core->expects($this->once())
- ->method('set_stupidly_fast')
- ->with($this->equalTo(true));
- $this->core->expects($this->once())
- ->method('set_cache_duration')
- ->with($this->equalTo($this->cacheDuration));
- $this->core->expects($this->once())
- ->method('set_useragent')
- ->with($this->equalTo(
- 'ownCloud News/3 (+https://owncloud.org/; 1 subscriber; ' .
- 'feed-url=http://tests)'));
+ public function testFetchThrowsExceptionWhenFetchingFailed() {
+ $this->setUpReader($this->url);
+ $this->reader->expects($this->once())
+ ->method('getParser')
+ ->will($this->returnValue(false));
+
$this->setExpectedException('\OCA\News\Fetcher\FetcherException');
$this->fetcher->fetch($this->url);
}
- public function testShouldCatchExceptionsAndThrowOwnException() {
- $this->core->expects($this->once())
- ->method('init')
- ->will($this->returnValue(true));
- $this->core->expects($this->once())
- ->method('get_items')
- ->will($this->throwException(new \Exception('oh noes!')));
+ public function testFetchThrowsExceptionWhenParsingFailed() {
+ $this->setUpReader($this->url);
+ $this->reader->expects($this->once())
+ ->method('getParser')
+ ->will($this->returnValue(false));
+
$this->setExpectedException('\OCA\News\Fetcher\FetcherException');
$this->fetcher->fetch($this->url);
}
diff --git a/tests/unit/utility/SimplePieAPIFactoryTest.php b/tests/unit/utility/SimplePieAPIFactoryTest.php
deleted file mode 100644
index 4f401a72e..000000000
--- a/tests/unit/utility/SimplePieAPIFactoryTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/**
- * ownCloud - News
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Alessandro Cosentino <cosenal@gmail.com>
- * @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @copyright Alessandro Cosentino 2012
- * @copyright Bernhard Posselt 2012, 2014
- */
-
-namespace OCA\News\Utility;
-
-
-class SimplePieAPIFactoryTest extends \PHPUnit_Framework_TestCase {
-
-
- public function testGetFile() {
- $factory = new SimplePieAPIFactory();
- $file = $factory->getFile('php://input', 10, 5, $headers='headers',
- $useragent='flashce', $force_fsockopen=true);
- $this->assertTrue($file instanceof \SimplePie_File);
- }
-
-
- public function testGetCore() {
- $factory = new SimplePieAPIFactory();
- $this->assertTrue($factory->getCore() instanceof \SimplePie);
- }
-
-
-} \ No newline at end of file
diff --git a/utility/picofeedclientfactory.php b/utility/picofeedclientfactory.php
new file mode 100644
index 000000000..527d0e13c
--- /dev/null
+++ b/utility/picofeedclientfactory.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * ownCloud - News
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later. See the COPYING file.
+ *
+ * @author Alessandro Cosentino <cosenal@gmail.com>
+ * @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @copyright Alessandro Cosentino 2012
+ * @copyright Bernhard Posselt 2012, 2014
+ */
+
+
+namespace OCA\News\Utility;
+
+use \PicoFeed\Config;
+use \PicoFeed\Client;
+
+class PicoFeedClientFactory {
+
+ private $config;
+
+ public function __construct(Config $config) {
+ $this->config = $config;
+ }
+
+
+ /**
+ * Returns a new instance of an PicoFeed Http client
+ * @return \PicoFeed\Client instance
+ */
+ public function build() {
+ $client = Client::getInstance();
+ $client->setConfig($this->config);
+ return $client;
+ }
+
+
+} \ No newline at end of file
diff --git a/utility/simplepieapifactory.php b/utility/simplepieapifactory.php
deleted file mode 100644
index 92cbe18f3..000000000
--- a/utility/simplepieapifactory.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * ownCloud - News
- *
- * This file is licensed under the Affero General Public License version 3 or
- * later. See the COPYING file.
- *
- * @author Alessandro Cosentino <cosenal@gmail.com>
- * @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @copyright Alessandro Cosentino 2012
- * @copyright Bernhard Posselt 2012, 2014
- */
-
-
-namespace OCA\News\Utility;
-
-
-class SimplePieAPIFactory {
-
- /**
- * Builds a simplepie file object. This is needed because
- * the file object contains logic in its constructor which makes it
- * impossible to inject and test
- *
- * @param $url
- * @param int $timeout
- * @param int $redirects
- * @param string $headers
- * @param string $useragent
- * @param bool $force_fsockopen
- * @return \SimplePie_File a new object
- */
- public function getFile($url, $timeout=10, $redirects=5, $headers=null,
- $useragent=null, $force_fsockopen=false) {
-
- return new \SimplePie_File($url, $timeout, $redirects, $headers,
- $useragent, $force_fsockopen);
- }
-
-
- /**
- * Returns a new instance of a SimplePie_Core() object. This is needed
- * because the class relies on external dependencies which are not passed
- * in via the constructor and thus making it nearly impossible to unit test
- * code that uses this class
- * @return \SimplePie_Core instance
- */
- public function getCore() {
- return new \SimplePie();
- }
-
-
-} \ No newline at end of file