[Fusionforge-commits] r15539 - in trunk: . src src/common/docman/include src/common/forum src/common/include src/common/widget src/cronjobs src/cronjobs/mail src/deb-specific src/debian/patches src/docs src/etc/config.ini.d src/packaging/install src/plugins/mediawiki/include src/plugins/mediawiki/www src/plugins/projectimport src/plugins/scmgit/common src/plugins/scmgit/etc src/plugins/scmgit/etc/httpd.conf.d src/plugins/svntracker/www src/plugins/wiki/etc src/plugins/wiki/etc/httpd.conf.d src/utils src/www src/www/account src/www/admin src/www/docman src/www/frs src/www/include src/www/project/admin src/www/reporting src/www/tabber tests

Roland Mas lolando at fusionforge.org
Mon May 21 11:59:31 CEST 2012


Author: lolando
Date: 2012-05-21 11:59:30 +0200 (Mon, 21 May 2012)
New Revision: 15539

Added:
   trunk/src/debian/patches/disable-dav
   trunk/src/debian/patches/disable-tracker-reply-by-email
   trunk/src/debian/patches/production-environment
   trunk/src/debian/patches/use-jquery-from-distro
   trunk/src/debian/patches/use-nusoap-from-distro
   trunk/src/debian/patches/use-simplepie-from-distro
   trunk/src/debian/patches/use-snoopy-from-distro
   trunk/src/docs/README.html-elements
   trunk/src/docs/README.html-utils
   trunk/src/plugins/scmgit/etc/httpd.conf.d/
   trunk/src/plugins/wiki/etc/httpd.conf.d/
   trunk/src/utils/list-admins.php
Removed:
   trunk/src/debian/patches/disable-dav.patch
   trunk/src/debian/patches/disable-tracker-reply-by-email.patch
   trunk/src/debian/patches/production-environment.patch
   trunk/src/debian/patches/use-jquery-from-distro.patch
   trunk/src/debian/patches/use-nusoap-from-distro.patch
   trunk/src/debian/patches/use-simplepie-from-distro.patch
   trunk/src/debian/patches/use-snoopy-from-distro.patch
   trunk/src/plugins/scmgit/etc/httpd.conf.d/
   trunk/src/plugins/wiki/etc/httpd.conf.d/
Modified:
   trunk/
   trunk/src/common/docman/include/utils.php
   trunk/src/common/forum/ForumFactory.class.php
   trunk/src/common/forum/ForumMessage.class.php
   trunk/src/common/include/FusionForge.class.php
   trunk/src/common/include/Group.class.php
   trunk/src/common/include/RBAC.php
   trunk/src/common/include/SCMPlugin.class.php
   trunk/src/common/include/env.inc.php
   trunk/src/common/include/rbac_texts.php
   trunk/src/common/include/session.php
   trunk/src/common/include/utils.php
   trunk/src/common/widget/WidgetLayout.class.php
   trunk/src/common/widget/Widget_MyArtifacts.class.php
   trunk/src/common/widget/Widget_MySurveys.class.php
   trunk/src/common/widget/Widget_ProjectRss.class.php
   trunk/src/common/widget/Widget_Rss.class.php
   trunk/src/cronjobs/auth_unix.php
   trunk/src/cronjobs/mail/mailaliases.php
   trunk/src/deb-specific/create-mailing-lists.pl
   trunk/src/deb-specific/install-db.sh
   trunk/src/debian/patches/series
   trunk/src/debian/patches/use-yui-from-distro
   trunk/src/etc/config.ini.d/defaults.ini
   trunk/src/fusionforge.spec
   trunk/src/packaging/install/common
   trunk/src/plugins/mediawiki/include/mediawikiPlugin.class.php
   trunk/src/plugins/mediawiki/www/plugin_admin.php
   trunk/src/plugins/projectimport/INSTALL
   trunk/src/plugins/scmgit/common/GitPlugin.class.php
   trunk/src/plugins/scmgit/common/scmgit_Widget_MyRepositories.class.php
   trunk/src/plugins/scmgit/etc/httpd.conf.d/plugin-scmgit-dav.inc
   trunk/src/plugins/svntracker/www/newcommit.php
   trunk/src/plugins/wiki/etc/httpd.conf.d/plugin-wiki.inc
   trunk/src/utils/migrate-to-ini-files.sh
   trunk/src/www/account/index.php
   trunk/src/www/admin/pluginman.php
   trunk/src/www/docman/view.php
   trunk/src/www/frs/download.php
   trunk/src/www/include/html.php
   trunk/src/www/project/admin/index.php
   trunk/src/www/project/admin/roleedit.php
   trunk/src/www/reporting/projectact_graph.php
   trunk/src/www/snapshots.php
   trunk/src/www/tabber/example-ajax.html
   trunk/src/www/tabber/example-cookies.html
   trunk/src/www/tabber/example2.html
   trunk/src/www/tarballs.php
   trunk/tests/SeleniumTests.php
Log:
Renamed doc files to avoid potentially unsafe characters in filenames


Property changes on: trunk
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/tracker_attachement_move_in_fs:14977-14978
/branches/Branch_4_7:6879,6881,6884,6897,6899,6902,6904,6906,6909,6911,6922,6932,6936,6939,6942,6944,6946-6948,6954,6956,6959,7000-7001,7012,7111,7130-7131,7133-7134,7138,7140-7142,7147-7148,7159-7160,7163,7168,7177,7179,7203,7205,7207,7210,7212,7251-7253,7255,7284,7287,7291,7293,7295-7296,7300,7355,7365-7366,7375-7376,7378,7395,7423-7426,7435,7458,7504,7567,7577,7623-7624,7638,7659-7660,7662,7665,7668,7674,7699,7746-7748,7771,7774,7786,7838
/shelves/aljeux:15005,15012,15150,15154-15160,15177-15179,15203,15232,15276-15277,15306
/trunk:8721-8727
/shelves/alain_peyrat:14997-15003
/branches/Branch_5_1:11607-11609,11621,11625,11627,11631,11638,11644,11647-11651,11677,11680-11681,11683-11684,11719-11720,11724,11754,11780,11783,11792,11794,11802,11808-11816,11818,11822-11824,11827-11829,11834-11835,11847,11849,11851-11852,11855,11858,11862,11867,11869-11872,11876,11880,11893,11902-11905,11915,11923-11927,11929-11930,11932,11934-11941,11943,11948-11949,11952-11954,11956-11960,11962,11965-11966,11972,11975,11980,11983-11984,11986-11987,11990,11992-11997,12003-12004,12010-12013,12015,12018-12024,12043-12044,12046-12061,12063,12065,12070,12073-12076,12081-12083,12093-12094,12102,12105,12118,12124,12127-12128,12139,12141,12143,12148-12149,12153,12157-12159,12168-12169,12175-12180,12190,12194-12198,12203,12208-12213,12217-12258,12262,12264-12266,12274-12277,12281-12282,12287-12290,12340,12345-12346,12352,12359,12472-12473,12594,12634,12636-12638,12658-12659,12684-12712,12714-12715,12733,12780-12783,12785-12786,12795,12797,12800-12802,12815-12816,12840-12856,12860,12882-12883,12888-12892,12897,12904,12914-12917,12922-12926,12929-12936,12939,12959-12965,12967-12971,13011,13022,13025,13031-13032,13034,13043-13046,13048-13050,13053,13056,13058,13061,13068-13070,13075,13088,13090-13091,13101,13103-13104,13106,13108-13109,13111-13114,13116-13117,13120,13125,13127-13128,13148,13153-13161,13163,13165-13166,13174-13175,13188,13190,13211-13212,13219,13221,13231-13234,13236-13238,13253,13257-13270,13272-13274,13287-13300,13302-13342,13355-13374,13377-13379,13386-13389,13391-13400,13404,13408,13410,13412,13415-13416,13420,13422-13426,13429-13432,13452,13456,13461-13464,13466,13468-13470,13472-13477,13492,13517-13519,13527-13532,13589-13590,13624-13628,13645,13661-13663,13666,13684,13689-13690,13697,13699,13704,13745,13761,13766-13767,13769-13770,13772-13801,13808,13817-13818,13820-13823,13830-13831,13838,13854,13861,13984,13986-13988,14009,14013-14015,14020-14021,14036,14039-14045,14047,14051-14053,14056-14059,14065,14072,14080-14084,14086-14090,14095-14099,14101-14121,14130-14136,14162-14167,14172-14173,14184,14215-14220,14238-14241,14266-14269,14273-14278,14285,14288-14289,14303,14305,14307,14309,14311,14313-14316,14318-14320,14322,14358,14391-14392,14444-14446,14461-14462,14472,14476-14480,14496,14498,14505-14506,14511,14515,14538-14554,14558-14574,14577-14578,14582-14597,14599-14602,14614-14616,14686-14687,14698,14702,14705,14736,14738,14740,14742-14743,14747,14784-14786,14802-14809,14812-14813,14898-14904,14908-14909,14929-14931,15014-15015,15024-15028,15032,15044-15049,15056-15058,15070,15081-15082,15087,15092-15095,15121-15125,15128-15135,15138-15139,15141,15144,15147-15148,15169-15173,15175,15182,15186-15188,15190,15223,15238,15282,15304,15330,15335,15337,15354,15360-15361,15367-15368,15373,15380,15382,15388,15402-15403
/branches/Branch_5_2:15217,15219,15221,15224,15227-15229,15234,15239,15279,15286,15325,15328-15329,15331,15347-15348,15352,15356,15359,15362,15364-15365,15370,15374,15381,15383,15386,15389,15392,15398,15400-15401,15404-15405,15407-15411
/branches/Branch_4_8:7334-7335,7344-7345,7382,7387,7389-7390,7396,7398,7401-7402,7428-7429,7437,7440,7443,7449-7455,7459,7462,7466,7469-7470,7476-7478,7480,7485,7490-7492,7505,7540,7556-7560,7568,7570-7571,7573,7576,7580,7609-7611,7613,7615,7618,7621-7622,7625-7627,7639,7658,7661,7663-7664,7666-7667,7673,7675,7678,7680,7685,7688-7689,7693,7700,7706-7708,7713,7725,7728-7742,7760,7763-7764,7767,7769-7770,7773,7776,7784-7785,7791,7797,7799,7802-7808,7810-7811,7816,7818,7825-7828,7839,7846-7847,7850,7894,7902,7920-7922,7927-7928,7932,7936-7937,7939,7942,7944-7945,7947,7951,7956,7958,7960,8064,8079-8080,8108,8113,8119,8121,8127-8128,8145,8197,8201-8202,8216,8224,8226,8228,8247-8250,8252,8271-8272,8310-8311,8328,8337,8339-8357,8361,8371,8373-8375,8378-8379,8383-8396,8415,8427-8431,8438-8441,8449,8452-8453,8458,8461,8477-8478,8480,8482,8492,8514,8530,8604-8605,8608,8637,8662,8674,8751,8754,8756,8760-8761,8812,8850,8945,8995,8998,9004-9006,9124,9137,9141,9317,9443,9469,9670,9701,9726,9934,10013,10310,10314,10366,12790,13085
/branches/Branch_5_0:8892,8895,8897-8898,8900,8903-8904,8906-8907,8910,8915,8922,8924,8926,8929,8931-8933,8941,8946,8951,8955,8972-8977,8981,8997,8999,9002,9031-9032,9050,9080-9081,9084-9086,9093-9095,9102-9104,9108,9113-9115,9117-9118,9123,9125,9127-9131,9135-9136,9139,9146,9148-9150,9179-9191,9193-9195,9198,9200,9202,9204,9207,9209,9211,9213,9215,9220-9222,9231,9234-9235,9243,9251,9254,9259,9287,9315,9318,9347-9349,9358,9396,9427,9429,9431-9433,9441-9442,9444-9445,9462,9464,9468,9522-9523,9549,9551-9552,9576-9577,9579,9615,9633-9634,9672-9673,9675-9676,9684,9686-9687,9689,9699,9727,9729,9731,9930-9932,9935,9956,9980,10005-10006,10021,10024,10027,10064,10081-10082,10273,10285,10820-10824,10868,10872,10876-10878,10880,10918,11015,11017,11058-11060,11085-11086,11160-11165,11252-11253,11287,11294,11581,11619-11620,11679,11722-11723,11907,11974,12789,12940,12986,13023-13024,13086,13121-13122,13162,13465,13496,13501,13503,13660

   + /branches/tracker_attachement_move_in_fs:14977-14978
/trunk:8721-8727
/shelves/aljeux:15005,15012,15150,15154-15160,15177-15179,15203,15232,15276-15277,15306
/branches/Branch_4_7:6879,6881,6884,6897,6899,6902,6904,6906,6909,6911,6922,6932,6936,6939,6942,6944,6946-6948,6954,6956,6959,7000-7001,7012,7111,7130-7131,7133-7134,7138,7140-7142,7147-7148,7159-7160,7163,7168,7177,7179,7203,7205,7207,7210,7212,7251-7253,7255,7284,7287,7291,7293,7295-7296,7300,7355,7365-7366,7375-7376,7378,7395,7423-7426,7435,7458,7504,7567,7577,7623-7624,7638,7659-7660,7662,7665,7668,7674,7699,7746-7748,7771,7774,7786,7838
/shelves/alain_peyrat:14997-15003
/branches/Branch_4_8:7334-7335,7344-7345,7382,7387,7389-7390,7396,7398,7401-7402,7428-7429,7437,7440,7443,7449-7455,7459,7462,7466,7469-7470,7476-7478,7480,7485,7490-7492,7505,7540,7556-7560,7568,7570-7571,7573,7576,7580,7609-7611,7613,7615,7618,7621-7622,7625-7627,7639,7658,7661,7663-7664,7666-7667,7673,7675,7678,7680,7685,7688-7689,7693,7700,7706-7708,7713,7725,7728-7742,7760,7763-7764,7767,7769-7770,7773,7776,7784-7785,7791,7797,7799,7802-7808,7810-7811,7816,7818,7825-7828,7839,7846-7847,7850,7894,7902,7920-7922,7927-7928,7932,7936-7937,7939,7942,7944-7945,7947,7951,7956,7958,7960,8064,8079-8080,8108,8113,8119,8121,8127-8128,8145,8197,8201-8202,8216,8224,8226,8228,8247-8250,8252,8271-8272,8310-8311,8328,8337,8339-8357,8361,8371,8373-8375,8378-8379,8383-8396,8415,8427-8431,8438-8441,8449,8452-8453,8458,8461,8477-8478,8480,8482,8492,8514,8530,8604-8605,8608,8637,8662,8674,8751,8754,8756,8760-8761,8812,8850,8945,8995,8998,9004-9006,9124,9137,9141,9317,9443,9469,9670,9701,9726,9934,10013,10310,10314,10366,12790,13085
/branches/Branch_5_2:15217,15219,15221,15224,15227-15229,15234,15239,15279,15286,15325,15328-15329,15331,15347-15348,15352,15356,15359,15362,15364-15365,15370,15374,15381,15383,15386,15389,15392,15398,15400-15401,15404-15405,15407-15411,15495,15497,15500,15503-15505,15531,15533-15536,15538
/branches/Branch_5_1:11607-11609,11621,11625,11627,11631,11638,11644,11647-11651,11677,11680-11681,11683-11684,11719-11720,11724,11754,11780,11783,11792,11794,11802,11808-11816,11818,11822-11824,11827-11829,11834-11835,11847,11849,11851-11852,11855,11858,11862,11867,11869-11872,11876,11880,11893,11902-11905,11915,11923-11927,11929-11930,11932,11934-11941,11943,11948-11949,11952-11954,11956-11960,11962,11965-11966,11972,11975,11980,11983-11984,11986-11987,11990,11992-11997,12003-12004,12010-12013,12015,12018-12024,12043-12044,12046-12061,12063,12065,12070,12073-12076,12081-12083,12093-12094,12102,12105,12118,12124,12127-12128,12139,12141,12143,12148-12149,12153,12157-12159,12168-12169,12175-12180,12190,12194-12198,12203,12208-12213,12217-12258,12262,12264-12266,12274-12277,12281-12282,12287-12290,12340,12345-12346,12352,12359,12472-12473,12594,12634,12636-12638,12658-12659,12684-12712,12714-12715,12733,12780-12783,12785-12786,12795,12797,12800-12802,12815-12816,12840-12856,12860,12882-12883,12888-12892,12897,12904,12914-12917,12922-12926,12929-12936,12939,12959-12965,12967-12971,13011,13022,13025,13031-13032,13034,13043-13046,13048-13050,13053,13056,13058,13061,13068-13070,13075,13088,13090-13091,13101,13103-13104,13106,13108-13109,13111-13114,13116-13117,13120,13125,13127-13128,13148,13153-13161,13163,13165-13166,13174-13175,13188,13190,13211-13212,13219,13221,13231-13234,13236-13238,13253,13257-13270,13272-13274,13287-13300,13302-13342,13355-13374,13377-13379,13386-13389,13391-13400,13404,13408,13410,13412,13415-13416,13420,13422-13426,13429-13432,13452,13456,13461-13464,13466,13468-13470,13472-13477,13492,13517-13519,13527-13532,13589-13590,13624-13628,13645,13661-13663,13666,13684,13689-13690,13697,13699,13704,13745,13761,13766-13767,13769-13770,13772-13801,13808,13817-13818,13820-13823,13830-13831,13838,13854,13861,13984,13986-13988,14009,14013-14015,14020-14021,14036,14039-14045,14047,14051-14053,14056-14059,14065,14072,14080-14084,14086-14090,14095-14099,14101-14121,14130-14136,14162-14167,14172-14173,14184,14215-14220,14238-14241,14266-14269,14273-14278,14285,14288-14289,14303,14305,14307,14309,14311,14313-14316,14318-14320,14322,14358,14391-14392,14444-14446,14461-14462,14472,14476-14480,14496,14498,14505-14506,14511,14515,14538-14554,14558-14574,14577-14578,14582-14597,14599-14602,14614-14616,14686-14687,14698,14702,14705,14736,14738,14740,14742-14743,14747,14784-14786,14802-14809,14812-14813,14898-14904,14908-14909,14929-14931,15014-15015,15024-15028,15032,15044-15049,15056-15058,15070,15081-15082,15087,15092-15095,15121-15125,15128-15135,15138-15139,15141,15144,15147-15148,15169-15173,15175,15182,15186-15188,15190,15223,15238,15282,15304,15330,15335,15337,15354,15360-15361,15367-15368,15373,15380,15382,15388,15402-15403,15433,15447-15448,15457,15460,15499,15502,15506-15508,15523-15525,15537
/branches/Branch_5_0:8892,8895,8897-8898,8900,8903-8904,8906-8907,8910,8915,8922,8924,8926,8929,8931-8933,8941,8946,8951,8955,8972-8977,8981,8997,8999,9002,9031-9032,9050,9080-9081,9084-9086,9093-9095,9102-9104,9108,9113-9115,9117-9118,9123,9125,9127-9131,9135-9136,9139,9146,9148-9150,9179-9191,9193-9195,9198,9200,9202,9204,9207,9209,9211,9213,9215,9220-9222,9231,9234-9235,9243,9251,9254,9259,9287,9315,9318,9347-9349,9358,9396,9427,9429,9431-9433,9441-9442,9444-9445,9462,9464,9468,9522-9523,9549,9551-9552,9576-9577,9579,9615,9633-9634,9672-9673,9675-9676,9684,9686-9687,9689,9699,9727,9729,9731,9930-9932,9935,9956,9980,10005-10006,10021,10024,10027,10064,10081-10082,10273,10285,10820-10824,10868,10872,10876-10878,10880,10918,11015,11017,11058-11060,11085-11086,11160-11165,11252-11253,11287,11294,11581,11619-11620,11679,11722-11723,11907,11974,12789,12940,12986,13023-13024,13086,13121-13122,13162,13465,13496,13501,13503,13660

Modified: svk:merge
   - 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7001
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7012
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7291
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7458
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7623
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7624
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7786
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7838
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:10013
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7335
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7344
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7345
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7402
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7455
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7459
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7469
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7470
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7476
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7480
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7505
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7540
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7557
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7559
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7560
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7580
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7609
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7615
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7618
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7621
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7622
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7626
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7627
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7708
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7713
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7725
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7729
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7730
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7731
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7732
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7733
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7734
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7737
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7738
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7739
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7742
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7760
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7763
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7764
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7767
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7769
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7773
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7776
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7784
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7785
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7797
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7799
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7811
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7826
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7827
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7828
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7839
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7951
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7958
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7960
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8108
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8113
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8119
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8128
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8145
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8202
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8216
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8224
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8226
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8250
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8337
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8357
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8371
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8375
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8379
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8415
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8427
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8431
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8441
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8449
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8453
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8530
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8604
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8605
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8608
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8637
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8751
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8756
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8761
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:9141
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10006
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10021
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10064
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10082
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10824
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11017
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11060
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11165
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11253
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11294
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8895
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8898
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8900
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8941
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9115
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9118
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9131
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9136
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9139
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9150
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9188
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9195
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9198
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9202
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9207
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9209
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9213
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9243
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9254
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9358
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9427
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9433
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9549
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9552
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9579
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9634
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9675
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9676
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9729
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9731
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9932
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9980
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11621
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11627
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11631
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11638
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11651
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11684
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11724
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11754
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11794
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11802
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11818
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11835
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11855
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11858
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11872
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11876
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11905
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11930
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11932
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11941
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11960
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11962
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11966
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11975
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11980
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11984
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11987
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11997
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12013
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12015
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12022
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12049
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12060
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12073
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12105
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12118
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12143
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12169
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12180
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12190
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12203
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12266
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12282
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12594
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12634
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12659
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12715
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12733
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12786
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12816
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12843
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12856
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12892
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12917
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12971
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13011
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13056
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13058
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13061
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13091
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13104
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13117
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13120
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13128
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13163
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13190
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13212
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13232
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13238
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13274
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13287
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13300
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13307
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13312
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13314
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13316
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13325
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13373
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13404
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13412
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13426
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13432
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13466
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13492
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13532
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13590
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13690
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13699
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13704
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13761
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13769
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13770
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13808
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13821
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13822
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13823
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13854
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13986
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13988
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14021
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14045
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14047
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14053
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14057
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14065
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14072
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14084
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14090
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14109
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14111
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14112
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14113
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14115
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14116
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14119
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14121
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14130
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14136
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14162
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14167
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14173
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14184
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14215
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14218
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14220
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14241
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14269
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14275
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14278
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14289
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14303
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14305
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14307
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14309
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14311
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14320
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14322
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14392
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14462
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14472
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14498
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14515
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14541
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14550
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14554
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14616
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14705
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14738
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14742
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14743
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14747
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14785
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14786
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14805
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14806
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14809
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14813
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14904
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14909
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14931
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15028
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15032
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15049
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15056
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15058
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15070
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15082
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15087
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15092
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15093
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15095
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15125
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15135
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15139
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15141
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15144
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15148
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15175
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15182
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15190
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15219
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15221
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15224
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15229
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15239
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15286
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15331
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15356
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15370
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15374
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15383
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15386
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15389
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15392
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15405
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15411
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/trunk:8727

   + 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7001
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7012
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7291
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7458
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7623
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7624
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7786
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_7:7838
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:10013
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7335
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7344
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7345
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7402
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7455
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7459
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7469
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7470
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7476
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7480
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7505
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7540
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7557
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7559
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7560
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7580
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7609
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7615
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7618
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7621
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7622
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7626
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7627
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7708
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7713
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7725
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7729
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7730
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7731
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7732
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7733
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7734
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7737
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7738
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7739
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7742
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7760
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7763
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7764
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7767
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7769
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7773
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7776
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7784
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7785
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7797
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7799
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7811
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7826
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7827
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7828
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7839
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7951
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7958
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:7960
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8108
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8113
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8119
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8128
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8145
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8202
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8216
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8224
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8226
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8250
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8337
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8357
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8371
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8375
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8379
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8415
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8427
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8431
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8441
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8449
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8453
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8530
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8604
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8605
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8608
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8637
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8751
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8756
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:8761
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_4_8:9141
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10006
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10021
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10064
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10082
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:10824
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11017
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11060
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11165
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11253
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:11294
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8895
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8898
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8900
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:8941
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9115
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9118
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9131
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9136
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9139
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9150
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9188
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9195
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9198
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9202
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9207
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9209
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9213
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9243
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9254
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9358
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9396
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9427
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9433
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9549
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9552
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9579
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9634
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9675
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9676
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9729
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9731
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9932
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_0:9980
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11621
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11627
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11631
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11638
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11651
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11684
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11724
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11754
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11794
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11802
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11818
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11835
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11855
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11858
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11872
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11876
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11905
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11930
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11932
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11941
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11960
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11962
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11966
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11975
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11980
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11984
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11987
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:11997
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12013
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12015
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12022
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12049
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12060
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12073
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12105
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12118
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12143
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12169
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12180
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12190
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12203
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12266
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12282
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12594
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12634
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12659
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12715
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12733
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12786
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12816
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12843
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12856
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12892
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12917
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:12971
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13011
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13056
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13058
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13061
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13091
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13104
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13117
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13120
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13128
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13163
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13190
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13212
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13232
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13238
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13274
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13287
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13300
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13307
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13312
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13314
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13316
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13325
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13373
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13404
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13412
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13426
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13432
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13466
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13492
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13532
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13590
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13690
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13699
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13704
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13761
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13769
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13770
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13808
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13821
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13822
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13823
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13854
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13986
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:13988
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14021
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14045
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14047
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14053
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14057
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14065
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14072
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14084
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14090
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14109
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14111
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14112
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14113
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14115
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14116
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14119
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14121
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14130
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14136
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14162
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14167
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14173
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14184
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14215
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14218
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14220
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14241
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14269
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14275
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14278
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14289
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14303
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14305
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14307
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14309
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14311
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14320
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14322
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14392
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14462
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14472
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14498
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14515
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14541
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14550
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14554
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14616
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14705
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14738
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14742
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14743
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14747
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14785
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14786
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14805
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14806
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14809
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14813
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14904
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14909
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:14931
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15028
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15032
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15049
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15056
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15058
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15070
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15082
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15087
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15092
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15093
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15095
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15125
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15135
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15139
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15141
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15144
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15148
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15175
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15182
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_1:15190
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15219
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15221
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15224
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15229
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15239
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15286
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15331
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15356
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15370
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15374
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15383
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15386
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15389
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15392
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15405
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15411
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/branches/Branch_5_2:15538
9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:/trunk:8727


Modified: trunk/src/common/docman/include/utils.php
===================================================================
--- trunk/src/common/docman/include/utils.php	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/common/docman/include/utils.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -64,7 +64,7 @@
 						return false;
 				}
 			}
-			if (!docman_fill_zip($zip, $nested_groups, $document_factory, $dg->getID(), $parent_docname.'/'.$dg->getName())) {
+			if (!docman_fill_zip($zip, $nested_groups, $document_factory, $dg->getID(), iconv("UTF-8", "ASCII//TRANSLIT", $parent_docname).'/'.iconv("UTF-8", "ASCII//TRANSLIT", $dg->getName()))) {
 				return false;
 			}
 		}

Modified: trunk/src/common/include/Group.class.php
===================================================================
--- trunk/src/common/include/Group.class.php	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/common/include/Group.class.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -2340,13 +2340,27 @@
 				}
 			}
 
-			// Disabled to keep user choice from registration page.
-//			$this->setUseSCM ($template->usesSCM()) ;
+			if (0) {
+				/* use SCM plugin from template group */
+				$this->setUseSCM($template->usesSCM());
 
-			foreach ($template->getPlugins() as $plugin_id => $plugin_name) {
-				if (preg_match('/^scm/', $plugin_name) && ($plugin_name != 'scmhook')) {
+				foreach ($template->getPlugins() as
+				    $plugin_id => $plugin_name) {
 					$this->setPluginUse($plugin_name);
 				}
+			} else {
+				/* use SCM choice from registration page */
+
+				foreach ($template->getPlugins() as
+				    $plugin_id => $plugin_name) {
+					if (substr($plugin_name, 3) == 'scm' &&
+					    $plugin_name != 'scmhook') {
+						/* skip copying scm plugins */
+						continue;
+					}
+					/* enable other plugins though */
+					$this->setPluginUse($plugin_name);
+				}
 			}
 
 			foreach ($template->getRoles() as $oldrole) {

Modified: trunk/src/common/include/RBAC.php
===================================================================
--- trunk/src/common/include/RBAC.php	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/common/include/RBAC.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -215,7 +215,9 @@
 			return false;
 		}
 
-		return true;
+		$this->normalizeData();
+
+		return true ;
 	}
 
 	function unlinkProject($project) { // From the PFO spec

Modified: trunk/src/common/include/env.inc.php
===================================================================
--- trunk/src/common/include/env.inc.php	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/common/include/env.inc.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -24,6 +24,17 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+if (!getenv('SERVER_SOFTWARE')) {
+	/* when running outside of the Web */
+
+	/* enable maximum error reporting */
+	error_reporting(-1);
+	/* disable output buffering */
+	$no_gz_buffer = true;
+	/* allow it to eat all memory */
+	ini_set("memory_limit", -1);
+}
+
 // Attempt to set up the include path, to fix problems with relative includes
 $fusionforge_basedir = dirname(dirname(dirname( __FILE__ )));
 

Modified: trunk/src/common/include/utils.php
===================================================================
--- trunk/src/common/include/utils.php	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/common/include/utils.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -5,7 +5,7 @@
  * Copyright 1999-2001, VA Linux Systems, Inc.
  * Copyright 2009-2011, Roland Mas
  * Copyright 2009-2011, Franck Villaume - Capgemini
- * Copyright (c) 2010, 2011
+ * Copyright (c) 2010, 2011, 2012
  *	Thorsten Glaser <t.glaser at tarent.de>
  * Copyright 2010-2011, Alain Peyrat - Alcatel-Lucent
  *
@@ -380,15 +380,7 @@
  *
  */
 function util_unconvert_htmlspecialchars($string) {
-	if (strlen($string) < 1) {
-		return '';
-	} else {
-		//$trans = get_html_translation_table(HTMLENTITIES, ENT_QUOTES);
-		$trans = get_html_translation_table(HTML_ENTITIES);
-		$trans = array_flip ($trans);
-		$str = strtr ($string, $trans);
-		return $str;
-	}
+	return html_entity_decode($string, ENT_QUOTES, "UTF-8");
 }
 
 /**
@@ -1497,12 +1489,47 @@
 	return $s;
 }
 
+function util_html_encode($s) {
+	return htmlspecialchars($s, ENT_QUOTES, "UTF-8");
+}
+
 /* secure a (possibly already HTML encoded) string */
 function util_html_secure($s) {
-	return htmlentities(html_entity_decode($s, ENT_QUOTES, "UTF-8"),
-	    ENT_QUOTES, "UTF-8");
+	return util_html_encode(util_unconvert_htmlspecialchars($s));
 }
 
+/* return integral value (ℕ₀) of passed string if it matches, or false */
+function util_nat0(&$s) {
+	if (!isset($s)) {
+		/* unset variable */
+		return false;
+	}
+	if (is_array($s)) {
+		if (count($s) == 1) {
+			/* one-element array */
+			return util_nat0($s[0]);
+		}
+		/* not one element, or element not at [0] */
+		return false;
+	}
+	if (!is_numeric($s)) {
+		/* not numeric */
+		return false;
+	}
+	$num = (int)$s;
+	if ($num >= 0) {
+		/* number element of ℕ₀ */
+		$text = (string)$num;
+		if ($text == $s) {
+			/* number matches its textual representation */
+			return ($num);
+		}
+		/* doesn't match, like 0123 or 1.2 or " 1" */
+	}
+	/* or negative */
+	return false;
+}
+
 /**
  * TODO: Enter description here ...
  * @param unknown_type $script
@@ -1534,9 +1561,39 @@
 	return $content_type;
 }
 
+/**
+ * util_gethref() - Construct a hypertext reference
+ *
+ * @param	string	$baseurl
+ *		(optional) base URL (absolute or relative);
+ *			urlencoded, but not htmlencoded
+ *		(default (falsy): PHP_SELF)
+ * @param	array	$args
+ *		(optional) associative array of unencoded query parameters;
+ *			false values are ignored
+ * @param	bool	$ashtml
+ *		(optional) htmlencode the result?
+ *		(default: true)
+ * @param	string	$sep
+ *		(optional) argument separator ('&' or ';')
+ *		(default: '&')
+ * @return	string
+ *		URL, possibly htmlencoded
+ */
+function util_gethref($baseurl=false, $args=array(), $ashtml=true, $sep='&') {
+	$rv = $baseurl ? $baseurl : getStringFromServer('PHP_SELF');
+	$pfx = '?';
+	foreach ($args as $k => $v) {
+		if ($v === false) {
+			continue;
+		}
+		$rv .= $pfx . urlencode($k) . '=' . urlencode($v);
+		$pfx = $sep;
+	}
+	return ($ashtml ? util_html_encode($rv) : $rv);
+}
+
 // Local Variables:
 // mode: php
 // c-file-style: "bsd"
 // End:
-
-?>

Modified: trunk/src/common/widget/Widget_MyArtifacts.class.php
===================================================================
--- trunk/src/common/widget/Widget_MyArtifacts.class.php	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/common/widget/Widget_MyArtifacts.class.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -109,6 +109,7 @@
 	function getContent() {
 		$html_my_artifacts = '<table style="width:100%">';
 		$atf = new ArtifactsForUser(@UserManager::instance()->getCurrentUser());
+		$my_artifacts = array();
 		if ($this->_artifact_show == 'ASM'){
 			$my_artifacts = $atf->getArtifactsFromSQLWithParams('SELECT * FROM artifact_vw av where (av.submitted_by=$1 OR av.assigned_to=$1 OR av.artifact_id IN (select artifact_monitor.artifact_id FROM artifact_monitor WHERE artifact_monitor.user_id = $1)) AND av.status_id=1 ORDER BY av.group_artifact_id, av.artifact_id DESC',array( UserManager::instance()->getCurrentUser()->getID()));
 		}

Modified: trunk/src/common/widget/Widget_MySurveys.class.php
===================================================================
--- trunk/src/common/widget/Widget_MySurveys.class.php	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/common/widget/Widget_MySurveys.class.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -104,7 +104,7 @@
 					}
 				}
 
-				$html_hdr .= '['.count($surveys).($count_new ? ", <b>".sprintf(_('%s new'), array($count_new))."</b>]" : ']').'</td></tr>';
+				$html_hdr .= '['.count($surveys).($count_new ? ", <b>".sprintf(_('%d new'), $count_new)."</b>]" : ']').'</td></tr>';
 				$html_my_surveys .= $html_hdr.$html;
 			}
 			$html_my_surveys .= '</table>';

Modified: trunk/src/deb-specific/create-mailing-lists.pl
===================================================================
--- trunk/src/deb-specific/create-mailing-lists.pl	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/deb-specific/create-mailing-lists.pl	2012-05-21 09:59:30 UTC (rev 15539)
@@ -16,7 +16,7 @@
 
 sub debug ( $ ) ;
 
-require ("/usr/share/gforge/lib/include.pl") ; # Include all the predefined functions 
+require ("/usr/share/gforge/lib/include.pl") ; # Include all the predefined functions
 
 &db_connect ;
 
@@ -89,13 +89,7 @@
 	system ($cmd) ;
 	unlink $tmp ;
 
-	my $urlpattern;
-	if (&forge_get_config ('use_ssl') eq 'yes') {
-	    $urlpattern = 'https://%s/cgi-bin/mailman/';
-	} else {
-	    $urlpattern = 'http://%s/cgi-bin/mailman/';
-	}
-	$cmd= "/usr/lib/mailman/bin/withlist -l -r fix_url $listname -u $sys_lists_host -p '$urlpattern'" ;
+	$cmd= "/usr/lib/mailman/bin/withlist -l -r fix_url $listname -u $sys_lists_host" ;
 	#print "cmd = <$cmd>\n" ;
 	system ($cmd) ;
 
@@ -147,7 +141,7 @@
 	#debug "Committing." ;
 	$dbh->commit () ;
     }
-    
+
     # There should be a commit at the end of every block above.
     # If there is not, then it might be symptomatic of a problem.
     # For safety, we roll back.

Modified: trunk/src/deb-specific/install-db.sh
===================================================================
--- trunk/src/deb-specific/install-db.sh	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/deb-specific/install-db.sh	2012-05-21 09:59:30 UTC (rev 15539)
@@ -204,9 +204,9 @@
 	fi
 	
         # Create the appropriate database
-	tmp1=$(mktemp /tmp/$pattern)
-	tmp2=$(mktemp /tmp/$pattern)
 	if ! exist_db $db_name ; then
+		tmp1=$(mktemp /tmp/$pattern)
+		tmp2=$(mktemp /tmp/$pattern)
 		if su -s /bin/sh postgres -c "/usr/bin/psql template1" 1> $tmp1 2> $tmp2 <<EOF \
 	    	    && [ "$(tail -n +2 $tmp1 | head -1)" = 'CREATE DATABASE' ] ; 
 SET LC_MESSAGES = 'C' ;

Copied: trunk/src/debian/patches/disable-dav (from rev 15532, trunk/src/debian/patches/disable-dav.patch)
===================================================================
--- trunk/src/debian/patches/disable-dav	                        (rev 0)
+++ trunk/src/debian/patches/disable-dav	2012-05-21 09:59:30 UTC (rev 15539)
@@ -0,0 +1,54 @@
+Author: Roland Mas <lolando at debian.org>
+Description: Disable SVN-over-WebDAV
+Index: src/plugins/scmsvn/etc/scmsvn.ini
+===================================================================
+--- src.orig/plugins/scmsvn/etc/scmsvn.ini
++++ src/plugins/scmsvn/etc/scmsvn.ini
+@@ -7,9 +7,9 @@
+ ; is available in installation_environment = development only.
+ plugin_status = valid
+ 
+-use_dav = yes
++use_dav = no
+ use_ssl = "$core/use_ssl"
+-use_ssh = no
++use_ssh = yes
+ anonsvn_login = anonsvn
+ anonsvn_password = anonsvn
+ default_server = "$core/web_host"
+Index: src/etc/httpd.conf.d/plugin-scmsvn.inc
+===================================================================
+--- src.orig/etc/httpd.conf.d/plugin-scmsvn.inc
++++ src/etc/httpd.conf.d/plugin-scmsvn.inc
+@@ -1,15 +1,16 @@
+-<Location /svn>
+-  <IfModule mod_dav_svn.c>
+-  DAV svn
+-  SVNParentPath {scmsvn/repos_path}
+-  
+-  # how to authenticate a user
+-  AuthzSVNAccessFile {core/data_path}/svnroot-access
+-  AuthType Basic
+-  AuthName "Document repository"
+-  AuthUserFile {core/data_path}/svnroot-authfile
+-  </IfModule>
+-  
+-  # only authenticated users may access the repository
+-  Require valid-user
+-</Location>
++# Disabled by disable-dav.patch
++# <Location /svn>
++#   <IfModule mod_dav_svn.c>
++#   DAV svn
++#   SVNParentPath {scmsvn/repos_path}
++#   
++#   # how to authenticate a user
++#   AuthzSVNAccessFile {core/data_path}/svnroot-access
++#   AuthType Basic
++#   AuthName "Document repository"
++#   AuthUserFile {core/data_path}/svnroot-authfile
++#   </IfModule>
++#   
++#   # only authenticated users may access the repository
++#   Require valid-user
++# </Location>

Deleted: trunk/src/debian/patches/disable-dav.patch
===================================================================
--- trunk/src/debian/patches/disable-dav.patch	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/debian/patches/disable-dav.patch	2012-05-21 09:59:30 UTC (rev 15539)
@@ -1,54 +0,0 @@
-Author: Roland Mas <lolando at debian.org>
-Description: Disable SVN-over-WebDAV
-Index: src/plugins/scmsvn/etc/scmsvn.ini
-===================================================================
---- src.orig/plugins/scmsvn/etc/scmsvn.ini
-+++ src/plugins/scmsvn/etc/scmsvn.ini
-@@ -7,9 +7,9 @@
- ; is available in installation_environment = development only.
- plugin_status = valid
- 
--use_dav = yes
-+use_dav = no
- use_ssl = "$core/use_ssl"
--use_ssh = no
-+use_ssh = yes
- anonsvn_login = anonsvn
- anonsvn_password = anonsvn
- default_server = "$core/web_host"
-Index: src/etc/httpd.conf.d/plugin-scmsvn.inc
-===================================================================
---- src.orig/etc/httpd.conf.d/plugin-scmsvn.inc
-+++ src/etc/httpd.conf.d/plugin-scmsvn.inc
-@@ -1,15 +1,16 @@
--<Location /svn>
--  <IfModule mod_dav_svn.c>
--  DAV svn
--  SVNParentPath {scmsvn/repos_path}
--  
--  # how to authenticate a user
--  AuthzSVNAccessFile {core/data_path}/svnroot-access
--  AuthType Basic
--  AuthName "Document repository"
--  AuthUserFile {core/data_path}/svnroot-authfile
--  </IfModule>
--  
--  # only authenticated users may access the repository
--  Require valid-user
--</Location>
-+# Disabled by disable-dav.patch
-+# <Location /svn>
-+#   <IfModule mod_dav_svn.c>
-+#   DAV svn
-+#   SVNParentPath {scmsvn/repos_path}
-+#   
-+#   # how to authenticate a user
-+#   AuthzSVNAccessFile {core/data_path}/svnroot-access
-+#   AuthType Basic
-+#   AuthName "Document repository"
-+#   AuthUserFile {core/data_path}/svnroot-authfile
-+#   </IfModule>
-+#   
-+#   # only authenticated users may access the repository
-+#   Require valid-user
-+# </Location>

Copied: trunk/src/debian/patches/disable-tracker-reply-by-email (from rev 15532, trunk/src/debian/patches/disable-tracker-reply-by-email.patch)
===================================================================
--- trunk/src/debian/patches/disable-tracker-reply-by-email	                        (rev 0)
+++ trunk/src/debian/patches/disable-tracker-reply-by-email	2012-05-21 09:59:30 UTC (rev 15539)
@@ -0,0 +1,18 @@
+Author: Roland Mas <lolando at debian.org>
+Description: Disable the blurb about replying to a bug via email
+at least until this is made to work.
+Index: src/common/tracker/Artifact.class.php
+===================================================================
+--- src.orig/common/tracker/Artifact.class.php
++++ src/common/tracker/Artifact.class.php
+@@ -1564,10 +1564,6 @@
+ 			"\n".util_make_url ('/tracker/?func=detail&atid='. $this->ArtifactType->getID() .
+ 					    "&aid=". $this->getID() .
+ 					    "&group_id=". $this->ArtifactType->Group->getID()) .
+-			"\nOr by replying to this e-mail entering your response between the following markers: ".
+-			"\n".ARTIFACT_MAIL_MARKER.
+-			"\n(enter your response here, only in plain text format)".
+-			"\n".ARTIFACT_MAIL_MARKER.
+ 			"\n\n".
+ 			$this->marker('status',$changes).
+ 			 "Status: ". $this->getStatusName() ."\n".

Deleted: trunk/src/debian/patches/disable-tracker-reply-by-email.patch
===================================================================
--- trunk/src/debian/patches/disable-tracker-reply-by-email.patch	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/debian/patches/disable-tracker-reply-by-email.patch	2012-05-21 09:59:30 UTC (rev 15539)
@@ -1,18 +0,0 @@
-Author: Roland Mas <lolando at debian.org>
-Description: Disable the blurb about replying to a bug via email
-at least until this is made to work.
-Index: src/common/tracker/Artifact.class.php
-===================================================================
---- src.orig/common/tracker/Artifact.class.php
-+++ src/common/tracker/Artifact.class.php
-@@ -1563,10 +1563,6 @@
- 			"\n".util_make_url ('/tracker/?func=detail&atid='. $this->ArtifactType->getID() .
- 					    "&aid=". $this->getID() .
- 					    "&group_id=". $this->ArtifactType->Group->getID()) .
--			"\nOr by replying to this e-mail entering your response between the following markers: ".
--			"\n".ARTIFACT_MAIL_MARKER.
--			"\n(enter your response here, only in plain text format)".
--			"\n".ARTIFACT_MAIL_MARKER.
- 			"\n\n".
- 			$this->marker('status',$changes).
- 			 "Status: ". $this->getStatusName() ."\n".

Copied: trunk/src/debian/patches/production-environment (from rev 15532, trunk/src/debian/patches/production-environment.patch)
===================================================================
--- trunk/src/debian/patches/production-environment	                        (rev 0)
+++ trunk/src/debian/patches/production-environment	2012-05-21 09:59:30 UTC (rev 15539)
@@ -0,0 +1,22 @@
+Author: Roland Mas <lolando at debian.org>
+Description: Default deployment is production, not development
+Index: src/etc/config.ini.d/debug.ini
+===================================================================
+--- src.orig/etc/config.ini.d/debug.ini
++++ src/etc/config.ini.d/debug.ini
+@@ -1,12 +1,12 @@
+ [core]
+ 
+-; Switch to "production" to remove extra debugging
+-installation_environment = development
++; Switch to "development" or "integration" to add extra debugging
++installation_environment = production
+ 
+ ; fine-grained control over debugging
+ 
+ ; enable debugging at all (overlay the page with pink box)
+-sysdebug_enable = true
++sysdebug_enable = false
+ 
+ ; enable the PHP Error Handler (default if sysdebug_enable)
+ sysdebug_phphandler = true

Deleted: trunk/src/debian/patches/production-environment.patch
===================================================================
--- trunk/src/debian/patches/production-environment.patch	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/debian/patches/production-environment.patch	2012-05-21 09:59:30 UTC (rev 15539)
@@ -1,22 +0,0 @@
-Author: Roland Mas <lolando at debian.org>
-Description: Default deployment is production, not development
-Index: src/etc/config.ini.d/debug.ini
-===================================================================
---- src.orig/etc/config.ini.d/debug.ini
-+++ src/etc/config.ini.d/debug.ini
-@@ -1,12 +1,12 @@
- [core]
- 
--; Switch to "production" to remove extra debugging
--installation_environment = development
-+; Switch to "development" or "integration" to add extra debugging
-+installation_environment = production
- 
- ; fine-grained control over debugging
- 
- ; enable debugging at all (overlay the page with pink box)
--sysdebug_enable = true
-+sysdebug_enable = false
- 
- ; enable the PHP Error Handler (default if sysdebug_enable)
- sysdebug_phphandler = true

Modified: trunk/src/debian/patches/series
===================================================================
--- trunk/src/debian/patches/series	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/debian/patches/series	2012-05-21 09:59:30 UTC (rev 15539)
@@ -1,11 +1,11 @@
-disable-tracker-reply-by-email.patch
-disable-dav.patch
-use-snoopy-from-distro.patch
-use-nusoap-from-distro.patch
-use-jquery-from-distro.patch
-use-simplepie-from-distro.patch
+disable-tracker-reply-by-email
+disable-dav
+use-snoopy-from-distro
+use-nusoap-from-distro
+use-jquery-from-distro
+use-simplepie-from-distro
 use-yui-from-distro
 upgrade-db-location
 upgrade-db-noninteractive
-production-environment.patch
+production-environment
 disable-authcas

Copied: trunk/src/debian/patches/use-jquery-from-distro (from rev 15532, trunk/src/debian/patches/use-jquery-from-distro.patch)
===================================================================
--- trunk/src/debian/patches/use-jquery-from-distro	                        (rev 0)
+++ trunk/src/debian/patches/use-jquery-from-distro	2012-05-21 09:59:30 UTC (rev 15539)
@@ -0,0 +1,15 @@
+Author: Roland Mas <lolando at debian.org>
+Description: Use JQuery as provided by the libjs-jquery Debian package
+Index: src/www/include/html.php
+===================================================================
+--- src.orig/www/include/html.php
++++ src/www/include/html.php
+@@ -377,7 +377,7 @@
+ }
+ 
+ function html_use_jquery() {
+-	use_javascript('/scripts/jquery/jquery-1.4.2.min.js');
++	use_javascript('/scripts/jquery/jquery.min.js');
+ }
+ 
+ function html_use_tooltips() {

Deleted: trunk/src/debian/patches/use-jquery-from-distro.patch
===================================================================
--- trunk/src/debian/patches/use-jquery-from-distro.patch	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/debian/patches/use-jquery-from-distro.patch	2012-05-21 09:59:30 UTC (rev 15539)
@@ -1,15 +0,0 @@
-Author: Roland Mas <lolando at debian.org>
-Description: Use JQuery as provided by the libjs-jquery Debian package
-Index: src/www/include/html.php
-===================================================================
---- src.orig/www/include/html.php
-+++ src/www/include/html.php
-@@ -371,7 +371,7 @@
- }
- 
- function html_use_jquery() {
--	use_javascript('/scripts/jquery/jquery-1.4.2.min.js');
-+	use_javascript('/scripts/jquery/jquery.min.js');
- }
- 
- function html_use_tooltips() {

Copied: trunk/src/debian/patches/use-nusoap-from-distro (from rev 15532, trunk/src/debian/patches/use-nusoap-from-distro.patch)
===================================================================
--- trunk/src/debian/patches/use-nusoap-from-distro	                        (rev 0)
+++ trunk/src/debian/patches/use-nusoap-from-distro	2012-05-21 09:59:30 UTC (rev 15539)
@@ -0,0 +1,16 @@
+Author: Olivier Berger <olivier.berger at it-sudparis.eu>
+Description: Use NUSOAP as provided by the libnusoap-php Debian package
+Index: src/www/soap/index.php
+===================================================================
+--- src.orig/www/soap/index.php
++++ src/www/soap/index.php
+@@ -14,7 +14,8 @@
+ 
+ $uri = 'http://'.forge_get_config('web_host');
+ // 1. include client and server
+-require_once $gfwww.'soap/nusoap.php';
++#require_once $gfwww.'soap/nusoap.php';
++require_once '/usr/share/php/nusoap/nusoap.php';
+ //$debug = true;
+ // 2. instantiate server object
+ $server = new soap_server();

Deleted: trunk/src/debian/patches/use-nusoap-from-distro.patch
===================================================================
--- trunk/src/debian/patches/use-nusoap-from-distro.patch	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/debian/patches/use-nusoap-from-distro.patch	2012-05-21 09:59:30 UTC (rev 15539)
@@ -1,16 +0,0 @@
-Author: Olivier Berger <olivier.berger at it-sudparis.eu>
-Description: Use NUSOAP as provided by the libnusoap-php Debian package
-Index: src/www/soap/index.php
-===================================================================
---- src.orig/www/soap/index.php
-+++ src/www/soap/index.php
-@@ -14,7 +14,8 @@
- 
- $uri = 'http://'.forge_get_config('web_host');
- // 1. include client and server
--require_once $gfwww.'soap/nusoap.php';
-+#require_once $gfwww.'soap/nusoap.php';
-+require_once '/usr/share/php/nusoap/nusoap.php';
- //$debug = true;
- // 2. instantiate server object
- $server = new soap_server();

Copied: trunk/src/debian/patches/use-simplepie-from-distro (from rev 15532, trunk/src/debian/patches/use-simplepie-from-distro.patch)
===================================================================
--- trunk/src/debian/patches/use-simplepie-from-distro	                        (rev 0)
+++ trunk/src/debian/patches/use-simplepie-from-distro	2012-05-21 09:59:30 UTC (rev 15539)
@@ -0,0 +1,13758 @@
+Author: Roland Mas <lolando at debian.org>
+Description: Use SimplePie as provided by the libphp-simplepie Debian package
+Index: src/common/widget/Widget_Rss.class.php
+===================================================================
+--- src.orig/common/widget/Widget_Rss.class.php
++++ src/common/widget/Widget_Rss.class.php
+@@ -49,7 +49,7 @@
+ 					return idn_to_unicode($param);
+ 				}
+ 			}
+-			require_once('common/rss/simplepie.inc');
++			require_once('/usr/share/php/simplepie/simplepie.inc');
+ 			if (!is_dir(forge_get_config('data_path') .'/rss')) {
+ 				mkdir(forge_get_config('data_path') .'/rss');
+ 			}
+@@ -132,12 +132,7 @@
+ 			$vTitle = new Valid_String('title');
+ 			$vTitle->required();
+ 			if (!$request->validInArray('rss', $vTitle)) {
+-				if (function_exists('idn_to_utf8()')) {
+-					require_once('simplepie/simplepie.inc');
+-				}
+-				else {
+-					require_once('common/rss/simplepie.inc');
+-				}
++				require_once('/usr/share/php/simplepie/simplepie.inc');
+ 				if (!is_dir(forge_get_config('data_path') .'/rss')) {
+ 					mkdir(forge_get_config('data_path') .'/rss');
+ 				}
+Index: src/common/rss/simplepie.inc
+===================================================================
+--- src.orig/common/rss/simplepie.inc
++++ /dev/null
+@@ -1,13724 +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-2008, 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.
+- *
+- * @package SimplePie
+- * @version 1.1.3
+- * @copyright 2004-2008 Ryan Parman, Geoffrey Sneddon
+- * @author Ryan Parman
+- * @author Geoffrey Sneddon
+- * @link http://simplepie.org/ SimplePie
+- * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
+- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+- * @todo phpDoc comments
+- */
+-
+-/**
+- * SimplePie Name
+- */
+-define('SIMPLEPIE_NAME', 'SimplePie');
+-
+-/**
+- * SimplePie Version
+- */
+-define('SIMPLEPIE_VERSION', '1.1.3');
+-
+-/**
+- * SimplePie Build
+- */
+-define('SIMPLEPIE_BUILD', 20081219);
+-
+-/**
+- * 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);
+-
+-/**
+- * 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
+- */
+-define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG', 'http://search.yahoo.com/mrss');
+-
+-/**
+- * 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/');
+-
+-/**
+- * Whether we're running on PHP5
+- */
+-define('SIMPLEPIE_PHP5', version_compare(PHP_VERSION, '5.0.0', '>='));
+-
+-/**
+- * 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
+- * @version "Razzleberry"
+- * @copyright 2004-2007 Ryan Parman, Geoffrey Sneddon
+- * @author Ryan Parman
+- * @author Geoffrey Sneddon
+- * @todo Option for type of fetching (cache, not modified header, fetch, etc.)
+- */
+-class SimplePie
+-{
+-	/**
+-	 * @var array Raw data
+-	 * @access private
+-	 */
+-	var $data = array();
+-
+-	/**
+-	 * @var mixed Error string
+-	 * @access private
+-	 */
+-	var $error;
+-
+-	/**
+-	 * @var object Instance of SimplePie_Sanitize (or other class)
+-	 * @see SimplePie::set_sanitize_class()
+-	 * @access private
+-	 */
+-	var $sanitize;
+-
+-	/**
+-	 * @var string SimplePie Useragent
+-	 * @see SimplePie::set_useragent()
+-	 * @access private
+-	 */
+-	var $useragent = SIMPLEPIE_USERAGENT;
+-
+-	/**
+-	 * @var string Feed URL
+-	 * @see SimplePie::set_feed_url()
+-	 * @access private
+-	 */
+-	var $feed_url;
+-
+-	/**
+-	 * @var object Instance of SimplePie_File to use as a feed
+-	 * @see SimplePie::set_file()
+-	 * @access private
+-	 */
+-	var $file;
+-
+-	/**
+-	 * @var string Raw feed data
+-	 * @see SimplePie::set_raw_data()
+-	 * @access private
+-	 */
+-	var $raw_data;
+-
+-	/**
+-	 * @var int Timeout for fetching remote files
+-	 * @see SimplePie::set_timeout()
+-	 * @access private
+-	 */
+-	var $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
+-	 */
+-	var $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
+-	 */
+-	var $force_feed = false;
+-
+-	/**
+-	 * @var bool Enable/Disable XML dump
+-	 * @see SimplePie::enable_xml_dump()
+-	 * @access private
+-	 */
+-	var $xml_dump = false;
+-
+-	/**
+-	 * @var bool Enable/Disable Caching
+-	 * @see SimplePie::enable_cache()
+-	 * @access private
+-	 */
+-	var $cache = true;
+-
+-	/**
+-	 * @var int Cache duration (in seconds)
+-	 * @see SimplePie::set_cache_duration()
+-	 * @access private
+-	 */
+-	var $cache_duration = 3600;
+-
+-	/**
+-	 * @var int Auto-discovery cache duration (in seconds)
+-	 * @see SimplePie::set_autodiscovery_cache_duration()
+-	 * @access private
+-	 */
+-	var $autodiscovery_cache_duration = 604800; // 7 Days.
+-
+-	/**
+-	 * @var string Cache location (relative to executing script)
+-	 * @see SimplePie::set_cache_location()
+-	 * @access private
+-	 */
+-	var $cache_location = './cache';
+-
+-	/**
+-	 * @var string Function that creates the cache filename
+-	 * @see SimplePie::set_cache_name_function()
+-	 * @access private
+-	 */
+-	var $cache_name_function = 'md5';
+-
+-	/**
+-	 * @var bool Reorder feed by date descending
+-	 * @see SimplePie::enable_order_by_date()
+-	 * @access private
+-	 */
+-	var $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
+-	 */
+-	var $input_encoding = false;
+-
+-	/**
+-	 * @var int Feed Autodiscovery Level
+-	 * @see SimplePie::set_autodiscovery_level()
+-	 * @access private
+-	 */
+-	var $autodiscovery = SIMPLEPIE_LOCATOR_ALL;
+-
+-	/**
+-	 * @var string Class used for caching feeds
+-	 * @see SimplePie::set_cache_class()
+-	 * @access private
+-	 */
+-	var $cache_class = 'SimplePie_Cache';
+-
+-	/**
+-	 * @var string Class used for locating feeds
+-	 * @see SimplePie::set_locator_class()
+-	 * @access private
+-	 */
+-	var $locator_class = 'SimplePie_Locator';
+-
+-	/**
+-	 * @var string Class used for parsing feeds
+-	 * @see SimplePie::set_parser_class()
+-	 * @access private
+-	 */
+-	var $parser_class = 'SimplePie_Parser';
+-
+-	/**
+-	 * @var string Class used for fetching feeds
+-	 * @see SimplePie::set_file_class()
+-	 * @access private
+-	 */
+-	var $file_class = 'SimplePie_File';
+-
+-	/**
+-	 * @var string Class used for items
+-	 * @see SimplePie::set_item_class()
+-	 * @access private
+-	 */
+-	var $item_class = 'SimplePie_Item';
+-
+-	/**
+-	 * @var string Class used for authors
+-	 * @see SimplePie::set_author_class()
+-	 * @access private
+-	 */
+-	var $author_class = 'SimplePie_Author';
+-
+-	/**
+-	 * @var string Class used for categories
+-	 * @see SimplePie::set_category_class()
+-	 * @access private
+-	 */
+-	var $category_class = 'SimplePie_Category';
+-
+-	/**
+-	 * @var string Class used for enclosures
+-	 * @see SimplePie::set_enclosures_class()
+-	 * @access private
+-	 */
+-	var $enclosure_class = 'SimplePie_Enclosure';
+-
+-	/**
+-	 * @var string Class used for Media RSS <media:text> captions
+-	 * @see SimplePie::set_caption_class()
+-	 * @access private
+-	 */
+-	var $caption_class = 'SimplePie_Caption';
+-
+-	/**
+-	 * @var string Class used for Media RSS <media:copyright>
+-	 * @see SimplePie::set_copyright_class()
+-	 * @access private
+-	 */
+-	var $copyright_class = 'SimplePie_Copyright';
+-
+-	/**
+-	 * @var string Class used for Media RSS <media:credit>
+-	 * @see SimplePie::set_credit_class()
+-	 * @access private
+-	 */
+-	var $credit_class = 'SimplePie_Credit';
+-
+-	/**
+-	 * @var string Class used for Media RSS <media:rating>
+-	 * @see SimplePie::set_rating_class()
+-	 * @access private
+-	 */
+-	var $rating_class = 'SimplePie_Rating';
+-
+-	/**
+-	 * @var string Class used for Media RSS <media:restriction>
+-	 * @see SimplePie::set_restriction_class()
+-	 * @access private
+-	 */
+-	var $restriction_class = 'SimplePie_Restriction';
+-
+-	/**
+-	 * @var string Class used for content-type sniffing
+-	 * @see SimplePie::set_content_type_sniffer_class()
+-	 * @access private
+-	 */
+-	var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer';
+-
+-	/**
+-	 * @var string Class used for item sources.
+-	 * @see SimplePie::set_source_class()
+-	 * @access private
+-	 */
+-	var $source_class = 'SimplePie_Source';
+-
+-	/**
+-	 * @var mixed Set javascript query string parameter (false, or
+-	 * anything type-cast to false, disables this feature)
+-	 * @see SimplePie::set_javascript()
+-	 * @access private
+-	 */
+-	var $javascript = 'js';
+-
+-	/**
+-	 * @var int Maximum number of feeds to check with autodiscovery
+-	 * @see SimplePie::set_max_checked_feeds()
+-	 * @access private
+-	 */
+-	var $max_checked_feeds = 10;
+-
+-	/**
+-	 * @var string Web-accessible path to the handler_favicon.php file.
+-	 * @see SimplePie::set_favicon_handler()
+-	 * @access private
+-	 */
+-	var $favicon_handler = '';
+-
+-	/**
+-	 * @var string Web-accessible path to the handler_image.php file.
+-	 * @see SimplePie::set_image_handler()
+-	 * @access private
+-	 */
+-	var $image_handler = '';
+-
+-	/**
+-	 * @var array Stores the URLs when multiple feeds are being initialized.
+-	 * @see SimplePie::set_feed_url()
+-	 * @access private
+-	 */
+-	var $multifeed_url = array();
+-
+-	/**
+-	 * @var array Stores SimplePie objects when multiple feeds initialized.
+-	 * @access private
+-	 */
+-	var $multifeed_objects = array();
+-
+-	/**
+-	 * @var array Stores the get_object_vars() array for use with multifeeds.
+-	 * @see SimplePie::set_feed_url()
+-	 * @access private
+-	 */
+-	var $config_settings = null;
+-
+-	/**
+-	 * @var integer Stores the number of items to return per-feed with multifeeds.
+-	 * @see SimplePie::set_item_limit()
+-	 * @access private
+-	 */
+-	var $item_limit = 0;
+-
+-	/**
+-	 * @var array Stores the default attributes to be stripped by strip_attributes().
+-	 * @see SimplePie::strip_attributes()
+-	 * @access private
+-	 */
+-	var $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
+-	 */
+-	var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
+-
+-	/**
+-	 * @var string proxy used to fetch feeds
+-	 * @see SimplePie::set_proxy()
+-	 * @access private
+-	 */
+-	var $proxy = "";
+-
+-	/**
+-	 * The SimplePie class contains feed level data and options
+-	 *
+-	 * There are two ways that you can create a new SimplePie object. The first
+-	 * is by passing a feed URL as a parameter to the SimplePie constructor
+-	 * (as well as optionally setting the cache location and cache expiry). This
+-	 * will initialise the whole feed with all of the default settings, and you
+-	 * can begin accessing methods and properties immediately.
+-	 *
+-	 * The second way is to create the SimplePie object with no parameters
+-	 * at all. This will enable you to set configuration options. 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. This format is
+-	 * what is used throughout this documentation.
+-	 *
+-	 * @access public
+-	 * @since 1.0 Preview Release
+-	 * @param string $feed_url This is the URL you want to parse.
+-	 * @param string $cache_location This is where you want the cache to be stored.
+-	 * @param int $cache_duration This is the number of seconds that you want to store the cache file for.
+-	 * @param string $proxy This is the proxy "host:port" used to fetch feeds
+-	 */
+-	function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null, $proxy = null)
+-	{
+-		// Other objects, instances created here so we can set options on them
+-		$this->sanitize = new SimplePie_Sanitize;
+-
+-		// Set options if they're passed to the constructor
+-		if ($cache_location !== null)
+-		{
+-			$this->set_cache_location($cache_location);
+-		}
+-
+-		if ($cache_duration !== null)
+-		{
+-			$this->set_cache_duration($cache_duration);
+-		}
+-
+-		if ($proxy !== null)
+-		{
+-			$this->set_proxy($proxy);
+-		}
+-
+-		// Only init the script if we're passed a feed URL
+-		if ($feed_url !== null)
+-		{
+-			$this->set_feed_url($feed_url);
+-			$this->init();
+-		}
+-	}
+-
+-	/**
+-	 * Used for converting object to a string
+-	 */
+-	function __toString()
+-	{
+-		return md5(serialize($this->data));
+-	}
+-
+-	/**
+-	 * Remove items that link back to this before destroying this object
+-	 */
+-	function __destruct()
+-	{
+-		if (!empty($this->data['items']))
+-		{
+-			foreach ($this->data['items'] as $item)
+-			{
+-				$item->__destruct();
+-			}
+-			unset($this->data['items']);
+-		}
+-		if (!empty($this->data['ordered_items']))
+-		{
+-			foreach ($this->data['ordered_items'] as $item)
+-			{
+-				$item->__destruct();
+-			}
+-			unset($this->data['ordered_items']);
+-		}
+-	}
+-
+-	/**
+-	 * Force the given data/URL to be treated as a feed no matter what it
+-	 * appears like
+-	 *
+-	 * @access public
+-	 * @since 1.1
+-	 * @param bool $enable Force the given data/URL to be treated as a feed
+-	 */
+-	function force_feed($enable = false)
+-	{
+-		$this->force_feed = (bool) $enable;
+-	}
+-
+-	/**
+-	 * This is 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.
+-	 *
+-	 * @access public
+-	 * @since 1.0 Preview Release
+-	 * @param mixed $url This is the URL (or array of URLs) that you want to parse.
+-	 * @see SimplePie::set_raw_data()
+-	 */
+-	function set_feed_url($url)
+-	{
+-		if (is_array($url))
+-		{
+-			$this->multifeed_url = array();
+-			foreach ($url as $value)
+-			{
+-				$this->multifeed_url[] = SimplePie_Misc::fix_protocol($value, 1);
+-			}
+-		}
+-		else
+-		{
+-			$this->feed_url = SimplePie_Misc::fix_protocol($url, 1);
+-		}
+-	}
+-
+-	/**
+-	 * This is the proxy used to fetch feeds
+-	 *
+-	 * @access public
+-	 * @param string $proxy This is the URL of the proxy "host:port"
+-	 */
+-	function set_proxy($proxy)
+-	{
+-		$this->proxy = $proxy;
+-		$this->sanitize->proxy = $proxy;
+-	}
+-
+-	/**
+-	 * Provides an instance of SimplePie_File to use as a feed
+-	 *
+-	 * @access public
+-	 * @param object &$file Instance of SimplePie_File (or subclass)
+-	 * @return bool True on success, false on failure
+-	 */
+-	function set_file(&$file)
+-	{
+-		if (is_a($file, 'SimplePie_File'))
+-		{
+-			$this->feed_url = $file->url;
+-			$this->file =& $file;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * 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.
+-	 *
+-	 * @access public
+-	 * @since 1.0 Beta 3
+-	 * @param string $data RSS or Atom data as a string.
+-	 * @see SimplePie::set_feed_url()
+-	 */
+-	function set_raw_data($data)
+-	{
+-		$this->raw_data = $data;
+-	}
+-
+-	/**
+-	 * Allows you to override 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.
+-	 *
+-	 * @access public
+-	 * @since 1.0 Beta 3
+-	 * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed.
+-	 */
+-	function set_timeout($timeout = 10)
+-	{
+-		$this->timeout = (int) $timeout;
+-	}
+-
+-	/**
+-	 * Forces SimplePie to use fsockopen() instead of the preferred cURL
+-	 * functions.
+-	 *
+-	 * @access public
+-	 * @since 1.0 Beta 3
+-	 * @param bool $enable Force fsockopen() to be used
+-	 */
+-	function force_fsockopen($enable = false)
+-	{
+-		$this->force_fsockopen = (bool) $enable;
+-	}
+-
+-	/**
+-	 * Outputs the raw XML content of the feed, after it has gone through
+-	 * SimplePie's filters.
+-	 *
+-	 * Used only for debugging, this function will output the XML content as
+-	 * text/xml. When SimplePie reads in a feed, it does a bit of cleaning up
+-	 * before trying to parse it. Many parts of the feed are re-written in
+-	 * memory, and in the end, you have a parsable feed. XML dump shows you the
+-	 * actual XML that SimplePie tries to parse, which may or may not be very
+-	 * different from the original feed.
+-	 *
+-	 * @access public
+-	 * @since 1.0 Preview Release
+-	 * @param bool $enable Enable XML dump
+-	 */
+-	function enable_xml_dump($enable = false)
+-	{
+-		$this->xml_dump = (bool) $enable;
+-	}
+-
+-	/**
+-	 * Enables/disables caching in SimplePie.
+-	 *
+-	 * This option allows you to disable caching all-together in SimplePie.
+-	 * However, disabling the cache can lead to longer load times.
+-	 *
+-	 * @access public
+-	 * @since 1.0 Preview Release
+-	 * @param bool $enable Enable caching
+-	 */
+-	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.
+-	 *
+-	 * @access public
+-	 * @param int $seconds The feed content cache duration.
+-	 */
+-	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.
+-	 *
+-	 * @access public
+-	 * @param int $seconds The autodiscovered feed URL cache duration.
+-	 */
+-	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.
+-	 *
+-	 * @access public
+-	 * @param string $location The file system location.
+-	 */
+-	function set_cache_location($location = './cache')
+-	{
+-		$this->cache_location = (string) $location;
+-	}
+-
+-	/**
+-	 * Determines whether feed items should be sorted into reverse chronological order.
+-	 *
+-	 * @access public
+-	 * @param bool $enable Sort as reverse chronological order.
+-	 */
+-	function enable_order_by_date($enable = true)
+-	{
+-		$this->order_by_date = (bool) $enable;
+-	}
+-
+-	/**
+-	 * Allows you to override the character encoding reported by the feed.
+-	 *
+-	 * @access public
+-	 * @param string $encoding Character encoding.
+-	 */
+-	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
+-	 *
+-	 * @access public
+-	 * @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)
+-	 */
+-	function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL)
+-	{
+-		$this->autodiscovery = (int) $level;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for caching.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_cache_class($class = 'SimplePie_Cache')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Cache'))
+-		{
+-			$this->cache_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for auto-discovery.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_locator_class($class = 'SimplePie_Locator')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Locator'))
+-		{
+-			$this->locator_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for XML parsing.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_parser_class($class = 'SimplePie_Parser')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Parser'))
+-		{
+-			$this->parser_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for remote file fetching.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_file_class($class = 'SimplePie_File')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_File'))
+-		{
+-			$this->file_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for data sanitization.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_sanitize_class($class = 'SimplePie_Sanitize')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Sanitize'))
+-		{
+-			$this->sanitize = new $class;
+-			$this->sanitize->proxy = $this->proxy;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for handling feed items.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_item_class($class = 'SimplePie_Item')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Item'))
+-		{
+-			$this->item_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for handling author data.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_author_class($class = 'SimplePie_Author')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Author'))
+-		{
+-			$this->author_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for handling category data.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_category_class($class = 'SimplePie_Category')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Category'))
+-		{
+-			$this->category_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for feed enclosures.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_enclosure_class($class = 'SimplePie_Enclosure')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Enclosure'))
+-		{
+-			$this->enclosure_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for <media:text> captions
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_caption_class($class = 'SimplePie_Caption')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Caption'))
+-		{
+-			$this->caption_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for <media:copyright>
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_copyright_class($class = 'SimplePie_Copyright')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Copyright'))
+-		{
+-			$this->copyright_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for <media:credit>
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_credit_class($class = 'SimplePie_Credit')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Credit'))
+-		{
+-			$this->credit_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for <media:rating>
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_rating_class($class = 'SimplePie_Rating')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Rating'))
+-		{
+-			$this->rating_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for <media:restriction>
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_restriction_class($class = 'SimplePie_Restriction')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Restriction'))
+-		{
+-			$this->restriction_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses for content-type sniffing.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_content_type_sniffer_class($class = 'SimplePie_Content_Type_Sniffer')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Content_Type_Sniffer'))
+-		{
+-			$this->content_type_sniffer_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to change which class SimplePie uses item sources.
+-	 * Useful when you are overloading or extending SimplePie's default classes.
+-	 *
+-	 * @access public
+-	 * @param string $class Name of custom class.
+-	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+-	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+-	 */
+-	function set_source_class($class = 'SimplePie_Source')
+-	{
+-		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Source'))
+-		{
+-			$this->source_class = $class;
+-			return true;
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Allows you to override the default user agent string.
+-	 *
+-	 * @access public
+-	 * @param string $ua New user agent string.
+-	 */
+-	function set_useragent($ua = SIMPLEPIE_USERAGENT)
+-	{
+-		$this->useragent = (string) $ua;
+-	}
+-
+-	/**
+-	 * Set callback function to create cache filename with
+-	 *
+-	 * @access public
+-	 * @param mixed $function Callback function
+-	 */
+-	function set_cache_name_function($function = 'md5')
+-	{
+-		if (is_callable($function))
+-		{
+-			$this->cache_name_function = $function;
+-		}
+-	}
+-
+-	/**
+-	 * Set javascript query string parameter
+-	 *
+-	 * @access public
+-	 * @param mixed $get Javascript query string parameter
+-	 */
+-	function set_javascript($get = 'js')
+-	{
+-		if ($get)
+-		{
+-			$this->javascript = (string) $get;
+-		}
+-		else
+-		{
+-			$this->javascript = false;
+-		}
+-	}
+-
+-	/**
+-	 * Set options to make SP as fast as possible.  Forgoes a
+-	 * substantial amount of data sanitization in favor of speed.
+-	 *
+-	 * @access public
+-	 * @param bool $set Whether to set them or not
+-	 */
+-	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
+-	 *
+-	 * @access public
+-	 * @param int $max Maximum number of feeds to check
+-	 */
+-	function set_max_checked_feeds($max = 10)
+-	{
+-		$this->max_checked_feeds = (int) $max;
+-	}
+-
+-	function remove_div($enable = true)
+-	{
+-		$this->sanitize->remove_div($enable);
+-	}
+-
+-	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);
+-		}
+-	}
+-
+-	function encode_instead_of_strip($enable = true)
+-	{
+-		$this->sanitize->encode_instead_of_strip($enable);
+-	}
+-
+-	function strip_attributes($attribs = '')
+-	{
+-		if ($attribs === '')
+-		{
+-			$attribs = $this->strip_attributes;
+-		}
+-		$this->sanitize->strip_attributes($attribs);
+-	}
+-
+-	function set_output_encoding($encoding = 'UTF-8')
+-	{
+-		$this->sanitize->set_output_encoding($encoding);
+-	}
+-
+-	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
+-	 *
+-	 * @access public
+-	 * @since 1.0
+-	 * @param array $element_attribute Element/attribute key/value pairs
+-	 */
+-	function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
+-	{
+-		$this->sanitize->set_url_replacements($element_attribute);
+-	}
+-
+-	/**
+-	 * Set the handler to enable the display of cached favicons.
+-	 *
+-	 * @access public
+-	 * @param str $page Web-accessible path to the handler_favicon.php file.
+-	 * @param str $qs The query string that the value should be passed to.
+-	 */
+-	function set_favicon_handler($page = false, $qs = 'i')
+-	{
+-		if ($page != false)
+-		{
+-			$this->favicon_handler = $page . '?' . $qs . '=';
+-		}
+-		else
+-		{
+-			$this->favicon_handler = '';
+-		}
+-	}
+-
+-	/**
+-	 * Set the handler to enable the display of cached images.
+-	 *
+-	 * @access public
+-	 * @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.
+-	 */
+-	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.
+-	 *
+-	 * @access public
+-	 * @param integer $limit The maximum number of items to return.
+-	 */
+-	function set_item_limit($limit = 0)
+-	{
+-		$this->item_limit = (int) $limit;
+-	}
+-
+-	function init()
+-	{
+-		if ((function_exists('version_compare') && version_compare(PHP_VERSION, '4.3.0', '<')) || !extension_loaded('xml') || !extension_loaded('pcre'))
+-		{
+-			return false;
+-		}
+-		if (isset($_GET[$this->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_odeo(link) {
+-	document.writeln('<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url='+link+'"></embed>');
+-}
+-
+-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
+-			exit;
+-		}
+-
+-		// Pass whatever was set with config options over to the sanitizer.
+-		$this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->cache_class);
+-		$this->sanitize->pass_file_data($this->file_class, $this->timeout, $this->useragent, $this->force_fsockopen);
+-
+-		if ($this->feed_url !== null || $this->raw_data !== null)
+-		{
+-			$this->data = array();
+-			$this->multifeed_objects = array();
+-			$cache = false;
+-
+-			if ($this->feed_url !== null)
+-			{
+-				$parsed_feed_url = SimplePie_Misc::parse_url($this->feed_url);
+-				// Decide whether to enable caching
+-				if ($this->cache && $parsed_feed_url['scheme'] !== '')
+-				{
+-					$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc');
+-				}
+-				// If it's enabled and we don't want an XML dump, use the cache
+-				if ($cache && !$this->xml_dump)
+-				{
+-					// 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'])
+-								{
+-									$cache->unlink();
+-									$this->data = array();
+-								}
+-								else
+-								{
+-									$this->set_feed_url($this->data['feed_url']);
+-									return $this->init();
+-								}
+-							}
+-						}
+-						// 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();
+-								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 = new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen, $this->proxy);
+-								if ($file->success)
+-								{
+-									if ($file->status_code == 304)
+-									{
+-										$cache->touch();
+-										return true;
+-									}
+-									else
+-									{
+-										$headers = $file->headers;
+-									}
+-								}
+-								else
+-								{
+-									unset($file);
+-								}
+-							}
+-						}
+-						// If the cache is still valid, just return true
+-						else
+-						{
+-							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 (is_a($this->file, 'SimplePie_File') && $this->file->url == $this->feed_url)
+-					{
+-						$file =& $this->file;
+-					}
+-					else
+-					{
+-						$file = new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen, $this->proxy);
+-					}
+-				}
+-				// If the file connection has an error, set SimplePie::error to that and quit
+-				if (!$file->success)
+-				{
+-					$this->error = $file->error;
+-					if (!empty($this->data))
+-					{
+-						return true;
+-					}
+-					else
+-					{
+-						return false;
+-					}
+-				}
+-
+-				if (!$this->force_feed)
+-				{
+-					// Check if the supplied URL is a feed, if it isn't, look for it.
+-					$locate = new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds, $this->content_type_sniffer_class);
+-					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);
+-						if ($file = $locate->find($this->autodiscovery))
+-						{
+-							if ($cache)
+-							{
+-								$this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD);
+-								if (!$cache->save($this))
+-								{
+-									trigger_error("$cache->name is not writeable", E_USER_WARNING);
+-								}
+-								$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc');
+-							}
+-							$this->feed_url = $file->url;
+-						}
+-						else
+-						{
+-							$this->error = "A feed could not be found at $this->feed_url";
+-							SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+-							return false;
+-						}
+-					}
+-					$locate = null;
+-				}
+-
+-				$headers = $file->headers;
+-				$data = $file->body;
+-				$sniffer = new $this->content_type_sniffer_class($file);
+-				$sniffed = $sniffer->get_type();
+-			}
+-			else
+-			{
+-				$data = $this->raw_data;
+-			}
+-
+-			// 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, SimplePie_Misc::xml_encoding($data));
+-					$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, SimplePie_Misc::xml_encoding($data));
+-			$encodings[] = 'UTF-8';
+-			$encodings[] = 'ISO-8859-1';
+-
+-			// There's no point in trying an encoding twice
+-			$encodings = array_unique($encodings);
+-
+-			// If we want the XML, just output that with the most likely encoding and quit
+-			if ($this->xml_dump)
+-			{
+-				header('Content-type: text/xml; charset=' . $encodings[0]);
+-				echo $data;
+-				exit;
+-			}
+-
+-			// 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 = SimplePie_Misc::change_encoding($data, $encoding, 'UTF-8'))
+-				{
+-					// Create new parser
+-					$parser = new $this->parser_class();
+-
+-					// If it's parsed fine
+-					if ($parser->parse($utf8_data, 'UTF-8'))
+-					{
+-						$this->data = $parser->get_data();
+-						if ($this->get_type() & ~SIMPLEPIE_TYPE_NONE)
+-						{
+-							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("$cache->name is not writeable", E_USER_WARNING);
+-							}
+-							return true;
+-						}
+-						else
+-						{
+-							$this->error = "A feed could not be found at $this->feed_url";
+-							SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+-							return false;
+-						}
+-					}
+-				}
+-			}
+-			// We have an error, just set SimplePie::error to it and quit
+-			$this->error = sprintf('XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
+-			SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+-			return false;
+-		}
+-		elseif (!empty($this->multifeed_url))
+-		{
+-			$i = 0;
+-			$success = 0;
+-			$this->multifeed_objects = array();
+-			foreach ($this->multifeed_url as $url)
+-			{
+-				if (SIMPLEPIE_PHP5)
+-				{
+-					// This keyword needs to defy coding standards for PHP4 compatibility
+-					$this->multifeed_objects[$i] = clone($this);
+-				}
+-				else
+-				{
+-					$this->multifeed_objects[$i] = $this;
+-				}
+-				$this->multifeed_objects[$i]->set_feed_url($url);
+-				$success |= $this->multifeed_objects[$i]->init();
+-				$i++;
+-			}
+-			return (bool) $success;
+-		}
+-		else
+-		{
+-			return false;
+-		}
+-	}
+-
+-	/**
+-	 * Return the error message for the occured error
+-	 *
+-	 * @access public
+-	 * @return string Error message
+-	 */
+-	function error()
+-	{
+-		return $this->error;
+-	}
+-
+-	function get_encoding()
+-	{
+-		return $this->sanitize->output_encoding;
+-	}
+-
+-	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);
+-		}
+-	}
+-
+-	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']['']['rss']))
+-			{
+-				$this->data['type'] &= SIMPLEPIE_TYPE_RSS_ALL;
+-				if (isset($this->data['child']['']['rss'][0]['attribs']['']['version']))
+-				{
+-					switch (trim($this->data['child']['']['rss'][0]['attribs']['']['version']))
+-					{
+-						case '0.91':
+-							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_091;
+-							if (isset($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data']))
+-							{
+-								switch (trim($this->data['child']['']['rss'][0]['child']['']['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'];
+-	}
+-
+-	/**
+-	 * Returns the URL for the favicon of the feed's website.
+-	 *
+-	 * @todo Cache atom:icon
+-	 * @access public
+-	 * @since 1.0
+-	 */
+-	function get_favicon()
+-	{
+-		if ($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 (($url = $this->get_link()) !== null && preg_match('/^http(s)?:\/\//i', $url))
+-		{
+-			$favicon = SimplePie_Misc::absolutize_url('/favicon.ico', $url);
+-
+-			if ($this->cache && $this->favicon_handler)
+-			{
+-				$favicon_filename = call_user_func($this->cache_name_function, $favicon);
+-				$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $favicon_filename, 'spi');
+-
+-				if ($cache->load())
+-				{
+-					return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI);
+-				}
+-				else
+-				{
+-					$file = new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen, $this->proxy);
+-
+-					if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)) && strlen($file->body) > 0)
+-					{
+-						$sniffer = new $this->content_type_sniffer_class($file);
+-						if (substr($sniffer->get_type(), 0, 6) === 'image/')
+-						{
+-							if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
+-							{
+-								return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI);
+-							}
+-							else
+-							{
+-								trigger_error("$cache->name is not writeable", E_USER_WARNING);
+-								return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
+-							}
+-						}
+-					}
+-				}
+-			}
+-			else
+-			{
+-				return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
+-			}
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * @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
+-	 */
+-	function subscribe_url()
+-	{
+-		if ($this->feed_url !== null)
+-		{
+-			return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function subscribe_feed()
+-	{
+-		if ($this->feed_url !== null)
+-		{
+-			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function subscribe_outlook()
+-	{
+-		if ($this->feed_url !== null)
+-		{
+-			return 'outlook' . $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function subscribe_podcast()
+-	{
+-		if ($this->feed_url !== null)
+-		{
+-			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 3), SIMPLEPIE_CONSTRUCT_IRI);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function subscribe_itunes()
+-	{
+-		if ($this->feed_url !== null)
+-		{
+-			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 4), SIMPLEPIE_CONSTRUCT_IRI);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	/**
+-	 * Creates the subscribe_* methods' return data
+-	 *
+-	 * @access private
+-	 * @param string $feed_url String to prefix to the feed URL
+-	 * @param string $site_url String to prefix to the site URL (and
+-	 * suffix to the feed URL)
+-	 * @return mixed URL if feed exists, false otherwise
+-	 */
+-	function subscribe_service($feed_url, $site_url = null)
+-	{
+-		if ($this->subscribe_url())
+-		{
+-			$return = $this->sanitize($feed_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->feed_url);
+-			if ($site_url !== null && $this->get_link() !== null)
+-			{
+-				$return .= $this->sanitize($site_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_link());
+-			}
+-			return $return;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function subscribe_aol()
+-	{
+-		return $this->subscribe_service('http://feeds.my.aol.com/add.jsp?url=');
+-	}
+-
+-	function subscribe_bloglines()
+-	{
+-		return urldecode($this->subscribe_service('http://www.bloglines.com/sub/'));
+-	}
+-
+-	function subscribe_eskobo()
+-	{
+-		return $this->subscribe_service('http://www.eskobo.com/?AddToMyPage=');
+-	}
+-
+-	function subscribe_feedfeeds()
+-	{
+-		return $this->subscribe_service('http://www.feedfeeds.com/add?feed=');
+-	}
+-
+-	function subscribe_feedster()
+-	{
+-		return $this->subscribe_service('http://www.feedster.com/myfeedster.php?action=addrss&confirm=no&rssurl=');
+-	}
+-
+-	function subscribe_google()
+-	{
+-		return $this->subscribe_service('http://fusion.google.com/add?feedurl=');
+-	}
+-
+-	function subscribe_gritwire()
+-	{
+-		return $this->subscribe_service('http://my.gritwire.com/feeds/addExternalFeed.aspx?FeedUrl=');
+-	}
+-
+-	function subscribe_msn()
+-	{
+-		return $this->subscribe_service('http://my.msn.com/addtomymsn.armx?id=rss&ut=', '&ru=');
+-	}
+-
+-	function subscribe_netvibes()
+-	{
+-		return $this->subscribe_service('http://www.netvibes.com/subscribe.php?url=');
+-	}
+-
+-	function subscribe_newsburst()
+-	{
+-		return $this->subscribe_service('http://www.newsburst.com/Source/?add=');
+-	}
+-
+-	function subscribe_newsgator()
+-	{
+-		return $this->subscribe_service('http://www.newsgator.com/ngs/subscriber/subext.aspx?url=');
+-	}
+-
+-	function subscribe_odeo()
+-	{
+-		return $this->subscribe_service('http://www.odeo.com/listen/subscribe?feed=');
+-	}
+-
+-	function subscribe_podnova()
+-	{
+-		return $this->subscribe_service('http://www.podnova.com/index_your_podcasts.srf?action=add&url=');
+-	}
+-
+-	function subscribe_rojo()
+-	{
+-		return $this->subscribe_service('http://www.rojo.com/add-subscription?resource=');
+-	}
+-
+-	function subscribe_yahoo()
+-	{
+-		return $this->subscribe_service('http://add.my.yahoo.com/rss?url=');
+-	}
+-
+-	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']['']['rss'][0]['child'][$namespace][$tag]))
+-			{
+-				return $this->data['child']['']['rss'][0]['child'][$namespace][$tag];
+-			}
+-		}
+-		return null;
+-	}
+-
+-	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('', 'channel'))
+-			{
+-				if (isset($channel[0]['child'][$namespace][$tag]))
+-				{
+-					return $channel[0]['child'][$namespace][$tag];
+-				}
+-			}
+-		}
+-		return null;
+-	}
+-
+-	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('', 'image'))
+-			{
+-				if (isset($image[0]['child'][$namespace][$tag]))
+-				{
+-					return $image[0]['child'][$namespace][$tag];
+-				}
+-			}
+-		}
+-		return null;
+-	}
+-
+-	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();
+-		}
+-	}
+-
+-	function sanitize($data, $type, $base = '')
+-	{
+-		return $this->sanitize->sanitize($data, $type, $base);
+-	}
+-
+-	function get_title()
+-	{
+-		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+-		{
+-			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', '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;
+-		}
+-	}
+-
+-	function get_category($key = 0)
+-	{
+-		$categories = $this->get_categories();
+-		if (isset($categories[$key]))
+-		{
+-			return $categories[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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[] = new $this->category_class($term, $scheme, $label);
+-		}
+-		foreach ((array) $this->get_channel_tags('', 'category') as $category)
+-		{
+-			$categories[] = new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+-		{
+-			$categories[] = new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+-		{
+-			$categories[] = new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-
+-		if (!empty($categories))
+-		{
+-			return SimplePie_Misc::array_unique($categories);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_author($key = 0)
+-	{
+-		$authors = $this->get_authors();
+-		if (isset($authors[$key]))
+-		{
+-			return $authors[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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[] = new $this->author_class($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[] = new $this->author_class($name, $url, $email);
+-			}
+-		}
+-		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+-		{
+-			$authors[] = new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+-		{
+-			$authors[] = new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+-		{
+-			$authors[] = new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-
+-		if (!empty($authors))
+-		{
+-			return SimplePie_Misc::array_unique($authors);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_contributor($key = 0)
+-	{
+-		$contributors = $this->get_contributors();
+-		if (isset($contributors[$key]))
+-		{
+-			return $contributors[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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[] = new $this->author_class($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[] = new $this->author_class($name, $url, $email);
+-			}
+-		}
+-
+-		if (!empty($contributors))
+-		{
+-			return SimplePie_Misc::array_unique($contributors);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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.
+-	 */
+-	function get_permalink()
+-	{
+-		return $this->get_link(0);
+-	}
+-
+-	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('', '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 (SimplePie_Misc::is_isegment_nz_nc($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;
+-		}
+-	}
+-
+-	function get_description()
+-	{
+-		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
+-		{
+-			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', 'description'))
+-		{
+-			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, '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;
+-		}
+-	}
+-
+-	function get_copyright()
+-	{
+-		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+-		{
+-			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+-		}
+-		elseif ($return = $this->get_channel_tags('', '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;
+-		}
+-	}
+-
+-	function get_language()
+-	{
+-		if ($return = $this->get_channel_tags('', '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;
+-		}
+-	}
+-
+-	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]+))$/', $return[0]['data'], $match))
+-		{
+-			return (float) $match[1];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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]+))$/', $return[0]['data'], $match))
+-		{
+-			return (float) $match[2];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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('', '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;
+-		}
+-	}
+-
+-	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('', 'url'))
+-		{
+-			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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('', 'link'))
+-		{
+-			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_image_width()
+-	{
+-		if ($return = $this->get_image_tags('', 'width'))
+-		{
+-			return round($return[0]['data']);
+-		}
+-		elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
+-		{
+-			return 88.0;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_image_height()
+-	{
+-		if ($return = $this->get_image_tags('', 'height'))
+-		{
+-			return round($return[0]['data']);
+-		}
+-		elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
+-		{
+-			return 31.0;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_item_quantity($max = 0)
+-	{
+-		$qty = count($this->get_items());
+-		if ($max == 0)
+-		{
+-			return $qty;
+-		}
+-		else
+-		{
+-			return ($qty > $max) ? $max : $qty;
+-		}
+-	}
+-
+-	function get_item($key = 0)
+-	{
+-		$items = $this->get_items();
+-		if (isset($items[$key]))
+-		{
+-			return $items[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_items($start = 0, $end = 0)
+-	{
+-		if (!empty($this->multifeed_objects))
+-		{
+-			return SimplePie::merge_items($this->multifeed_objects, $start, $end, $this->item_limit);
+-		}
+-		elseif (!isset($this->data['items']))
+-		{
+-			if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry'))
+-			{
+-				$keys = array_keys($items);
+-				foreach ($keys as $key)
+-				{
+-					$this->data['items'][] = new $this->item_class($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'][] = new $this->item_class($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'][] = new $this->item_class($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'][] = new $this->item_class($this, $items[$key]);
+-				}
+-			}
+-			if ($items = $this->get_channel_tags('', 'item'))
+-			{
+-				$keys = array_keys($items);
+-				foreach ($keys as $key)
+-				{
+-					$this->data['items'][] = new $this->item_class($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)
+-			{
+-				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(&$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();
+-		}
+-	}
+-
+-	function sort_items($a, $b)
+-	{
+-		return $a->get_date('U') <= $b->get_date('U');
+-	}
+-
+-	function merge_items($urls, $start = 0, $end = 0, $limit = 0)
+-	{
+-		if (is_array($urls) && sizeof($urls) > 0)
+-		{
+-			$items = array();
+-			foreach ($urls as $arg)
+-			{
+-				if (is_a($arg, '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('SimplePie', '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();
+-		}
+-	}
+-}
+-
+-class SimplePie_Item
+-{
+-	var $feed;
+-	var $data = array();
+-
+-	function SimplePie_Item($feed, $data)
+-	{
+-		$this->feed = $feed;
+-		$this->data = $data;
+-	}
+-
+-	function __toString()
+-	{
+-		return md5(serialize($this->data));
+-	}
+-
+-	/**
+-	 * Remove items that link back to this before destroying this object
+-	 */
+-	function __destruct()
+-	{
+-		unset($this->feed);
+-	}
+-
+-	function get_item_tags($namespace, $tag)
+-	{
+-		if (isset($this->data['child'][$namespace][$tag]))
+-		{
+-			return $this->data['child'][$namespace][$tag];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_base($element = array())
+-	{
+-		return $this->feed->get_base($element);
+-	}
+-
+-	function sanitize($data, $type, $base = '')
+-	{
+-		return $this->feed->sanitize($data, $type, $base);
+-	}
+-
+-	function get_feed()
+-	{
+-		return $this->feed;
+-	}
+-
+-	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('', '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 (($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));
+-		}
+-	}
+-
+-	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'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', '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'];
+-	}
+-
+-	function get_description($description_only = false)
+-	{
+-		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))
+-		{
+-			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', '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 (!$description_only)
+-		{
+-			return $this->get_content(true);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_content($content_only = false)
+-	{
+-		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))
+-		{
+-			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_content_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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;
+-		}
+-	}
+-
+-	function get_category($key = 0)
+-	{
+-		$categories = $this->get_categories();
+-		if (isset($categories[$key]))
+-		{
+-			return $categories[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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[] = new $this->feed->category_class($term, $scheme, $label);
+-		}
+-		foreach ((array) $this->get_item_tags('', 'category') as $category)
+-		{
+-			$categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+-		{
+-			$categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+-		{
+-			$categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-
+-		if (!empty($categories))
+-		{
+-			return SimplePie_Misc::array_unique($categories);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_author($key = 0)
+-	{
+-		$authors = $this->get_authors();
+-		if (isset($authors[$key]))
+-		{
+-			return $authors[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_contributor($key = 0)
+-	{
+-		$contributors = $this->get_contributors();
+-		if (isset($contributors[$key]))
+-		{
+-			return $contributors[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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[] = new $this->feed->author_class($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[] = new $this->feed->author_class($name, $url, $email);
+-			}
+-		}
+-
+-		if (!empty($contributors))
+-		{
+-			return SimplePie_Misc::array_unique($contributors);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	/**
+-	 * @todo Atom inheritance (item author, source author, feed author)
+-	 */
+-	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[] = new $this->feed->author_class($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[] = new $this->feed->author_class($name, $url, $email);
+-			}
+-		}
+-		if ($author = $this->get_item_tags('', 'author'))
+-		{
+-			$authors[] = new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+-		}
+-		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+-		{
+-			$authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+-		{
+-			$authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+-		{
+-			$authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-
+-		if (!empty($authors))
+-		{
+-			return SimplePie_Misc::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;
+-		}
+-	}
+-
+-	function get_copyright()
+-	{
+-		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+-		{
+-			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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;
+-		}
+-	}
+-
+-	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('', '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 = SimplePie_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;
+-		}
+-	}
+-
+-	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)
+-		{
+-			return strftime($date_format, $date);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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;
+-		}
+-	}
+-
+-	function get_link($key = 0, $rel = 'alternate')
+-	{
+-		$links = $this->get_links($rel);
+-		if ($links[$key] !== null)
+-		{
+-			return $links[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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('', 'link'))
+-			{
+-				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+-			}
+-			if ($links = $this->get_item_tags('', '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 (SimplePie_Misc::is_isegment_nz_nc($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;
+-		}
+-	}
+-
+-	/**
+-	 * @todo Add ability to prefer one type of content over another (in a media group).
+-	 */
+-	function get_enclosure($key = 0, $prefer = null)
+-	{
+-		$enclosures = $this->get_enclosures();
+-		if (isset($enclosures[$key]))
+-		{
+-			return $enclosures[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	/**
+-	 * Grabs 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.
+-	 *
+-	 * @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).
+-	 */
+-	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[] = new $this->feed->caption_class($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[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+-				}
+-			}
+-			if (is_array($captions_parent))
+-			{
+-				$captions_parent = array_values(SimplePie_Misc::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[] = new $this->feed->category_class($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[] = new $this->feed->category_class($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[] = new $this->feed->category_class($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[] = new $this->feed->category_class($term, $scheme, $label);
+-					}
+-				}
+-			}
+-			if (is_array($categories_parent))
+-			{
+-				$categories_parent = array_values(SimplePie_Misc::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 = new $this->feed->copyright_class($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 = new $this->feed->copyright_class($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[] = new $this->feed->credit_class($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[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+-				}
+-			}
+-			if (is_array($credits_parent))
+-			{
+-				$credits_parent = array_values(SimplePie_Misc::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)
+-					{
+-						(int) $seconds = array_pop($temp);
+-					}
+-					if (sizeof($temp) > 0)
+-					{
+-						(int) $minutes = array_pop($temp);
+-						$seconds += $minutes * 60;
+-					}
+-					if (sizeof($temp) > 0)
+-					{
+-						(int) $hours = 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(SimplePie_Misc::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(SimplePie_Misc::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[] = new $this->feed->rating_class($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[] = new $this->feed->rating_class($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[] = new $this->feed->rating_class($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[] = new $this->feed->rating_class($rating_scheme, $rating_value);
+-				}
+-			}
+-			if (is_array($ratings_parent))
+-			{
+-				$ratings_parent = array_values(SimplePie_Misc::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[] = new $this->feed->restriction_class($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[] = new $this->feed->restriction_class($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[] = new $this->feed->restriction_class($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[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+-				}
+-			}
+-			if (is_array($restrictions_parent))
+-			{
+-				$restrictions_parent = array_values(SimplePie_Misc::array_unique($restrictions_parent));
+-			}
+-
+-			// 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 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[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+-							}
+-							if (is_array($captions))
+-							{
+-								$captions = array_values(SimplePie_Misc::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[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+-							}
+-							if (is_array($captions))
+-							{
+-								$captions = array_values(SimplePie_Misc::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[] = new $this->feed->category_class($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[] = new $this->feed->category_class($term, $scheme, $label);
+-							}
+-						}
+-						if (is_array($categories) && is_array($categories_parent))
+-						{
+-							$categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
+-						}
+-						elseif (is_array($categories))
+-						{
+-							$categories = array_values(SimplePie_Misc::array_unique($categories));
+-						}
+-						elseif (is_array($categories_parent))
+-						{
+-							$categories = array_values(SimplePie_Misc::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 = new $this->feed->copyright_class($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 = new $this->feed->copyright_class($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[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+-							}
+-							if (is_array($credits))
+-							{
+-								$credits = array_values(SimplePie_Misc::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[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+-							}
+-							if (is_array($credits))
+-							{
+-								$credits = array_values(SimplePie_Misc::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(SimplePie_Misc::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(SimplePie_Misc::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(SimplePie_Misc::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(SimplePie_Misc::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[] = new $this->feed->rating_class($rating_scheme, $rating_value);
+-							}
+-							if (is_array($ratings))
+-							{
+-								$ratings = array_values(SimplePie_Misc::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[] = new $this->feed->rating_class($rating_scheme, $rating_value);
+-							}
+-							if (is_array($ratings))
+-							{
+-								$ratings = array_values(SimplePie_Misc::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[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+-							}
+-							if (is_array($restrictions))
+-							{
+-								$restrictions = array_values(SimplePie_Misc::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[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+-							}
+-							if (is_array($restrictions))
+-							{
+-								$restrictions = array_values(SimplePie_Misc::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(SimplePie_Misc::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(SimplePie_Misc::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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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']))
+-					{
+-						// 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[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+-							}
+-							if (is_array($captions))
+-							{
+-								$captions = array_values(SimplePie_Misc::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[] = new $this->feed->category_class($term, $scheme, $label);
+-							}
+-						}
+-						if (is_array($categories) && is_array($categories_parent))
+-						{
+-							$categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
+-						}
+-						elseif (is_array($categories))
+-						{
+-							$categories = array_values(SimplePie_Misc::array_unique($categories));
+-						}
+-						elseif (is_array($categories_parent))
+-						{
+-							$categories = array_values(SimplePie_Misc::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 = new $this->feed->copyright_class($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[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+-							}
+-							if (is_array($credits))
+-							{
+-								$credits = array_values(SimplePie_Misc::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(SimplePie_Misc::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(SimplePie_Misc::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[] = new $this->feed->rating_class($rating_scheme, $rating_value);
+-							}
+-							if (is_array($ratings))
+-							{
+-								$ratings = array_values(SimplePie_Misc::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[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+-							}
+-							if (is_array($restrictions))
+-							{
+-								$restrictions = array_values(SimplePie_Misc::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(SimplePie_Misc::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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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('', '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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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(SimplePie_Misc::array_unique($this->data['enclosures']));
+-		}
+-		if (!empty($this->data['enclosures']))
+-		{
+-			return $this->data['enclosures'];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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]+))$/', $return[0]['data'], $match))
+-		{
+-			return (float) $match[1];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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]+))$/', $return[0]['data'], $match))
+-		{
+-			return (float) $match[2];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_source()
+-	{
+-		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'source'))
+-		{
+-			return new $this->feed->source_class($this, $return[0]);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	/**
+-	 * Creates the add_to_* methods' return data
+-	 *
+-	 * @access private
+-	 * @param string $item_url String to prefix to the item permalink
+-	 * @param string $title_url String to prefix to the item title
+-	 * (and suffix to the item permalink)
+-	 * @return mixed URL if feed exists, false otherwise
+-	 */
+-	function add_to_service($item_url, $title_url = null, $summary_url = null)
+-	{
+-		if ($this->get_permalink() !== null)
+-		{
+-			$return = $this->sanitize($item_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_permalink());
+-			if ($title_url !== null && $this->get_title() !== null)
+-			{
+-				$return .= $this->sanitize($title_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_title());
+-			}
+-			if ($summary_url !== null && $this->get_description() !== null)
+-			{
+-				$return .= $this->sanitize($summary_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_description());
+-			}
+-			return $return;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function add_to_blinklist()
+-	{
+-		return $this->add_to_service('http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=&Url=', '&Title=');
+-	}
+-
+-	function add_to_blogmarks()
+-	{
+-		return $this->add_to_service('http://blogmarks.net/my/new.php?mini=1&simple=1&url=', '&title=');
+-	}
+-
+-	function add_to_delicious()
+-	{
+-		return $this->add_to_service('http://del.icio.us/post/?v=4&url=', '&title=');
+-	}
+-
+-	function add_to_digg()
+-	{
+-		return $this->add_to_service('http://digg.com/submit?url=', '&title=', '&bodytext=');
+-	}
+-
+-	function add_to_furl()
+-	{
+-		return $this->add_to_service('http://www.furl.net/storeIt.jsp?u=', '&t=');
+-	}
+-
+-	function add_to_magnolia()
+-	{
+-		return $this->add_to_service('http://ma.gnolia.com/bookmarklet/add?url=', '&title=');
+-	}
+-
+-	function add_to_myweb20()
+-	{
+-		return $this->add_to_service('http://myweb2.search.yahoo.com/myresults/bookmarklet?u=', '&t=');
+-	}
+-
+-	function add_to_newsvine()
+-	{
+-		return $this->add_to_service('http://www.newsvine.com/_wine/save?u=', '&h=');
+-	}
+-
+-	function add_to_reddit()
+-	{
+-		return $this->add_to_service('http://reddit.com/submit?url=', '&title=');
+-	}
+-
+-	function add_to_segnalo()
+-	{
+-		return $this->add_to_service('http://segnalo.com/post.html.php?url=', '&title=');
+-	}
+-
+-	function add_to_simpy()
+-	{
+-		return $this->add_to_service('http://www.simpy.com/simpy/LinkAdd.do?href=', '&title=');
+-	}
+-
+-	function add_to_spurl()
+-	{
+-		return $this->add_to_service('http://www.spurl.net/spurl.php?v=3&url=', '&title=');
+-	}
+-
+-	function add_to_wists()
+-	{
+-		return $this->add_to_service('http://wists.com/r.php?c=&r=', '&title=');
+-	}
+-
+-	function search_technorati()
+-	{
+-		return $this->add_to_service('http://www.technorati.com/search/');
+-	}
+-}
+-
+-class SimplePie_Source
+-{
+-	var $item;
+-	var $data = array();
+-
+-	function SimplePie_Source($item, $data)
+-	{
+-		$this->item = $item;
+-		$this->data = $data;
+-	}
+-
+-	function __toString()
+-	{
+-		return md5(serialize($this->data));
+-	}
+-
+-	/**
+-	 * Remove items that link back to this before destroying this object
+-	 */
+-	function __destruct()
+-	{
+-		unset($this->item);
+-	}
+-
+-	function get_source_tags($namespace, $tag)
+-	{
+-		if (isset($this->data['child'][$namespace][$tag]))
+-		{
+-			return $this->data['child'][$namespace][$tag];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_base($element = array())
+-	{
+-		return $this->item->get_base($element);
+-	}
+-
+-	function sanitize($data, $type, $base = '')
+-	{
+-		return $this->item->sanitize($data, $type, $base);
+-	}
+-
+-	function get_item()
+-	{
+-		return $this->item;
+-	}
+-
+-	function get_title()
+-	{
+-		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+-		{
+-			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', '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;
+-		}
+-	}
+-
+-	function get_category($key = 0)
+-	{
+-		$categories = $this->get_categories();
+-		if (isset($categories[$key]))
+-		{
+-			return $categories[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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[] = new $this->item->feed->category_class($term, $scheme, $label);
+-		}
+-		foreach ((array) $this->get_source_tags('', 'category') as $category)
+-		{
+-			$categories[] = new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+-		{
+-			$categories[] = new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+-		{
+-			$categories[] = new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-
+-		if (!empty($categories))
+-		{
+-			return SimplePie_Misc::array_unique($categories);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_author($key = 0)
+-	{
+-		$authors = $this->get_authors();
+-		if (isset($authors[$key]))
+-		{
+-			return $authors[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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[] = new $this->item->feed->author_class($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[] = new $this->item->feed->author_class($name, $url, $email);
+-			}
+-		}
+-		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+-		{
+-			$authors[] = new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+-		{
+-			$authors[] = new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+-		{
+-			$authors[] = new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+-		}
+-
+-		if (!empty($authors))
+-		{
+-			return SimplePie_Misc::array_unique($authors);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_contributor($key = 0)
+-	{
+-		$contributors = $this->get_contributors();
+-		if (isset($contributors[$key]))
+-		{
+-			return $contributors[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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[] = new $this->item->feed->author_class($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[] = new $this->item->feed->author_class($name, $url, $email);
+-			}
+-		}
+-
+-		if (!empty($contributors))
+-		{
+-			return SimplePie_Misc::array_unique($contributors);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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.
+-	 */
+-	function get_permalink()
+-	{
+-		return $this->get_link(0);
+-	}
+-
+-	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('', '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 (SimplePie_Misc::is_isegment_nz_nc($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;
+-		}
+-	}
+-
+-	function get_description()
+-	{
+-		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
+-		{
+-			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', '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;
+-		}
+-	}
+-
+-	function get_copyright()
+-	{
+-		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+-		{
+-			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+-		}
+-		elseif ($return = $this->get_source_tags('', '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;
+-		}
+-	}
+-
+-	function get_language()
+-	{
+-		if ($return = $this->get_source_tags('', '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;
+-		}
+-	}
+-
+-	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]+))$/', $return[0]['data'], $match))
+-		{
+-			return (float) $match[1];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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]+))$/', $return[0]['data'], $match))
+-		{
+-			return (float) $match[2];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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;
+-		}
+-	}
+-}
+-
+-class SimplePie_Author
+-{
+-	var $name;
+-	var $link;
+-	var $email;
+-
+-	// Constructor, used to input the data
+-	function SimplePie_Author($name = null, $link = null, $email = null)
+-	{
+-		$this->name = $name;
+-		$this->link = $link;
+-		$this->email = $email;
+-	}
+-
+-	function __toString()
+-	{
+-		// There is no $this->data here
+-		return md5(serialize($this));
+-	}
+-
+-	function get_name()
+-	{
+-		if ($this->name !== null)
+-		{
+-			return $this->name;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_link()
+-	{
+-		if ($this->link !== null)
+-		{
+-			return $this->link;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_email()
+-	{
+-		if ($this->email !== null)
+-		{
+-			return $this->email;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-}
+-
+-class SimplePie_Category
+-{
+-	var $term;
+-	var $scheme;
+-	var $label;
+-
+-	// Constructor, used to input the data
+-	function SimplePie_Category($term = null, $scheme = null, $label = null)
+-	{
+-		$this->term = $term;
+-		$this->scheme = $scheme;
+-		$this->label = $label;
+-	}
+-
+-	function __toString()
+-	{
+-		// There is no $this->data here
+-		return md5(serialize($this));
+-	}
+-
+-	function get_term()
+-	{
+-		if ($this->term !== null)
+-		{
+-			return $this->term;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_scheme()
+-	{
+-		if ($this->scheme !== null)
+-		{
+-			return $this->scheme;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_label()
+-	{
+-		if ($this->label !== null)
+-		{
+-			return $this->label;
+-		}
+-		else
+-		{
+-			return $this->get_term();
+-		}
+-	}
+-}
+-
+-class SimplePie_Enclosure
+-{
+-	var $bitrate;
+-	var $captions;
+-	var $categories;
+-	var $channels;
+-	var $copyright;
+-	var $credits;
+-	var $description;
+-	var $duration;
+-	var $expression;
+-	var $framerate;
+-	var $handler;
+-	var $hashes;
+-	var $height;
+-	var $javascript;
+-	var $keywords;
+-	var $lang;
+-	var $length;
+-	var $link;
+-	var $medium;
+-	var $player;
+-	var $ratings;
+-	var $restrictions;
+-	var $samplingrate;
+-	var $thumbnails;
+-	var $title;
+-	var $type;
+-	var $width;
+-
+-	// Constructor, used to input the data
+-	function SimplePie_Enclosure($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->javascript = $javascript;
+-		$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
+-	}
+-
+-	function __toString()
+-	{
+-		// There is no $this->data here
+-		return md5(serialize($this));
+-	}
+-
+-	function get_bitrate()
+-	{
+-		if ($this->bitrate !== null)
+-		{
+-			return $this->bitrate;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_caption($key = 0)
+-	{
+-		$captions = $this->get_captions();
+-		if (isset($captions[$key]))
+-		{
+-			return $captions[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_captions()
+-	{
+-		if ($this->captions !== null)
+-		{
+-			return $this->captions;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_category($key = 0)
+-	{
+-		$categories = $this->get_categories();
+-		if (isset($categories[$key]))
+-		{
+-			return $categories[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_categories()
+-	{
+-		if ($this->categories !== null)
+-		{
+-			return $this->categories;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_channels()
+-	{
+-		if ($this->channels !== null)
+-		{
+-			return $this->channels;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_copyright()
+-	{
+-		if ($this->copyright !== null)
+-		{
+-			return $this->copyright;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_credit($key = 0)
+-	{
+-		$credits = $this->get_credits();
+-		if (isset($credits[$key]))
+-		{
+-			return $credits[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_credits()
+-	{
+-		if ($this->credits !== null)
+-		{
+-			return $this->credits;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_description()
+-	{
+-		if ($this->description !== null)
+-		{
+-			return $this->description;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	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;
+-		}
+-	}
+-
+-	function get_expression()
+-	{
+-		if ($this->expression !== null)
+-		{
+-			return $this->expression;
+-		}
+-		else
+-		{
+-			return 'full';
+-		}
+-	}
+-
+-	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;
+-	}
+-
+-	function get_framerate()
+-	{
+-		if ($this->framerate !== null)
+-		{
+-			return $this->framerate;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_handler()
+-	{
+-		return $this->get_real_type(true);
+-	}
+-
+-	function get_hash($key = 0)
+-	{
+-		$hashes = $this->get_hashes();
+-		if (isset($hashes[$key]))
+-		{
+-			return $hashes[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_hashes()
+-	{
+-		if ($this->hashes !== null)
+-		{
+-			return $this->hashes;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_height()
+-	{
+-		if ($this->height !== null)
+-		{
+-			return $this->height;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_language()
+-	{
+-		if ($this->lang !== null)
+-		{
+-			return $this->lang;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_keyword($key = 0)
+-	{
+-		$keywords = $this->get_keywords();
+-		if (isset($keywords[$key]))
+-		{
+-			return $keywords[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_keywords()
+-	{
+-		if ($this->keywords !== null)
+-		{
+-			return $this->keywords;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_length()
+-	{
+-		if ($this->length !== null)
+-		{
+-			return $this->length;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_link()
+-	{
+-		if ($this->link !== null)
+-		{
+-			return urldecode($this->link);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_medium()
+-	{
+-		if ($this->medium !== null)
+-		{
+-			return $this->medium;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_player()
+-	{
+-		if ($this->player !== null)
+-		{
+-			return $this->player;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_rating($key = 0)
+-	{
+-		$ratings = $this->get_ratings();
+-		if (isset($ratings[$key]))
+-		{
+-			return $ratings[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_ratings()
+-	{
+-		if ($this->ratings !== null)
+-		{
+-			return $this->ratings;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_restriction($key = 0)
+-	{
+-		$restrictions = $this->get_restrictions();
+-		if (isset($restrictions[$key]))
+-		{
+-			return $restrictions[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_restrictions()
+-	{
+-		if ($this->restrictions !== null)
+-		{
+-			return $this->restrictions;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_sampling_rate()
+-	{
+-		if ($this->samplingrate !== null)
+-		{
+-			return $this->samplingrate;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_size()
+-	{
+-		$length = $this->get_length();
+-		if ($length !== null)
+-		{
+-			return round($length/1048576, 2);
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_thumbnail($key = 0)
+-	{
+-		$thumbnails = $this->get_thumbnails();
+-		if (isset($thumbnails[$key]))
+-		{
+-			return $thumbnails[$key];
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_thumbnails()
+-	{
+-		if ($this->thumbnails !== null)
+-		{
+-			return $this->thumbnails;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_title()
+-	{
+-		if ($this->title !== null)
+-		{
+-			return $this->title;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_type()
+-	{
+-		if ($this->type !== null)
+-		{
+-			return $this->type;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_width()
+-	{
+-		if ($this->width !== null)
+-		{
+-			return $this->width;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function native_embed($options='')
+-	{
+-		return $this->embed($options, true);
+-	}
+-
+-	/**
+-	 * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'.
+-	 */
+-	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 = '';
+-
+-		// Make sure the JS library is included
+-		if (!$native)
+-		{
+-			static $javascript_outputted = null;
+-			if (!$javascript_outputted && $this->javascript)
+-			{
+-				$embed .= '<script type="text/javascript" src="?' . htmlspecialchars($this->javascript) . '"></script>';
+-				$javascript_outputted = true;
+-			}
+-		}
+-
+-		// Odeo Feed MP3's
+-		if ($handler == 'odeo')
+-		{
+-			if ($native)
+-			{
+-				$embed .= '<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://adobe.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url=' . $this->get_link() . '"></embed>';
+-			}
+-			else
+-			{
+-				$embed .= '<script type="text/javascript">/* <![CDATA[ */embed_odeo("' . $this->get_link() . '");/* ]]> */</script>';
+-			}
+-		}
+-
+-		// Flash
+-		elseif ($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">/* <![CDATA[ */' .
+-				    "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">/* <![CDATA[ */' .
+-				    "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">/* <![CDATA[ */' .
+-				    "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">/* <![CDATA[ */' .
+-				    "embed_wmedia('$width', '$height', '" . $this->get_link() . "');/* ]]> */</script>";
+-			}
+-		}
+-
+-		// Everything else
+-		else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>';
+-
+-		return $embed;
+-	}
+-
+-	function get_real_type($find_handler = false)
+-	{
+-		// If it's Odeo, let's get it out of the way.
+-		if (substr(strtolower($this->get_link()), 0, 15) == 'http://odeo.com')
+-		{
+-			return 'odeo';
+-		}
+-
+-		// 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;
+-		}
+-	}
+-}
+-
+-class SimplePie_Caption
+-{
+-	var $type;
+-	var $lang;
+-	var $startTime;
+-	var $endTime;
+-	var $text;
+-
+-	// Constructor, used to input the data
+-	function SimplePie_Caption($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;
+-	}
+-
+-	function __toString()
+-	{
+-		// There is no $this->data here
+-		return md5(serialize($this));
+-	}
+-
+-	function get_endtime()
+-	{
+-		if ($this->endTime !== null)
+-		{
+-			return $this->endTime;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_language()
+-	{
+-		if ($this->lang !== null)
+-		{
+-			return $this->lang;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_starttime()
+-	{
+-		if ($this->startTime !== null)
+-		{
+-			return $this->startTime;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_text()
+-	{
+-		if ($this->text !== null)
+-		{
+-			return $this->text;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_type()
+-	{
+-		if ($this->type !== null)
+-		{
+-			return $this->type;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-}
+-
+-class SimplePie_Credit
+-{
+-	var $role;
+-	var $scheme;
+-	var $name;
+-
+-	// Constructor, used to input the data
+-	function SimplePie_Credit($role = null, $scheme = null, $name = null)
+-	{
+-		$this->role = $role;
+-		$this->scheme = $scheme;
+-		$this->name = $name;
+-	}
+-
+-	function __toString()
+-	{
+-		// There is no $this->data here
+-		return md5(serialize($this));
+-	}
+-
+-	function get_role()
+-	{
+-		if ($this->role !== null)
+-		{
+-			return $this->role;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_scheme()
+-	{
+-		if ($this->scheme !== null)
+-		{
+-			return $this->scheme;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_name()
+-	{
+-		if ($this->name !== null)
+-		{
+-			return $this->name;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-}
+-
+-class SimplePie_Copyright
+-{
+-	var $url;
+-	var $label;
+-
+-	// Constructor, used to input the data
+-	function SimplePie_Copyright($url = null, $label = null)
+-	{
+-		$this->url = $url;
+-		$this->label = $label;
+-	}
+-
+-	function __toString()
+-	{
+-		// There is no $this->data here
+-		return md5(serialize($this));
+-	}
+-
+-	function get_url()
+-	{
+-		if ($this->url !== null)
+-		{
+-			return $this->url;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_attribution()
+-	{
+-		if ($this->label !== null)
+-		{
+-			return $this->label;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-}
+-
+-class SimplePie_Rating
+-{
+-	var $scheme;
+-	var $value;
+-
+-	// Constructor, used to input the data
+-	function SimplePie_Rating($scheme = null, $value = null)
+-	{
+-		$this->scheme = $scheme;
+-		$this->value = $value;
+-	}
+-
+-	function __toString()
+-	{
+-		// There is no $this->data here
+-		return md5(serialize($this));
+-	}
+-
+-	function get_scheme()
+-	{
+-		if ($this->scheme !== null)
+-		{
+-			return $this->scheme;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_value()
+-	{
+-		if ($this->value !== null)
+-		{
+-			return $this->value;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-}
+-
+-class SimplePie_Restriction
+-{
+-	var $relationship;
+-	var $type;
+-	var $value;
+-
+-	// Constructor, used to input the data
+-	function SimplePie_Restriction($relationship = null, $type = null, $value = null)
+-	{
+-		$this->relationship = $relationship;
+-		$this->type = $type;
+-		$this->value = $value;
+-	}
+-
+-	function __toString()
+-	{
+-		// There is no $this->data here
+-		return md5(serialize($this));
+-	}
+-
+-	function get_relationship()
+-	{
+-		if ($this->relationship !== null)
+-		{
+-			return $this->relationship;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_type()
+-	{
+-		if ($this->type !== null)
+-		{
+-			return $this->type;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-
+-	function get_value()
+-	{
+-		if ($this->value !== null)
+-		{
+-			return $this->value;
+-		}
+-		else
+-		{
+-			return null;
+-		}
+-	}
+-}
+-
+-/**
+- * @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;
+-
+-	function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false, $proxy = "")
+-	{
+-		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);
+-				}
+-				if ($proxy)
+-				{
+-					curl_setopt($fp, CURLOPT_PROXY, $proxy);
+-				}
+-
+-				$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 (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 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->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+-						}
+-					}
+-				}
+-			}
+-			else
+-			{
+-				$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
+-				$url_parts = parse_url($url);
+-				if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) == 'https')
+-				{
+-					$url_parts['host'] = "ssl://$url_parts[host]";
+-					$url_parts['port'] = 443;
+-				}
+-				if (!isset($url_parts['port']))
+-				{
+-					$url_parts['port'] = 80;
+-				}
+-				if ($proxy) {
+-					$proxy_parts = explode(':', $proxy);
+-					if (!isset($proxy_parts[1])) {
+-					    $proxy_parts[1] = 80;
+-					}
+-					$host = $proxy_parts[0];
+-					$port = $proxy_parts[1];
+-				} else {
+-					$host = $url_parts['host'];
+-					$port = $url_parts['port'];
+-				}
+-				$fp = @fsockopen($host, $port, $errno, $errstr, $timeout);
+-				if (!$fp)
+-				{
+-					$this->error = 'fsockopen error: ' . $errstr;
+-					$this->success = false;
+-				}
+-				else
+-				{
+-					stream_set_timeout($fp, $timeout);
+-					if ($proxy) {
+-						$get = $url;
+-					} else {
+-						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.0\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 (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 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->SimplePie_File($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 (($body = gzuncompress($this->body)) === false)
+-										{
+-											if (($body = gzinflate($this->body)) === false)
+-											{
+-												$this->error = 'Unable to decode HTTP "deflate" stream';
+-												$this->success = false;
+-											}
+-										}
+-										$this->body = $body;
+-										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;
+-			}
+-		}
+-	}
+-}
+-
+-/**
+- * HTTP Response Parser
+- *
+- * @package SimplePie
+- */
+-class SimplePie_HTTP_Parser
+-{
+-	/**
+-	 * HTTP Version
+-	 *
+-	 * @access public
+-	 * @var float
+-	 */
+-	var $http_version = 0.0;
+-
+-	/**
+-	 * Status code
+-	 *
+-	 * @access public
+-	 * @var int
+-	 */
+-	var $status_code = 0;
+-
+-	/**
+-	 * Reason phrase
+-	 *
+-	 * @access public
+-	 * @var string
+-	 */
+-	var $reason = '';
+-
+-	/**
+-	 * Key/value pairs of the headers
+-	 *
+-	 * @access public
+-	 * @var array
+-	 */
+-	var $headers = array();
+-
+-	/**
+-	 * Body of the response
+-	 *
+-	 * @access public
+-	 * @var string
+-	 */
+-	var $body = '';
+-
+-	/**
+-	 * Current state of the state machine
+-	 *
+-	 * @access private
+-	 * @var string
+-	 */
+-	var $state = 'http_version';
+-
+-	/**
+-	 * 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;
+-
+-	/**
+-	 * Name of the hedaer currently being parsed
+-	 *
+-	 * @access private
+-	 * @var string
+-	 */
+-	var $name = '';
+-
+-	/**
+-	 * Value of the hedaer currently being parsed
+-	 *
+-	 * @access private
+-	 * @var string
+-	 */
+-	var $value = '';
+-
+-	/**
+-	 * Create an instance of the class with the input data
+-	 *
+-	 * @access public
+-	 * @param string $data Input data
+-	 */
+-	function SimplePie_HTTP_Parser($data)
+-	{
+-		$this->data = $data;
+-		$this->data_length = strlen($this->data);
+-	}
+-
+-	/**
+-	 * Parse the input data
+-	 *
+-	 * @access public
+-	 * @return bool true on success, false on failure
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 * @return bool true if there is further data, false if not
+-	 */
+-	function has_data()
+-	{
+-		return (bool) ($this->position < $this->data_length);
+-	}
+-
+-	/**
+-	 * See if the next character is LWS
+-	 *
+-	 * @access private
+-	 * @return bool true if the next character is LWS, false if not
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 */
+-	function new_line()
+-	{
+-		$this->value = trim($this->value, "\x0D\x20");
+-		if ($this->name !== '' && $this->value !== '')
+-		{
+-			$this->name = strtolower($this->name);
+-			if (isset($this->headers[$this->name]))
+-			{
+-				$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
+-	 *
+-	 * @access private
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 */
+-	function value()
+-	{
+-		if ($this->is_linear_whitespace())
+-		{
+-			$this->linear_whitespace();
+-		}
+-		else
+-		{
+-			switch ($this->data[$this->position])
+-			{
+-				case '"':
+-					$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
+-	 *
+-	 * @access private
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 */
+-	function quote_escaped()
+-	{
+-		$this->value .= $this->data[$this->position];
+-		$this->position++;
+-		$this->state = 'quote';
+-	}
+-
+-	/**
+-	 * Parse the body
+-	 *
+-	 * @access private
+-	 */
+-	function body()
+-	{
+-		$this->body = substr($this->data, $this->position);
+-		$this->state = 'emit';
+-	}
+-}
+-
+-/**
+- * gzdecode
+- *
+- * @package SimplePie
+- */
+-class SimplePie_gzdecode
+-{
+-	/**
+-	 * Compressed data
+-	 *
+-	 * @access private
+-	 * @see gzdecode::$data
+-	 */
+-	var $compressed_data;
+-
+-	/**
+-	 * Size of compressed data
+-	 *
+-	 * @access private
+-	 */
+-	var $compressed_size;
+-
+-	/**
+-	 * Minimum size of a valid gzip string
+-	 *
+-	 * @access private
+-	 */
+-	var $min_compressed_size = 18;
+-
+-	/**
+-	 * Current position of pointer
+-	 *
+-	 * @access private
+-	 */
+-	var $position = 0;
+-
+-	/**
+-	 * Flags (FLG)
+-	 *
+-	 * @access private
+-	 */
+-	var $flags;
+-
+-	/**
+-	 * Uncompressed data
+-	 *
+-	 * @access public
+-	 * @see gzdecode::$compressed_data
+-	 */
+-	var $data;
+-
+-	/**
+-	 * Modified time
+-	 *
+-	 * @access public
+-	 */
+-	var $MTIME;
+-
+-	/**
+-	 * Extra Flags
+-	 *
+-	 * @access public
+-	 */
+-	var $XFL;
+-
+-	/**
+-	 * Operating System
+-	 *
+-	 * @access public
+-	 */
+-	var $OS;
+-
+-	/**
+-	 * Subfield ID 1
+-	 *
+-	 * @access public
+-	 * @see gzdecode::$extra_field
+-	 * @see gzdecode::$SI2
+-	 */
+-	var $SI1;
+-
+-	/**
+-	 * Subfield ID 2
+-	 *
+-	 * @access public
+-	 * @see gzdecode::$extra_field
+-	 * @see gzdecode::$SI1
+-	 */
+-	var $SI2;
+-
+-	/**
+-	 * Extra field content
+-	 *
+-	 * @access public
+-	 * @see gzdecode::$SI1
+-	 * @see gzdecode::$SI2
+-	 */
+-	var $extra_field;
+-
+-	/**
+-	 * Original filename
+-	 *
+-	 * @access public
+-	 */
+-	var $filename;
+-
+-	/**
+-	 * Human readable comment
+-	 *
+-	 * @access public
+-	 */
+-	var $comment;
+-
+-	/**
+-	 * Don't allow anything to be set
+-	 *
+-	 * @access public
+-	 */
+-	function __set($name, $value)
+-	{
+-		trigger_error("Cannot write property $name", E_USER_ERROR);
+-	}
+-
+-	/**
+-	 * Set the compressed string and related properties
+-	 *
+-	 * @access public
+-	 */
+-	function SimplePie_gzdecode($data)
+-	{
+-		$this->compressed_data = $data;
+-		$this->compressed_size = strlen($data);
+-	}
+-
+-	/**
+-	 * Decode the GZIP stream
+-	 *
+-	 * @access 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)));
+-				$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 = strspn($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 = strspn($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;
+-		}
+-	}
+-}
+-
+-class SimplePie_Cache
+-{
+-	/**
+-	 * Don't call the constructor. Please.
+-	 *
+-	 * @access private
+-	 */
+-	function SimplePie_Cache()
+-	{
+-		trigger_error('Please call SimplePie_Cache::create() instead of the constructor', E_USER_ERROR);
+-	}
+-
+-	/**
+-	 * Create a new SimplePie_Cache object
+-	 *
+-	 * @static
+-	 * @access public
+-	 */
+-	static function create($location, $filename, $extension)
+-	{
+-		return new SimplePie_Cache_File($location, $filename, $extension);
+-	}
+-}
+-
+-class SimplePie_Cache_File
+-{
+-	var $location;
+-	var $filename;
+-	var $extension;
+-	var $name;
+-
+-	function SimplePie_Cache_File($location, $filename, $extension)
+-	{
+-		$this->location = $location;
+-		$this->filename = rawurlencode($filename);
+-		$this->extension = rawurlencode($extension);
+-		$this->name = "$location/$this->filename.$this->extension";
+-	}
+-
+-	function save($data)
+-	{
+-		if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
+-		{
+-			if (is_a($data, 'SimplePie'))
+-			{
+-				$data = $data->data;
+-			}
+-
+-			$data = serialize($data);
+-
+-			if (function_exists('file_put_contents'))
+-			{
+-				return (bool) file_put_contents($this->name, $data);
+-			}
+-			else
+-			{
+-				$fp = fopen($this->name, 'wb');
+-				if ($fp)
+-				{
+-					fwrite($fp, $data);
+-					fclose($fp);
+-					return true;
+-				}
+-			}
+-		}
+-		return false;
+-	}
+-
+-	function load()
+-	{
+-		if (file_exists($this->name) && is_readable($this->name))
+-		{
+-			return unserialize(file_get_contents($this->name));
+-		}
+-		return false;
+-	}
+-
+-	function mtime()
+-	{
+-		if (file_exists($this->name))
+-		{
+-			return filemtime($this->name);
+-		}
+-		return false;
+-	}
+-
+-	function touch()
+-	{
+-		if (file_exists($this->name))
+-		{
+-			return touch($this->name);
+-		}
+-		return false;
+-	}
+-
+-	function unlink()
+-	{
+-		if (file_exists($this->name))
+-		{
+-			return unlink($this->name);
+-		}
+-		return false;
+-	}
+-}
+-
+-class SimplePie_Misc
+-{
+-	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;
+-	}
+-
+-	static function absolutize_url($relative, $base)
+-	{
+-		if ($relative !== '')
+-		{
+-			$relative = SimplePie_Misc::parse_url($relative);
+-			if ($relative['scheme'] !== '')
+-			{
+-				$target = $relative;
+-			}
+-			elseif ($base !== '')
+-			{
+-				$base = SimplePie_Misc::parse_url($base);
+-				$target = SimplePie_Misc::parse_url('');
+-				if ($relative['authority'] !== '')
+-				{
+-					$target = $relative;
+-					$target['scheme'] = $base['scheme'];
+-				}
+-				else
+-				{
+-					$target['scheme'] = $base['scheme'];
+-					$target['authority'] = $base['authority'];
+-					if ($relative['path'] !== '')
+-					{
+-						if (strpos($relative['path'], '/') === 0)
+-						{
+-							$target['path'] = $relative['path'];
+-						}
+-						elseif ($base['authority'] !== '' && $base['path'] === '')
+-						{
+-							$target['path'] = '/' . $relative['path'];
+-						}
+-						elseif (($last_segment = strrpos($base['path'], '/')) !== false)
+-						{
+-							$target['path'] = substr($base['path'], 0, $last_segment + 1) . $relative['path'];
+-						}
+-						else
+-						{
+-							$target['path'] = $relative['path'];
+-						}
+-						$target['query'] = $relative['query'];
+-					}
+-					else
+-					{
+-						$target['path'] = $base['path'];
+-						if ($relative['query'] !== '')
+-						{
+-							$target['query'] = $relative['query'];
+-						}
+-						elseif ($base['query'] !== '')
+-						{
+-							$target['query'] = $base['query'];
+-						}
+-					}
+-				}
+-				$target['fragment'] = $relative['fragment'];
+-			}
+-			else
+-			{
+-				// No base URL, just return the relative URL
+-				$target = $relative;
+-			}
+-			$return = SimplePie_Misc::compress_parse_url($target['scheme'], $target['authority'], $target['path'], $target['query'], $target['fragment']);
+-		}
+-		else
+-		{
+-			$return = $base;
+-		}
+-		$return = SimplePie_Misc::normalize_url($return);
+-		return $return;
+-	}
+-
+-	static 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_replace($input, '/', 0, 3);
+-			}
+-			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_replace($input, '/', 0, 4);
+-				$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;
+-	}
+-
+-	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;
+-	}
+-
+-	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;
+-	}
+-
+-	static function error($message, $level, $file, $line)
+-	{
+-		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;
+-		}
+-		error_log("$note: $message in $file on line $line", 0);
+-		return $message;
+-	}
+-
+-	/**
+-	 * If a file has been cached, retrieve and display it.
+-	 *
+-	 * This is most useful for caching images (get_favicon(), etc.),
+-	 * however it works for all cached files.  This WILL NOT display ANY
+-	 * file/image/page/whatever, but rather only display what has already
+-	 * been cached by SimplePie.
+-	 *
+-	 * @access public
+-	 * @see SimplePie::get_favicon()
+-	 * @param str $identifier_url URL that is used to identify the content.
+-	 * This may or may not be the actual URL of the live content.
+-	 * @param str $cache_location Location of SimplePie's cache.  Defaults
+-	 * to './cache'.
+-	 * @param str $cache_extension The file extension that the file was
+-	 * cached with.  Defaults to 'spc'.
+-	 * @param str $cache_class Name of the cache-handling class being used
+-	 * in SimplePie.  Defaults to 'SimplePie_Cache', and should be left
+-	 * as-is unless you've overloaded the class.
+-	 * @param str $cache_name_function Obsolete. Exists for backwards
+-	 * compatibility reasons only.
+-	 */
+-	function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5')
+-	{
+-		$cache = call_user_func(array($cache_class, 'create'), $cache_location, $identifier_url, $cache_extension);
+-
+-		if ($file = $cache->load())
+-		{
+-			if (isset($file['headers']['content-type']))
+-			{
+-				header('Content-type:' . $file['headers']['content-type']);
+-			}
+-			else
+-			{
+-				header('Content-type: application/octet-stream');
+-			}
+-			header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
+-			echo $file['body'];
+-			exit;
+-		}
+-
+-		die('Cached file for ' . $identifier_url . ' cannot be found.');
+-	}
+-
+-	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;
+-		}
+-	}
+-
+-	static function parse_url($url)
+-	{
+-		static $cache = array();
+-		if (isset($cache[$url]))
+-		{
+-			return $cache[$url];
+-		}
+-		elseif (preg_match('/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $url, $match))
+-		{
+-			for ($i = count($match); $i <= 9; $i++)
+-			{
+-				$match[$i] = '';
+-			}
+-			return $cache[$url] = array('scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5], 'query' => $match[7], 'fragment' => $match[9]);
+-		}
+-		else
+-		{
+-			return $cache[$url] = array('scheme' => '', 'authority' => '', 'path' => '', 'query' => '', 'fragment' => '');
+-		}
+-	}
+-
+-	static function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '')
+-	{
+-		$return = '';
+-		if ($scheme !== '')
+-		{
+-			$return .= "$scheme:";
+-		}
+-		if ($authority !== '')
+-		{
+-			$return .= "//$authority";
+-		}
+-		if ($path !== '')
+-		{
+-			$return .= $path;
+-		}
+-		if ($query !== '')
+-		{
+-			$return .= "?$query";
+-		}
+-		if ($fragment !== '')
+-		{
+-			$return .= "#$fragment";
+-		}
+-		return $return;
+-	}
+-
+-	static function normalize_url($url)
+-	{
+-		$url = preg_replace_callback('/%([0-9A-Fa-f]{2})/', array('SimplePie_Misc', 'percent_encoding_normalization'), $url);
+-		$url = SimplePie_Misc::parse_url($url);
+-		$url['scheme'] = strtolower($url['scheme']);
+-		if ($url['authority'] !== '')
+-		{
+-			$url['authority'] = strtolower($url['authority']);
+-			$url['path'] = SimplePie_Misc::remove_dot_segments($url['path']);
+-		}
+-		return SimplePie_Misc::compress_parse_url($url['scheme'], $url['authority'], $url['path'], $url['query'], $url['fragment']);
+-	}
+-
+-	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]);
+-		}
+-	}
+-
+-	/**
+-	 * Remove bad UTF-8 bytes
+-	 *
+-	 * PCRE Pattern to locate bad bytes in a UTF-8 string comes from W3C
+-	 * FAQ: Multilingual Forms (modified to include full ASCII range)
+-	 *
+-	 * @author Geoffrey Sneddon
+-	 * @see http://www.w3.org/International/questions/qa-forms-utf-8
+-	 * @param string $str String to remove bad UTF-8 bytes from
+-	 * @return string UTF-8 string
+-	 */
+-	function utf8_bad_replace($str)
+-	{
+-		if (function_exists('iconv') && ($return = @iconv('UTF-8', 'UTF-8//IGNORE', $str)))
+-		{
+-			return $return;
+-		}
+-		elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($str, 'UTF-8', 'UTF-8')))
+-		{
+-			return $return;
+-		}
+-		elseif (preg_match_all('/(?:[\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})+/', $str, $matches))
+-		{
+-			return implode("\xEF\xBF\xBD", $matches[0]);
+-		}
+-		elseif ($str !== '')
+-		{
+-			return "\xEF\xBF\xBD";
+-		}
+-		else
+-		{
+-			return '';
+-		}
+-	}
+-
+-	/**
+-	 * Converts a Windows-1252 encoded string to a UTF-8 encoded string
+-	 *
+-	 * @static
+-	 * @access public
+-	 * @param string $string Windows-1252 encoded string
+-	 * @return string UTF-8 encoded string
+-	 */
+-	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);
+-	}
+-
+-	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
+-		elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input)))
+-		{
+-			return $return;
+-		}
+-		// This is last, as behaviour of this varies with OS userland and PHP version
+-		elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data)))
+-		{
+-			return $return;
+-		}
+-		// If we can't do anything, just fail
+-		else
+-		{
+-			return false;
+-		}
+-	}
+-
+-	static function encoding($charset)
+-	{
+-		/* Character sets are case-insensitive, and also need some further
+-		normalization in the real world (though we'll return them in the form given
+-		in their registration). */
+-		switch (strtolower(preg_replace('/[\x09-\x0D\x20-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]/', '', $charset)))
+-		{
+-			case 'adobestandardencoding':
+-			case 'csadobestandardencoding':
+-				return 'Adobe-Standard-Encoding';
+-
+-			case 'adobesymbolencoding':
+-			case 'cshppsmath':
+-				return 'Adobe-Symbol-Encoding';
+-
+-			case 'ami1251':
+-			case 'ami1251':
+-			case 'amiga1251':
+-			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 'isoir89':
+-			case 'iso9036':
+-				return 'ASMO_449';
+-
+-			case 'big5':
+-			case 'csbig5':
+-			case 'xxbig5':
+-				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 'isoir4':
+-			case 'iso646gb':
+-			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 'isoir121':
+-			case 'iso646ca':
+-				return 'CSA_Z243.4-1985-1';
+-
+-			case 'csa72':
+-			case 'csaz243419852':
+-			case 'csiso122canadian2':
+-			case 'isoir122':
+-			case 'iso646ca2':
+-				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 'isoir21':
+-			case 'iso646de':
+-				return 'DIN_66003';
+-
+-			case 'csdkus':
+-			case 'dkus':
+-				return 'dk-us';
+-
+-			case 'csiso646danish':
+-			case 'dk':
+-			case 'ds2089':
+-			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 'isoir17':
+-			case 'iso646es':
+-				return 'ES';
+-
+-			case 'csiso85spanish2':
+-			case 'es2':
+-			case 'isoir85':
+-			case 'iso646es2':
+-				return 'ES2';
+-
+-			case 'cseucfixwidjapanese':
+-			case 'extendedunixcodefixedwidthforjapanese':
+-				return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
+-
+-			case 'cseucpkdfmtjapanese':
+-			case 'eucjp':
+-			case 'extendedunixcodepackedformatforjapanese':
+-				return 'Extended_UNIX_Code_Packed_Format_for_Japanese';
+-
+-			case 'gb18030':
+-				return 'GB18030';
+-
+-			case 'cp936':
+-			case 'gbk':
+-			case 'ms936':
+-			case 'windows936':
+-			case 'csgb2312':
+-			case 'gb2312':
+-			case 'chinese':
+-			case 'csiso58gb231280':
+-			case 'gb231280':
+-			case 'isoir58':
+-				return 'GBK';
+-
+-			case 'cn':
+-			case 'csiso57gb1988':
+-			case 'gb198880':
+-			case 'isoir57':
+-			case 'iso646cn':
+-				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 'ccsid00858':
+-			case 'cp00858':
+-			case 'ibm00858':
+-			case 'pcmultilingual850euro':
+-				return 'IBM00858';
+-
+-			case 'ccsid00924':
+-			case 'cp00924':
+-			case 'ebcdiclatin9euro':
+-			case 'ibm00924':
+-				return 'IBM00924';
+-
+-			case 'ccsid01140':
+-			case 'cp01140':
+-			case 'ebcdicus37euro':
+-			case 'ibm01140':
+-				return 'IBM01140';
+-
+-			case 'ccsid01141':
+-			case 'cp01141':
+-			case 'ebcdicde273euro':
+-			case 'ibm01141':
+-				return 'IBM01141';
+-
+-			case 'ccsid01142':
+-			case 'cp01142':
+-			case 'ebcdicdk277euro':
+-			case 'ebcdicno277euro':
+-			case 'ibm01142':
+-				return 'IBM01142';
+-
+-			case 'ccsid01143':
+-			case 'cp01143':
+-			case 'ebcdicfi278euro':
+-			case 'ebcdicse278euro':
+-			case 'ibm01143':
+-				return 'IBM01143';
+-
+-			case 'ccsid01144':
+-			case 'cp01144':
+-			case 'ebcdicit280euro':
+-			case 'ibm01144':
+-				return 'IBM01144';
+-
+-			case 'ccsid01145':
+-			case 'cp01145':
+-			case 'ebcdices284euro':
+-			case 'ibm01145':
+-				return 'IBM01145';
+-
+-			case 'ccsid01146':
+-			case 'cp01146':
+-			case 'ebcdicgb285euro':
+-			case 'ibm01146':
+-				return 'IBM01146';
+-
+-			case 'ccsid01147':
+-			case 'cp01147':
+-			case 'ebcdicfr297euro':
+-			case 'ibm01147':
+-				return 'IBM01147';
+-
+-			case 'ccsid01148':
+-			case 'cp01148':
+-			case 'ebcdicinternational500euro':
+-			case 'ibm01148':
+-				return 'IBM01148';
+-
+-			case 'ccsid01149':
+-			case 'cp01149':
+-			case 'ebcdicis871euro':
+-			case 'ibm01149':
+-				return 'IBM01149';
+-
+-			case 'cp037':
+-			case 'csibm037':
+-			case 'ebcdiccpca':
+-			case 'ebcdiccpnl':
+-			case 'ebcdiccpus':
+-			case 'ebcdiccpwt':
+-			case 'ibm037':
+-				return 'IBM037';
+-
+-			case 'cp038':
+-			case 'csibm038':
+-			case 'ebcdicint':
+-			case 'ibm038':
+-				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 '860':
+-			case 'cp860':
+-			case 'csibm860':
+-			case 'ibm860':
+-				return 'IBM860';
+-
+-			case '861':
+-			case 'cpis':
+-			case 'cp861':
+-			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 'cpar':
+-			case 'cp868':
+-			case 'csibm868':
+-			case 'ibm868':
+-				return 'IBM868';
+-
+-			case '869':
+-			case 'cpgr':
+-			case 'cp869':
+-			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 'cp1026':
+-			case 'csibm1026':
+-			case 'ibm1026':
+-				return 'IBM1026';
+-
+-			case 'ibm1047':
+-			case 'ibm1047':
+-				return 'IBM1047';
+-
+-			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 'isoir101':
+-			case 'iso88592':
+-			case 'iso885921987':
+-			case 'l2':
+-			case 'latin2':
+-				return 'ISO-8859-2';
+-
+-			case 'cswindows31latin2':
+-			case 'iso88592windowslatin2':
+-				return 'ISO-8859-2-Windows-Latin-2';
+-
+-			case 'csisolatin3':
+-			case 'iso88593':
+-			case 'isoir109':
+-			case 'iso88593':
+-			case 'iso885931988':
+-			case 'l3':
+-			case 'latin3':
+-				return 'ISO-8859-3';
+-
+-			case 'csisolatin4':
+-			case 'iso88594':
+-			case 'isoir110':
+-			case 'iso88594':
+-			case 'iso885941988':
+-			case 'l4':
+-			case 'latin4':
+-				return 'ISO-8859-4';
+-
+-			case 'csisolatincyrillic':
+-			case 'cyrillic':
+-			case 'iso88595':
+-			case 'isoir144':
+-			case 'iso88595':
+-			case 'iso885951988':
+-				return 'ISO-8859-5';
+-
+-			case 'arabic':
+-			case 'asmo708':
+-			case 'csisolatinarabic':
+-			case 'ecma114':
+-			case 'iso88596':
+-			case 'isoir127':
+-			case 'iso88596':
+-			case 'iso885961987':
+-				return 'ISO-8859-6';
+-
+-			case 'csiso88596e':
+-			case 'iso88596e':
+-			case 'iso88596e':
+-				return 'ISO-8859-6-E';
+-
+-			case 'csiso88596i':
+-			case 'iso88596i':
+-			case 'iso88596i':
+-				return 'ISO-8859-6-I';
+-
+-			case 'csisolatingreek':
+-			case 'ecma118':
+-			case 'elot928':
+-			case 'greek':
+-			case 'greek8':
+-			case 'iso88597':
+-			case 'isoir126':
+-			case 'iso88597':
+-			case 'iso885971987':
+-				return 'ISO-8859-7';
+-
+-			case 'csisolatinhebrew':
+-			case 'hebrew':
+-			case 'iso88598':
+-			case 'isoir138':
+-			case 'iso88598':
+-			case 'iso885981988':
+-				return 'ISO-8859-8';
+-
+-			case 'csiso88598e':
+-			case 'iso88598e':
+-			case 'iso88598e':
+-				return 'ISO-8859-8-E';
+-
+-			case 'csiso88598i':
+-			case 'iso88598i':
+-			case 'iso88598i':
+-				return 'ISO-8859-8-I';
+-
+-			case 'cswindows31latin5':
+-			case 'iso88599windowslatin5':
+-				return 'ISO-8859-9-Windows-Latin-5';
+-
+-			case 'csisolatin6':
+-			case 'iso885910':
+-			case 'isoir157':
+-			case 'iso8859101992':
+-			case 'l6':
+-			case 'latin6':
+-				return 'ISO-8859-10';
+-
+-			case 'iso885913':
+-				return 'ISO-8859-13';
+-
+-			case 'iso885914':
+-			case 'isoceltic':
+-			case 'isoir199':
+-			case 'iso885914':
+-			case 'iso8859141998':
+-			case 'l8':
+-			case 'latin8':
+-				return 'ISO-8859-14';
+-
+-			case 'iso885915':
+-			case 'iso885915':
+-			case 'latin9':
+-				return 'ISO-8859-15';
+-
+-			case 'iso885916':
+-			case 'isoir226':
+-			case 'iso885916':
+-			case 'iso8859162001':
+-			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 '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 'isoir2':
+-			case 'iso646irv1983':
+-				return 'ISO_646.irv:1983';
+-
+-			case 'csiso2033':
+-			case 'e13b':
+-			case 'isoir98':
+-			case 'iso20331983':
+-				return 'ISO_2033-1983';
+-
+-			case 'csiso5427cyrillic':
+-			case 'isoir37':
+-			case 'iso5427':
+-				return 'ISO_5427';
+-
+-			case 'isoir54':
+-			case 'iso5427cyrillic1981':
+-			case 'iso54271981':
+-				return 'ISO_5427:1981';
+-
+-			case 'csiso5428greek':
+-			case 'isoir55':
+-			case 'iso54281980':
+-				return 'ISO_5428:1980';
+-
+-			case 'csiso6937add':
+-			case 'isoir152':
+-			case 'iso6937225':
+-				return 'ISO_6937-2-25';
+-
+-			case 'csisotextcomm':
+-			case 'isoir142':
+-			case 'iso69372add':
+-				return 'ISO_6937-2-add';
+-
+-			case 'csiso8859supp':
+-			case 'isoir154':
+-			case 'iso8859supp':
+-			case 'latin125':
+-				return 'ISO_8859-supp';
+-
+-			case 'csiso10367box':
+-			case 'isoir155':
+-			case 'iso10367box':
+-				return 'ISO_10367-box';
+-
+-			case 'csiso15italian':
+-			case 'isoir15':
+-			case 'iso646it':
+-			case 'it':
+-				return 'IT';
+-
+-			case 'csiso13jisc6220jp':
+-			case 'isoir13':
+-			case 'jisc62201969':
+-			case 'jisc62201969jp':
+-			case 'katakana':
+-			case 'x02017':
+-				return 'JIS_C6220-1969-jp';
+-
+-			case 'csiso14jisc6220ro':
+-			case 'isoir14':
+-			case 'iso646jp':
+-			case 'jisc62201969ro':
+-			case 'jp':
+-				return 'JIS_C6220-1969-ro';
+-
+-			case 'csiso42jisc62261978':
+-			case 'isoir42':
+-			case 'jisc62261978':
+-				return 'JIS_C6226-1978';
+-
+-			case 'csiso87jisx0208':
+-			case 'isoir87':
+-			case 'jisc62261983':
+-			case 'jisx02081983':
+-			case 'x0208':
+-				return 'JIS_C6226-1983';
+-
+-			case 'csiso91jisc62291984a':
+-			case 'isoir91':
+-			case 'jisc62291984a':
+-			case 'jpocra':
+-				return 'JIS_C6229-1984-a';
+-
+-			case 'csiso92jisc62991984b':
+-			case 'isoir92':
+-			case 'iso646jpocrb':
+-			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 'jisx0201':
+-			case 'x0201':
+-				return 'JIS_X0201';
+-
+-			case 'csiso159jisx02121990':
+-			case 'isoir159':
+-			case 'jisx02121990':
+-			case 'x0212':
+-				return 'JIS_X0212-1990';
+-
+-			case 'csiso141jusib1002':
+-			case 'isoir141':
+-			case 'iso646yu':
+-			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 'isoir86':
+-			case 'iso646hu':
+-			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 'isoir151':
+-			case 'iso646cu':
+-			case 'ncnc001081':
+-				return 'NC_NC00-10:81';
+-
+-			case 'csiso69french':
+-			case 'fr':
+-			case 'isoir69':
+-			case 'iso646fr':
+-			case 'nfz62010':
+-				return 'NF_Z_62-010';
+-
+-			case 'csiso25french':
+-			case 'isoir25':
+-			case 'iso646fr1':
+-			case 'nfz620101973':
+-				return 'NF_Z_62-010_(1973)';
+-
+-			case 'csiso60danishnorwegian':
+-			case 'csiso60norwegian1':
+-			case 'isoir60':
+-			case 'iso646no':
+-			case 'no':
+-			case 'ns45511':
+-				return 'NS_4551-1';
+-
+-			case 'csiso61norwegian2':
+-			case 'isoir61':
+-			case 'iso646no2':
+-			case 'no2':
+-			case 'ns45512':
+-				return 'NS_4551-2';
+-
+-			case 'osdebcdicdf03irv':
+-				return 'OSD_EBCDIC_DF03_IRV';
+-
+-			case 'osdebcdicdf041':
+-				return 'OSD_EBCDIC_DF04_1';
+-
+-			case 'osdebcdicdf0415':
+-				return 'OSD_EBCDIC_DF04_15';
+-
+-			case 'cspc8danishnorwegian':
+-			case 'pc8danishnorwegian':
+-				return 'PC8-Danish-Norwegian';
+-
+-			case 'cspc8turkish':
+-			case 'pc8turkish':
+-				return 'PC8-Turkish';
+-
+-			case 'csiso16portuguese':
+-			case 'isoir16':
+-			case 'iso646pt':
+-			case 'pt':
+-				return 'PT';
+-
+-			case 'csiso84portuguese2':
+-			case 'isoir84':
+-			case 'iso646pt2':
+-			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 'isoir10':
+-			case 'iso646fi':
+-			case 'iso646se':
+-			case 'se':
+-			case 'sen850200b':
+-				return 'SEN_850200_B';
+-
+-			case 'csiso11swedishfornames':
+-			case 'isoir11':
+-			case 'iso646se2':
+-			case 'se2':
+-			case 'sen850200c':
+-				return 'SEN_850200_C';
+-
+-			case 'csshiftjis':
+-			case 'mskanji':
+-			case 'shiftjis':
+-				return 'Shift_JIS';
+-
+-			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 'isoir6':
+-			case 'iso646us':
+-			case 'iso646irv1991':
+-			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 'cswindows31j':
+-			case 'windows31j':
+-				return 'Windows-31J';
+-
+-			case 'iso885911':
+-			case 'tis620':
+-				return 'Windows-874';
+-
+-			case 'cseuckr':
+-			case 'euckr':
+-			case 'windows949':
+-			case 'csksc56011987':
+-			case 'isoir149':
+-			case 'korean':
+-			case 'ksc5601':
+-			case 'ksc56011987':
+-			case 'ksc56011989':
+-				return 'Windows-949';
+-
+-			case 'windows1250':
+-				return 'windows-1250';
+-
+-			case 'windows1251':
+-				return 'windows-1251';
+-
+-			case 'cp819':
+-			case 'csisolatin1':
+-			case 'ibm819':
+-			case 'iso88591':
+-			case 'isoir100':
+-			case 'iso885911987':
+-			case 'l1':
+-			case 'latin1':
+-			case 'windows1252':
+-				return 'Windows-1252';
+-
+-			case 'windows1252':
+-				return 'windows-1252';
+-
+-			case 'windows1253':
+-				return 'windows-1253';
+-
+-			case 'csisolatin5':
+-			case 'iso88599':
+-			case 'isoir148':
+-			case 'iso885991989':
+-			case 'l5':
+-			case 'latin5':
+-			case 'windows1254':
+-				return 'Windows-1254';
+-
+-			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;
+-		}
+-	}
+-
+-	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;
+-	}
+-
+-	function is_subclass_of($class1, $class2)
+-	{
+-		if (func_num_args() != 2)
+-		{
+-			trigger_error('Wrong parameter count for SimplePie_Misc::is_subclass_of()', E_USER_WARNING);
+-		}
+-		elseif (version_compare(PHP_VERSION, '5.0.3', '>=') || is_object($class1))
+-		{
+-			return is_subclass_of($class1, $class2);
+-		}
+-		elseif (is_string($class1) && is_string($class2))
+-		{
+-			if (class_exists($class1))
+-			{
+-				if (class_exists($class2))
+-				{
+-					$class2 = strtolower($class2);
+-					while ($class1 = strtolower(get_parent_class($class1)))
+-					{
+-						if ($class1 == $class2)
+-						{
+-							return true;
+-						}
+-					}
+-				}
+-			}
+-			else
+-			{
+-				trigger_error('Unknown class passed as parameter', E_USER_WARNNG);
+-			}
+-		}
+-		return false;
+-	}
+-
+-	/**
+-	 * Strip HTML comments
+-	 *
+-	 * @access public
+-	 * @param string $data Data to strip comments from
+-	 * @return string Comment stripped string
+-	 */
+-	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;
+-	}
+-
+-	function parse_date($dt)
+-	{
+-		$parser = SimplePie_Parse_Date::get();
+-		return $parser->parse($dt);
+-	}
+-
+-	/**
+-	 * Decode HTML entities
+-	 *
+-	 * @static
+-	 * @access public
+-	 * @param string $data Input data
+-	 * @return string Output data
+-	 */
+-	function entities_decode($data)
+-	{
+-		$decoder = new SimplePie_Decode_HTML_Entities($data);
+-		return $decoder->parse();
+-	}
+-
+-	/**
+-	 * Remove RFC822 comments
+-	 *
+-	 * @access public
+-	 * @param string $data Data to strip comments from
+-	 * @return string Comment stripped string
+-	 */
+-	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;
+-	}
+-
+-	function parse_mime($mime)
+-	{
+-		if (($pos = strpos($mime, ';')) === false)
+-		{
+-			return trim($mime);
+-		}
+-		else
+-		{
+-			return trim(substr($mime, 0, $pos));
+-		}
+-	}
+-
+-	function htmlspecialchars_decode($string, $quote_style)
+-	{
+-		if (function_exists('htmlspecialchars_decode'))
+-		{
+-			return htmlspecialchars_decode($string, $quote_style);
+-		}
+-		else
+-		{
+-			return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style)));
+-		}
+-	}
+-
+-	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;
+-		}
+-	}
+-
+-	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;
+-	}
+-
+-	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;
+-		}
+-	}
+-
+-	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);
+-	}
+-
+-	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;
+-	}
+-
+-	function array_unique($array)
+-	{
+-		if (version_compare(PHP_VERSION, '5.2', '>='))
+-		{
+-			return array_unique($array);
+-		}
+-		else
+-		{
+-			$array = (array) $array;
+-			$new_array = array();
+-			$new_array_strings = array();
+-			foreach ($array as $key => $value)
+-			{
+-				if (is_object($value))
+-				{
+-					if (method_exists($value, '__toString'))
+-					{
+-						$cmp = $value->__toString();
+-					}
+-					else
+-					{
+-						trigger_error('Object of class ' . get_class($value) . ' could not be converted to string', E_USER_ERROR);
+-					}
+-				}
+-				elseif (is_array($value))
+-				{
+-					$cmp = (string) reset($value);
+-				}
+-				else
+-				{
+-					$cmp = (string) $value;
+-				}
+-				if (!in_array($cmp, $new_array_strings))
+-				{
+-					$new_array[$key] = $value;
+-					$new_array_strings[] = $cmp;
+-				}
+-			}
+-			return $new_array;
+-		}
+-	}
+-
+-	/**
+-	 * Converts a unicode codepoint to a UTF-8 character
+-	 *
+-	 * @static
+-	 * @access public
+-	 * @param int $codepoint Unicode codepoint
+-	 * @return string UTF-8 character
+-	 */
+-	function codepoint_to_utf8($codepoint)
+-	{
+-		static $cache = array();
+-		$codepoint = (int) $codepoint;
+-		if (isset($cache[$codepoint]))
+-		{
+-			return $cache[$codepoint];
+-		}
+-		elseif ($codepoint < 0)
+-		{
+-			return $cache[$codepoint] = false;
+-		}
+-		else if ($codepoint <= 0x7f)
+-		{
+-			return $cache[$codepoint] = chr($codepoint);
+-		}
+-		else if ($codepoint <= 0x7ff)
+-		{
+-			return $cache[$codepoint] = chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f));
+-		}
+-		else if ($codepoint <= 0xffff)
+-		{
+-			return $cache[$codepoint] = chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
+-		}
+-		else if ($codepoint <= 0x10ffff)
+-		{
+-			return $cache[$codepoint] = chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
+-		}
+-		else
+-		{
+-			// U+FFFD REPLACEMENT CHARACTER
+-			return $cache[$codepoint] = "\xEF\xBF\xBD";
+-		}
+-	}
+-
+-	/**
+-	 * Re-implementation of PHP 5's stripos()
+-	 *
+-	 * Returns the numeric position of the first occurrence of needle in the
+-	 * haystack string.
+-	 *
+-	 * @static
+-	 * @access string
+-	 * @param object $haystack
+-	 * @param string $needle Note that the needle may be a string of one or more
+-	 *     characters. If needle is not a string, it is converted to an integer
+-	 *     and applied as the ordinal value of a character.
+-	 * @param int $offset The optional offset parameter allows you to specify which
+-	 *     character in haystack to start searching. The position returned is still
+-	 *     relative to the beginning of haystack.
+-	 * @return bool If needle is not found, stripos() will return boolean false.
+-	 */
+-	function stripos($haystack, $needle, $offset = 0)
+-	{
+-		if (function_exists('stripos'))
+-		{
+-			return stripos($haystack, $needle, $offset);
+-		}
+-		else
+-		{
+-			if (is_string($needle))
+-			{
+-				$needle = strtolower($needle);
+-			}
+-			elseif (is_int($needle) || is_bool($needle) || is_double($needle))
+-			{
+-				$needle = strtolower(chr($needle));
+-			}
+-			else
+-			{
+-				trigger_error('needle is not a string or an integer', E_USER_WARNING);
+-				return false;
+-			}
+-
+-			return strpos(strtolower($haystack), $needle, $offset);
+-		}
+-	}
+-
+-	/**
+-	 * 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
+-	 * @access string
+-	 * @param string $str The input string.
+-	 * @return array
+-	 */
+-	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
+-	 * @return array Possible encodings
+-	 */
+-	static function xml_encoding($data)
+-	{
+-		// 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 = new SimplePie_XML_Declaration_Parser(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 = new SimplePie_XML_Declaration_Parser(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 = new SimplePie_XML_Declaration_Parser(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 = new SimplePie_XML_Declaration_Parser(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 = new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5));
+-				if ($parser->parse())
+-				{
+-					$encoding[] = $parser->encoding;
+-				}
+-			}
+-			$encoding[] = 'UTF-8';
+-		}
+-		// Fallback to UTF-8
+-		else
+-		{
+-			$encoding[] = 'UTF-8';
+-		}
+-		return $encoding;
+-	}
+-}
+-
+-/**
+- * Decode HTML Entities
+- *
+- * This implements HTML5 as of revision 967 (2007-06-28)
+- *
+- * @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
+-	 */
+-	function SimplePie_Decode_HTML_Entities($data)
+-	{
+-		$this->data = $data;
+-	}
+-
+-	/**
+-	 * Parse the input data
+-	 *
+-	 * @access public
+-	 * @return string Output data
+-	 */
+-	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
+-	 */
+-	function consume()
+-	{
+-		if (isset($this->data[$this->position]))
+-		{
+-			$this->consumed .= $this->data[$this->position];
+-			return $this->data[$this->position++];
+-		}
+-		else
+-		{
+-			$this->consumed = false;
+-			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
+-	 */
+-	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
+-		{
+-			$this->consumed = false;
+-			return false;
+-		}
+-	}
+-
+-	/**
+-	 * Unconsume one byte
+-	 *
+-	 * @access private
+-	 */
+-	function unconsume()
+-	{
+-		$this->consumed = substr($this->consumed, 0, -1);
+-		$this->position--;
+-	}
+-
+-	/**
+-	 * Decode an entity
+-	 *
+-	 * @access private
+-	 */
+-	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 ($this->consume() != ';')
+-					{
+-						$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;
+-		}
+-	}
+-}
+-
+-/**
+- * Date Parser
+- *
+- * @package SimplePie
+- */
+-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
+-	 */
+-	function SimplePie_Parse_Date()
+-	{
+-		$this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')';
+-		$this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')';
+-
+-		static $cache;
+-		if (!isset($cache[get_class($this)]))
+-		{
+-			if (extension_loaded('Reflection'))
+-			{
+-				$class = new ReflectionClass(get_class($this));
+-				$methods = $class->getMethods();
+-				$all_methods = array();
+-				foreach ($methods as $method)
+-				{
+-					$all_methods[] = $method->getName();
+-				}
+-			}
+-			else
+-			{
+-				$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
+-	 */
+-	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
+-	 */
+-	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
+-	 */
+-	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
+-	 */
+-	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
+-	 */
+-	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
+-	 */
+-	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
+-	 */
+-	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
+-	 */
+-	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
+-	 */
+-	function date_strtotime($date)
+-	{
+-		$strtotime = strtotime($date);
+-		if ($strtotime === -1 || $strtotime === false)
+-		{
+-			return false;
+-		}
+-		else
+-		{
+-			return $strtotime;
+-		}
+-	}
+-}
+-
+-/**
+- * Content-type sniffing
+- *
+- * @package SimplePie
+- */
+-class SimplePie_Content_Type_Sniffer
+-{
+-	/**
+-	 * File object
+-	 *
+-	 * @var SimplePie_File
+-	 * @access private
+-	 */
+-	var $file;
+-
+-	/**
+-	 * Create an instance of the class with the input file
+-	 *
+-	 * @access public
+-	 * @param SimplePie_Content_Type_Sniffer $file Input file
+-	 */
+-	function SimplePie_Content_Type_Sniffer($file)
+-	{
+-		$this->file = $file;
+-	}
+-
+-	/**
+-	 * Get the Content-Type of the specified file
+-	 *
+-	 * @access public
+-	 * @return string Actual Content-Type
+-	 */
+-	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'))
+-			{
+-				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 = 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
+-	 *
+-	 * @access private
+-	 * @return string Actual Content-Type
+-	 */
+-	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
+-	 *
+-	 * @access private
+-	 * @return string Actual Content-Type
+-	 */
+-	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';
+-		}
+-		else
+-		{
+-			return $this->text_or_binary();
+-		}
+-	}
+-
+-	/**
+-	 * Sniff images
+-	 *
+-	 * @access private
+-	 * @return string Actual Content-Type
+-	 */
+-	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';
+-		}
+-		else
+-		{
+-			return false;
+-		}
+-	}
+-
+-	/**
+-	 * Sniff HTML
+-	 *
+-	 * @access private
+-	 * @return string Actual Content-Type
+-	 */
+-	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';
+-	}
+-}
+-
+-/**
+- * Parses the XML Declaration
+- *
+- * @package SimplePie
+- */
+-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
+-	 */
+-	function SimplePie_XML_Declaration_Parser($data)
+-	{
+-		$this->data = $data;
+-		$this->data_length = strlen($this->data);
+-	}
+-
+-	/**
+-	 * Parse the input data
+-	 *
+-	 * @access public
+-	 * @return bool true on success, false on failure
+-	 */
+-	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
+-	 */
+-	function has_data()
+-	{
+-		return (bool) ($this->position < $this->data_length);
+-	}
+-
+-	/**
+-	 * Advance past any whitespace
+-	 *
+-	 * @return int Number of whitespace characters passed
+-	 */
+-	function skip_whitespace()
+-	{
+-		$whitespace = strspn($this->data, "\x09\x0A\x0D\x20", $this->position);
+-		$this->position += $whitespace;
+-		return $whitespace;
+-	}
+-
+-	/**
+-	 * Read value
+-	 */
+-	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;
+-	}
+-
+-	function before_version_name()
+-	{
+-		if ($this->skip_whitespace())
+-		{
+-			$this->state = 'version_name';
+-		}
+-		else
+-		{
+-			$this->state = false;
+-		}
+-	}
+-
+-	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;
+-		}
+-	}
+-
+-	function version_equals()
+-	{
+-		if (substr($this->data, $this->position, 1) === '=')
+-		{
+-			$this->position++;
+-			$this->skip_whitespace();
+-			$this->state = 'version_value';
+-		}
+-		else
+-		{
+-			$this->state = false;
+-		}
+-	}
+-
+-	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 = 'standalone_name';
+-		}
+-	}
+-
+-	function encoding_name()
+-	{
+-		if (substr($this->data, $this->position, 8) === 'encoding')
+-		{
+-			$this->position += 8;
+-			$this->skip_whitespace();
+-			$this->state = 'encoding_equals';
+-		}
+-		else
+-		{
+-			$this->state = false;
+-		}
+-	}
+-
+-	function encoding_equals()
+-	{
+-		if (substr($this->data, $this->position, 1) === '=')
+-		{
+-			$this->position++;
+-			$this->skip_whitespace();
+-			$this->state = 'encoding_value';
+-		}
+-		else
+-		{
+-			$this->state = false;
+-		}
+-	}
+-
+-	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;
+-		}
+-	}
+-
+-	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;
+-		}
+-	}
+-
+-	function standalone_equals()
+-	{
+-		if (substr($this->data, $this->position, 1) === '=')
+-		{
+-			$this->position++;
+-			$this->skip_whitespace();
+-			$this->state = 'standalone_value';
+-		}
+-		else
+-		{
+-			$this->state = false;
+-		}
+-	}
+-
+-	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;
+-		}
+-	}
+-}
+-
+-class SimplePie_Locator
+-{
+-	var $useragent;
+-	var $timeout;
+-	var $file;
+-	var $local = array();
+-	var $elsewhere = array();
+-	var $file_class = 'SimplePie_File';
+-	var $cached_entities = array();
+-	var $http_base;
+-	var $base;
+-	var $base_location = 0;
+-	var $checked_feeds = 0;
+-	var $max_checked_feeds = 10;
+-	var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer';
+-	var $proxy;
+-
+-	function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10, $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer', $proxy = "")
+-	{
+-		$this->file =& $file;
+-		$this->file_class = $file_class;
+-		$this->useragent = $useragent;
+-		$this->timeout = $timeout;
+-		$this->max_checked_feeds = $max_checked_feeds;
+-		$this->content_type_sniffer_class = $content_type_sniffer_class;
+-		$this->proxy = $proxy;
+-	}
+-
+-	function find($type = SIMPLEPIE_LOCATOR_ALL)
+-	{
+-		if ($this->is_feed($this->file))
+-		{
+-			return $this->file;
+-		}
+-
+-		if ($this->file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
+-		{
+-			$sniffer = new $this->content_type_sniffer_class($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;
+-		}
+-
+-		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;
+-	}
+-
+-	function is_feed(&$file)
+-	{
+-		if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
+-		{
+-			$sniffer = new $this->content_type_sniffer_class($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;
+-		}
+-	}
+-
+-	function get_base()
+-	{
+-		$this->http_base = $this->file->url;
+-		$this->base = $this->http_base;
+-		$elements = SimplePie_Misc::get_element('base', $this->file->body);
+-		foreach ($elements as $element)
+-		{
+-			if ($element['attribs']['href']['data'] !== '')
+-			{
+-				$this->base = SimplePie_Misc::absolutize_url(trim($element['attribs']['href']['data']), $this->http_base);
+-				$this->base_location = $element['offset'];
+-				break;
+-			}
+-		}
+-	}
+-
+-	function autodiscovery()
+-	{
+-		$links = array_merge(SimplePie_Misc::get_element('link', $this->file->body), SimplePie_Misc::get_element('a', $this->file->body), SimplePie_Misc::get_element('area', $this->file->body));
+-		$done = array();
+-		foreach ($links as $link)
+-		{
+-			if ($this->checked_feeds == $this->max_checked_feeds)
+-			{
+-				break;
+-			}
+-			if (isset($link['attribs']['href']['data']) && isset($link['attribs']['rel']['data']))
+-			{
+-				$rel = array_unique(SimplePie_Misc::space_seperated_tokens(strtolower($link['attribs']['rel']['data'])));
+-
+-				if ($this->base_location < $link['offset'])
+-				{
+-					$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
+-				}
+-				else
+-				{
+-					$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
+-				}
+-
+-				if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml'))))
+-				{
+-					$this->checked_feeds++;
+-					$feed = new $this->file_class($href, $this->timeout, 5, null, $this->useragent, false, $this->proxy);
+-					if ($this->is_feed($feed))
+-					{
+-						return $feed;
+-					}
+-				}
+-				$done[] = $href;
+-			}
+-		}
+-		return null;
+-	}
+-
+-	function get_links()
+-	{
+-		$links = SimplePie_Misc::get_element('a', $this->file->body);
+-		foreach ($links as $link)
+-		{
+-			if (isset($link['attribs']['href']['data']))
+-			{
+-				$href = trim($link['attribs']['href']['data']);
+-				$parsed = SimplePie_Misc::parse_url($href);
+-				if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme']))
+-				{
+-					if ($this->base_location < $link['offset'])
+-					{
+-						$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
+-					}
+-					else
+-					{
+-						$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
+-					}
+-
+-					$current = SimplePie_Misc::parse_url($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;
+-	}
+-
+-	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++;
+-				$feed = new $this->file_class($value, $this->timeout, 5, null, $this->useragent, false, $this->proxy);
+-				if ($this->is_feed($feed))
+-				{
+-					return $feed;
+-				}
+-				else
+-				{
+-					unset($array[$key]);
+-				}
+-			}
+-		}
+-		return null;
+-	}
+-
+-	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++;
+-				$feed = new $this->file_class($value, $this->timeout, 5, null, $this->useragent, false, $this->proxy);
+-				if ($this->is_feed($feed))
+-				{
+-					return $feed;
+-				}
+-				else
+-				{
+-					unset($array[$key]);
+-				}
+-			}
+-		}
+-		return null;
+-	}
+-}
+-
+-class SimplePie_Parser
+-{
+-	var $error_code;
+-	var $error_string;
+-	var $current_line;
+-	var $current_column;
+-	var $current_byte;
+-	var $separator = ' ';
+-	var $feed = false;
+-	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;
+-
+-	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 = new SimplePie_XML_Declaration_Parser(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;
+-			}
+-		}
+-
+-		// Work around libxml bug
+-		$data = str_replace('<', '<', $data);
+-		$data = str_replace('>', '>', $data);
+-		$data = str_replace('&', '&', $data);
+-		$data = str_replace(''', ''', $data);
+-		$data = str_replace('"', '"', $data);
+-
+-		$return = true;
+-
+-		// Create the parser
+-		$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;
+-	}
+-
+-	function get_error_code()
+-	{
+-		return $this->error_code;
+-	}
+-
+-	function get_error_string()
+-	{
+-		return $this->error_string;
+-	}
+-
+-	function get_current_line()
+-	{
+-		return $this->current_line;
+-	}
+-
+-	function get_current_column()
+-	{
+-		return $this->current_column;
+-	}
+-
+-	function get_current_byte()
+-	{
+-		return $this->current_byte;
+-	}
+-
+-	function get_data()
+-	{
+-		return $this->data;
+-	}
+-
+-	function tag_open($parser, $tag, $attributes)
+-	{
+-		if ($this->feed === 0)
+-		{
+-			return;
+-		}
+-		elseif ($this->feed == false)
+-		{
+-			if (in_array($tag, array(
+-				SIMPLEPIE_NAMESPACE_ATOM_10 . $this->separator . 'feed',
+-				SIMPLEPIE_NAMESPACE_ATOM_03 . $this->separator . 'feed',
+-				'rss',
+-				SIMPLEPIE_NAMESPACE_RDF . $this->separator . 'RDF'
+-			)))
+-			{
+-					$this->feed = 1;
+-			}
+-		}
+-		else
+-		{
+-			$this->feed++;
+-		}
+-
+-		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']))
+-		{
+-			$this->xml_base[] = SimplePie_Misc::absolutize_url($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_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'))
+-			{
+-				$this->current_xhtml_construct = 0;
+-			}
+-		}
+-	}
+-
+-	function cdata($parser, $cdata)
+-	{
+-		if ($this->current_xhtml_construct >= 0)
+-		{
+-			$this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding);
+-		}
+-		elseif ($this->feed > 1)
+-		{
+-			$this->data['data'] .= $cdata;
+-		}
+-	}
+-
+-	function tag_close($parser, $tag)
+-	{
+-		if (!$this->feed)
+-		{
+-			return;
+-		}
+-
+-		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[$this->feed];
+-			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);
+-		$this->feed--;
+-	}
+-
+-	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;
+-				}
+-				$cache[$string] = array($namespace, $local_name);
+-			}
+-			else
+-			{
+-				$cache[$string] = array('', $string);
+-			}
+-		}
+-		return $cache[$string];
+-	}
+-}
+-
+-/**
+- * @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 $cache_class = 'SimplePie_Cache';
+-	var $file_class = 'SimplePie_File';
+-	var $timeout = 10;
+-	var $useragent = '';
+-	var $force_fsockopen = false;
+-	var $proxy = "";
+-
+-	var $replace_url_attributes = array(
+-		'a' => 'href',
+-		'area' => 'href',
+-		'blockquote' => 'cite',
+-		'del' => 'cite',
+-		'form' => 'action',
+-		'img' => array('longdesc', 'src'),
+-		'input' => 'src',
+-		'ins' => 'cite',
+-		'q' => 'cite'
+-	);
+-
+-	function remove_div($enable = true)
+-	{
+-		$this->remove_div = (bool) $enable;
+-	}
+-
+-	function set_image_handler($page = false)
+-	{
+-		if ($page)
+-		{
+-			$this->image_handler = (string) $page;
+-		}
+-		else
+-		{
+-			$this->image_handler = false;
+-		}
+-	}
+-
+-	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;
+-		}
+-
+-		if ($cache_class)
+-		{
+-			$this->cache_class = (string) $cache_class;
+-		}
+-	}
+-
+-	function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false)
+-	{
+-		if ($file_class)
+-		{
+-			$this->file_class = (string) $file_class;
+-		}
+-
+-		if ($timeout)
+-		{
+-			$this->timeout = (string) $timeout;
+-		}
+-
+-		if ($useragent)
+-		{
+-			$this->useragent = (string) $useragent;
+-		}
+-
+-		if ($force_fsockopen)
+-		{
+-			$this->force_fsockopen = (string) $force_fsockopen;
+-		}
+-	}
+-
+-	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;
+-		}
+-	}
+-
+-	function encode_instead_of_strip($encode = false)
+-	{
+-		$this->encode_instead_of_strip = (bool) $encode;
+-	}
+-
+-	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;
+-		}
+-	}
+-
+-	function strip_comments($strip = false)
+-	{
+-		$this->strip_comments = (bool) $strip;
+-	}
+-
+-	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
+-	 *
+-	 * @access public
+-	 * @since 1.0
+-	 * @param array $element_attribute Element/attribute key/value pairs
+-	 */
+-	function set_url_replacements($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;
+-	}
+-
+-	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_XHTML)
+-			{
+-				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_HTML | SIMPLEPIE_CONSTRUCT_XHTML))
+-			{
+-				// Strip comments
+-				if ($this->strip_comments)
+-				{
+-					$data = SimplePie_Misc::strip_comments($data);
+-				}
+-
+-				// 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)
+-					{
+-						$pcre = "/<($tag)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$tag" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>|(\/)?>)/siU';
+-						while (preg_match($pcre, $data))
+-						{
+-							$data = preg_replace_callback($pcre, array(&$this, 'do_strip_htmltags'), $data);
+-						}
+-					}
+-				}
+-
+-				if ($this->strip_attributes)
+-				{
+-					foreach ($this->strip_attributes as $attrib)
+-					{
+-						$data = preg_replace('/(<[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*)' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . trim($attrib) . '(?:\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>/', '\1\2\3>', $data);
+-					}
+-				}
+-
+-				// Replace relative URLs
+-				$this->base = $base;
+-				foreach ($this->replace_url_attributes as $element => $attributes)
+-				{
+-					$data = $this->replace_urls($data, $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 = SimplePie_Misc::get_element('img', $data);
+-					foreach ($images as $img)
+-					{
+-						if (isset($img['attribs']['src']['data']))
+-						{
+-							$image_url = call_user_func($this->cache_name_function, $img['attribs']['src']['data']);
+-							$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $image_url, 'spi');
+-
+-							if ($cache->load())
+-							{
+-								$img['attribs']['src']['data'] = $this->image_handler . $image_url;
+-								$data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
+-							}
+-							else
+-							{
+-								$file = new $this->file_class($img['attribs']['src']['data'], $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen, $this->proxy);
+-								$headers = $file->headers;
+-
+-								if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)))
+-								{
+-									if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
+-									{
+-										$img['attribs']['src']['data'] = $this->image_handler . $image_url;
+-										$data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
+-									}
+-									else
+-									{
+-										trigger_error("$cache->name is not writeable", E_USER_WARNING);
+-									}
+-								}
+-							}
+-						}
+-					}
+-				}
+-
+-				// Having (possibly) taken stuff out, there may now be whitespace at the beginning/end of the data
+-				$data = trim($data);
+-			}
+-
+-			if ($type & SIMPLEPIE_CONSTRUCT_IRI)
+-			{
+-				$data = SimplePie_Misc::absolutize_url($data, $base);
+-			}
+-
+-			if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI))
+-			{
+-				$data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
+-			}
+-
+-			if ($this->output_encoding != 'UTF-8')
+-			{
+-				$data = SimplePie_Misc::change_encoding($data, 'UTF-8', $this->output_encoding);
+-			}
+-		}
+-		return $data;
+-	}
+-
+-	function replace_urls($data, $tag, $attributes)
+-	{
+-		if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags))
+-		{
+-			$elements = SimplePie_Misc::get_element($tag, $data);
+-			foreach ($elements as $element)
+-			{
+-				if (is_array($attributes))
+-				{
+-					foreach ($attributes as $attribute)
+-					{
+-						if (isset($element['attribs'][$attribute]['data']))
+-						{
+-							$element['attribs'][$attribute]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attribute]['data'], $this->base);
+-							$new_element = SimplePie_Misc::element_implode($element);
+-							$data = str_replace($element['full'], $new_element, $data);
+-							$element['full'] = $new_element;
+-						}
+-					}
+-				}
+-				elseif (isset($element['attribs'][$attributes]['data']))
+-				{
+-					$element['attribs'][$attributes]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attributes]['data'], $this->base);
+-					$data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data);
+-				}
+-			}
+-		}
+-		return $data;
+-	}
+-
+-	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 "<$match[1]$match[2]>$match[3]</$match[1]>";
+-			}
+-			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 '';
+-		}
+-	}
+-}
+-
+-?>

Deleted: trunk/src/debian/patches/use-simplepie-from-distro.patch
===================================================================
--- trunk/src/debian/patches/use-simplepie-from-distro.patch	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/debian/patches/use-simplepie-from-distro.patch	2012-05-21 09:59:30 UTC (rev 15539)
@@ -1,13758 +0,0 @@
-Author: Roland Mas <lolando at debian.org>
-Description: Use SimplePie as provided by the libphp-simplepie Debian package
-Index: src/common/rss/simplepie.inc
-===================================================================
---- src.orig/common/rss/simplepie.inc
-+++ /dev/null
-@@ -1,13724 +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-2008, 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.
-- *
-- * @package SimplePie
-- * @version 1.1.3
-- * @copyright 2004-2008 Ryan Parman, Geoffrey Sneddon
-- * @author Ryan Parman
-- * @author Geoffrey Sneddon
-- * @link http://simplepie.org/ SimplePie
-- * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
-- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
-- * @todo phpDoc comments
-- */
--
--/**
-- * SimplePie Name
-- */
--define('SIMPLEPIE_NAME', 'SimplePie');
--
--/**
-- * SimplePie Version
-- */
--define('SIMPLEPIE_VERSION', '1.1.3');
--
--/**
-- * SimplePie Build
-- */
--define('SIMPLEPIE_BUILD', 20081219);
--
--/**
-- * 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);
--
--/**
-- * 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
-- */
--define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG', 'http://search.yahoo.com/mrss');
--
--/**
-- * 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/');
--
--/**
-- * Whether we're running on PHP5
-- */
--define('SIMPLEPIE_PHP5', version_compare(PHP_VERSION, '5.0.0', '>='));
--
--/**
-- * 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
-- * @version "Razzleberry"
-- * @copyright 2004-2007 Ryan Parman, Geoffrey Sneddon
-- * @author Ryan Parman
-- * @author Geoffrey Sneddon
-- * @todo Option for type of fetching (cache, not modified header, fetch, etc.)
-- */
--class SimplePie
--{
--	/**
--	 * @var array Raw data
--	 * @access private
--	 */
--	var $data = array();
--
--	/**
--	 * @var mixed Error string
--	 * @access private
--	 */
--	var $error;
--
--	/**
--	 * @var object Instance of SimplePie_Sanitize (or other class)
--	 * @see SimplePie::set_sanitize_class()
--	 * @access private
--	 */
--	var $sanitize;
--
--	/**
--	 * @var string SimplePie Useragent
--	 * @see SimplePie::set_useragent()
--	 * @access private
--	 */
--	var $useragent = SIMPLEPIE_USERAGENT;
--
--	/**
--	 * @var string Feed URL
--	 * @see SimplePie::set_feed_url()
--	 * @access private
--	 */
--	var $feed_url;
--
--	/**
--	 * @var object Instance of SimplePie_File to use as a feed
--	 * @see SimplePie::set_file()
--	 * @access private
--	 */
--	var $file;
--
--	/**
--	 * @var string Raw feed data
--	 * @see SimplePie::set_raw_data()
--	 * @access private
--	 */
--	var $raw_data;
--
--	/**
--	 * @var int Timeout for fetching remote files
--	 * @see SimplePie::set_timeout()
--	 * @access private
--	 */
--	var $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
--	 */
--	var $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
--	 */
--	var $force_feed = false;
--
--	/**
--	 * @var bool Enable/Disable XML dump
--	 * @see SimplePie::enable_xml_dump()
--	 * @access private
--	 */
--	var $xml_dump = false;
--
--	/**
--	 * @var bool Enable/Disable Caching
--	 * @see SimplePie::enable_cache()
--	 * @access private
--	 */
--	var $cache = true;
--
--	/**
--	 * @var int Cache duration (in seconds)
--	 * @see SimplePie::set_cache_duration()
--	 * @access private
--	 */
--	var $cache_duration = 3600;
--
--	/**
--	 * @var int Auto-discovery cache duration (in seconds)
--	 * @see SimplePie::set_autodiscovery_cache_duration()
--	 * @access private
--	 */
--	var $autodiscovery_cache_duration = 604800; // 7 Days.
--
--	/**
--	 * @var string Cache location (relative to executing script)
--	 * @see SimplePie::set_cache_location()
--	 * @access private
--	 */
--	var $cache_location = './cache';
--
--	/**
--	 * @var string Function that creates the cache filename
--	 * @see SimplePie::set_cache_name_function()
--	 * @access private
--	 */
--	var $cache_name_function = 'md5';
--
--	/**
--	 * @var bool Reorder feed by date descending
--	 * @see SimplePie::enable_order_by_date()
--	 * @access private
--	 */
--	var $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
--	 */
--	var $input_encoding = false;
--
--	/**
--	 * @var int Feed Autodiscovery Level
--	 * @see SimplePie::set_autodiscovery_level()
--	 * @access private
--	 */
--	var $autodiscovery = SIMPLEPIE_LOCATOR_ALL;
--
--	/**
--	 * @var string Class used for caching feeds
--	 * @see SimplePie::set_cache_class()
--	 * @access private
--	 */
--	var $cache_class = 'SimplePie_Cache';
--
--	/**
--	 * @var string Class used for locating feeds
--	 * @see SimplePie::set_locator_class()
--	 * @access private
--	 */
--	var $locator_class = 'SimplePie_Locator';
--
--	/**
--	 * @var string Class used for parsing feeds
--	 * @see SimplePie::set_parser_class()
--	 * @access private
--	 */
--	var $parser_class = 'SimplePie_Parser';
--
--	/**
--	 * @var string Class used for fetching feeds
--	 * @see SimplePie::set_file_class()
--	 * @access private
--	 */
--	var $file_class = 'SimplePie_File';
--
--	/**
--	 * @var string Class used for items
--	 * @see SimplePie::set_item_class()
--	 * @access private
--	 */
--	var $item_class = 'SimplePie_Item';
--
--	/**
--	 * @var string Class used for authors
--	 * @see SimplePie::set_author_class()
--	 * @access private
--	 */
--	var $author_class = 'SimplePie_Author';
--
--	/**
--	 * @var string Class used for categories
--	 * @see SimplePie::set_category_class()
--	 * @access private
--	 */
--	var $category_class = 'SimplePie_Category';
--
--	/**
--	 * @var string Class used for enclosures
--	 * @see SimplePie::set_enclosures_class()
--	 * @access private
--	 */
--	var $enclosure_class = 'SimplePie_Enclosure';
--
--	/**
--	 * @var string Class used for Media RSS <media:text> captions
--	 * @see SimplePie::set_caption_class()
--	 * @access private
--	 */
--	var $caption_class = 'SimplePie_Caption';
--
--	/**
--	 * @var string Class used for Media RSS <media:copyright>
--	 * @see SimplePie::set_copyright_class()
--	 * @access private
--	 */
--	var $copyright_class = 'SimplePie_Copyright';
--
--	/**
--	 * @var string Class used for Media RSS <media:credit>
--	 * @see SimplePie::set_credit_class()
--	 * @access private
--	 */
--	var $credit_class = 'SimplePie_Credit';
--
--	/**
--	 * @var string Class used for Media RSS <media:rating>
--	 * @see SimplePie::set_rating_class()
--	 * @access private
--	 */
--	var $rating_class = 'SimplePie_Rating';
--
--	/**
--	 * @var string Class used for Media RSS <media:restriction>
--	 * @see SimplePie::set_restriction_class()
--	 * @access private
--	 */
--	var $restriction_class = 'SimplePie_Restriction';
--
--	/**
--	 * @var string Class used for content-type sniffing
--	 * @see SimplePie::set_content_type_sniffer_class()
--	 * @access private
--	 */
--	var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer';
--
--	/**
--	 * @var string Class used for item sources.
--	 * @see SimplePie::set_source_class()
--	 * @access private
--	 */
--	var $source_class = 'SimplePie_Source';
--
--	/**
--	 * @var mixed Set javascript query string parameter (false, or
--	 * anything type-cast to false, disables this feature)
--	 * @see SimplePie::set_javascript()
--	 * @access private
--	 */
--	var $javascript = 'js';
--
--	/**
--	 * @var int Maximum number of feeds to check with autodiscovery
--	 * @see SimplePie::set_max_checked_feeds()
--	 * @access private
--	 */
--	var $max_checked_feeds = 10;
--
--	/**
--	 * @var string Web-accessible path to the handler_favicon.php file.
--	 * @see SimplePie::set_favicon_handler()
--	 * @access private
--	 */
--	var $favicon_handler = '';
--
--	/**
--	 * @var string Web-accessible path to the handler_image.php file.
--	 * @see SimplePie::set_image_handler()
--	 * @access private
--	 */
--	var $image_handler = '';
--
--	/**
--	 * @var array Stores the URLs when multiple feeds are being initialized.
--	 * @see SimplePie::set_feed_url()
--	 * @access private
--	 */
--	var $multifeed_url = array();
--
--	/**
--	 * @var array Stores SimplePie objects when multiple feeds initialized.
--	 * @access private
--	 */
--	var $multifeed_objects = array();
--
--	/**
--	 * @var array Stores the get_object_vars() array for use with multifeeds.
--	 * @see SimplePie::set_feed_url()
--	 * @access private
--	 */
--	var $config_settings = null;
--
--	/**
--	 * @var integer Stores the number of items to return per-feed with multifeeds.
--	 * @see SimplePie::set_item_limit()
--	 * @access private
--	 */
--	var $item_limit = 0;
--
--	/**
--	 * @var array Stores the default attributes to be stripped by strip_attributes().
--	 * @see SimplePie::strip_attributes()
--	 * @access private
--	 */
--	var $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
--	 */
--	var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
--
--	/**
--	 * @var string proxy used to fetch feeds
--	 * @see SimplePie::set_proxy()
--	 * @access private
--	 */
--	var $proxy = "";
--
--	/**
--	 * The SimplePie class contains feed level data and options
--	 *
--	 * There are two ways that you can create a new SimplePie object. The first
--	 * is by passing a feed URL as a parameter to the SimplePie constructor
--	 * (as well as optionally setting the cache location and cache expiry). This
--	 * will initialise the whole feed with all of the default settings, and you
--	 * can begin accessing methods and properties immediately.
--	 *
--	 * The second way is to create the SimplePie object with no parameters
--	 * at all. This will enable you to set configuration options. 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. This format is
--	 * what is used throughout this documentation.
--	 *
--	 * @access public
--	 * @since 1.0 Preview Release
--	 * @param string $feed_url This is the URL you want to parse.
--	 * @param string $cache_location This is where you want the cache to be stored.
--	 * @param int $cache_duration This is the number of seconds that you want to store the cache file for.
--	 * @param string $proxy This is the proxy "host:port" used to fetch feeds
--	 */
--	function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null, $proxy = null)
--	{
--		// Other objects, instances created here so we can set options on them
--		$this->sanitize = new SimplePie_Sanitize;
--
--		// Set options if they're passed to the constructor
--		if ($cache_location !== null)
--		{
--			$this->set_cache_location($cache_location);
--		}
--
--		if ($cache_duration !== null)
--		{
--			$this->set_cache_duration($cache_duration);
--		}
--
--		if ($proxy !== null)
--		{
--			$this->set_proxy($proxy);
--		}
--
--		// Only init the script if we're passed a feed URL
--		if ($feed_url !== null)
--		{
--			$this->set_feed_url($feed_url);
--			$this->init();
--		}
--	}
--
--	/**
--	 * Used for converting object to a string
--	 */
--	function __toString()
--	{
--		return md5(serialize($this->data));
--	}
--
--	/**
--	 * Remove items that link back to this before destroying this object
--	 */
--	function __destruct()
--	{
--		if (!empty($this->data['items']))
--		{
--			foreach ($this->data['items'] as $item)
--			{
--				$item->__destruct();
--			}
--			unset($this->data['items']);
--		}
--		if (!empty($this->data['ordered_items']))
--		{
--			foreach ($this->data['ordered_items'] as $item)
--			{
--				$item->__destruct();
--			}
--			unset($this->data['ordered_items']);
--		}
--	}
--
--	/**
--	 * Force the given data/URL to be treated as a feed no matter what it
--	 * appears like
--	 *
--	 * @access public
--	 * @since 1.1
--	 * @param bool $enable Force the given data/URL to be treated as a feed
--	 */
--	function force_feed($enable = false)
--	{
--		$this->force_feed = (bool) $enable;
--	}
--
--	/**
--	 * This is 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.
--	 *
--	 * @access public
--	 * @since 1.0 Preview Release
--	 * @param mixed $url This is the URL (or array of URLs) that you want to parse.
--	 * @see SimplePie::set_raw_data()
--	 */
--	function set_feed_url($url)
--	{
--		if (is_array($url))
--		{
--			$this->multifeed_url = array();
--			foreach ($url as $value)
--			{
--				$this->multifeed_url[] = SimplePie_Misc::fix_protocol($value, 1);
--			}
--		}
--		else
--		{
--			$this->feed_url = SimplePie_Misc::fix_protocol($url, 1);
--		}
--	}
--
--	/**
--	 * This is the proxy used to fetch feeds
--	 *
--	 * @access public
--	 * @param string $proxy This is the URL of the proxy "host:port"
--	 */
--	function set_proxy($proxy)
--	{
--		$this->proxy = $proxy;
--		$this->sanitize->proxy = $proxy;
--	}
--
--	/**
--	 * Provides an instance of SimplePie_File to use as a feed
--	 *
--	 * @access public
--	 * @param object &$file Instance of SimplePie_File (or subclass)
--	 * @return bool True on success, false on failure
--	 */
--	function set_file(&$file)
--	{
--		if (is_a($file, 'SimplePie_File'))
--		{
--			$this->feed_url = $file->url;
--			$this->file =& $file;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * 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.
--	 *
--	 * @access public
--	 * @since 1.0 Beta 3
--	 * @param string $data RSS or Atom data as a string.
--	 * @see SimplePie::set_feed_url()
--	 */
--	function set_raw_data($data)
--	{
--		$this->raw_data = $data;
--	}
--
--	/**
--	 * Allows you to override 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.
--	 *
--	 * @access public
--	 * @since 1.0 Beta 3
--	 * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed.
--	 */
--	function set_timeout($timeout = 10)
--	{
--		$this->timeout = (int) $timeout;
--	}
--
--	/**
--	 * Forces SimplePie to use fsockopen() instead of the preferred cURL
--	 * functions.
--	 *
--	 * @access public
--	 * @since 1.0 Beta 3
--	 * @param bool $enable Force fsockopen() to be used
--	 */
--	function force_fsockopen($enable = false)
--	{
--		$this->force_fsockopen = (bool) $enable;
--	}
--
--	/**
--	 * Outputs the raw XML content of the feed, after it has gone through
--	 * SimplePie's filters.
--	 *
--	 * Used only for debugging, this function will output the XML content as
--	 * text/xml. When SimplePie reads in a feed, it does a bit of cleaning up
--	 * before trying to parse it. Many parts of the feed are re-written in
--	 * memory, and in the end, you have a parsable feed. XML dump shows you the
--	 * actual XML that SimplePie tries to parse, which may or may not be very
--	 * different from the original feed.
--	 *
--	 * @access public
--	 * @since 1.0 Preview Release
--	 * @param bool $enable Enable XML dump
--	 */
--	function enable_xml_dump($enable = false)
--	{
--		$this->xml_dump = (bool) $enable;
--	}
--
--	/**
--	 * Enables/disables caching in SimplePie.
--	 *
--	 * This option allows you to disable caching all-together in SimplePie.
--	 * However, disabling the cache can lead to longer load times.
--	 *
--	 * @access public
--	 * @since 1.0 Preview Release
--	 * @param bool $enable Enable caching
--	 */
--	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.
--	 *
--	 * @access public
--	 * @param int $seconds The feed content cache duration.
--	 */
--	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.
--	 *
--	 * @access public
--	 * @param int $seconds The autodiscovered feed URL cache duration.
--	 */
--	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.
--	 *
--	 * @access public
--	 * @param string $location The file system location.
--	 */
--	function set_cache_location($location = './cache')
--	{
--		$this->cache_location = (string) $location;
--	}
--
--	/**
--	 * Determines whether feed items should be sorted into reverse chronological order.
--	 *
--	 * @access public
--	 * @param bool $enable Sort as reverse chronological order.
--	 */
--	function enable_order_by_date($enable = true)
--	{
--		$this->order_by_date = (bool) $enable;
--	}
--
--	/**
--	 * Allows you to override the character encoding reported by the feed.
--	 *
--	 * @access public
--	 * @param string $encoding Character encoding.
--	 */
--	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
--	 *
--	 * @access public
--	 * @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)
--	 */
--	function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL)
--	{
--		$this->autodiscovery = (int) $level;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for caching.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_cache_class($class = 'SimplePie_Cache')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Cache'))
--		{
--			$this->cache_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for auto-discovery.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_locator_class($class = 'SimplePie_Locator')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Locator'))
--		{
--			$this->locator_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for XML parsing.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_parser_class($class = 'SimplePie_Parser')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Parser'))
--		{
--			$this->parser_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for remote file fetching.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_file_class($class = 'SimplePie_File')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_File'))
--		{
--			$this->file_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for data sanitization.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_sanitize_class($class = 'SimplePie_Sanitize')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Sanitize'))
--		{
--			$this->sanitize = new $class;
--			$this->sanitize->proxy = $this->proxy;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for handling feed items.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_item_class($class = 'SimplePie_Item')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Item'))
--		{
--			$this->item_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for handling author data.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_author_class($class = 'SimplePie_Author')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Author'))
--		{
--			$this->author_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for handling category data.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_category_class($class = 'SimplePie_Category')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Category'))
--		{
--			$this->category_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for feed enclosures.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_enclosure_class($class = 'SimplePie_Enclosure')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Enclosure'))
--		{
--			$this->enclosure_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for <media:text> captions
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_caption_class($class = 'SimplePie_Caption')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Caption'))
--		{
--			$this->caption_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for <media:copyright>
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_copyright_class($class = 'SimplePie_Copyright')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Copyright'))
--		{
--			$this->copyright_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for <media:credit>
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_credit_class($class = 'SimplePie_Credit')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Credit'))
--		{
--			$this->credit_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for <media:rating>
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_rating_class($class = 'SimplePie_Rating')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Rating'))
--		{
--			$this->rating_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for <media:restriction>
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_restriction_class($class = 'SimplePie_Restriction')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Restriction'))
--		{
--			$this->restriction_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses for content-type sniffing.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_content_type_sniffer_class($class = 'SimplePie_Content_Type_Sniffer')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Content_Type_Sniffer'))
--		{
--			$this->content_type_sniffer_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to change which class SimplePie uses item sources.
--	 * Useful when you are overloading or extending SimplePie's default classes.
--	 *
--	 * @access public
--	 * @param string $class Name of custom class.
--	 * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
--	 * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
--	 */
--	function set_source_class($class = 'SimplePie_Source')
--	{
--		if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Source'))
--		{
--			$this->source_class = $class;
--			return true;
--		}
--		return false;
--	}
--
--	/**
--	 * Allows you to override the default user agent string.
--	 *
--	 * @access public
--	 * @param string $ua New user agent string.
--	 */
--	function set_useragent($ua = SIMPLEPIE_USERAGENT)
--	{
--		$this->useragent = (string) $ua;
--	}
--
--	/**
--	 * Set callback function to create cache filename with
--	 *
--	 * @access public
--	 * @param mixed $function Callback function
--	 */
--	function set_cache_name_function($function = 'md5')
--	{
--		if (is_callable($function))
--		{
--			$this->cache_name_function = $function;
--		}
--	}
--
--	/**
--	 * Set javascript query string parameter
--	 *
--	 * @access public
--	 * @param mixed $get Javascript query string parameter
--	 */
--	function set_javascript($get = 'js')
--	{
--		if ($get)
--		{
--			$this->javascript = (string) $get;
--		}
--		else
--		{
--			$this->javascript = false;
--		}
--	}
--
--	/**
--	 * Set options to make SP as fast as possible.  Forgoes a
--	 * substantial amount of data sanitization in favor of speed.
--	 *
--	 * @access public
--	 * @param bool $set Whether to set them or not
--	 */
--	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
--	 *
--	 * @access public
--	 * @param int $max Maximum number of feeds to check
--	 */
--	function set_max_checked_feeds($max = 10)
--	{
--		$this->max_checked_feeds = (int) $max;
--	}
--
--	function remove_div($enable = true)
--	{
--		$this->sanitize->remove_div($enable);
--	}
--
--	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);
--		}
--	}
--
--	function encode_instead_of_strip($enable = true)
--	{
--		$this->sanitize->encode_instead_of_strip($enable);
--	}
--
--	function strip_attributes($attribs = '')
--	{
--		if ($attribs === '')
--		{
--			$attribs = $this->strip_attributes;
--		}
--		$this->sanitize->strip_attributes($attribs);
--	}
--
--	function set_output_encoding($encoding = 'UTF-8')
--	{
--		$this->sanitize->set_output_encoding($encoding);
--	}
--
--	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
--	 *
--	 * @access public
--	 * @since 1.0
--	 * @param array $element_attribute Element/attribute key/value pairs
--	 */
--	function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
--	{
--		$this->sanitize->set_url_replacements($element_attribute);
--	}
--
--	/**
--	 * Set the handler to enable the display of cached favicons.
--	 *
--	 * @access public
--	 * @param str $page Web-accessible path to the handler_favicon.php file.
--	 * @param str $qs The query string that the value should be passed to.
--	 */
--	function set_favicon_handler($page = false, $qs = 'i')
--	{
--		if ($page != false)
--		{
--			$this->favicon_handler = $page . '?' . $qs . '=';
--		}
--		else
--		{
--			$this->favicon_handler = '';
--		}
--	}
--
--	/**
--	 * Set the handler to enable the display of cached images.
--	 *
--	 * @access public
--	 * @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.
--	 */
--	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.
--	 *
--	 * @access public
--	 * @param integer $limit The maximum number of items to return.
--	 */
--	function set_item_limit($limit = 0)
--	{
--		$this->item_limit = (int) $limit;
--	}
--
--	function init()
--	{
--		if ((function_exists('version_compare') && version_compare(PHP_VERSION, '4.3.0', '<')) || !extension_loaded('xml') || !extension_loaded('pcre'))
--		{
--			return false;
--		}
--		if (isset($_GET[$this->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_odeo(link) {
--	document.writeln('<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url='+link+'"></embed>');
--}
--
--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
--			exit;
--		}
--
--		// Pass whatever was set with config options over to the sanitizer.
--		$this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->cache_class);
--		$this->sanitize->pass_file_data($this->file_class, $this->timeout, $this->useragent, $this->force_fsockopen);
--
--		if ($this->feed_url !== null || $this->raw_data !== null)
--		{
--			$this->data = array();
--			$this->multifeed_objects = array();
--			$cache = false;
--
--			if ($this->feed_url !== null)
--			{
--				$parsed_feed_url = SimplePie_Misc::parse_url($this->feed_url);
--				// Decide whether to enable caching
--				if ($this->cache && $parsed_feed_url['scheme'] !== '')
--				{
--					$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc');
--				}
--				// If it's enabled and we don't want an XML dump, use the cache
--				if ($cache && !$this->xml_dump)
--				{
--					// 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'])
--								{
--									$cache->unlink();
--									$this->data = array();
--								}
--								else
--								{
--									$this->set_feed_url($this->data['feed_url']);
--									return $this->init();
--								}
--							}
--						}
--						// 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();
--								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 = new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen, $this->proxy);
--								if ($file->success)
--								{
--									if ($file->status_code == 304)
--									{
--										$cache->touch();
--										return true;
--									}
--									else
--									{
--										$headers = $file->headers;
--									}
--								}
--								else
--								{
--									unset($file);
--								}
--							}
--						}
--						// If the cache is still valid, just return true
--						else
--						{
--							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 (is_a($this->file, 'SimplePie_File') && $this->file->url == $this->feed_url)
--					{
--						$file =& $this->file;
--					}
--					else
--					{
--						$file = new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen, $this->proxy);
--					}
--				}
--				// If the file connection has an error, set SimplePie::error to that and quit
--				if (!$file->success)
--				{
--					$this->error = $file->error;
--					if (!empty($this->data))
--					{
--						return true;
--					}
--					else
--					{
--						return false;
--					}
--				}
--
--				if (!$this->force_feed)
--				{
--					// Check if the supplied URL is a feed, if it isn't, look for it.
--					$locate = new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds, $this->content_type_sniffer_class);
--					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);
--						if ($file = $locate->find($this->autodiscovery))
--						{
--							if ($cache)
--							{
--								$this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD);
--								if (!$cache->save($this))
--								{
--									trigger_error("$cache->name is not writeable", E_USER_WARNING);
--								}
--								$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc');
--							}
--							$this->feed_url = $file->url;
--						}
--						else
--						{
--							$this->error = "A feed could not be found at $this->feed_url";
--							SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
--							return false;
--						}
--					}
--					$locate = null;
--				}
--
--				$headers = $file->headers;
--				$data = $file->body;
--				$sniffer = new $this->content_type_sniffer_class($file);
--				$sniffed = $sniffer->get_type();
--			}
--			else
--			{
--				$data = $this->raw_data;
--			}
--
--			// 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, SimplePie_Misc::xml_encoding($data));
--					$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, SimplePie_Misc::xml_encoding($data));
--			$encodings[] = 'UTF-8';
--			$encodings[] = 'ISO-8859-1';
--
--			// There's no point in trying an encoding twice
--			$encodings = array_unique($encodings);
--
--			// If we want the XML, just output that with the most likely encoding and quit
--			if ($this->xml_dump)
--			{
--				header('Content-type: text/xml; charset=' . $encodings[0]);
--				echo $data;
--				exit;
--			}
--
--			// 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 = SimplePie_Misc::change_encoding($data, $encoding, 'UTF-8'))
--				{
--					// Create new parser
--					$parser = new $this->parser_class();
--
--					// If it's parsed fine
--					if ($parser->parse($utf8_data, 'UTF-8'))
--					{
--						$this->data = $parser->get_data();
--						if ($this->get_type() & ~SIMPLEPIE_TYPE_NONE)
--						{
--							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("$cache->name is not writeable", E_USER_WARNING);
--							}
--							return true;
--						}
--						else
--						{
--							$this->error = "A feed could not be found at $this->feed_url";
--							SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
--							return false;
--						}
--					}
--				}
--			}
--			// We have an error, just set SimplePie::error to it and quit
--			$this->error = sprintf('XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
--			SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
--			return false;
--		}
--		elseif (!empty($this->multifeed_url))
--		{
--			$i = 0;
--			$success = 0;
--			$this->multifeed_objects = array();
--			foreach ($this->multifeed_url as $url)
--			{
--				if (SIMPLEPIE_PHP5)
--				{
--					// This keyword needs to defy coding standards for PHP4 compatibility
--					$this->multifeed_objects[$i] = clone($this);
--				}
--				else
--				{
--					$this->multifeed_objects[$i] = $this;
--				}
--				$this->multifeed_objects[$i]->set_feed_url($url);
--				$success |= $this->multifeed_objects[$i]->init();
--				$i++;
--			}
--			return (bool) $success;
--		}
--		else
--		{
--			return false;
--		}
--	}
--
--	/**
--	 * Return the error message for the occured error
--	 *
--	 * @access public
--	 * @return string Error message
--	 */
--	function error()
--	{
--		return $this->error;
--	}
--
--	function get_encoding()
--	{
--		return $this->sanitize->output_encoding;
--	}
--
--	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);
--		}
--	}
--
--	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']['']['rss']))
--			{
--				$this->data['type'] &= SIMPLEPIE_TYPE_RSS_ALL;
--				if (isset($this->data['child']['']['rss'][0]['attribs']['']['version']))
--				{
--					switch (trim($this->data['child']['']['rss'][0]['attribs']['']['version']))
--					{
--						case '0.91':
--							$this->data['type'] &= SIMPLEPIE_TYPE_RSS_091;
--							if (isset($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data']))
--							{
--								switch (trim($this->data['child']['']['rss'][0]['child']['']['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'];
--	}
--
--	/**
--	 * Returns the URL for the favicon of the feed's website.
--	 *
--	 * @todo Cache atom:icon
--	 * @access public
--	 * @since 1.0
--	 */
--	function get_favicon()
--	{
--		if ($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 (($url = $this->get_link()) !== null && preg_match('/^http(s)?:\/\//i', $url))
--		{
--			$favicon = SimplePie_Misc::absolutize_url('/favicon.ico', $url);
--
--			if ($this->cache && $this->favicon_handler)
--			{
--				$favicon_filename = call_user_func($this->cache_name_function, $favicon);
--				$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $favicon_filename, 'spi');
--
--				if ($cache->load())
--				{
--					return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI);
--				}
--				else
--				{
--					$file = new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen, $this->proxy);
--
--					if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)) && strlen($file->body) > 0)
--					{
--						$sniffer = new $this->content_type_sniffer_class($file);
--						if (substr($sniffer->get_type(), 0, 6) === 'image/')
--						{
--							if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
--							{
--								return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI);
--							}
--							else
--							{
--								trigger_error("$cache->name is not writeable", E_USER_WARNING);
--								return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
--							}
--						}
--					}
--				}
--			}
--			else
--			{
--				return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
--			}
--		}
--		return false;
--	}
--
--	/**
--	 * @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
--	 */
--	function subscribe_url()
--	{
--		if ($this->feed_url !== null)
--		{
--			return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function subscribe_feed()
--	{
--		if ($this->feed_url !== null)
--		{
--			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function subscribe_outlook()
--	{
--		if ($this->feed_url !== null)
--		{
--			return 'outlook' . $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function subscribe_podcast()
--	{
--		if ($this->feed_url !== null)
--		{
--			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 3), SIMPLEPIE_CONSTRUCT_IRI);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function subscribe_itunes()
--	{
--		if ($this->feed_url !== null)
--		{
--			return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 4), SIMPLEPIE_CONSTRUCT_IRI);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	/**
--	 * Creates the subscribe_* methods' return data
--	 *
--	 * @access private
--	 * @param string $feed_url String to prefix to the feed URL
--	 * @param string $site_url String to prefix to the site URL (and
--	 * suffix to the feed URL)
--	 * @return mixed URL if feed exists, false otherwise
--	 */
--	function subscribe_service($feed_url, $site_url = null)
--	{
--		if ($this->subscribe_url())
--		{
--			$return = $this->sanitize($feed_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->feed_url);
--			if ($site_url !== null && $this->get_link() !== null)
--			{
--				$return .= $this->sanitize($site_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_link());
--			}
--			return $return;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function subscribe_aol()
--	{
--		return $this->subscribe_service('http://feeds.my.aol.com/add.jsp?url=');
--	}
--
--	function subscribe_bloglines()
--	{
--		return urldecode($this->subscribe_service('http://www.bloglines.com/sub/'));
--	}
--
--	function subscribe_eskobo()
--	{
--		return $this->subscribe_service('http://www.eskobo.com/?AddToMyPage=');
--	}
--
--	function subscribe_feedfeeds()
--	{
--		return $this->subscribe_service('http://www.feedfeeds.com/add?feed=');
--	}
--
--	function subscribe_feedster()
--	{
--		return $this->subscribe_service('http://www.feedster.com/myfeedster.php?action=addrss&confirm=no&rssurl=');
--	}
--
--	function subscribe_google()
--	{
--		return $this->subscribe_service('http://fusion.google.com/add?feedurl=');
--	}
--
--	function subscribe_gritwire()
--	{
--		return $this->subscribe_service('http://my.gritwire.com/feeds/addExternalFeed.aspx?FeedUrl=');
--	}
--
--	function subscribe_msn()
--	{
--		return $this->subscribe_service('http://my.msn.com/addtomymsn.armx?id=rss&ut=', '&ru=');
--	}
--
--	function subscribe_netvibes()
--	{
--		return $this->subscribe_service('http://www.netvibes.com/subscribe.php?url=');
--	}
--
--	function subscribe_newsburst()
--	{
--		return $this->subscribe_service('http://www.newsburst.com/Source/?add=');
--	}
--
--	function subscribe_newsgator()
--	{
--		return $this->subscribe_service('http://www.newsgator.com/ngs/subscriber/subext.aspx?url=');
--	}
--
--	function subscribe_odeo()
--	{
--		return $this->subscribe_service('http://www.odeo.com/listen/subscribe?feed=');
--	}
--
--	function subscribe_podnova()
--	{
--		return $this->subscribe_service('http://www.podnova.com/index_your_podcasts.srf?action=add&url=');
--	}
--
--	function subscribe_rojo()
--	{
--		return $this->subscribe_service('http://www.rojo.com/add-subscription?resource=');
--	}
--
--	function subscribe_yahoo()
--	{
--		return $this->subscribe_service('http://add.my.yahoo.com/rss?url=');
--	}
--
--	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']['']['rss'][0]['child'][$namespace][$tag]))
--			{
--				return $this->data['child']['']['rss'][0]['child'][$namespace][$tag];
--			}
--		}
--		return null;
--	}
--
--	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('', 'channel'))
--			{
--				if (isset($channel[0]['child'][$namespace][$tag]))
--				{
--					return $channel[0]['child'][$namespace][$tag];
--				}
--			}
--		}
--		return null;
--	}
--
--	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('', 'image'))
--			{
--				if (isset($image[0]['child'][$namespace][$tag]))
--				{
--					return $image[0]['child'][$namespace][$tag];
--				}
--			}
--		}
--		return null;
--	}
--
--	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();
--		}
--	}
--
--	function sanitize($data, $type, $base = '')
--	{
--		return $this->sanitize->sanitize($data, $type, $base);
--	}
--
--	function get_title()
--	{
--		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
--		{
--			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', '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;
--		}
--	}
--
--	function get_category($key = 0)
--	{
--		$categories = $this->get_categories();
--		if (isset($categories[$key]))
--		{
--			return $categories[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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[] = new $this->category_class($term, $scheme, $label);
--		}
--		foreach ((array) $this->get_channel_tags('', 'category') as $category)
--		{
--			$categories[] = new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
--		{
--			$categories[] = new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
--		{
--			$categories[] = new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--
--		if (!empty($categories))
--		{
--			return SimplePie_Misc::array_unique($categories);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_author($key = 0)
--	{
--		$authors = $this->get_authors();
--		if (isset($authors[$key]))
--		{
--			return $authors[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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[] = new $this->author_class($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[] = new $this->author_class($name, $url, $email);
--			}
--		}
--		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
--		{
--			$authors[] = new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
--		{
--			$authors[] = new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
--		{
--			$authors[] = new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--
--		if (!empty($authors))
--		{
--			return SimplePie_Misc::array_unique($authors);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_contributor($key = 0)
--	{
--		$contributors = $this->get_contributors();
--		if (isset($contributors[$key]))
--		{
--			return $contributors[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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[] = new $this->author_class($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[] = new $this->author_class($name, $url, $email);
--			}
--		}
--
--		if (!empty($contributors))
--		{
--			return SimplePie_Misc::array_unique($contributors);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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.
--	 */
--	function get_permalink()
--	{
--		return $this->get_link(0);
--	}
--
--	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('', '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 (SimplePie_Misc::is_isegment_nz_nc($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;
--		}
--	}
--
--	function get_description()
--	{
--		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
--		{
--			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', 'description'))
--		{
--			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, '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;
--		}
--	}
--
--	function get_copyright()
--	{
--		if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
--		{
--			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
--		}
--		elseif ($return = $this->get_channel_tags('', '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;
--		}
--	}
--
--	function get_language()
--	{
--		if ($return = $this->get_channel_tags('', '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;
--		}
--	}
--
--	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]+))$/', $return[0]['data'], $match))
--		{
--			return (float) $match[1];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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]+))$/', $return[0]['data'], $match))
--		{
--			return (float) $match[2];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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('', '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;
--		}
--	}
--
--	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('', 'url'))
--		{
--			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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('', 'link'))
--		{
--			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_image_width()
--	{
--		if ($return = $this->get_image_tags('', 'width'))
--		{
--			return round($return[0]['data']);
--		}
--		elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
--		{
--			return 88.0;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_image_height()
--	{
--		if ($return = $this->get_image_tags('', 'height'))
--		{
--			return round($return[0]['data']);
--		}
--		elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
--		{
--			return 31.0;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_item_quantity($max = 0)
--	{
--		$qty = count($this->get_items());
--		if ($max == 0)
--		{
--			return $qty;
--		}
--		else
--		{
--			return ($qty > $max) ? $max : $qty;
--		}
--	}
--
--	function get_item($key = 0)
--	{
--		$items = $this->get_items();
--		if (isset($items[$key]))
--		{
--			return $items[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_items($start = 0, $end = 0)
--	{
--		if (!empty($this->multifeed_objects))
--		{
--			return SimplePie::merge_items($this->multifeed_objects, $start, $end, $this->item_limit);
--		}
--		elseif (!isset($this->data['items']))
--		{
--			if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry'))
--			{
--				$keys = array_keys($items);
--				foreach ($keys as $key)
--				{
--					$this->data['items'][] = new $this->item_class($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'][] = new $this->item_class($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'][] = new $this->item_class($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'][] = new $this->item_class($this, $items[$key]);
--				}
--			}
--			if ($items = $this->get_channel_tags('', 'item'))
--			{
--				$keys = array_keys($items);
--				foreach ($keys as $key)
--				{
--					$this->data['items'][] = new $this->item_class($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)
--			{
--				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(&$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();
--		}
--	}
--
--	function sort_items($a, $b)
--	{
--		return $a->get_date('U') <= $b->get_date('U');
--	}
--
--	function merge_items($urls, $start = 0, $end = 0, $limit = 0)
--	{
--		if (is_array($urls) && sizeof($urls) > 0)
--		{
--			$items = array();
--			foreach ($urls as $arg)
--			{
--				if (is_a($arg, '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('SimplePie', '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();
--		}
--	}
--}
--
--class SimplePie_Item
--{
--	var $feed;
--	var $data = array();
--
--	function SimplePie_Item($feed, $data)
--	{
--		$this->feed = $feed;
--		$this->data = $data;
--	}
--
--	function __toString()
--	{
--		return md5(serialize($this->data));
--	}
--
--	/**
--	 * Remove items that link back to this before destroying this object
--	 */
--	function __destruct()
--	{
--		unset($this->feed);
--	}
--
--	function get_item_tags($namespace, $tag)
--	{
--		if (isset($this->data['child'][$namespace][$tag]))
--		{
--			return $this->data['child'][$namespace][$tag];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_base($element = array())
--	{
--		return $this->feed->get_base($element);
--	}
--
--	function sanitize($data, $type, $base = '')
--	{
--		return $this->feed->sanitize($data, $type, $base);
--	}
--
--	function get_feed()
--	{
--		return $this->feed;
--	}
--
--	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('', '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 (($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));
--		}
--	}
--
--	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'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', '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'];
--	}
--
--	function get_description($description_only = false)
--	{
--		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))
--		{
--			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', '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 (!$description_only)
--		{
--			return $this->get_content(true);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_content($content_only = false)
--	{
--		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))
--		{
--			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_content_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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;
--		}
--	}
--
--	function get_category($key = 0)
--	{
--		$categories = $this->get_categories();
--		if (isset($categories[$key]))
--		{
--			return $categories[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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[] = new $this->feed->category_class($term, $scheme, $label);
--		}
--		foreach ((array) $this->get_item_tags('', 'category') as $category)
--		{
--			$categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
--		{
--			$categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
--		{
--			$categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--
--		if (!empty($categories))
--		{
--			return SimplePie_Misc::array_unique($categories);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_author($key = 0)
--	{
--		$authors = $this->get_authors();
--		if (isset($authors[$key]))
--		{
--			return $authors[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_contributor($key = 0)
--	{
--		$contributors = $this->get_contributors();
--		if (isset($contributors[$key]))
--		{
--			return $contributors[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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[] = new $this->feed->author_class($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[] = new $this->feed->author_class($name, $url, $email);
--			}
--		}
--
--		if (!empty($contributors))
--		{
--			return SimplePie_Misc::array_unique($contributors);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	/**
--	 * @todo Atom inheritance (item author, source author, feed author)
--	 */
--	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[] = new $this->feed->author_class($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[] = new $this->feed->author_class($name, $url, $email);
--			}
--		}
--		if ($author = $this->get_item_tags('', 'author'))
--		{
--			$authors[] = new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
--		}
--		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
--		{
--			$authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
--		{
--			$authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
--		{
--			$authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--
--		if (!empty($authors))
--		{
--			return SimplePie_Misc::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;
--		}
--	}
--
--	function get_copyright()
--	{
--		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
--		{
--			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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;
--		}
--	}
--
--	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('', '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 = SimplePie_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;
--		}
--	}
--
--	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)
--		{
--			return strftime($date_format, $date);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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;
--		}
--	}
--
--	function get_link($key = 0, $rel = 'alternate')
--	{
--		$links = $this->get_links($rel);
--		if ($links[$key] !== null)
--		{
--			return $links[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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('', 'link'))
--			{
--				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
--			}
--			if ($links = $this->get_item_tags('', '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 (SimplePie_Misc::is_isegment_nz_nc($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;
--		}
--	}
--
--	/**
--	 * @todo Add ability to prefer one type of content over another (in a media group).
--	 */
--	function get_enclosure($key = 0, $prefer = null)
--	{
--		$enclosures = $this->get_enclosures();
--		if (isset($enclosures[$key]))
--		{
--			return $enclosures[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	/**
--	 * Grabs 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.
--	 *
--	 * @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).
--	 */
--	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[] = new $this->feed->caption_class($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[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
--				}
--			}
--			if (is_array($captions_parent))
--			{
--				$captions_parent = array_values(SimplePie_Misc::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[] = new $this->feed->category_class($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[] = new $this->feed->category_class($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[] = new $this->feed->category_class($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[] = new $this->feed->category_class($term, $scheme, $label);
--					}
--				}
--			}
--			if (is_array($categories_parent))
--			{
--				$categories_parent = array_values(SimplePie_Misc::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 = new $this->feed->copyright_class($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 = new $this->feed->copyright_class($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[] = new $this->feed->credit_class($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[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
--				}
--			}
--			if (is_array($credits_parent))
--			{
--				$credits_parent = array_values(SimplePie_Misc::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)
--					{
--						(int) $seconds = array_pop($temp);
--					}
--					if (sizeof($temp) > 0)
--					{
--						(int) $minutes = array_pop($temp);
--						$seconds += $minutes * 60;
--					}
--					if (sizeof($temp) > 0)
--					{
--						(int) $hours = 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(SimplePie_Misc::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(SimplePie_Misc::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[] = new $this->feed->rating_class($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[] = new $this->feed->rating_class($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[] = new $this->feed->rating_class($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[] = new $this->feed->rating_class($rating_scheme, $rating_value);
--				}
--			}
--			if (is_array($ratings_parent))
--			{
--				$ratings_parent = array_values(SimplePie_Misc::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[] = new $this->feed->restriction_class($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[] = new $this->feed->restriction_class($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[] = new $this->feed->restriction_class($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[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
--				}
--			}
--			if (is_array($restrictions_parent))
--			{
--				$restrictions_parent = array_values(SimplePie_Misc::array_unique($restrictions_parent));
--			}
--
--			// 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 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[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
--							}
--							if (is_array($captions))
--							{
--								$captions = array_values(SimplePie_Misc::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[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
--							}
--							if (is_array($captions))
--							{
--								$captions = array_values(SimplePie_Misc::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[] = new $this->feed->category_class($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[] = new $this->feed->category_class($term, $scheme, $label);
--							}
--						}
--						if (is_array($categories) && is_array($categories_parent))
--						{
--							$categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
--						}
--						elseif (is_array($categories))
--						{
--							$categories = array_values(SimplePie_Misc::array_unique($categories));
--						}
--						elseif (is_array($categories_parent))
--						{
--							$categories = array_values(SimplePie_Misc::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 = new $this->feed->copyright_class($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 = new $this->feed->copyright_class($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[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
--							}
--							if (is_array($credits))
--							{
--								$credits = array_values(SimplePie_Misc::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[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
--							}
--							if (is_array($credits))
--							{
--								$credits = array_values(SimplePie_Misc::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(SimplePie_Misc::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(SimplePie_Misc::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(SimplePie_Misc::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(SimplePie_Misc::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[] = new $this->feed->rating_class($rating_scheme, $rating_value);
--							}
--							if (is_array($ratings))
--							{
--								$ratings = array_values(SimplePie_Misc::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[] = new $this->feed->rating_class($rating_scheme, $rating_value);
--							}
--							if (is_array($ratings))
--							{
--								$ratings = array_values(SimplePie_Misc::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[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
--							}
--							if (is_array($restrictions))
--							{
--								$restrictions = array_values(SimplePie_Misc::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[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
--							}
--							if (is_array($restrictions))
--							{
--								$restrictions = array_values(SimplePie_Misc::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(SimplePie_Misc::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(SimplePie_Misc::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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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']))
--					{
--						// 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[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
--							}
--							if (is_array($captions))
--							{
--								$captions = array_values(SimplePie_Misc::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[] = new $this->feed->category_class($term, $scheme, $label);
--							}
--						}
--						if (is_array($categories) && is_array($categories_parent))
--						{
--							$categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
--						}
--						elseif (is_array($categories))
--						{
--							$categories = array_values(SimplePie_Misc::array_unique($categories));
--						}
--						elseif (is_array($categories_parent))
--						{
--							$categories = array_values(SimplePie_Misc::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 = new $this->feed->copyright_class($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[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
--							}
--							if (is_array($credits))
--							{
--								$credits = array_values(SimplePie_Misc::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(SimplePie_Misc::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(SimplePie_Misc::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[] = new $this->feed->rating_class($rating_scheme, $rating_value);
--							}
--							if (is_array($ratings))
--							{
--								$ratings = array_values(SimplePie_Misc::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[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
--							}
--							if (is_array($restrictions))
--							{
--								$restrictions = array_values(SimplePie_Misc::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(SimplePie_Misc::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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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('', '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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $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(SimplePie_Misc::array_unique($this->data['enclosures']));
--		}
--		if (!empty($this->data['enclosures']))
--		{
--			return $this->data['enclosures'];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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]+))$/', $return[0]['data'], $match))
--		{
--			return (float) $match[1];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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]+))$/', $return[0]['data'], $match))
--		{
--			return (float) $match[2];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_source()
--	{
--		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'source'))
--		{
--			return new $this->feed->source_class($this, $return[0]);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	/**
--	 * Creates the add_to_* methods' return data
--	 *
--	 * @access private
--	 * @param string $item_url String to prefix to the item permalink
--	 * @param string $title_url String to prefix to the item title
--	 * (and suffix to the item permalink)
--	 * @return mixed URL if feed exists, false otherwise
--	 */
--	function add_to_service($item_url, $title_url = null, $summary_url = null)
--	{
--		if ($this->get_permalink() !== null)
--		{
--			$return = $this->sanitize($item_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_permalink());
--			if ($title_url !== null && $this->get_title() !== null)
--			{
--				$return .= $this->sanitize($title_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_title());
--			}
--			if ($summary_url !== null && $this->get_description() !== null)
--			{
--				$return .= $this->sanitize($summary_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_description());
--			}
--			return $return;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function add_to_blinklist()
--	{
--		return $this->add_to_service('http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=&Url=', '&Title=');
--	}
--
--	function add_to_blogmarks()
--	{
--		return $this->add_to_service('http://blogmarks.net/my/new.php?mini=1&simple=1&url=', '&title=');
--	}
--
--	function add_to_delicious()
--	{
--		return $this->add_to_service('http://del.icio.us/post/?v=4&url=', '&title=');
--	}
--
--	function add_to_digg()
--	{
--		return $this->add_to_service('http://digg.com/submit?url=', '&title=', '&bodytext=');
--	}
--
--	function add_to_furl()
--	{
--		return $this->add_to_service('http://www.furl.net/storeIt.jsp?u=', '&t=');
--	}
--
--	function add_to_magnolia()
--	{
--		return $this->add_to_service('http://ma.gnolia.com/bookmarklet/add?url=', '&title=');
--	}
--
--	function add_to_myweb20()
--	{
--		return $this->add_to_service('http://myweb2.search.yahoo.com/myresults/bookmarklet?u=', '&t=');
--	}
--
--	function add_to_newsvine()
--	{
--		return $this->add_to_service('http://www.newsvine.com/_wine/save?u=', '&h=');
--	}
--
--	function add_to_reddit()
--	{
--		return $this->add_to_service('http://reddit.com/submit?url=', '&title=');
--	}
--
--	function add_to_segnalo()
--	{
--		return $this->add_to_service('http://segnalo.com/post.html.php?url=', '&title=');
--	}
--
--	function add_to_simpy()
--	{
--		return $this->add_to_service('http://www.simpy.com/simpy/LinkAdd.do?href=', '&title=');
--	}
--
--	function add_to_spurl()
--	{
--		return $this->add_to_service('http://www.spurl.net/spurl.php?v=3&url=', '&title=');
--	}
--
--	function add_to_wists()
--	{
--		return $this->add_to_service('http://wists.com/r.php?c=&r=', '&title=');
--	}
--
--	function search_technorati()
--	{
--		return $this->add_to_service('http://www.technorati.com/search/');
--	}
--}
--
--class SimplePie_Source
--{
--	var $item;
--	var $data = array();
--
--	function SimplePie_Source($item, $data)
--	{
--		$this->item = $item;
--		$this->data = $data;
--	}
--
--	function __toString()
--	{
--		return md5(serialize($this->data));
--	}
--
--	/**
--	 * Remove items that link back to this before destroying this object
--	 */
--	function __destruct()
--	{
--		unset($this->item);
--	}
--
--	function get_source_tags($namespace, $tag)
--	{
--		if (isset($this->data['child'][$namespace][$tag]))
--		{
--			return $this->data['child'][$namespace][$tag];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_base($element = array())
--	{
--		return $this->item->get_base($element);
--	}
--
--	function sanitize($data, $type, $base = '')
--	{
--		return $this->item->sanitize($data, $type, $base);
--	}
--
--	function get_item()
--	{
--		return $this->item;
--	}
--
--	function get_title()
--	{
--		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
--		{
--			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', '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;
--		}
--	}
--
--	function get_category($key = 0)
--	{
--		$categories = $this->get_categories();
--		if (isset($categories[$key]))
--		{
--			return $categories[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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[] = new $this->item->feed->category_class($term, $scheme, $label);
--		}
--		foreach ((array) $this->get_source_tags('', 'category') as $category)
--		{
--			$categories[] = new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
--		{
--			$categories[] = new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
--		{
--			$categories[] = new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--
--		if (!empty($categories))
--		{
--			return SimplePie_Misc::array_unique($categories);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_author($key = 0)
--	{
--		$authors = $this->get_authors();
--		if (isset($authors[$key]))
--		{
--			return $authors[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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[] = new $this->item->feed->author_class($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[] = new $this->item->feed->author_class($name, $url, $email);
--			}
--		}
--		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
--		{
--			$authors[] = new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
--		{
--			$authors[] = new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--		foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
--		{
--			$authors[] = new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
--		}
--
--		if (!empty($authors))
--		{
--			return SimplePie_Misc::array_unique($authors);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_contributor($key = 0)
--	{
--		$contributors = $this->get_contributors();
--		if (isset($contributors[$key]))
--		{
--			return $contributors[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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[] = new $this->item->feed->author_class($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[] = new $this->item->feed->author_class($name, $url, $email);
--			}
--		}
--
--		if (!empty($contributors))
--		{
--			return SimplePie_Misc::array_unique($contributors);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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.
--	 */
--	function get_permalink()
--	{
--		return $this->get_link(0);
--	}
--
--	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('', '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 (SimplePie_Misc::is_isegment_nz_nc($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;
--		}
--	}
--
--	function get_description()
--	{
--		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
--		{
--			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($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('', '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;
--		}
--	}
--
--	function get_copyright()
--	{
--		if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
--		{
--			return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($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'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
--		}
--		elseif ($return = $this->get_source_tags('', '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;
--		}
--	}
--
--	function get_language()
--	{
--		if ($return = $this->get_source_tags('', '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;
--		}
--	}
--
--	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]+))$/', $return[0]['data'], $match))
--		{
--			return (float) $match[1];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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]+))$/', $return[0]['data'], $match))
--		{
--			return (float) $match[2];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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;
--		}
--	}
--}
--
--class SimplePie_Author
--{
--	var $name;
--	var $link;
--	var $email;
--
--	// Constructor, used to input the data
--	function SimplePie_Author($name = null, $link = null, $email = null)
--	{
--		$this->name = $name;
--		$this->link = $link;
--		$this->email = $email;
--	}
--
--	function __toString()
--	{
--		// There is no $this->data here
--		return md5(serialize($this));
--	}
--
--	function get_name()
--	{
--		if ($this->name !== null)
--		{
--			return $this->name;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_link()
--	{
--		if ($this->link !== null)
--		{
--			return $this->link;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_email()
--	{
--		if ($this->email !== null)
--		{
--			return $this->email;
--		}
--		else
--		{
--			return null;
--		}
--	}
--}
--
--class SimplePie_Category
--{
--	var $term;
--	var $scheme;
--	var $label;
--
--	// Constructor, used to input the data
--	function SimplePie_Category($term = null, $scheme = null, $label = null)
--	{
--		$this->term = $term;
--		$this->scheme = $scheme;
--		$this->label = $label;
--	}
--
--	function __toString()
--	{
--		// There is no $this->data here
--		return md5(serialize($this));
--	}
--
--	function get_term()
--	{
--		if ($this->term !== null)
--		{
--			return $this->term;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_scheme()
--	{
--		if ($this->scheme !== null)
--		{
--			return $this->scheme;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_label()
--	{
--		if ($this->label !== null)
--		{
--			return $this->label;
--		}
--		else
--		{
--			return $this->get_term();
--		}
--	}
--}
--
--class SimplePie_Enclosure
--{
--	var $bitrate;
--	var $captions;
--	var $categories;
--	var $channels;
--	var $copyright;
--	var $credits;
--	var $description;
--	var $duration;
--	var $expression;
--	var $framerate;
--	var $handler;
--	var $hashes;
--	var $height;
--	var $javascript;
--	var $keywords;
--	var $lang;
--	var $length;
--	var $link;
--	var $medium;
--	var $player;
--	var $ratings;
--	var $restrictions;
--	var $samplingrate;
--	var $thumbnails;
--	var $title;
--	var $type;
--	var $width;
--
--	// Constructor, used to input the data
--	function SimplePie_Enclosure($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->javascript = $javascript;
--		$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
--	}
--
--	function __toString()
--	{
--		// There is no $this->data here
--		return md5(serialize($this));
--	}
--
--	function get_bitrate()
--	{
--		if ($this->bitrate !== null)
--		{
--			return $this->bitrate;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_caption($key = 0)
--	{
--		$captions = $this->get_captions();
--		if (isset($captions[$key]))
--		{
--			return $captions[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_captions()
--	{
--		if ($this->captions !== null)
--		{
--			return $this->captions;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_category($key = 0)
--	{
--		$categories = $this->get_categories();
--		if (isset($categories[$key]))
--		{
--			return $categories[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_categories()
--	{
--		if ($this->categories !== null)
--		{
--			return $this->categories;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_channels()
--	{
--		if ($this->channels !== null)
--		{
--			return $this->channels;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_copyright()
--	{
--		if ($this->copyright !== null)
--		{
--			return $this->copyright;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_credit($key = 0)
--	{
--		$credits = $this->get_credits();
--		if (isset($credits[$key]))
--		{
--			return $credits[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_credits()
--	{
--		if ($this->credits !== null)
--		{
--			return $this->credits;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_description()
--	{
--		if ($this->description !== null)
--		{
--			return $this->description;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	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;
--		}
--	}
--
--	function get_expression()
--	{
--		if ($this->expression !== null)
--		{
--			return $this->expression;
--		}
--		else
--		{
--			return 'full';
--		}
--	}
--
--	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;
--	}
--
--	function get_framerate()
--	{
--		if ($this->framerate !== null)
--		{
--			return $this->framerate;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_handler()
--	{
--		return $this->get_real_type(true);
--	}
--
--	function get_hash($key = 0)
--	{
--		$hashes = $this->get_hashes();
--		if (isset($hashes[$key]))
--		{
--			return $hashes[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_hashes()
--	{
--		if ($this->hashes !== null)
--		{
--			return $this->hashes;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_height()
--	{
--		if ($this->height !== null)
--		{
--			return $this->height;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_language()
--	{
--		if ($this->lang !== null)
--		{
--			return $this->lang;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_keyword($key = 0)
--	{
--		$keywords = $this->get_keywords();
--		if (isset($keywords[$key]))
--		{
--			return $keywords[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_keywords()
--	{
--		if ($this->keywords !== null)
--		{
--			return $this->keywords;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_length()
--	{
--		if ($this->length !== null)
--		{
--			return $this->length;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_link()
--	{
--		if ($this->link !== null)
--		{
--			return urldecode($this->link);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_medium()
--	{
--		if ($this->medium !== null)
--		{
--			return $this->medium;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_player()
--	{
--		if ($this->player !== null)
--		{
--			return $this->player;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_rating($key = 0)
--	{
--		$ratings = $this->get_ratings();
--		if (isset($ratings[$key]))
--		{
--			return $ratings[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_ratings()
--	{
--		if ($this->ratings !== null)
--		{
--			return $this->ratings;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_restriction($key = 0)
--	{
--		$restrictions = $this->get_restrictions();
--		if (isset($restrictions[$key]))
--		{
--			return $restrictions[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_restrictions()
--	{
--		if ($this->restrictions !== null)
--		{
--			return $this->restrictions;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_sampling_rate()
--	{
--		if ($this->samplingrate !== null)
--		{
--			return $this->samplingrate;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_size()
--	{
--		$length = $this->get_length();
--		if ($length !== null)
--		{
--			return round($length/1048576, 2);
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_thumbnail($key = 0)
--	{
--		$thumbnails = $this->get_thumbnails();
--		if (isset($thumbnails[$key]))
--		{
--			return $thumbnails[$key];
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_thumbnails()
--	{
--		if ($this->thumbnails !== null)
--		{
--			return $this->thumbnails;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_title()
--	{
--		if ($this->title !== null)
--		{
--			return $this->title;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_type()
--	{
--		if ($this->type !== null)
--		{
--			return $this->type;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_width()
--	{
--		if ($this->width !== null)
--		{
--			return $this->width;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function native_embed($options='')
--	{
--		return $this->embed($options, true);
--	}
--
--	/**
--	 * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'.
--	 */
--	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 = '';
--
--		// Make sure the JS library is included
--		if (!$native)
--		{
--			static $javascript_outputted = null;
--			if (!$javascript_outputted && $this->javascript)
--			{
--				$embed .= '<script type="text/javascript" src="?' . htmlspecialchars($this->javascript) . '"></script>';
--				$javascript_outputted = true;
--			}
--		}
--
--		// Odeo Feed MP3's
--		if ($handler == 'odeo')
--		{
--			if ($native)
--			{
--				$embed .= '<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://adobe.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url=' . $this->get_link() . '"></embed>';
--			}
--			else
--			{
--				$embed .= '<script type="text/javascript">/* <![CDATA[ */embed_odeo("' . $this->get_link() . '");/* ]]> */</script>';
--			}
--		}
--
--		// Flash
--		elseif ($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">/* <![CDATA[ */' .
--				    "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">/* <![CDATA[ */' .
--				    "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">/* <![CDATA[ */' .
--				    "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">/* <![CDATA[ */' .
--				    "embed_wmedia('$width', '$height', '" . $this->get_link() . "');/* ]]> */</script>";
--			}
--		}
--
--		// Everything else
--		else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>';
--
--		return $embed;
--	}
--
--	function get_real_type($find_handler = false)
--	{
--		// If it's Odeo, let's get it out of the way.
--		if (substr(strtolower($this->get_link()), 0, 15) == 'http://odeo.com')
--		{
--			return 'odeo';
--		}
--
--		// 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;
--		}
--	}
--}
--
--class SimplePie_Caption
--{
--	var $type;
--	var $lang;
--	var $startTime;
--	var $endTime;
--	var $text;
--
--	// Constructor, used to input the data
--	function SimplePie_Caption($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;
--	}
--
--	function __toString()
--	{
--		// There is no $this->data here
--		return md5(serialize($this));
--	}
--
--	function get_endtime()
--	{
--		if ($this->endTime !== null)
--		{
--			return $this->endTime;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_language()
--	{
--		if ($this->lang !== null)
--		{
--			return $this->lang;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_starttime()
--	{
--		if ($this->startTime !== null)
--		{
--			return $this->startTime;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_text()
--	{
--		if ($this->text !== null)
--		{
--			return $this->text;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_type()
--	{
--		if ($this->type !== null)
--		{
--			return $this->type;
--		}
--		else
--		{
--			return null;
--		}
--	}
--}
--
--class SimplePie_Credit
--{
--	var $role;
--	var $scheme;
--	var $name;
--
--	// Constructor, used to input the data
--	function SimplePie_Credit($role = null, $scheme = null, $name = null)
--	{
--		$this->role = $role;
--		$this->scheme = $scheme;
--		$this->name = $name;
--	}
--
--	function __toString()
--	{
--		// There is no $this->data here
--		return md5(serialize($this));
--	}
--
--	function get_role()
--	{
--		if ($this->role !== null)
--		{
--			return $this->role;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_scheme()
--	{
--		if ($this->scheme !== null)
--		{
--			return $this->scheme;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_name()
--	{
--		if ($this->name !== null)
--		{
--			return $this->name;
--		}
--		else
--		{
--			return null;
--		}
--	}
--}
--
--class SimplePie_Copyright
--{
--	var $url;
--	var $label;
--
--	// Constructor, used to input the data
--	function SimplePie_Copyright($url = null, $label = null)
--	{
--		$this->url = $url;
--		$this->label = $label;
--	}
--
--	function __toString()
--	{
--		// There is no $this->data here
--		return md5(serialize($this));
--	}
--
--	function get_url()
--	{
--		if ($this->url !== null)
--		{
--			return $this->url;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_attribution()
--	{
--		if ($this->label !== null)
--		{
--			return $this->label;
--		}
--		else
--		{
--			return null;
--		}
--	}
--}
--
--class SimplePie_Rating
--{
--	var $scheme;
--	var $value;
--
--	// Constructor, used to input the data
--	function SimplePie_Rating($scheme = null, $value = null)
--	{
--		$this->scheme = $scheme;
--		$this->value = $value;
--	}
--
--	function __toString()
--	{
--		// There is no $this->data here
--		return md5(serialize($this));
--	}
--
--	function get_scheme()
--	{
--		if ($this->scheme !== null)
--		{
--			return $this->scheme;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_value()
--	{
--		if ($this->value !== null)
--		{
--			return $this->value;
--		}
--		else
--		{
--			return null;
--		}
--	}
--}
--
--class SimplePie_Restriction
--{
--	var $relationship;
--	var $type;
--	var $value;
--
--	// Constructor, used to input the data
--	function SimplePie_Restriction($relationship = null, $type = null, $value = null)
--	{
--		$this->relationship = $relationship;
--		$this->type = $type;
--		$this->value = $value;
--	}
--
--	function __toString()
--	{
--		// There is no $this->data here
--		return md5(serialize($this));
--	}
--
--	function get_relationship()
--	{
--		if ($this->relationship !== null)
--		{
--			return $this->relationship;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_type()
--	{
--		if ($this->type !== null)
--		{
--			return $this->type;
--		}
--		else
--		{
--			return null;
--		}
--	}
--
--	function get_value()
--	{
--		if ($this->value !== null)
--		{
--			return $this->value;
--		}
--		else
--		{
--			return null;
--		}
--	}
--}
--
--/**
-- * @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;
--
--	function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false, $proxy = "")
--	{
--		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);
--				}
--				if ($proxy)
--				{
--					curl_setopt($fp, CURLOPT_PROXY, $proxy);
--				}
--
--				$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 (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 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->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
--						}
--					}
--				}
--			}
--			else
--			{
--				$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
--				$url_parts = parse_url($url);
--				if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) == 'https')
--				{
--					$url_parts['host'] = "ssl://$url_parts[host]";
--					$url_parts['port'] = 443;
--				}
--				if (!isset($url_parts['port']))
--				{
--					$url_parts['port'] = 80;
--				}
--				if ($proxy) {
--					$proxy_parts = explode(':', $proxy);
--					if (!isset($proxy_parts[1])) {
--					    $proxy_parts[1] = 80;
--					}
--					$host = $proxy_parts[0];
--					$port = $proxy_parts[1];
--				} else {
--					$host = $url_parts['host'];
--					$port = $url_parts['port'];
--				}
--				$fp = @fsockopen($host, $port, $errno, $errstr, $timeout);
--				if (!$fp)
--				{
--					$this->error = 'fsockopen error: ' . $errstr;
--					$this->success = false;
--				}
--				else
--				{
--					stream_set_timeout($fp, $timeout);
--					if ($proxy) {
--						$get = $url;
--					} else {
--						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.0\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 (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 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->SimplePie_File($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 (($body = gzuncompress($this->body)) === false)
--										{
--											if (($body = gzinflate($this->body)) === false)
--											{
--												$this->error = 'Unable to decode HTTP "deflate" stream';
--												$this->success = false;
--											}
--										}
--										$this->body = $body;
--										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;
--			}
--		}
--	}
--}
--
--/**
-- * HTTP Response Parser
-- *
-- * @package SimplePie
-- */
--class SimplePie_HTTP_Parser
--{
--	/**
--	 * HTTP Version
--	 *
--	 * @access public
--	 * @var float
--	 */
--	var $http_version = 0.0;
--
--	/**
--	 * Status code
--	 *
--	 * @access public
--	 * @var int
--	 */
--	var $status_code = 0;
--
--	/**
--	 * Reason phrase
--	 *
--	 * @access public
--	 * @var string
--	 */
--	var $reason = '';
--
--	/**
--	 * Key/value pairs of the headers
--	 *
--	 * @access public
--	 * @var array
--	 */
--	var $headers = array();
--
--	/**
--	 * Body of the response
--	 *
--	 * @access public
--	 * @var string
--	 */
--	var $body = '';
--
--	/**
--	 * Current state of the state machine
--	 *
--	 * @access private
--	 * @var string
--	 */
--	var $state = 'http_version';
--
--	/**
--	 * 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;
--
--	/**
--	 * Name of the hedaer currently being parsed
--	 *
--	 * @access private
--	 * @var string
--	 */
--	var $name = '';
--
--	/**
--	 * Value of the hedaer currently being parsed
--	 *
--	 * @access private
--	 * @var string
--	 */
--	var $value = '';
--
--	/**
--	 * Create an instance of the class with the input data
--	 *
--	 * @access public
--	 * @param string $data Input data
--	 */
--	function SimplePie_HTTP_Parser($data)
--	{
--		$this->data = $data;
--		$this->data_length = strlen($this->data);
--	}
--
--	/**
--	 * Parse the input data
--	 *
--	 * @access public
--	 * @return bool true on success, false on failure
--	 */
--	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
--	 *
--	 * @access private
--	 * @return bool true if there is further data, false if not
--	 */
--	function has_data()
--	{
--		return (bool) ($this->position < $this->data_length);
--	}
--
--	/**
--	 * See if the next character is LWS
--	 *
--	 * @access private
--	 * @return bool true if the next character is LWS, false if not
--	 */
--	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
--	 *
--	 * @access private
--	 */
--	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
--	 *
--	 * @access private
--	 */
--	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
--	 *
--	 * @access private
--	 */
--	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
--	 *
--	 * @access private
--	 */
--	function new_line()
--	{
--		$this->value = trim($this->value, "\x0D\x20");
--		if ($this->name !== '' && $this->value !== '')
--		{
--			$this->name = strtolower($this->name);
--			if (isset($this->headers[$this->name]))
--			{
--				$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
--	 *
--	 * @access private
--	 */
--	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
--	 *
--	 * @access private
--	 */
--	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
--	 *
--	 * @access private
--	 */
--	function value()
--	{
--		if ($this->is_linear_whitespace())
--		{
--			$this->linear_whitespace();
--		}
--		else
--		{
--			switch ($this->data[$this->position])
--			{
--				case '"':
--					$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
--	 *
--	 * @access private
--	 */
--	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
--	 *
--	 * @access private
--	 */
--	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
--	 *
--	 * @access private
--	 */
--	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
--	 *
--	 * @access private
--	 */
--	function quote_escaped()
--	{
--		$this->value .= $this->data[$this->position];
--		$this->position++;
--		$this->state = 'quote';
--	}
--
--	/**
--	 * Parse the body
--	 *
--	 * @access private
--	 */
--	function body()
--	{
--		$this->body = substr($this->data, $this->position);
--		$this->state = 'emit';
--	}
--}
--
--/**
-- * gzdecode
-- *
-- * @package SimplePie
-- */
--class SimplePie_gzdecode
--{
--	/**
--	 * Compressed data
--	 *
--	 * @access private
--	 * @see gzdecode::$data
--	 */
--	var $compressed_data;
--
--	/**
--	 * Size of compressed data
--	 *
--	 * @access private
--	 */
--	var $compressed_size;
--
--	/**
--	 * Minimum size of a valid gzip string
--	 *
--	 * @access private
--	 */
--	var $min_compressed_size = 18;
--
--	/**
--	 * Current position of pointer
--	 *
--	 * @access private
--	 */
--	var $position = 0;
--
--	/**
--	 * Flags (FLG)
--	 *
--	 * @access private
--	 */
--	var $flags;
--
--	/**
--	 * Uncompressed data
--	 *
--	 * @access public
--	 * @see gzdecode::$compressed_data
--	 */
--	var $data;
--
--	/**
--	 * Modified time
--	 *
--	 * @access public
--	 */
--	var $MTIME;
--
--	/**
--	 * Extra Flags
--	 *
--	 * @access public
--	 */
--	var $XFL;
--
--	/**
--	 * Operating System
--	 *
--	 * @access public
--	 */
--	var $OS;
--
--	/**
--	 * Subfield ID 1
--	 *
--	 * @access public
--	 * @see gzdecode::$extra_field
--	 * @see gzdecode::$SI2
--	 */
--	var $SI1;
--
--	/**
--	 * Subfield ID 2
--	 *
--	 * @access public
--	 * @see gzdecode::$extra_field
--	 * @see gzdecode::$SI1
--	 */
--	var $SI2;
--
--	/**
--	 * Extra field content
--	 *
--	 * @access public
--	 * @see gzdecode::$SI1
--	 * @see gzdecode::$SI2
--	 */
--	var $extra_field;
--
--	/**
--	 * Original filename
--	 *
--	 * @access public
--	 */
--	var $filename;
--
--	/**
--	 * Human readable comment
--	 *
--	 * @access public
--	 */
--	var $comment;
--
--	/**
--	 * Don't allow anything to be set
--	 *
--	 * @access public
--	 */
--	function __set($name, $value)
--	{
--		trigger_error("Cannot write property $name", E_USER_ERROR);
--	}
--
--	/**
--	 * Set the compressed string and related properties
--	 *
--	 * @access public
--	 */
--	function SimplePie_gzdecode($data)
--	{
--		$this->compressed_data = $data;
--		$this->compressed_size = strlen($data);
--	}
--
--	/**
--	 * Decode the GZIP stream
--	 *
--	 * @access 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)));
--				$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 = strspn($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 = strspn($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;
--		}
--	}
--}
--
--class SimplePie_Cache
--{
--	/**
--	 * Don't call the constructor. Please.
--	 *
--	 * @access private
--	 */
--	function SimplePie_Cache()
--	{
--		trigger_error('Please call SimplePie_Cache::create() instead of the constructor', E_USER_ERROR);
--	}
--
--	/**
--	 * Create a new SimplePie_Cache object
--	 *
--	 * @static
--	 * @access public
--	 */
--	static function create($location, $filename, $extension)
--	{
--		return new SimplePie_Cache_File($location, $filename, $extension);
--	}
--}
--
--class SimplePie_Cache_File
--{
--	var $location;
--	var $filename;
--	var $extension;
--	var $name;
--
--	function SimplePie_Cache_File($location, $filename, $extension)
--	{
--		$this->location = $location;
--		$this->filename = rawurlencode($filename);
--		$this->extension = rawurlencode($extension);
--		$this->name = "$location/$this->filename.$this->extension";
--	}
--
--	function save($data)
--	{
--		if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
--		{
--			if (is_a($data, 'SimplePie'))
--			{
--				$data = $data->data;
--			}
--
--			$data = serialize($data);
--
--			if (function_exists('file_put_contents'))
--			{
--				return (bool) file_put_contents($this->name, $data);
--			}
--			else
--			{
--				$fp = fopen($this->name, 'wb');
--				if ($fp)
--				{
--					fwrite($fp, $data);
--					fclose($fp);
--					return true;
--				}
--			}
--		}
--		return false;
--	}
--
--	function load()
--	{
--		if (file_exists($this->name) && is_readable($this->name))
--		{
--			return unserialize(file_get_contents($this->name));
--		}
--		return false;
--	}
--
--	function mtime()
--	{
--		if (file_exists($this->name))
--		{
--			return filemtime($this->name);
--		}
--		return false;
--	}
--
--	function touch()
--	{
--		if (file_exists($this->name))
--		{
--			return touch($this->name);
--		}
--		return false;
--	}
--
--	function unlink()
--	{
--		if (file_exists($this->name))
--		{
--			return unlink($this->name);
--		}
--		return false;
--	}
--}
--
--class SimplePie_Misc
--{
--	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;
--	}
--
--	static function absolutize_url($relative, $base)
--	{
--		if ($relative !== '')
--		{
--			$relative = SimplePie_Misc::parse_url($relative);
--			if ($relative['scheme'] !== '')
--			{
--				$target = $relative;
--			}
--			elseif ($base !== '')
--			{
--				$base = SimplePie_Misc::parse_url($base);
--				$target = SimplePie_Misc::parse_url('');
--				if ($relative['authority'] !== '')
--				{
--					$target = $relative;
--					$target['scheme'] = $base['scheme'];
--				}
--				else
--				{
--					$target['scheme'] = $base['scheme'];
--					$target['authority'] = $base['authority'];
--					if ($relative['path'] !== '')
--					{
--						if (strpos($relative['path'], '/') === 0)
--						{
--							$target['path'] = $relative['path'];
--						}
--						elseif ($base['authority'] !== '' && $base['path'] === '')
--						{
--							$target['path'] = '/' . $relative['path'];
--						}
--						elseif (($last_segment = strrpos($base['path'], '/')) !== false)
--						{
--							$target['path'] = substr($base['path'], 0, $last_segment + 1) . $relative['path'];
--						}
--						else
--						{
--							$target['path'] = $relative['path'];
--						}
--						$target['query'] = $relative['query'];
--					}
--					else
--					{
--						$target['path'] = $base['path'];
--						if ($relative['query'] !== '')
--						{
--							$target['query'] = $relative['query'];
--						}
--						elseif ($base['query'] !== '')
--						{
--							$target['query'] = $base['query'];
--						}
--					}
--				}
--				$target['fragment'] = $relative['fragment'];
--			}
--			else
--			{
--				// No base URL, just return the relative URL
--				$target = $relative;
--			}
--			$return = SimplePie_Misc::compress_parse_url($target['scheme'], $target['authority'], $target['path'], $target['query'], $target['fragment']);
--		}
--		else
--		{
--			$return = $base;
--		}
--		$return = SimplePie_Misc::normalize_url($return);
--		return $return;
--	}
--
--	static 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_replace($input, '/', 0, 3);
--			}
--			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_replace($input, '/', 0, 4);
--				$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;
--	}
--
--	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;
--	}
--
--	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;
--	}
--
--	static function error($message, $level, $file, $line)
--	{
--		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;
--		}
--		error_log("$note: $message in $file on line $line", 0);
--		return $message;
--	}
--
--	/**
--	 * If a file has been cached, retrieve and display it.
--	 *
--	 * This is most useful for caching images (get_favicon(), etc.),
--	 * however it works for all cached files.  This WILL NOT display ANY
--	 * file/image/page/whatever, but rather only display what has already
--	 * been cached by SimplePie.
--	 *
--	 * @access public
--	 * @see SimplePie::get_favicon()
--	 * @param str $identifier_url URL that is used to identify the content.
--	 * This may or may not be the actual URL of the live content.
--	 * @param str $cache_location Location of SimplePie's cache.  Defaults
--	 * to './cache'.
--	 * @param str $cache_extension The file extension that the file was
--	 * cached with.  Defaults to 'spc'.
--	 * @param str $cache_class Name of the cache-handling class being used
--	 * in SimplePie.  Defaults to 'SimplePie_Cache', and should be left
--	 * as-is unless you've overloaded the class.
--	 * @param str $cache_name_function Obsolete. Exists for backwards
--	 * compatibility reasons only.
--	 */
--	function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5')
--	{
--		$cache = call_user_func(array($cache_class, 'create'), $cache_location, $identifier_url, $cache_extension);
--
--		if ($file = $cache->load())
--		{
--			if (isset($file['headers']['content-type']))
--			{
--				header('Content-type:' . $file['headers']['content-type']);
--			}
--			else
--			{
--				header('Content-type: application/octet-stream');
--			}
--			header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
--			echo $file['body'];
--			exit;
--		}
--
--		die('Cached file for ' . $identifier_url . ' cannot be found.');
--	}
--
--	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;
--		}
--	}
--
--	static function parse_url($url)
--	{
--		static $cache = array();
--		if (isset($cache[$url]))
--		{
--			return $cache[$url];
--		}
--		elseif (preg_match('/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $url, $match))
--		{
--			for ($i = count($match); $i <= 9; $i++)
--			{
--				$match[$i] = '';
--			}
--			return $cache[$url] = array('scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5], 'query' => $match[7], 'fragment' => $match[9]);
--		}
--		else
--		{
--			return $cache[$url] = array('scheme' => '', 'authority' => '', 'path' => '', 'query' => '', 'fragment' => '');
--		}
--	}
--
--	static function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '')
--	{
--		$return = '';
--		if ($scheme !== '')
--		{
--			$return .= "$scheme:";
--		}
--		if ($authority !== '')
--		{
--			$return .= "//$authority";
--		}
--		if ($path !== '')
--		{
--			$return .= $path;
--		}
--		if ($query !== '')
--		{
--			$return .= "?$query";
--		}
--		if ($fragment !== '')
--		{
--			$return .= "#$fragment";
--		}
--		return $return;
--	}
--
--	static function normalize_url($url)
--	{
--		$url = preg_replace_callback('/%([0-9A-Fa-f]{2})/', array('SimplePie_Misc', 'percent_encoding_normalization'), $url);
--		$url = SimplePie_Misc::parse_url($url);
--		$url['scheme'] = strtolower($url['scheme']);
--		if ($url['authority'] !== '')
--		{
--			$url['authority'] = strtolower($url['authority']);
--			$url['path'] = SimplePie_Misc::remove_dot_segments($url['path']);
--		}
--		return SimplePie_Misc::compress_parse_url($url['scheme'], $url['authority'], $url['path'], $url['query'], $url['fragment']);
--	}
--
--	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]);
--		}
--	}
--
--	/**
--	 * Remove bad UTF-8 bytes
--	 *
--	 * PCRE Pattern to locate bad bytes in a UTF-8 string comes from W3C
--	 * FAQ: Multilingual Forms (modified to include full ASCII range)
--	 *
--	 * @author Geoffrey Sneddon
--	 * @see http://www.w3.org/International/questions/qa-forms-utf-8
--	 * @param string $str String to remove bad UTF-8 bytes from
--	 * @return string UTF-8 string
--	 */
--	function utf8_bad_replace($str)
--	{
--		if (function_exists('iconv') && ($return = @iconv('UTF-8', 'UTF-8//IGNORE', $str)))
--		{
--			return $return;
--		}
--		elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($str, 'UTF-8', 'UTF-8')))
--		{
--			return $return;
--		}
--		elseif (preg_match_all('/(?:[\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})+/', $str, $matches))
--		{
--			return implode("\xEF\xBF\xBD", $matches[0]);
--		}
--		elseif ($str !== '')
--		{
--			return "\xEF\xBF\xBD";
--		}
--		else
--		{
--			return '';
--		}
--	}
--
--	/**
--	 * Converts a Windows-1252 encoded string to a UTF-8 encoded string
--	 *
--	 * @static
--	 * @access public
--	 * @param string $string Windows-1252 encoded string
--	 * @return string UTF-8 encoded string
--	 */
--	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);
--	}
--
--	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
--		elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input)))
--		{
--			return $return;
--		}
--		// This is last, as behaviour of this varies with OS userland and PHP version
--		elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data)))
--		{
--			return $return;
--		}
--		// If we can't do anything, just fail
--		else
--		{
--			return false;
--		}
--	}
--
--	static function encoding($charset)
--	{
--		/* Character sets are case-insensitive, and also need some further
--		normalization in the real world (though we'll return them in the form given
--		in their registration). */
--		switch (strtolower(preg_replace('/[\x09-\x0D\x20-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]/', '', $charset)))
--		{
--			case 'adobestandardencoding':
--			case 'csadobestandardencoding':
--				return 'Adobe-Standard-Encoding';
--
--			case 'adobesymbolencoding':
--			case 'cshppsmath':
--				return 'Adobe-Symbol-Encoding';
--
--			case 'ami1251':
--			case 'ami1251':
--			case 'amiga1251':
--			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 'isoir89':
--			case 'iso9036':
--				return 'ASMO_449';
--
--			case 'big5':
--			case 'csbig5':
--			case 'xxbig5':
--				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 'isoir4':
--			case 'iso646gb':
--			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 'isoir121':
--			case 'iso646ca':
--				return 'CSA_Z243.4-1985-1';
--
--			case 'csa72':
--			case 'csaz243419852':
--			case 'csiso122canadian2':
--			case 'isoir122':
--			case 'iso646ca2':
--				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 'isoir21':
--			case 'iso646de':
--				return 'DIN_66003';
--
--			case 'csdkus':
--			case 'dkus':
--				return 'dk-us';
--
--			case 'csiso646danish':
--			case 'dk':
--			case 'ds2089':
--			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 'isoir17':
--			case 'iso646es':
--				return 'ES';
--
--			case 'csiso85spanish2':
--			case 'es2':
--			case 'isoir85':
--			case 'iso646es2':
--				return 'ES2';
--
--			case 'cseucfixwidjapanese':
--			case 'extendedunixcodefixedwidthforjapanese':
--				return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
--
--			case 'cseucpkdfmtjapanese':
--			case 'eucjp':
--			case 'extendedunixcodepackedformatforjapanese':
--				return 'Extended_UNIX_Code_Packed_Format_for_Japanese';
--
--			case 'gb18030':
--				return 'GB18030';
--
--			case 'cp936':
--			case 'gbk':
--			case 'ms936':
--			case 'windows936':
--			case 'csgb2312':
--			case 'gb2312':
--			case 'chinese':
--			case 'csiso58gb231280':
--			case 'gb231280':
--			case 'isoir58':
--				return 'GBK';
--
--			case 'cn':
--			case 'csiso57gb1988':
--			case 'gb198880':
--			case 'isoir57':
--			case 'iso646cn':
--				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 'ccsid00858':
--			case 'cp00858':
--			case 'ibm00858':
--			case 'pcmultilingual850euro':
--				return 'IBM00858';
--
--			case 'ccsid00924':
--			case 'cp00924':
--			case 'ebcdiclatin9euro':
--			case 'ibm00924':
--				return 'IBM00924';
--
--			case 'ccsid01140':
--			case 'cp01140':
--			case 'ebcdicus37euro':
--			case 'ibm01140':
--				return 'IBM01140';
--
--			case 'ccsid01141':
--			case 'cp01141':
--			case 'ebcdicde273euro':
--			case 'ibm01141':
--				return 'IBM01141';
--
--			case 'ccsid01142':
--			case 'cp01142':
--			case 'ebcdicdk277euro':
--			case 'ebcdicno277euro':
--			case 'ibm01142':
--				return 'IBM01142';
--
--			case 'ccsid01143':
--			case 'cp01143':
--			case 'ebcdicfi278euro':
--			case 'ebcdicse278euro':
--			case 'ibm01143':
--				return 'IBM01143';
--
--			case 'ccsid01144':
--			case 'cp01144':
--			case 'ebcdicit280euro':
--			case 'ibm01144':
--				return 'IBM01144';
--
--			case 'ccsid01145':
--			case 'cp01145':
--			case 'ebcdices284euro':
--			case 'ibm01145':
--				return 'IBM01145';
--
--			case 'ccsid01146':
--			case 'cp01146':
--			case 'ebcdicgb285euro':
--			case 'ibm01146':
--				return 'IBM01146';
--
--			case 'ccsid01147':
--			case 'cp01147':
--			case 'ebcdicfr297euro':
--			case 'ibm01147':
--				return 'IBM01147';
--
--			case 'ccsid01148':
--			case 'cp01148':
--			case 'ebcdicinternational500euro':
--			case 'ibm01148':
--				return 'IBM01148';
--
--			case 'ccsid01149':
--			case 'cp01149':
--			case 'ebcdicis871euro':
--			case 'ibm01149':
--				return 'IBM01149';
--
--			case 'cp037':
--			case 'csibm037':
--			case 'ebcdiccpca':
--			case 'ebcdiccpnl':
--			case 'ebcdiccpus':
--			case 'ebcdiccpwt':
--			case 'ibm037':
--				return 'IBM037';
--
--			case 'cp038':
--			case 'csibm038':
--			case 'ebcdicint':
--			case 'ibm038':
--				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 '860':
--			case 'cp860':
--			case 'csibm860':
--			case 'ibm860':
--				return 'IBM860';
--
--			case '861':
--			case 'cpis':
--			case 'cp861':
--			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 'cpar':
--			case 'cp868':
--			case 'csibm868':
--			case 'ibm868':
--				return 'IBM868';
--
--			case '869':
--			case 'cpgr':
--			case 'cp869':
--			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 'cp1026':
--			case 'csibm1026':
--			case 'ibm1026':
--				return 'IBM1026';
--
--			case 'ibm1047':
--			case 'ibm1047':
--				return 'IBM1047';
--
--			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 'isoir101':
--			case 'iso88592':
--			case 'iso885921987':
--			case 'l2':
--			case 'latin2':
--				return 'ISO-8859-2';
--
--			case 'cswindows31latin2':
--			case 'iso88592windowslatin2':
--				return 'ISO-8859-2-Windows-Latin-2';
--
--			case 'csisolatin3':
--			case 'iso88593':
--			case 'isoir109':
--			case 'iso88593':
--			case 'iso885931988':
--			case 'l3':
--			case 'latin3':
--				return 'ISO-8859-3';
--
--			case 'csisolatin4':
--			case 'iso88594':
--			case 'isoir110':
--			case 'iso88594':
--			case 'iso885941988':
--			case 'l4':
--			case 'latin4':
--				return 'ISO-8859-4';
--
--			case 'csisolatincyrillic':
--			case 'cyrillic':
--			case 'iso88595':
--			case 'isoir144':
--			case 'iso88595':
--			case 'iso885951988':
--				return 'ISO-8859-5';
--
--			case 'arabic':
--			case 'asmo708':
--			case 'csisolatinarabic':
--			case 'ecma114':
--			case 'iso88596':
--			case 'isoir127':
--			case 'iso88596':
--			case 'iso885961987':
--				return 'ISO-8859-6';
--
--			case 'csiso88596e':
--			case 'iso88596e':
--			case 'iso88596e':
--				return 'ISO-8859-6-E';
--
--			case 'csiso88596i':
--			case 'iso88596i':
--			case 'iso88596i':
--				return 'ISO-8859-6-I';
--
--			case 'csisolatingreek':
--			case 'ecma118':
--			case 'elot928':
--			case 'greek':
--			case 'greek8':
--			case 'iso88597':
--			case 'isoir126':
--			case 'iso88597':
--			case 'iso885971987':
--				return 'ISO-8859-7';
--
--			case 'csisolatinhebrew':
--			case 'hebrew':
--			case 'iso88598':
--			case 'isoir138':
--			case 'iso88598':
--			case 'iso885981988':
--				return 'ISO-8859-8';
--
--			case 'csiso88598e':
--			case 'iso88598e':
--			case 'iso88598e':
--				return 'ISO-8859-8-E';
--
--			case 'csiso88598i':
--			case 'iso88598i':
--			case 'iso88598i':
--				return 'ISO-8859-8-I';
--
--			case 'cswindows31latin5':
--			case 'iso88599windowslatin5':
--				return 'ISO-8859-9-Windows-Latin-5';
--
--			case 'csisolatin6':
--			case 'iso885910':
--			case 'isoir157':
--			case 'iso8859101992':
--			case 'l6':
--			case 'latin6':
--				return 'ISO-8859-10';
--
--			case 'iso885913':
--				return 'ISO-8859-13';
--
--			case 'iso885914':
--			case 'isoceltic':
--			case 'isoir199':
--			case 'iso885914':
--			case 'iso8859141998':
--			case 'l8':
--			case 'latin8':
--				return 'ISO-8859-14';
--
--			case 'iso885915':
--			case 'iso885915':
--			case 'latin9':
--				return 'ISO-8859-15';
--
--			case 'iso885916':
--			case 'isoir226':
--			case 'iso885916':
--			case 'iso8859162001':
--			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 '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 'isoir2':
--			case 'iso646irv1983':
--				return 'ISO_646.irv:1983';
--
--			case 'csiso2033':
--			case 'e13b':
--			case 'isoir98':
--			case 'iso20331983':
--				return 'ISO_2033-1983';
--
--			case 'csiso5427cyrillic':
--			case 'isoir37':
--			case 'iso5427':
--				return 'ISO_5427';
--
--			case 'isoir54':
--			case 'iso5427cyrillic1981':
--			case 'iso54271981':
--				return 'ISO_5427:1981';
--
--			case 'csiso5428greek':
--			case 'isoir55':
--			case 'iso54281980':
--				return 'ISO_5428:1980';
--
--			case 'csiso6937add':
--			case 'isoir152':
--			case 'iso6937225':
--				return 'ISO_6937-2-25';
--
--			case 'csisotextcomm':
--			case 'isoir142':
--			case 'iso69372add':
--				return 'ISO_6937-2-add';
--
--			case 'csiso8859supp':
--			case 'isoir154':
--			case 'iso8859supp':
--			case 'latin125':
--				return 'ISO_8859-supp';
--
--			case 'csiso10367box':
--			case 'isoir155':
--			case 'iso10367box':
--				return 'ISO_10367-box';
--
--			case 'csiso15italian':
--			case 'isoir15':
--			case 'iso646it':
--			case 'it':
--				return 'IT';
--
--			case 'csiso13jisc6220jp':
--			case 'isoir13':
--			case 'jisc62201969':
--			case 'jisc62201969jp':
--			case 'katakana':
--			case 'x02017':
--				return 'JIS_C6220-1969-jp';
--
--			case 'csiso14jisc6220ro':
--			case 'isoir14':
--			case 'iso646jp':
--			case 'jisc62201969ro':
--			case 'jp':
--				return 'JIS_C6220-1969-ro';
--
--			case 'csiso42jisc62261978':
--			case 'isoir42':
--			case 'jisc62261978':
--				return 'JIS_C6226-1978';
--
--			case 'csiso87jisx0208':
--			case 'isoir87':
--			case 'jisc62261983':
--			case 'jisx02081983':
--			case 'x0208':
--				return 'JIS_C6226-1983';
--
--			case 'csiso91jisc62291984a':
--			case 'isoir91':
--			case 'jisc62291984a':
--			case 'jpocra':
--				return 'JIS_C6229-1984-a';
--
--			case 'csiso92jisc62991984b':
--			case 'isoir92':
--			case 'iso646jpocrb':
--			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 'jisx0201':
--			case 'x0201':
--				return 'JIS_X0201';
--
--			case 'csiso159jisx02121990':
--			case 'isoir159':
--			case 'jisx02121990':
--			case 'x0212':
--				return 'JIS_X0212-1990';
--
--			case 'csiso141jusib1002':
--			case 'isoir141':
--			case 'iso646yu':
--			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 'isoir86':
--			case 'iso646hu':
--			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 'isoir151':
--			case 'iso646cu':
--			case 'ncnc001081':
--				return 'NC_NC00-10:81';
--
--			case 'csiso69french':
--			case 'fr':
--			case 'isoir69':
--			case 'iso646fr':
--			case 'nfz62010':
--				return 'NF_Z_62-010';
--
--			case 'csiso25french':
--			case 'isoir25':
--			case 'iso646fr1':
--			case 'nfz620101973':
--				return 'NF_Z_62-010_(1973)';
--
--			case 'csiso60danishnorwegian':
--			case 'csiso60norwegian1':
--			case 'isoir60':
--			case 'iso646no':
--			case 'no':
--			case 'ns45511':
--				return 'NS_4551-1';
--
--			case 'csiso61norwegian2':
--			case 'isoir61':
--			case 'iso646no2':
--			case 'no2':
--			case 'ns45512':
--				return 'NS_4551-2';
--
--			case 'osdebcdicdf03irv':
--				return 'OSD_EBCDIC_DF03_IRV';
--
--			case 'osdebcdicdf041':
--				return 'OSD_EBCDIC_DF04_1';
--
--			case 'osdebcdicdf0415':
--				return 'OSD_EBCDIC_DF04_15';
--
--			case 'cspc8danishnorwegian':
--			case 'pc8danishnorwegian':
--				return 'PC8-Danish-Norwegian';
--
--			case 'cspc8turkish':
--			case 'pc8turkish':
--				return 'PC8-Turkish';
--
--			case 'csiso16portuguese':
--			case 'isoir16':
--			case 'iso646pt':
--			case 'pt':
--				return 'PT';
--
--			case 'csiso84portuguese2':
--			case 'isoir84':
--			case 'iso646pt2':
--			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 'isoir10':
--			case 'iso646fi':
--			case 'iso646se':
--			case 'se':
--			case 'sen850200b':
--				return 'SEN_850200_B';
--
--			case 'csiso11swedishfornames':
--			case 'isoir11':
--			case 'iso646se2':
--			case 'se2':
--			case 'sen850200c':
--				return 'SEN_850200_C';
--
--			case 'csshiftjis':
--			case 'mskanji':
--			case 'shiftjis':
--				return 'Shift_JIS';
--
--			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 'isoir6':
--			case 'iso646us':
--			case 'iso646irv1991':
--			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 'cswindows31j':
--			case 'windows31j':
--				return 'Windows-31J';
--
--			case 'iso885911':
--			case 'tis620':
--				return 'Windows-874';
--
--			case 'cseuckr':
--			case 'euckr':
--			case 'windows949':
--			case 'csksc56011987':
--			case 'isoir149':
--			case 'korean':
--			case 'ksc5601':
--			case 'ksc56011987':
--			case 'ksc56011989':
--				return 'Windows-949';
--
--			case 'windows1250':
--				return 'windows-1250';
--
--			case 'windows1251':
--				return 'windows-1251';
--
--			case 'cp819':
--			case 'csisolatin1':
--			case 'ibm819':
--			case 'iso88591':
--			case 'isoir100':
--			case 'iso885911987':
--			case 'l1':
--			case 'latin1':
--			case 'windows1252':
--				return 'Windows-1252';
--
--			case 'windows1252':
--				return 'windows-1252';
--
--			case 'windows1253':
--				return 'windows-1253';
--
--			case 'csisolatin5':
--			case 'iso88599':
--			case 'isoir148':
--			case 'iso885991989':
--			case 'l5':
--			case 'latin5':
--			case 'windows1254':
--				return 'Windows-1254';
--
--			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;
--		}
--	}
--
--	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;
--	}
--
--	function is_subclass_of($class1, $class2)
--	{
--		if (func_num_args() != 2)
--		{
--			trigger_error('Wrong parameter count for SimplePie_Misc::is_subclass_of()', E_USER_WARNING);
--		}
--		elseif (version_compare(PHP_VERSION, '5.0.3', '>=') || is_object($class1))
--		{
--			return is_subclass_of($class1, $class2);
--		}
--		elseif (is_string($class1) && is_string($class2))
--		{
--			if (class_exists($class1))
--			{
--				if (class_exists($class2))
--				{
--					$class2 = strtolower($class2);
--					while ($class1 = strtolower(get_parent_class($class1)))
--					{
--						if ($class1 == $class2)
--						{
--							return true;
--						}
--					}
--				}
--			}
--			else
--			{
--				trigger_error('Unknown class passed as parameter', E_USER_WARNNG);
--			}
--		}
--		return false;
--	}
--
--	/**
--	 * Strip HTML comments
--	 *
--	 * @access public
--	 * @param string $data Data to strip comments from
--	 * @return string Comment stripped string
--	 */
--	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;
--	}
--
--	function parse_date($dt)
--	{
--		$parser = SimplePie_Parse_Date::get();
--		return $parser->parse($dt);
--	}
--
--	/**
--	 * Decode HTML entities
--	 *
--	 * @static
--	 * @access public
--	 * @param string $data Input data
--	 * @return string Output data
--	 */
--	function entities_decode($data)
--	{
--		$decoder = new SimplePie_Decode_HTML_Entities($data);
--		return $decoder->parse();
--	}
--
--	/**
--	 * Remove RFC822 comments
--	 *
--	 * @access public
--	 * @param string $data Data to strip comments from
--	 * @return string Comment stripped string
--	 */
--	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;
--	}
--
--	function parse_mime($mime)
--	{
--		if (($pos = strpos($mime, ';')) === false)
--		{
--			return trim($mime);
--		}
--		else
--		{
--			return trim(substr($mime, 0, $pos));
--		}
--	}
--
--	function htmlspecialchars_decode($string, $quote_style)
--	{
--		if (function_exists('htmlspecialchars_decode'))
--		{
--			return htmlspecialchars_decode($string, $quote_style);
--		}
--		else
--		{
--			return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style)));
--		}
--	}
--
--	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;
--		}
--	}
--
--	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;
--	}
--
--	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;
--		}
--	}
--
--	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);
--	}
--
--	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;
--	}
--
--	function array_unique($array)
--	{
--		if (version_compare(PHP_VERSION, '5.2', '>='))
--		{
--			return array_unique($array);
--		}
--		else
--		{
--			$array = (array) $array;
--			$new_array = array();
--			$new_array_strings = array();
--			foreach ($array as $key => $value)
--			{
--				if (is_object($value))
--				{
--					if (method_exists($value, '__toString'))
--					{
--						$cmp = $value->__toString();
--					}
--					else
--					{
--						trigger_error('Object of class ' . get_class($value) . ' could not be converted to string', E_USER_ERROR);
--					}
--				}
--				elseif (is_array($value))
--				{
--					$cmp = (string) reset($value);
--				}
--				else
--				{
--					$cmp = (string) $value;
--				}
--				if (!in_array($cmp, $new_array_strings))
--				{
--					$new_array[$key] = $value;
--					$new_array_strings[] = $cmp;
--				}
--			}
--			return $new_array;
--		}
--	}
--
--	/**
--	 * Converts a unicode codepoint to a UTF-8 character
--	 *
--	 * @static
--	 * @access public
--	 * @param int $codepoint Unicode codepoint
--	 * @return string UTF-8 character
--	 */
--	function codepoint_to_utf8($codepoint)
--	{
--		static $cache = array();
--		$codepoint = (int) $codepoint;
--		if (isset($cache[$codepoint]))
--		{
--			return $cache[$codepoint];
--		}
--		elseif ($codepoint < 0)
--		{
--			return $cache[$codepoint] = false;
--		}
--		else if ($codepoint <= 0x7f)
--		{
--			return $cache[$codepoint] = chr($codepoint);
--		}
--		else if ($codepoint <= 0x7ff)
--		{
--			return $cache[$codepoint] = chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f));
--		}
--		else if ($codepoint <= 0xffff)
--		{
--			return $cache[$codepoint] = chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
--		}
--		else if ($codepoint <= 0x10ffff)
--		{
--			return $cache[$codepoint] = chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
--		}
--		else
--		{
--			// U+FFFD REPLACEMENT CHARACTER
--			return $cache[$codepoint] = "\xEF\xBF\xBD";
--		}
--	}
--
--	/**
--	 * Re-implementation of PHP 5's stripos()
--	 *
--	 * Returns the numeric position of the first occurrence of needle in the
--	 * haystack string.
--	 *
--	 * @static
--	 * @access string
--	 * @param object $haystack
--	 * @param string $needle Note that the needle may be a string of one or more
--	 *     characters. If needle is not a string, it is converted to an integer
--	 *     and applied as the ordinal value of a character.
--	 * @param int $offset The optional offset parameter allows you to specify which
--	 *     character in haystack to start searching. The position returned is still
--	 *     relative to the beginning of haystack.
--	 * @return bool If needle is not found, stripos() will return boolean false.
--	 */
--	function stripos($haystack, $needle, $offset = 0)
--	{
--		if (function_exists('stripos'))
--		{
--			return stripos($haystack, $needle, $offset);
--		}
--		else
--		{
--			if (is_string($needle))
--			{
--				$needle = strtolower($needle);
--			}
--			elseif (is_int($needle) || is_bool($needle) || is_double($needle))
--			{
--				$needle = strtolower(chr($needle));
--			}
--			else
--			{
--				trigger_error('needle is not a string or an integer', E_USER_WARNING);
--				return false;
--			}
--
--			return strpos(strtolower($haystack), $needle, $offset);
--		}
--	}
--
--	/**
--	 * 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
--	 * @access string
--	 * @param string $str The input string.
--	 * @return array
--	 */
--	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
--	 * @return array Possible encodings
--	 */
--	static function xml_encoding($data)
--	{
--		// 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 = new SimplePie_XML_Declaration_Parser(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 = new SimplePie_XML_Declaration_Parser(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 = new SimplePie_XML_Declaration_Parser(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 = new SimplePie_XML_Declaration_Parser(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 = new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5));
--				if ($parser->parse())
--				{
--					$encoding[] = $parser->encoding;
--				}
--			}
--			$encoding[] = 'UTF-8';
--		}
--		// Fallback to UTF-8
--		else
--		{
--			$encoding[] = 'UTF-8';
--		}
--		return $encoding;
--	}
--}
--
--/**
-- * Decode HTML Entities
-- *
-- * This implements HTML5 as of revision 967 (2007-06-28)
-- *
-- * @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
--	 */
--	function SimplePie_Decode_HTML_Entities($data)
--	{
--		$this->data = $data;
--	}
--
--	/**
--	 * Parse the input data
--	 *
--	 * @access public
--	 * @return string Output data
--	 */
--	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
--	 */
--	function consume()
--	{
--		if (isset($this->data[$this->position]))
--		{
--			$this->consumed .= $this->data[$this->position];
--			return $this->data[$this->position++];
--		}
--		else
--		{
--			$this->consumed = false;
--			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
--	 */
--	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
--		{
--			$this->consumed = false;
--			return false;
--		}
--	}
--
--	/**
--	 * Unconsume one byte
--	 *
--	 * @access private
--	 */
--	function unconsume()
--	{
--		$this->consumed = substr($this->consumed, 0, -1);
--		$this->position--;
--	}
--
--	/**
--	 * Decode an entity
--	 *
--	 * @access private
--	 */
--	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 ($this->consume() != ';')
--					{
--						$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;
--		}
--	}
--}
--
--/**
-- * Date Parser
-- *
-- * @package SimplePie
-- */
--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
--	 */
--	function SimplePie_Parse_Date()
--	{
--		$this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')';
--		$this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')';
--
--		static $cache;
--		if (!isset($cache[get_class($this)]))
--		{
--			if (extension_loaded('Reflection'))
--			{
--				$class = new ReflectionClass(get_class($this));
--				$methods = $class->getMethods();
--				$all_methods = array();
--				foreach ($methods as $method)
--				{
--					$all_methods[] = $method->getName();
--				}
--			}
--			else
--			{
--				$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
--	 */
--	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
--	 */
--	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
--	 */
--	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
--	 */
--	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
--	 */
--	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
--	 */
--	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
--	 */
--	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
--	 */
--	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
--	 */
--	function date_strtotime($date)
--	{
--		$strtotime = strtotime($date);
--		if ($strtotime === -1 || $strtotime === false)
--		{
--			return false;
--		}
--		else
--		{
--			return $strtotime;
--		}
--	}
--}
--
--/**
-- * Content-type sniffing
-- *
-- * @package SimplePie
-- */
--class SimplePie_Content_Type_Sniffer
--{
--	/**
--	 * File object
--	 *
--	 * @var SimplePie_File
--	 * @access private
--	 */
--	var $file;
--
--	/**
--	 * Create an instance of the class with the input file
--	 *
--	 * @access public
--	 * @param SimplePie_Content_Type_Sniffer $file Input file
--	 */
--	function SimplePie_Content_Type_Sniffer($file)
--	{
--		$this->file = $file;
--	}
--
--	/**
--	 * Get the Content-Type of the specified file
--	 *
--	 * @access public
--	 * @return string Actual Content-Type
--	 */
--	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'))
--			{
--				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 = 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
--	 *
--	 * @access private
--	 * @return string Actual Content-Type
--	 */
--	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
--	 *
--	 * @access private
--	 * @return string Actual Content-Type
--	 */
--	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';
--		}
--		else
--		{
--			return $this->text_or_binary();
--		}
--	}
--
--	/**
--	 * Sniff images
--	 *
--	 * @access private
--	 * @return string Actual Content-Type
--	 */
--	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';
--		}
--		else
--		{
--			return false;
--		}
--	}
--
--	/**
--	 * Sniff HTML
--	 *
--	 * @access private
--	 * @return string Actual Content-Type
--	 */
--	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';
--	}
--}
--
--/**
-- * Parses the XML Declaration
-- *
-- * @package SimplePie
-- */
--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
--	 */
--	function SimplePie_XML_Declaration_Parser($data)
--	{
--		$this->data = $data;
--		$this->data_length = strlen($this->data);
--	}
--
--	/**
--	 * Parse the input data
--	 *
--	 * @access public
--	 * @return bool true on success, false on failure
--	 */
--	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
--	 */
--	function has_data()
--	{
--		return (bool) ($this->position < $this->data_length);
--	}
--
--	/**
--	 * Advance past any whitespace
--	 *
--	 * @return int Number of whitespace characters passed
--	 */
--	function skip_whitespace()
--	{
--		$whitespace = strspn($this->data, "\x09\x0A\x0D\x20", $this->position);
--		$this->position += $whitespace;
--		return $whitespace;
--	}
--
--	/**
--	 * Read value
--	 */
--	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;
--	}
--
--	function before_version_name()
--	{
--		if ($this->skip_whitespace())
--		{
--			$this->state = 'version_name';
--		}
--		else
--		{
--			$this->state = false;
--		}
--	}
--
--	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;
--		}
--	}
--
--	function version_equals()
--	{
--		if (substr($this->data, $this->position, 1) === '=')
--		{
--			$this->position++;
--			$this->skip_whitespace();
--			$this->state = 'version_value';
--		}
--		else
--		{
--			$this->state = false;
--		}
--	}
--
--	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 = 'standalone_name';
--		}
--	}
--
--	function encoding_name()
--	{
--		if (substr($this->data, $this->position, 8) === 'encoding')
--		{
--			$this->position += 8;
--			$this->skip_whitespace();
--			$this->state = 'encoding_equals';
--		}
--		else
--		{
--			$this->state = false;
--		}
--	}
--
--	function encoding_equals()
--	{
--		if (substr($this->data, $this->position, 1) === '=')
--		{
--			$this->position++;
--			$this->skip_whitespace();
--			$this->state = 'encoding_value';
--		}
--		else
--		{
--			$this->state = false;
--		}
--	}
--
--	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;
--		}
--	}
--
--	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;
--		}
--	}
--
--	function standalone_equals()
--	{
--		if (substr($this->data, $this->position, 1) === '=')
--		{
--			$this->position++;
--			$this->skip_whitespace();
--			$this->state = 'standalone_value';
--		}
--		else
--		{
--			$this->state = false;
--		}
--	}
--
--	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;
--		}
--	}
--}
--
--class SimplePie_Locator
--{
--	var $useragent;
--	var $timeout;
--	var $file;
--	var $local = array();
--	var $elsewhere = array();
--	var $file_class = 'SimplePie_File';
--	var $cached_entities = array();
--	var $http_base;
--	var $base;
--	var $base_location = 0;
--	var $checked_feeds = 0;
--	var $max_checked_feeds = 10;
--	var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer';
--	var $proxy;
--
--	function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10, $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer', $proxy = "")
--	{
--		$this->file =& $file;
--		$this->file_class = $file_class;
--		$this->useragent = $useragent;
--		$this->timeout = $timeout;
--		$this->max_checked_feeds = $max_checked_feeds;
--		$this->content_type_sniffer_class = $content_type_sniffer_class;
--		$this->proxy = $proxy;
--	}
--
--	function find($type = SIMPLEPIE_LOCATOR_ALL)
--	{
--		if ($this->is_feed($this->file))
--		{
--			return $this->file;
--		}
--
--		if ($this->file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
--		{
--			$sniffer = new $this->content_type_sniffer_class($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;
--		}
--
--		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;
--	}
--
--	function is_feed(&$file)
--	{
--		if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
--		{
--			$sniffer = new $this->content_type_sniffer_class($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;
--		}
--	}
--
--	function get_base()
--	{
--		$this->http_base = $this->file->url;
--		$this->base = $this->http_base;
--		$elements = SimplePie_Misc::get_element('base', $this->file->body);
--		foreach ($elements as $element)
--		{
--			if ($element['attribs']['href']['data'] !== '')
--			{
--				$this->base = SimplePie_Misc::absolutize_url(trim($element['attribs']['href']['data']), $this->http_base);
--				$this->base_location = $element['offset'];
--				break;
--			}
--		}
--	}
--
--	function autodiscovery()
--	{
--		$links = array_merge(SimplePie_Misc::get_element('link', $this->file->body), SimplePie_Misc::get_element('a', $this->file->body), SimplePie_Misc::get_element('area', $this->file->body));
--		$done = array();
--		foreach ($links as $link)
--		{
--			if ($this->checked_feeds == $this->max_checked_feeds)
--			{
--				break;
--			}
--			if (isset($link['attribs']['href']['data']) && isset($link['attribs']['rel']['data']))
--			{
--				$rel = array_unique(SimplePie_Misc::space_seperated_tokens(strtolower($link['attribs']['rel']['data'])));
--
--				if ($this->base_location < $link['offset'])
--				{
--					$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
--				}
--				else
--				{
--					$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
--				}
--
--				if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml'))))
--				{
--					$this->checked_feeds++;
--					$feed = new $this->file_class($href, $this->timeout, 5, null, $this->useragent, false, $this->proxy);
--					if ($this->is_feed($feed))
--					{
--						return $feed;
--					}
--				}
--				$done[] = $href;
--			}
--		}
--		return null;
--	}
--
--	function get_links()
--	{
--		$links = SimplePie_Misc::get_element('a', $this->file->body);
--		foreach ($links as $link)
--		{
--			if (isset($link['attribs']['href']['data']))
--			{
--				$href = trim($link['attribs']['href']['data']);
--				$parsed = SimplePie_Misc::parse_url($href);
--				if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme']))
--				{
--					if ($this->base_location < $link['offset'])
--					{
--						$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
--					}
--					else
--					{
--						$href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
--					}
--
--					$current = SimplePie_Misc::parse_url($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;
--	}
--
--	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++;
--				$feed = new $this->file_class($value, $this->timeout, 5, null, $this->useragent, false, $this->proxy);
--				if ($this->is_feed($feed))
--				{
--					return $feed;
--				}
--				else
--				{
--					unset($array[$key]);
--				}
--			}
--		}
--		return null;
--	}
--
--	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++;
--				$feed = new $this->file_class($value, $this->timeout, 5, null, $this->useragent, false, $this->proxy);
--				if ($this->is_feed($feed))
--				{
--					return $feed;
--				}
--				else
--				{
--					unset($array[$key]);
--				}
--			}
--		}
--		return null;
--	}
--}
--
--class SimplePie_Parser
--{
--	var $error_code;
--	var $error_string;
--	var $current_line;
--	var $current_column;
--	var $current_byte;
--	var $separator = ' ';
--	var $feed = false;
--	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;
--
--	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 = new SimplePie_XML_Declaration_Parser(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;
--			}
--		}
--
--		// Work around libxml bug
--		$data = str_replace('<', '<', $data);
--		$data = str_replace('>', '>', $data);
--		$data = str_replace('&', '&', $data);
--		$data = str_replace(''', ''', $data);
--		$data = str_replace('"', '"', $data);
--
--		$return = true;
--
--		// Create the parser
--		$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;
--	}
--
--	function get_error_code()
--	{
--		return $this->error_code;
--	}
--
--	function get_error_string()
--	{
--		return $this->error_string;
--	}
--
--	function get_current_line()
--	{
--		return $this->current_line;
--	}
--
--	function get_current_column()
--	{
--		return $this->current_column;
--	}
--
--	function get_current_byte()
--	{
--		return $this->current_byte;
--	}
--
--	function get_data()
--	{
--		return $this->data;
--	}
--
--	function tag_open($parser, $tag, $attributes)
--	{
--		if ($this->feed === 0)
--		{
--			return;
--		}
--		elseif ($this->feed == false)
--		{
--			if (in_array($tag, array(
--				SIMPLEPIE_NAMESPACE_ATOM_10 . $this->separator . 'feed',
--				SIMPLEPIE_NAMESPACE_ATOM_03 . $this->separator . 'feed',
--				'rss',
--				SIMPLEPIE_NAMESPACE_RDF . $this->separator . 'RDF'
--			)))
--			{
--					$this->feed = 1;
--			}
--		}
--		else
--		{
--			$this->feed++;
--		}
--
--		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']))
--		{
--			$this->xml_base[] = SimplePie_Misc::absolutize_url($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_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'))
--			{
--				$this->current_xhtml_construct = 0;
--			}
--		}
--	}
--
--	function cdata($parser, $cdata)
--	{
--		if ($this->current_xhtml_construct >= 0)
--		{
--			$this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding);
--		}
--		elseif ($this->feed > 1)
--		{
--			$this->data['data'] .= $cdata;
--		}
--	}
--
--	function tag_close($parser, $tag)
--	{
--		if (!$this->feed)
--		{
--			return;
--		}
--
--		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[$this->feed];
--			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);
--		$this->feed--;
--	}
--
--	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;
--				}
--				$cache[$string] = array($namespace, $local_name);
--			}
--			else
--			{
--				$cache[$string] = array('', $string);
--			}
--		}
--		return $cache[$string];
--	}
--}
--
--/**
-- * @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 $cache_class = 'SimplePie_Cache';
--	var $file_class = 'SimplePie_File';
--	var $timeout = 10;
--	var $useragent = '';
--	var $force_fsockopen = false;
--	var $proxy = "";
--
--	var $replace_url_attributes = array(
--		'a' => 'href',
--		'area' => 'href',
--		'blockquote' => 'cite',
--		'del' => 'cite',
--		'form' => 'action',
--		'img' => array('longdesc', 'src'),
--		'input' => 'src',
--		'ins' => 'cite',
--		'q' => 'cite'
--	);
--
--	function remove_div($enable = true)
--	{
--		$this->remove_div = (bool) $enable;
--	}
--
--	function set_image_handler($page = false)
--	{
--		if ($page)
--		{
--			$this->image_handler = (string) $page;
--		}
--		else
--		{
--			$this->image_handler = false;
--		}
--	}
--
--	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;
--		}
--
--		if ($cache_class)
--		{
--			$this->cache_class = (string) $cache_class;
--		}
--	}
--
--	function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false)
--	{
--		if ($file_class)
--		{
--			$this->file_class = (string) $file_class;
--		}
--
--		if ($timeout)
--		{
--			$this->timeout = (string) $timeout;
--		}
--
--		if ($useragent)
--		{
--			$this->useragent = (string) $useragent;
--		}
--
--		if ($force_fsockopen)
--		{
--			$this->force_fsockopen = (string) $force_fsockopen;
--		}
--	}
--
--	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;
--		}
--	}
--
--	function encode_instead_of_strip($encode = false)
--	{
--		$this->encode_instead_of_strip = (bool) $encode;
--	}
--
--	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;
--		}
--	}
--
--	function strip_comments($strip = false)
--	{
--		$this->strip_comments = (bool) $strip;
--	}
--
--	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
--	 *
--	 * @access public
--	 * @since 1.0
--	 * @param array $element_attribute Element/attribute key/value pairs
--	 */
--	function set_url_replacements($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;
--	}
--
--	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_XHTML)
--			{
--				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_HTML | SIMPLEPIE_CONSTRUCT_XHTML))
--			{
--				// Strip comments
--				if ($this->strip_comments)
--				{
--					$data = SimplePie_Misc::strip_comments($data);
--				}
--
--				// 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)
--					{
--						$pcre = "/<($tag)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$tag" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>|(\/)?>)/siU';
--						while (preg_match($pcre, $data))
--						{
--							$data = preg_replace_callback($pcre, array(&$this, 'do_strip_htmltags'), $data);
--						}
--					}
--				}
--
--				if ($this->strip_attributes)
--				{
--					foreach ($this->strip_attributes as $attrib)
--					{
--						$data = preg_replace('/(<[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*)' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . trim($attrib) . '(?:\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>/', '\1\2\3>', $data);
--					}
--				}
--
--				// Replace relative URLs
--				$this->base = $base;
--				foreach ($this->replace_url_attributes as $element => $attributes)
--				{
--					$data = $this->replace_urls($data, $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 = SimplePie_Misc::get_element('img', $data);
--					foreach ($images as $img)
--					{
--						if (isset($img['attribs']['src']['data']))
--						{
--							$image_url = call_user_func($this->cache_name_function, $img['attribs']['src']['data']);
--							$cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $image_url, 'spi');
--
--							if ($cache->load())
--							{
--								$img['attribs']['src']['data'] = $this->image_handler . $image_url;
--								$data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
--							}
--							else
--							{
--								$file = new $this->file_class($img['attribs']['src']['data'], $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen, $this->proxy);
--								$headers = $file->headers;
--
--								if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)))
--								{
--									if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
--									{
--										$img['attribs']['src']['data'] = $this->image_handler . $image_url;
--										$data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
--									}
--									else
--									{
--										trigger_error("$cache->name is not writeable", E_USER_WARNING);
--									}
--								}
--							}
--						}
--					}
--				}
--
--				// Having (possibly) taken stuff out, there may now be whitespace at the beginning/end of the data
--				$data = trim($data);
--			}
--
--			if ($type & SIMPLEPIE_CONSTRUCT_IRI)
--			{
--				$data = SimplePie_Misc::absolutize_url($data, $base);
--			}
--
--			if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI))
--			{
--				$data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
--			}
--
--			if ($this->output_encoding != 'UTF-8')
--			{
--				$data = SimplePie_Misc::change_encoding($data, 'UTF-8', $this->output_encoding);
--			}
--		}
--		return $data;
--	}
--
--	function replace_urls($data, $tag, $attributes)
--	{
--		if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags))
--		{
--			$elements = SimplePie_Misc::get_element($tag, $data);
--			foreach ($elements as $element)
--			{
--				if (is_array($attributes))
--				{
--					foreach ($attributes as $attribute)
--					{
--						if (isset($element['attribs'][$attribute]['data']))
--						{
--							$element['attribs'][$attribute]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attribute]['data'], $this->base);
--							$new_element = SimplePie_Misc::element_implode($element);
--							$data = str_replace($element['full'], $new_element, $data);
--							$element['full'] = $new_element;
--						}
--					}
--				}
--				elseif (isset($element['attribs'][$attributes]['data']))
--				{
--					$element['attribs'][$attributes]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attributes]['data'], $this->base);
--					$data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data);
--				}
--			}
--		}
--		return $data;
--	}
--
--	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 "<$match[1]$match[2]>$match[3]</$match[1]>";
--			}
--			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 '';
--		}
--	}
--}
--
--?>
-Index: src/common/widget/Widget_Rss.class.php
-===================================================================
---- src.orig/common/widget/Widget_Rss.class.php
-+++ src/common/widget/Widget_Rss.class.php
-@@ -45,7 +45,7 @@
- 					return idn_to_unicode($param);
- 				}
- 			}
--			require_once('common/rss/simplepie.inc');
-+			require_once('/usr/share/php/simplepie/simplepie.inc');
- 			if (!is_dir(forge_get_config('sys_var_path') .'/rss')) {
- 				mkdir(forge_get_config('sys_var_path') .'/rss');
- 			}
-@@ -128,12 +128,7 @@
- 			$vTitle = new Valid_String('title');
- 			$vTitle->required();
- 			if (!$request->validInArray('rss', $vTitle)) {
--				if (function_exists('idn_to_utf8()')) {
--					require_once('simplepie/simplepie.inc');
--				}
--				else {
--					require_once('common/rss/simplepie.inc');
--				}
-+				require_once('/usr/share/php/simplepie/simplepie.inc');
- 				if (!is_dir(forge_get_config('sys_var_path') .'/rss')) {
- 					mkdir(forge_get_config('sys_var_path') .'/rss');
- 				}

Copied: trunk/src/debian/patches/use-snoopy-from-distro (from rev 15532, trunk/src/debian/patches/use-snoopy-from-distro.patch)
===================================================================
--- trunk/src/debian/patches/use-snoopy-from-distro	                        (rev 0)
+++ trunk/src/debian/patches/use-snoopy-from-distro	2012-05-21 09:59:30 UTC (rev 15539)
@@ -0,0 +1,42 @@
+Author: Roland Mas <lolando at debian.org>
+Description: Use Snoopy as provided by the libphp-snoopy Debian package
+instead of shipping a local one.
+Index: src/plugins/cvstracker/bin/post.php
+===================================================================
+--- src.orig/plugins/cvstracker/bin/post.php
++++ src/plugins/cvstracker/bin/post.php
+@@ -32,7 +32,7 @@
+ require dirname(__FILE__).'/../../env.inc.php';
+ require_once $gfcommon.'include/pre.php';
+ require_once ($gfcommon.'common/include/utils.php');
+-require_once ($gfplugins.'cvstracker/common/Snoopy.class.php');
++require_once ('/usr/share/php/libphp-snoopy/Snoopy.class.php');
+ 
+ $cvs_binary_version = get_cvs_binary_version () ;
+ 
+Index: src/plugins/scmcvs/bin/aclcheck.php
+===================================================================
+--- src.orig/plugins/scmcvs/bin/aclcheck.php
++++ src/plugins/scmcvs/bin/aclcheck.php
+@@ -31,7 +31,7 @@
+ require_once $gfcommon. 'include/pre.php';
+ require_once $gfcommon.'include/utils.php';
+ require_once $gfconfig.'plugins/scmcvs/config.php';
+-require_once $gfplugins.'scmcvs/common/Snoopy.class.php';
++require_once '/usr/share/php/libphp-snoopy/Snoopy.class.php';
+ 
+ // Input cleansing
+ $env_cvsroot = (string) $_ENV['CVSROOT'];
+Index: src/plugins/svntracker/bin/post.php
+===================================================================
+--- src.orig/plugins/svntracker/bin/post.php
++++ src/plugins/svntracker/bin/post.php
+@@ -31,7 +31,7 @@
+ 
+ require_once dirname(__FILE__)."/../../env.inc.php";
+ require_once $gfcommon.'include/pre.php';
+-require $gfplugins.'svntracker/common/Snoopy.class.php';
++require '/usr/share/php/libphp-snoopy/Snoopy.class.php';
+ 
+ /**
+  * It returns the usage and exit program

Deleted: trunk/src/debian/patches/use-snoopy-from-distro.patch
===================================================================
--- trunk/src/debian/patches/use-snoopy-from-distro.patch	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/debian/patches/use-snoopy-from-distro.patch	2012-05-21 09:59:30 UTC (rev 15539)
@@ -1,42 +0,0 @@
-Author: Roland Mas <lolando at debian.org>
-Description: Use Snoopy as provided by the libphp-snoopy Debian package
-instead of shipping a local one.
-Index: src/plugins/cvstracker/bin/post.php
-===================================================================
---- src.orig/plugins/cvstracker/bin/post.php
-+++ src/plugins/cvstracker/bin/post.php
-@@ -32,7 +32,7 @@
- require dirname(__FILE__).'/../../env.inc.php';
- require_once $gfcommon.'include/pre.php';
- require_once ($gfcommon.'common/include/utils.php');
--require_once ($gfplugins.'cvstracker/common/Snoopy.class.php');
-+require_once ('/usr/share/php/libphp-snoopy/Snoopy.class.php');
- 
- $cvs_binary_version = get_cvs_binary_version () ;
- 
-Index: src/plugins/scmcvs/bin/aclcheck.php
-===================================================================
---- src.orig/plugins/scmcvs/bin/aclcheck.php
-+++ src/plugins/scmcvs/bin/aclcheck.php
-@@ -31,7 +31,7 @@
- require_once $gfcommon. 'include/pre.php';
- require_once $gfcommon.'include/utils.php';
- require_once $gfconfig.'plugins/scmcvs/config.php';
--require_once $gfplugins.'scmcvs/common/Snoopy.class.php';
-+require_once '/usr/share/php/libphp-snoopy/Snoopy.class.php';
- 
- // Input cleansing
- $env_cvsroot = (string) $_ENV['CVSROOT'];
-Index: src/plugins/svntracker/bin/post.php
-===================================================================
---- src.orig/plugins/svntracker/bin/post.php
-+++ src/plugins/svntracker/bin/post.php
-@@ -31,7 +31,7 @@
- 
- require_once dirname(__FILE__)."/../../env.inc.php";
- require_once $gfcommon.'include/pre.php';
--require $gfplugins.'svntracker/common/Snoopy.class.php';
-+require '/usr/share/php/libphp-snoopy/Snoopy.class.php';
- 
- /**
-  * It returns the usage and exit program

Modified: trunk/src/debian/patches/use-yui-from-distro
===================================================================
--- trunk/src/debian/patches/use-yui-from-distro	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/debian/patches/use-yui-from-distro	2012-05-21 09:59:30 UTC (rev 15539)
@@ -2,7 +2,7 @@
 ===================================================================
 --- src.orig/etc/httpd.conf.d/vhost-main.inc
 +++ src/etc/httpd.conf.d/vhost-main.inc
-@@ -32,7 +32,7 @@
+@@ -34,7 +34,7 @@
  Alias /scripts/jquery-simpletreemenu/ {core/source_path}/lib/vendor/jquery-simpletreemenu/
  Alias /scripts/prototype/ {core/source_path}/lib/vendor/prototype/
  Alias /scripts/scriptaculous/ {core/source_path}/lib/vendor/scriptaculous/

Copied: trunk/src/docs/README.html-elements (from rev 15538, branches/Branch_5_2/src/docs/README.html-elements)
===================================================================
--- trunk/src/docs/README.html-elements	                        (rev 0)
+++ trunk/src/docs/README.html-elements	2012-05-21 09:59:30 UTC (rev 15539)
@@ -0,0 +1,142 @@
+Documentation of new HTML element creation functions
+────────────────────────────────────────────────────
+
+Functions defined in src/www/include/html.php → available: always.
+
+
+‣ Element emission functions (do not echo anything)
+
+
+• string html_eo(string $name, optional(empty) array $attrs)
+
+	html_eo('b')
+	⇒ '<b>'
+
+	html_eo('td', array('colspan' => 2))
+	⇒ '<td colspan="2">'
+
+	html_eo('div', array('class' => array('ff', 'important')))
+	⇒ '<div class="ff important">'
+
+	html_eo('img', array(
+		'src' => '…',
+		'ref' => false,
+		'class' => array(),
+		'alt' => "",
+	    ))
+	⇒ '<img src="…" alt="">'
+
+  Generate an XHTML E̲lement O̲pen tag for $name, with attributes
+  defined by key/value pairs properly inserted. Attribute values
+  are coerced into strings from integers (by casting) or arrays
+  (by concatenating the array elements with spaces); if the value
+  is === false or an empty array (count($attrs[n]) == 0), the
+  attribute is not output at all, but for empty values it is; see
+  the img example (admittedly bad, you’d use html_e() for "img").
+
+• string html_e(string $name, optional(empty) array $attrs,
+    optional(empty) string $content, optional(true) bool $shortform)
+
+	html_e('br')
+	⇒ '<br />'
+
+	html_e('a', array('href' => '/foo.php?a=1&b=2'), 'täxt')
+	⇒ '<a href="/foo.php?a=1&b=2">täxt</a>'
+
+	html_e('script', array(
+		'type' => 'text/javascript',
+		'src' => '/js/foo.js',
+	    ), "", false)
+	⇒ '<script type="text/javascript" src="/js/foo.js"></script>'
+	/* needed because <script ... /> does not work */
+
+	html_e('tr', array(), html_e('td', array(), 'bla'))
+	⇒ '<tr><td>bla</td></tr>'
+
+  As with html_eo() the first two arguments define the tag to open.
+  The third argument will be placed between the opening and closing
+  tags but – in contrast to attribute values – not entity-encoded.
+  If the third argument is empty, either a self-closing (default)
+  tag, or, if the fourth argument is false, an open-close sequence,
+  is emitted.
+
+
+‣ Autoclose stack functions
+
+	$spos = html_ap();
+	$s = html_ao('p');
+	if ($foo) {
+		$s .= html_ao('strong');
+	}
+	$s .= html_ao('a', array('href' => '/'));
+	$s .= somefunc();
+	$s .= html_ac($spos);
+	⇒ '<p><strong><a href="/">somefuncreturnvalue</a></strong></p>'
+	⇒ '<p><a href="/">somefuncreturnvalue</a></p>'
+
+• integer html_ap(void)
+
+  Return the a̲utoclose stack’s current p̲osition.
+
+• string html_ao(string $name, optional(empty) array $attrs)
+
+  Works the same as html_eo() but pushes $name onto the a̲utoclose
+  element stack when o̲pening it.
+
+• string html_ac(integer $spos)
+
+  Return a set of closing elements until the a̲utoc̲lose stack
+  has reached the position it had when html_ap() returned $spos.
+
+  If $spos === false: an empty string is returned, for html_aonce().
+
+  If $spos < current stack position, an Exception is raised.
+
+• string html_aonce(ByRef integer $sptr, string $name,
+    optional(empty) array $attrs)
+
+	$spos = false;
+	foreach ($row in $rows) {
+		echo html_aonce('table');
+		echo html_e('tr', array(), html_e('td', array(),
+		    util_html_secure($row['data'])));
+	}
+	echo html_ac($spos);
+	⇒ ''  // if $rows is empty
+	⇒ '<table><tr><td>content1</td></tr><tr><td>content2</td></tr></table>'
+
+  If $sptr is not false, do nothing. Otherwise, set it to
+  the current html_ap() then do html_ao($name, $attrs).
+
+  This function can easily be used to open an enclosing element
+  with mandatory inner elements, such as a table, only once except
+  if no table row were to be generated.
+
+‣ Autoclose stack copy functions
+
+	$spos = html_ap();
+	echo html_ao('tr', array('bgcolor' => '#FF0000'));
+	echo html_ao('td');
+	echo "content 1";
+	$scopy = html_a_copy($spos);
+	echo html_ac($spos);
+	echo html_e('tr', array(), html_e('td', array(), "intermediate"));
+	echo html_a_apply($scopy);
+	echo "content 2";
+	echo html_ac($spos);
+	echo html_a_apply($scopy);
+	echo "content 3";
+	echo html_ac($spos);
+
+	⇒ <tr bgcolor="#FF0000"><td>content 1</td></tr>
+	  <tr><td>intermediate</td></tr>
+	  <tr bgcolor="#FF0000"><td>content 2</td></tr>
+	  <tr bgcolor="#FF0000"><td>content 3</td></tr>
+
+• opaque html_a_copy(integer $spos)
+• string html_a_apply(opaque $scopy)
+
+  Before autoclosing the stack down to a level $spos, you can
+  retrieve a copy of the stack in an opaque format, which can
+  later be used to (re-)open the same elements, with the same
+  attributes, even in a different nesting state.

Copied: trunk/src/docs/README.html-utils (from rev 15538, branches/Branch_5_2/src/docs/README.html-utils)
===================================================================
--- trunk/src/docs/README.html-utils	                        (rev 0)
+++ trunk/src/docs/README.html-utils	2012-05-21 09:59:30 UTC (rev 15539)
@@ -0,0 +1,102 @@
+Documentation of common HTML utility functions
+──────────────────────────────────────────────
+
+Functions defined in src/common/include/utils.php → available: always.
+
+
+• string util_html_encode(string $s)
+
+	util_html_secure('a=1&b=2')
+	⇒ 'a=1&b=2'        // HTML-encoded
+
+	util_html_secure('a=1&b=2')
+	⇒ 'a=1&amp;b=2'    // changed!
+
+  Encode a string for use in XHTML even if it is already encoded.
+
+• string util_html_secure(string $s)
+
+	util_html_secure('a=1&b=2')
+	⇒ 'a=1&b=2'    // HTML-encoded
+
+	util_html_secure('a=1&b=2')
+	⇒ 'a=1&b=2'    // unchanged
+
+  Encode a string for use in XHTML if it is not already encoded.
+  (So, if you use this for output sanitising, other than a slight
+  performance penalty no harm is done if the output was already
+  sane.)
+
+• string util_unconvert_htmlspecialchars(string $s)
+
+	util_unconvert_htmlspecialchars('a=1&b=2')
+	⇒ 'a=1&b=2'    // unchanged
+
+	util_unconvert_htmlspecialchars('a=1&b=2')
+	⇒ 'a=1&b=2'    // HTML-decoded
+
+  Undo util_html_encode; be careful, this can decode partially.
+
+
+• string util_gethref(optional(false) string $baseurl,
+    optional(empty) array $args, optional(true) bool $ashtml,
+    optional('&') string $sep)
+
+	util_gethref("/x.php", array(
+		'foo' => 'a+b&c',
+		'bar' => 'd+b&e',
+	    ));
+	⇒ "/x.php?foo=a%2Bb%26c&bar=d%2Bb%26e"
+
+	util_gethref("/x.php", array(
+		'foo' => 'a+b&c',
+		'bar' => 'd+b&e',
+	    ), false);
+	⇒ /x.php?foo=a%2Bb%26c&bar=d%2Bb%26e
+
+	util_gethref("/x.php", array(
+		'foo' => 'a+b&c',
+		'bar' => 'd+b&e',
+	    ), true, ';')
+	⇒ "/x.php?foo=a%2Bb%26c;bar=d%2Bb%26e"
+
+  Construct an URI for use with util_make_url, session_redirect,
+  html_e('a', array('href' => …)), and similar. The first argument
+  ($baseurl) is passed through as-is but, if falsy, defaults to
+  getStringFromServer('PHP_SELF'); the arguments (both keys and
+  values) are urlencoded (entries while values is false are not
+  emitted at all) and appended, with a question mark in front and
+  the $sep separator in between.
+
+  If $ashtml is true (default), the result will then be run through
+  util_html_encode; set this to false when using in html_e href as
+  value (since html_e will html-encode itself).
+
+• string util_make_url(string $path)
+
+	util_make_url('/foo.php?a=1&b=2')
+	⇒ 'https://forge.domain.com/fusionforge/foo.php?a=1&b=2'
+
+  Return an absolute URI for the path in question, containing the
+  system-defined protocol, hostname and (if defined) webroot prefix.
+
+  Both html-encoded and not html-encoded return values of util_gethref
+  are safe to pass as arguments, if their baseurl was only a path.
+
+• integer|false util_nat0(ByRef string $s)
+
+  If and only if $s is the normalised positive integer (ℕ₀)
+  representation of a number, return that number; false otherwise.
+  Limited by system constraints, i.e. usually [0;2³¹-1].
+
+
+‣ common non-HTML utility functions
+
+
+• mixed util_ifsetor(ByRef mixed $val, optional(false) mixed $default)
+
+  If isset($val), return $val, otherwise (no warning) $default.
+
+• string debug_string_backtrace(void)
+
+  Return the current debugging backtrace as string.

Modified: trunk/src/packaging/install/common
===================================================================
--- trunk/src/packaging/install/common	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/packaging/install/common	2012-05-21 09:59:30 UTC (rev 15539)
@@ -27,3 +27,5 @@
 plugins/authbuiltin/common          usr/share/@OLDPACKAGE@/plugins/authbuiltin/
 plugins/authbuiltin/www             usr/share/@OLDPACKAGE@/plugins/authbuiltin/
 plugins/authbuiltin/etc/*.ini 	    etc/@PACKAGE@/config.ini.d/
+#
+utils/list-admins.php                  usr/share/@OLDPACKAGE@/bin/

Copied: trunk/src/utils/list-admins.php (from rev 15538, branches/Branch_5_2/src/utils/list-admins.php)
===================================================================
--- trunk/src/utils/list-admins.php	                        (rev 0)
+++ trunk/src/utils/list-admins.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -0,0 +1,7 @@
+#!/usr/bin/php -f
+<?php
+require "/usr/share/gforge/common/include/env.inc.php";
+require_once $gfcommon."include/pre.php";
+$admins = RBACEngine::getInstance()->getUsersByAllowedAction("forge_admin", -1);
+$anames = array_map(create_function("\$x", "return \$x->getUnixName();"), $admins);
+sort($anames); echo join(" ", $anames) . "\n";


Property changes on: trunk/src/utils/list-admins.php
___________________________________________________________________
Added: svn:executable
   + *

Modified: trunk/src/utils/migrate-to-ini-files.sh
===================================================================
--- trunk/src/utils/migrate-to-ini-files.sh	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/utils/migrate-to-ini-files.sh	2012-05-21 09:59:30 UTC (rev 15539)
@@ -38,8 +38,8 @@
 lastsection=''
 tmp=$(mktemp)
 cat > $tmp <<EOF
-# This is a generated file with values migrated from your previous configuration
-# You may want to move the values in here to the main configuration files
+; This is a generated file with values migrated from your previous configuration
+; You may want to move the values in here to the main configuration files
 EOF
 
 add_config core account_manager_type >> $tmp
@@ -155,8 +155,8 @@
 lastsection=''
 tmp=$(mktemp)
 cat > $tmp <<EOF
-# This is a generated file with values migrated from your previous configuration
-# You may want to move the values in here to the main configuration files
+; This is a generated file with values migrated from your previous configuration
+; You may want to move the values in here to the main configuration files
 EOF
 
 add_config core database_host >> $tmp

Modified: trunk/src/www/admin/pluginman.php
===================================================================
--- trunk/src/www/admin/pluginman.php	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/www/admin/pluginman.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -268,6 +268,11 @@
 		$link = '';
 	}
 
+	// Disable link to action if action is not possible.
+	if (isset($action[$filename][$next]) && $action[$filename][$next] === false) {
+		$link = '';
+	}
+
 	$title = _('Current plugin status:'). ' ' .forge_get_config('plugin_status', $filename);
 	echo '<tr '. $HTML->boxGetAltRowStyle($j+1) .'>'.
 		'<td title="'. $description.' '.$title .'">'. $filename.'</td>'.

Modified: trunk/src/www/include/html.php
===================================================================
--- trunk/src/www/include/html.php	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/src/www/include/html.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -160,12 +160,18 @@
 	$res=db_query_params('SELECT theme_id, fullname FROM themes WHERE enabled=true',
 			array());
 	$nbTheme = db_numrows($res);
-	if($nbTheme < 2) {
+	if ($nbTheme == 1) {
+		$thetheme = db_result($res, 0, 'fullname');
+		return util_html_secure($thetheme) . html_e('input', array(
+			'type' => 'hidden',
+			'name' => $title,
+			'value' => db_result($res, 0, 'theme_id'),
+		    ));
+	} else if ($nbTheme < 1) {
 		return("");
+	} else {
+		return html_build_select_box($res,$title,$selected,false);
 	}
-	else {
-		return html_build_select_box($res, $title, $selected, false);
-	}
 }
 
 /**
@@ -920,9 +926,211 @@
 
 	return date(_('Y-m-d H:i'), $date);
 }
+
+/* TODO: think about beautifying output */
+
+/**
+ * html_eo() - Return proper element XHTML start tag
+ *
+ * @param	string	$name
+ *			element name
+ * @param	array	$attrs
+ *		(optional) associative array of element attributes
+ *			values: arrays are space-imploded;
+ *			    false values and empty arrays ignored
+ * @return	string
+ *		XHTML string suitable for echo'ing
+ */
+function html_eo($name, $attrs=array()) {
+	$rv = '<' . $name;
+	foreach ($attrs as $key => $value) {
+		if (is_array($value)) {
+			$value = count($value) ? implode(" ", $value) : false;
+		}
+		if ($value === false) {
+			continue;
+		}
+		$rv .= ' ' . $key . '="' . htmlspecialchars($value) . '"';
+	}
+	$rv .= '>';
+	return $rv;
+}
+
+/**
+ * html_e() - Return proper element XHTML start/end sequence
+ *
+ * @param	string	$name
+ *			element name
+ * @param	array	$attrs
+ *		(optional) associative array of element attributes
+ *			values: arrays are space-imploded;
+ *			    false values and empty arrays ignored
+ * @param	string	$content
+ *		(optional) XHTML to be placed inside
+ * @param	bool	$shortform
+ *		(optional) allow short open-close form
+ *		(default: true)
+ * @return	string
+ *		XHTML string suitable for echo'ing
+ */
+function html_e($name, $attrs=array(), $content="", $shortform=true) {
+	$rv = '<' . $name;
+	foreach ($attrs as $key => $value) {
+		if (is_array($value)) {
+			$value = count($value) ? implode(" ", $value) : false;
+		}
+		if ($value === false) {
+			continue;
+		}
+		$rv .= ' ' . $key . '="' . htmlspecialchars($value) . '"';
+	}
+	if ($content === "" && $shortform) {
+		$rv .= ' />';
+	} else {
+		$rv .= '>' . $content . '</' . $name . '>';
+	}
+	return $rv;
+}
+
+$html_autoclose_stack = array();
+$html_autoclose_pos = 0;
+
+/**
+ * html_ap() - Return XHTML element autoclose stack position
+ *
+ * @return	integer
+ */
+function html_ap() {
+	global $html_autoclose_pos;
+
+	return $html_autoclose_pos;
+}
+
+/**
+ * html_ao() - Return proper element XHTML start tag, with autoclose
+ *
+ * @param	string	$name
+ *			element name
+ * @param	array	$attrs
+ *		(optional) associative array of element attributes
+ *			values: arrays are space-imploded;
+ *			    false values and empty arrays ignored
+ * @return	string
+ *		XHTML string suitable for echo'ing
+ */
+function html_ao($name, $attrs=array()) {
+	global $html_autoclose_pos, $html_autoclose_stack;
+
+	$html_autoclose_stack[$html_autoclose_pos++] = array(
+		'name' => $name,
+		'attr' => $attrs,
+	    );
+	return html_eo($name, $attrs);
+}
+
+/**
+ * html_aonce() - Return once proper element XHTML start tag, with autoclose
+ *
+ * @param	ref	&$sptr
+			initialise this to false; will be modified
+ * @param	string	$name
+ *			element name
+ * @param	array	$attrs
+ *		(optional) associative array of element attributes
+ *			values: arrays are space-imploded;
+ *			    false values and empty arrays ignored
+ * @return	string
+ *		XHTML string suitable for echo'ing
+ */
+function html_aonce(&$sptr, $name, $attrs=array()) {
+	if ($sptr !== false) {
+		/* already run */
+		return "";
+	}
+	$sptr = html_ap();
+	return html_ao($name, $attrs);
+}
+
+/**
+ * html_ac() - Return proper element XHTML end tags, autoclosing
+ *
+ * @param	integer	$spos
+ *			stack position to return to
+ *			(nothing is done if === false)
+ * @return	string
+ *		XHTML string suitable for echo'ing
+ */
+function html_ac($spos) {
+	global $html_autoclose_pos, $html_autoclose_stack;
+
+	if ($spos === false) {
+		/* support for html_aonce() */
+		return "";
+	}
+
+	if ($html_autoclose_pos < $spos) {
+		$e = "html_autoclose stack underflow; closing down to " .
+		    $spos . " but we're down to " . $html_autoclose_pos .
+		    " already!";
+		throw new Exception($e);
+	}
+
+	$rv = "";
+	while ($html_autoclose_pos > $spos) {
+		--$html_autoclose_pos;
+		$rv .= '</' . $html_autoclose_stack[$html_autoclose_pos]['name'] . '>';
+		unset($html_autoclose_stack[$html_autoclose_pos]);
+	}
+	return $rv;
+}
+
+/**
+ * html_a_copy() - Return a copy of part of the autoclose stack
+ *
+ * @param	integer	$spos
+ *			stack position caller will return to
+ * @return	opaque
+ *		argument suitable for html_a_apply()
+ */
+function html_a_copy($spos) {
+	global $html_autoclose_pos, $html_autoclose_stack;
+
+	if ($spos === false) {
+		return array();
+	}
+
+	if ($spos > $html_autoclose_pos) {
+		$e = "html_autoclose stack underflow; closing down to " .
+		    $spos . " but we're down to " . $html_autoclose_pos .
+		    " already!";
+		throw new Exception($e);
+	}
+
+	$rv = array();
+	while ($spos < $html_autoclose_pos) {
+		$rv[] = $html_autoclose_stack[$spos++];
+	}
+	return $rv;
+}
+
+/**
+ * html_a_apply() - Reopen tags based on an autoclose stack copy
+ *
+ * @param	opaque	$scopy
+ *			return value from html_a_copy()
+ * @return	string
+ *		XHTML string suitable for echo'ing
+ */
+function html_a_apply($scopy) {
+	/* array_reduce() would be useful here... IF IT WORKED, FFS! */
+	$rv = "";
+	foreach ($scopy as $value) {
+		$rv .= html_ao($value['name'], $value['attr']);
+	}
+	return $rv;
+}
+
 // Local Variables:
 // mode: php
 // c-file-style: "bsd"
 // End:
-
-?>

Modified: trunk/tests/SeleniumTests.php
===================================================================
--- trunk/tests/SeleniumTests.php	2012-05-21 09:44:25 UTC (rev 15538)
+++ trunk/tests/SeleniumTests.php	2012-05-21 09:59:30 UTC (rev 15539)
@@ -3,7 +3,7 @@
 	define('PHPUnit_MAIN_METHOD', 'AllTests::main');
 }
 
-require_once 'PHPUnit/Framework.php';
+include_once 'PHPUnit/Framework.php';
 require_once 'PHPUnit/TextUI/TestRunner.php';
 
 class AllTests




More information about the Fusionforge-commits mailing list