# Name: kuo_wp_import v0.1 # Type: Admin plugin # Import WordPress-generated RSS (XML) file contents to Textpattern. # Author: Petri Ikonen # URL: http://kuopassa.net/txp/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern CMS - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEzOiJrdW9fd3BfaW1wb3J0IjtzOjY6ImF1dGhvciI7czox MjoiUGV0cmkgSWtvbmVuIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI0OiJodHRwOi8va3VvcGFz c2EubmV0L3R4cC8iO3M6NzoidmVyc2lvbiI7czozOiIwLjEiO3M6MTE6ImRlc2NyaXB0aW9u IjtzOjY2OiJJbXBvcnQgV29yZFByZXNzLWdlbmVyYXRlZCBSU1MgKFhNTCkgZmlsZSBjb250 ZW50cyB0byBUZXh0cGF0dGVybi4iO3M6NDoiY29kZSI7czoxMjY4OToiaWYgKEB0eHBpbnRl cmZhY2UgPT09ICdhZG1pbicpIHsNCg0KYWRkX3ByaXZzKCdrdW9fd3BfaW1wb3J0JywxKTsN Cg0KcmVnaXN0ZXJfdGFiKCdleHRlbnNpb25zJywna3VvX3dwX2ltcG9ydCcsJ1dQIEltcG9y dCcpOw0KDQpyZWdpc3Rlcl9jYWxsYmFjaygna3VvX3dwX2ltcG9ydF90YWInLCdrdW9fd3Bf aW1wb3J0Jyk7DQoNCmZ1bmN0aW9uIGt1b191cGxvYWRfZm9ybSgpIHsNCg0KICAgIHJldHVy biAnDQogICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zv cm0tZGF0YSI+DQogICAgICAgICAgICA8ZmllbGRzZXQ+DQogICAgICAgICAgICAgICAgPGxl Z2VuZD5JbXBvcnQgY29udGVudCBmcm9tIFdvcmRQcmVzcyB0byBUZXh0cGF0dGVybjwvbGVn ZW5kPg0KICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+Q2hvb3NlIGEgV29yZFByZXNzLWdl bmVyYXRlZCA8Y29kZT4ueG1sPC9jb2RlPiBmaWxlIHRoYXQgY29udGFpbnMNCiAgICAgICAg ICAgICAgICBmb3IgZXhhbXBsZSBjYXRlZ29yaWVzLCBwb3N0cyBhbmQgcGFnZXMuIEFmdGVy IGNob29zaW5nIGFuZCB1cGxvYWRpbmcgdGhhdCBmaWxlIGl0cw0KICAgICAgICAgICAgICAg IGNvbnRlbnRzIGFyZSA8ZW0+aW1tZWRpYXRlbHk8L2VtPiBpbXBvcnRlZCB0byB0aGlzIFRl eHRwYXR0ZXJuLjwvc3Ryb25nPjwvcD4NCiAgICAgICAgICAgICAgICA8cD48bGFiZWwgZm9y PSJrdW9fZmlsZSI+Jy5nVHh0KCd1cGxvYWRfZmlsZScpLic6Jm5ic3A7PC9sYWJlbD48aW5w dXQNCiAgICAgICAgICAgICAgICB0eXBlPSJmaWxlIg0KICAgICAgICAgICAgICAgIGlkPSJr dW9fZmlsZSINCiAgICAgICAgICAgICAgICBuYW1lPSJrdW9fZmlsZSINCiAgICAgICAgICAg ICAgICBzaXplPSI1NSINCiAgICAgICAgICAgICAgICBhY2NlcHQ9Ii54bWwsdGV4dC94bWwi DQogICAgICAgICAgICAgICAgcmVxdWlyZWQ9InJlcXVpcmVkIg0KICAgICAgICAgICAgICAg IC8+Jm5ic3A7PGJ1dHRvbiB0eXBlPSJzdWJtaXQiPicuZ1R4dCgndXBsb2FkJykuJzwvYnV0 dG9uPjwvcD4NCiAgICAgICAgICAgICAgICA8cD5NYXguIGZpbGUgc2l6ZTogJy5rdW9fbWF4 X2ZpbGVfdXBsb2FkX3NpemUoKS4nIGJ5dGVzLjwvcD4NCiAgICAgICAgICAgIDwvZmllbGRz ZXQ+DQogICAgICAgIDwvZm9ybT4NCiAgICAnOw0KfQ0KDQpmdW5jdGlvbiBrdW9fbWF4X2Zp bGVfdXBsb2FkX3NpemUoKSB7DQoNCiAgICAkbWF4X2ZpbGVfc2l6ZSA9IHNhZmVfcm93KCd2 YWwnLCd0eHBfcHJlZnMnLCdgbmFtZWAgPSAiZmlsZV9tYXhfdXBsb2FkX3NpemUiJyk7DQog ICAgJG1heF9maWxlX3NpemUgPSAkbWF4X2ZpbGVfc2l6ZVsndmFsJ107DQoNCiAgICBzZXR0 eXBlKCRtYXhfZmlsZV9zaXplLCdpbnQnKTsNCg0KICAgIHJldHVybiAkbWF4X2ZpbGVfc2l6 ZTsNCn0NCg0KZnVuY3Rpb24ga3VvX2lzX3ZhbGlkKCRkYXRhKSB7DQoNCiAgICBpZiAoa3Vv X21heF9maWxlX3VwbG9hZF9zaXplKCkgPT0gMCkgew0KICAgICAgICAkbWF4X2ZpbGVfc2l6 ZSA9IDEwNDg1NzY7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICAkbWF4X2ZpbGVfc2l6 ZSA9IGt1b19tYXhfZmlsZV91cGxvYWRfc2l6ZSgpOw0KICAgIH0NCg0KICAgIGlmICgNCiAg ICAgICAgKGlzX2FycmF5KCRkYXRhKSkNCiAgICAgICAgJiYNCiAgICAgICAgKGlzc2V0KCRk YXRhWydrdW9fZmlsZSddWyd0eXBlJ10sJGRhdGFbJ2t1b19maWxlJ11bJ2Vycm9yJ10sJGRh dGFbJ2t1b19maWxlJ11bJ3NpemUnXSkpDQogICAgICAgICYmDQogICAgICAgICgkZGF0YVsn a3VvX2ZpbGUnXVsndHlwZSddID09PSAndGV4dC94bWwnKQ0KICAgICAgICAmJg0KICAgICAg ICAoJGRhdGFbJ2t1b19maWxlJ11bJ2Vycm9yJ10gPT0gMCkNCiAgICAgICAgJiYNCiAgICAg ICAgKCRkYXRhWydrdW9fZmlsZSddWydzaXplJ10gPiAwKQ0KICAgICAgICAmJg0KICAgICAg ICAoJGRhdGFbJ2t1b19maWxlJ11bJ3NpemUnXSA8PSAkbWF4X2ZpbGVfc2l6ZSkNCiAgICAp IHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICBy ZXR1cm4gZmFsc2U7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBrdW9fYXJ0aWNsZV9zdGF0dXMo JHN0YXR1cykgew0KDQogICAgaWYgKChpc3NldCgkc3RhdHVzKSkgJiYgKCFlbXB0eSgkc3Rh dHVzKSkpIHsNCg0KICAgICAgICAkc3RhdHVzID0gc3RydG9sb3dlcigkc3RhdHVzKTsNCg0K ICAgICAgICBpZiAoJHN0YXR1cyA9PT0gJ3B1Ymxpc2gnKSB7DQogICAgICAgICAgICByZXR1 cm4gNDsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKCRzdGF0dXMgPT09ICdwZW5kaW5n Jykgew0KICAgICAgICAgICAgcmV0dXJuIDM7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7 DQogICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBlbHNlIHsN CiAgICAgICAgcmV0dXJuIDE7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBrdW9fY2F0ZWdvcmll c190b19rZXl3b3JkcygkY2F0ZWdvcmllcykgew0KICAgIGlmICgoaXNzZXQoJGNhdGVnb3Jp ZXMpKSAmJiAoaXNfYXJyYXkoJGNhdGVnb3JpZXMpKSAmJiAoIWVtcHR5KCRjYXRlZ29yaWVz KSkpIHsNCg0KICAgICAgICAka2V5d29yZHMgPSBOVUxMOw0KDQogICAgICAgIGZvcmVhY2gg KCRjYXRlZ29yaWVzIGFzICRjYXRlZ29yaWVzKSB7DQogICAgICAgICAgICAka2V5d29yZHMg Lj0gZG9zbGFzaCgkY2F0ZWdvcmllcykuJywnOw0KICAgICAgICB9DQoNCiAgICAgICAgJGtl eXdvcmRzID0gcnRyaW0oJGtleXdvcmRzLCcsJyk7DQoNCiAgICAgICAgcmV0dXJuICRrZXl3 b3JkczsNCg0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgcmV0dXJuICRjYXRlZ29yaWVz Ow0KICAgIH0NCn0NCg0KZnVuY3Rpb24ga3VvX2NvbW1lbnRfc3RhdHVzKCRzdGF0dXMpIHsN CiAgICBpZiAoaXNzZXQoJHN0YXR1cykpIHsNCg0KICAgICAgICAkc3RhdHVzID0gc3RydG9s b3dlcigkc3RhdHVzKTsNCg0KICAgICAgICBpZiAoJHN0YXR1cyA9PT0gJ29wZW4nKSB7DQog ICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAg ICAgICAgIHJldHVybiAwOw0KICAgICAgICB9DQoNCiAgICB9DQogICAgZWxzZSB7DQogICAg ICAgIHJldHVybiAwOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24ga3VvX2hhbmRsZV94bWwoJGRh dGEpIHsNCg0KICAgICRkYXRhID0gZmlsZV9nZXRfY29udGVudHMoJGRhdGEpOw0KDQogICAg IyBUSElTIElTTidUIEEgQkVBVVRZIENPTlRFU1Q6DQogICAgJGRhdGEgPSBzdHJfcmVwbGFj ZSgNCiAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAnPHdwOicsDQogICAgICAgICAgICAn PC93cDonLA0KICAgICAgICAgICAgJzxjb250ZW50OmVuY29kZWQ+JywNCiAgICAgICAgICAg ICc8L2NvbnRlbnQ6ZW5jb2RlZD4nLA0KICAgICAgICAgICAgJzxleGNlcnB0OmVuY29kZWQ+ JywNCiAgICAgICAgICAgICc8L2V4Y2VycHQ6ZW5jb2RlZD4nLA0KICAgICAgICAgICAgJzxk YzpjcmVhdG9yPicsDQogICAgICAgICAgICAnPC9kYzpjcmVhdG9yPicNCiAgICAgICAgKSwN CiAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAnPHdwJywNCiAgICAgICAgICAgICc8L3dw JywNCiAgICAgICAgICAgICc8Y29udGVudD4nLA0KICAgICAgICAgICAgJzwvY29udGVudD4n LA0KICAgICAgICAgICAgJzxleGNlcnB0PicsDQogICAgICAgICAgICAnPC9leGNlcnB0Pics DQogICAgICAgICAgICAnPGNyZWF0b3I+JywNCiAgICAgICAgICAgICc8L2NyZWF0b3I+Jw0K ICAgICAgICApLA0KICAgICAgICAkZGF0YQ0KICAgICk7DQoNCiAgICAkZGF0YSA9IHNpbXBs ZXhtbF9sb2FkX3N0cmluZygkZGF0YSwnU2ltcGxlWE1MRWxlbWVudCcsTElCWE1MX05PQ0RB VEEpOw0KDQogICAgIyBPQkpFQ1RTIFRPIEFSUkFZUw0KICAgICRkYXRhID0ganNvbl9lbmNv ZGUoJGRhdGEpOw0KICAgICRkYXRhID0ganNvbl9kZWNvZGUoJGRhdGEsdHJ1ZSk7DQoNCiAg ICBpZiAoaXNzZXQoJGRhdGFbJ2NoYW5uZWwnXSkpIHsNCg0KICAgICAgICAkZGF0YSA9ICRk YXRhWydjaGFubmVsJ107DQoNCiAgICAgICAgIyBDT05UQUlORVJTDQogICAgICAgICRjYXRl Z29yeV9zcWwgPSBhcnJheSgpOw0KICAgICAgICAkYXJ0aWNsZV9zcWwgPSBhcnJheSgpOw0K DQogICAgICAgICMgQkVHSU5TOiBDQVRFR09SSUVTDQogICAgICAgIGlmICgoaXNzZXQoJGRh dGFbJ3dwY2F0ZWdvcnknXSkpICYmICghZW1wdHkoJGRhdGFbJ3dwY2F0ZWdvcnknXSkpKSB7 DQoNCiAgICAgICAgICAgICMgQkVHSU5TOiBGT1JFQUNIDQogICAgICAgICAgICBmb3JlYWNo ICgkZGF0YVsnd3BjYXRlZ29yeSddIGFzICRkYXRhWyd3cGNhdGVnb3J5J10pIHsNCg0KICAg ICAgICAgICAgICAgICMgQkVHSU5TOiBJUyBWQUxJRCBDQVRFR09SWQ0KICAgICAgICAgICAg ICAgIGlmIChpc3NldCgkZGF0YVsnd3BjYXRlZ29yeSddWyd3cGNhdGVnb3J5X25pY2VuYW1l J10sJGRhdGFbJ3dwY2F0ZWdvcnknXVsnd3BjYXRfbmFtZSddKSkgew0KDQogICAgICAgICAg ICAgICAgICAgICRkYXRhWyd3cGNhdGVnb3J5J11bJ3dwY2F0ZWdvcnlfbmljZW5hbWUnXSA9 DQogICAgICAgICAgICAgICAgICAgICAgICBzdWJzdHIoJGRhdGFbJ3dwY2F0ZWdvcnknXVsn d3BjYXRlZ29yeV9uaWNlbmFtZSddLDAsNjQpOw0KDQogICAgICAgICAgICAgICAgICAgICRj YXRlZ29yeV9zcWxbXSA9DQogICAgICAgICAgICAgICAgICAgICcoDQogICAgICAgICAgICAg ICAgICAgICAgICAiJy5kb3NsYXNoKCRkYXRhWyd3cGNhdGVnb3J5J11bJ3dwY2F0ZWdvcnlf bmljZW5hbWUnXSkuJyIsDQogICAgICAgICAgICAgICAgICAgICAgICAiYXJ0aWNsZSIsDQog ICAgICAgICAgICAgICAgICAgICAgICAicm9vdCIsDQogICAgICAgICAgICAgICAgICAgICAg ICAiJy5kb3NsYXNoKCRkYXRhWyd3cGNhdGVnb3J5J11bJ3dwY2F0X25hbWUnXSkuJyINCiAg ICAgICAgICAgICAgICAgICAgKSc7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgICMgRU5EUzogSVMgVkFMSUQgQ0FURUdPUlkNCiAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICMgRU5EUzogRk9SRUFDSA0KICAgICAgICB9DQogICAgICAgICMgRU5EUzogQ0FURUdP UklFUw0KDQogICAgICAgICMgQkVHSU5TOiBBUlRJQ0xFUw0KICAgICAgICBpZiAoKGlzc2V0 KCRkYXRhWydpdGVtJ10pKSAmJiAoIWVtcHR5KCRkYXRhWydpdGVtJ10pKSkgew0KDQogICAg ICAgICAgICAjIEJFR0lOUzogRk9SRUFDSA0KICAgICAgICAgICAgZm9yZWFjaCAoJGRhdGFb J2l0ZW0nXSBhcyAkZGF0YVsnaXRlbSddKSB7DQoNCiAgICAgICAgICAgICAgICAjIEJFR0lO UzogSVMgVkFMSUQgQVJUSUNMRQ0KICAgICAgICAgICAgICAgIGlmICgNCiAgICAgICAgICAg ICAgICAgICAgKGlzc2V0KA0KICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGFbJ2l0ZW0n XVsnZGVzY3JpcHRpb24nXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhWydpdGVt J11bJ3RpdGxlJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YVsnaXRlbSddWyd3 cHBvc3RfbmFtZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGFbJ2l0ZW0nXVsn d3Bwb3N0X2RhdGUnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhWydpdGVtJ11b J3dwY29tbWVudF9zdGF0dXMnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhWydp dGVtJ11bJ3dwc3RhdHVzJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YVsnaXRl bSddWydjb250ZW50J10sDQogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YVsnaXRlbSdd WydleGNlcnB0J10sDQogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YVsnaXRlbSddWydj cmVhdG9yJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YVsnaXRlbSddWyd3cHBv c3RfdHlwZSddKQ0KICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAg ICYmDQogICAgICAgICAgICAgICAgICAgICghZW1wdHkoJGRhdGFbJ2l0ZW0nXVsndGl0bGUn XSkpDQogICAgICAgICAgICAgICAgICAgICYmDQogICAgICAgICAgICAgICAgICAgICghZW1w dHkoJGRhdGFbJ2l0ZW0nXVsnd3Bwb3N0X25hbWUnXSkpDQogICAgICAgICAgICAgICAgICAg ICYmDQogICAgICAgICAgICAgICAgICAgIChpbl9hcnJheSgkZGF0YVsnaXRlbSddWyd3cHBv c3RfdHlwZSddLGFycmF5KCdwb3N0JywncGFnZScpKSkNCiAgICAgICAgICAgICAgICApIHsN Cg0KICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRkYXRhWydpdGVtJ11bJ2Nv bnRlbnQnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gZG9zbGFz aCgkZGF0YVsnaXRlbSddWydjb250ZW50J10pOw0KICAgICAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNv bnRlbnQgPSAnJzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAg ICAgIGlmICghaXNfYXJyYXkoJGRhdGFbJ2l0ZW0nXVsnZXhjZXJwdCddKSkgew0KICAgICAg ICAgICAgICAgICAgICAgICAgJGV4Y2VycHQgPSBkb3NsYXNoKCRkYXRhWydpdGVtJ11bJ2V4 Y2VycHQnXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg ZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZXhjZXJwdCA9ICcnOw0KICAgICAg ICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgIyBCRUdJTlM6IEFSVElD TEUtT05MWSBDQVRFR09SSUVTDQogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkZGF0 YVsnaXRlbSddWydjYXRlZ29yeSddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNh dGVnb3JpZXMgPSBrdW9fY2F0ZWdvcmllc190b19rZXl3b3JkcygkZGF0YVsnaXRlbSddWydj YXRlZ29yeSddKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg ICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjYXRlZ29yaWVzID0gJyc7DQog ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgIyBFTkRTOiBBUlRJ Q0xFLU9OTFkgQ0FURUdPUklFUw0KDQogICAgICAgICAgICAgICAgICAgICRkYXRhWydpdGVt J11bJ2NyZWF0b3InXSA9IHN1YnN0cigkZGF0YVsnaXRlbSddWydjcmVhdG9yJ10sMCw2NCk7 DQoNCiAgICAgICAgICAgICAgICAgICAgJGFydGljbGVfc3FsW10gPQ0KICAgICAgICAgICAg ICAgICAgICAnKA0KICAgICAgICAgICAgICAgICAgICAgICAgIicuZGF0ZSgnWS1tLWQgSDpp OnMnLHN0cnRvdGltZSgkZGF0YVsnaXRlbSddWyd3cHBvc3RfZGF0ZSddKSkuJyIsDQogICAg ICAgICAgICAgICAgICAgICAgICBOVUxMLA0KICAgICAgICAgICAgICAgICAgICAgICAgIiIs DQogICAgICAgICAgICAgICAgICAgICAgICAiJy5kYXRlKCdZLW0tZCBIOmk6cycsc3RydG90 aW1lKCRkYXRhWydpdGVtJ11bJ3dwcG9zdF9kYXRlJ10pKS4nIiwNCiAgICAgICAgICAgICAg ICAgICAgICAgICInLmRvc2xhc2goJGRhdGFbJ2l0ZW0nXVsnY3JlYXRvciddKS4nIiwNCiAg ICAgICAgICAgICAgICAgICAgICAgICInLmRvc2xhc2goJGRhdGFbJ2l0ZW0nXVsndGl0bGUn XSkuJyIsDQogICAgICAgICAgICAgICAgICAgICAgICAiJy5kb3NsYXNoKCRkYXRhWydpdGVt J11bJ3RpdGxlJ10pLiciLA0KICAgICAgICAgICAgICAgICAgICAgICAgIicuJGNvbnRlbnQu JyIsDQogICAgICAgICAgICAgICAgICAgICAgICAiJy4kY29udGVudC4nIiwNCiAgICAgICAg ICAgICAgICAgICAgICAgICInLiRleGNlcnB0LiciLA0KICAgICAgICAgICAgICAgICAgICAg ICAgIicuJGV4Y2VycHQuJyIsDQogICAgICAgICAgICAgICAgICAgICAgICAiIiwNCiAgICAg ICAgICAgICAgICAgICAgICAgICIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgIiIsDQog ICAgICAgICAgICAgICAgICAgICAgICAnLmt1b19jb21tZW50X3N0YXR1cygkZGF0YVsnaXRl bSddWyd3cGNvbW1lbnRfc3RhdHVzJ10pLicsDQogICAgICAgICAgICAgICAgICAgICAgICAi IiwNCiAgICAgICAgICAgICAgICAgICAgICAgIDAsDQogICAgICAgICAgICAgICAgICAgICAg ICAnLmt1b19hcnRpY2xlX3N0YXR1cygkZGF0YVsnaXRlbSddWyd3cHN0YXR1cyddKS4nLA0K ICAgICAgICAgICAgICAgICAgICAgICAgMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIDEs DQogICAgICAgICAgICAgICAgICAgICAgICAiYXJ0aWNsZXMiLA0KICAgICAgICAgICAgICAg ICAgICAgICAgIiIsDQogICAgICAgICAgICAgICAgICAgICAgICAiJy4kY2F0ZWdvcmllcy4n IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICIiLA0KICAgICAgICAgICAgICAgICAgICAg ICAgIicuZG9zbGFzaCgkZGF0YVsnaXRlbSddWyd3cHBvc3RfbmFtZSddKS4nIiwNCiAgICAg ICAgICAgICAgICAgICAgICAgICIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgIiIsDQog ICAgICAgICAgICAgICAgICAgICAgICAiIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICIi LA0KICAgICAgICAgICAgICAgICAgICAgICAgIiIsDQogICAgICAgICAgICAgICAgICAgICAg ICAiIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICIiLA0KICAgICAgICAgICAgICAgICAg ICAgICAgIiIsDQogICAgICAgICAgICAgICAgICAgICAgICAiIiwNCiAgICAgICAgICAgICAg ICAgICAgICAgICIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgIicubWQ1KHVuaXFpZChy YW5kKCksdHJ1ZSkpLiciLA0KICAgICAgICAgICAgICAgICAgICAgICAgIicuZGF0ZSgnWS1t LWQnKS4nIg0KICAgICAgICAgICAgICAgICAgICApJzsNCg0KICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICAjIEVORFM6IElTIFZBTElEIEFSVElDTEUNCiAgICAgICAgICAg IH0NCiAgICAgICAgICAgICMgRU5EUzogRk9SRUFDSA0KICAgICAgICB9DQogICAgICAgICMg RU5EUzogQVJUSUNMRVMNCg0KICAgICAgICBpZiAoIWVtcHR5KCRjYXRlZ29yeV9zcWwpKSB7 DQoNCiAgICAgICAgICAgICRjYXRlZ29yeV9zdGF0dXMgPSBzYWZlX3F1ZXJ5KCcNCiAgICAg ICAgICAgICAgICBJTlNFUlQgSUdOT1JFIElOVE8NCiAgICAgICAgICAgICAgICAgICAgJy5z YWZlX3BmeCgndHhwX2NhdGVnb3J5JykuJw0KICAgICAgICAgICAgICAgICgNCiAgICAgICAg ICAgICAgICAgICAgYG5hbWVgLA0KICAgICAgICAgICAgICAgICAgICBgdHlwZWAsDQogICAg ICAgICAgICAgICAgICAgIGBwYXJlbnRgLA0KICAgICAgICAgICAgICAgICAgICBgdGl0bGVg DQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIFZBTFVFUw0KICAgICAgICAg ICAgICAgICAgICAnLmltcGxvZGUoJywnLCRjYXRlZ29yeV9zcWwpDQogICAgICAgICAgICAp Ow0KDQpyZWJ1aWxkX3RyZWVfZnVsbCgnYXJ0aWNsZScpOw0KICAgICAgICB9DQogICAgICAg IGVsc2Ugew0KICAgICAgICAgICAgJGNhdGVnb3J5X3N0YXR1cyA9IGZhbHNlOw0KICAgICAg ICB9DQoNCiAgICAgICAgaWYgKCFlbXB0eSgkYXJ0aWNsZV9zcWwpKSB7DQoNCiAgICAgICAg ICAgICRhcnRpY2xlX3N0YXR1cyA9IHNhZmVfcXVlcnkoJw0KICAgICAgICAgICAgICAgIElO U0VSVCBJR05PUkUgSU5UTw0KICAgICAgICAgICAgICAgICAgICAnLnNhZmVfcGZ4KCd0ZXh0 cGF0dGVybicpLicNCiAgICAgICAgICAgICAgICAoDQogICAgICAgICAgICAgICAgICAgIGBQ b3N0ZWRgLA0KICAgICAgICAgICAgICAgICAgICBgRXhwaXJlc2AsDQogICAgICAgICAgICAg ICAgICAgIGBBdXRob3JJRGAsDQogICAgICAgICAgICAgICAgICAgIGBMYXN0TW9kYCwNCiAg ICAgICAgICAgICAgICAgICAgYExhc3RNb2RJRGAsDQogICAgICAgICAgICAgICAgICAgIGBU aXRsZWAsDQogICAgICAgICAgICAgICAgICAgIGBUaXRsZV9odG1sYCwNCiAgICAgICAgICAg ICAgICAgICAgYEJvZHlgLA0KICAgICAgICAgICAgICAgICAgICBgQm9keV9odG1sYCwNCiAg ICAgICAgICAgICAgICAgICAgYEV4Y2VycHRgLA0KICAgICAgICAgICAgICAgICAgICBgRXhj ZXJwdF9odG1sYCwNCiAgICAgICAgICAgICAgICAgICAgYEltYWdlYCwNCiAgICAgICAgICAg ICAgICAgICAgYENhdGVnb3J5MWAsDQogICAgICAgICAgICAgICAgICAgIGBDYXRlZ29yeTJg LA0KICAgICAgICAgICAgICAgICAgICBgQW5ub3RhdGVgLA0KICAgICAgICAgICAgICAgICAg ICBgQW5ub3RhdGVJbnZpdGVgLA0KICAgICAgICAgICAgICAgICAgICBgY29tbWVudHNfY291 bnRgLA0KICAgICAgICAgICAgICAgICAgICBgU3RhdHVzYCwNCiAgICAgICAgICAgICAgICAg ICAgYHRleHRpbGVfYm9keWAsDQogICAgICAgICAgICAgICAgICAgIGB0ZXh0aWxlX2V4Y2Vy cHRgLA0KICAgICAgICAgICAgICAgICAgICBgU2VjdGlvbmAsDQogICAgICAgICAgICAgICAg ICAgIGBvdmVycmlkZV9mb3JtYCwNCiAgICAgICAgICAgICAgICAgICAgYEtleXdvcmRzYCwN CiAgICAgICAgICAgICAgICAgICAgYGRlc2NyaXB0aW9uYCwNCiAgICAgICAgICAgICAgICAg ICAgYHVybF90aXRsZWAsDQogICAgICAgICAgICAgICAgICAgIGBjdXN0b21fMWAsDQogICAg ICAgICAgICAgICAgICAgIGBjdXN0b21fMmAsDQogICAgICAgICAgICAgICAgICAgIGBjdXN0 b21fM2AsDQogICAgICAgICAgICAgICAgICAgIGBjdXN0b21fNGAsDQogICAgICAgICAgICAg ICAgICAgIGBjdXN0b21fNWAsDQogICAgICAgICAgICAgICAgICAgIGBjdXN0b21fNmAsDQog ICAgICAgICAgICAgICAgICAgIGBjdXN0b21fN2AsDQogICAgICAgICAgICAgICAgICAgIGBj dXN0b21fOGAsDQogICAgICAgICAgICAgICAgICAgIGBjdXN0b21fOWAsDQogICAgICAgICAg ICAgICAgICAgIGBjdXN0b21fMTBgLA0KICAgICAgICAgICAgICAgICAgICBgdWlkYCwNCiAg ICAgICAgICAgICAgICAgICAgYGZlZWRfdGltZWANCiAgICAgICAgICAgICAgICApDQogICAg ICAgICAgICBWQUxVRVMNCiAgICAgICAgICAgICAgICAnLmltcGxvZGUoJywnLCRhcnRpY2xl X3NxbCkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAg ICAgICAgICAkYXJ0aWNsZV9zdGF0dXMgPSBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAg IHJldHVybiBhcnJheSgkY2F0ZWdvcnlfc3RhdHVzLCRhcnRpY2xlX3N0YXR1cyk7DQogICAg fQ0KICAgIGVsc2Ugew0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KfQ0KDQoNCmZ1 bmN0aW9uIGt1b193cF9pbXBvcnRfdGFiKCkgew0KDQpwYWdldG9wKCdXUCBJbXBvcnQnKTsN Cg0KaWYgKChpc3NldCgkX0ZJTEVTKSkgJiYgKCFlbXB0eSgkX0ZJTEVTKSkpIHsNCg0KICAg ICRrdW9faW1wb3J0X2h0bWwgPSBOVUxMOw0KDQogICAgaWYgKGt1b19pc192YWxpZCgkX0ZJ TEVTKSA9PSB0cnVlKSB7DQoNCiAgICAgICAgJGt1b19pbXBvcnRfcmVzdWx0cyA9IGt1b19o YW5kbGVfeG1sKCRfRklMRVNbJ2t1b19maWxlJ11bJ3RtcF9uYW1lJ10pOw0KDQogICAgICAg IGlmICgoJGt1b19pbXBvcnRfcmVzdWx0c1swXSA9PSB0cnVlKSAmJiAoJGt1b19pbXBvcnRf cmVzdWx0c1sxXSA9PSB0cnVlKSkgew0KICAgICAgICAgICAgJGt1b19pbXBvcnRfaHRtbCA9 ICc8cCBjbGFzcz0iYWxlcnQtYmxvY2sgc3VjY2VzcyI+Q2F0ZWdvcmllcyBhbmQgYXJ0aWNs ZXMgd2VyZSBpbXBvcnRlZC48L3A+JzsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKCgk a3VvX2ltcG9ydF9yZXN1bHRzWzBdID09IHRydWUpICYmICgka3VvX2ltcG9ydF9yZXN1bHRz WzFdID09IGZhbHNlKSkgew0KICAgICAgICAgICAgJGt1b19pbXBvcnRfaHRtbCA9ICc8cCBj bGFzcz0iYWxlcnQtYmxvY2sgc3VjY2VzcyI+Q2F0ZWdvcmllcyB3ZXJlIGltcG9ydGVkLiBB cnRpY2xlcyB3ZXJlIG5vdC48L3A+JzsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKCgk a3VvX2ltcG9ydF9yZXN1bHRzWzBdID09IGZhbHNlKSAmJiAoJGt1b19pbXBvcnRfcmVzdWx0 c1sxXSA9PSB0cnVlKSkgew0KICAgICAgICAgICAgJGt1b19pbXBvcnRfaHRtbCA9ICc8cCBj bGFzcz0iYWxlcnQtYmxvY2sgc3VjY2VzcyI+QXJ0aWNsZXMgd2VyZSBpbXBvcnRlZC4gQ2F0 ZWdvcmllcyB3ZXJlIG5vdC48L3A+JzsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAg ICAgICAgICAgICRrdW9faW1wb3J0X2h0bWwgPSAnPHAgY2xhc3M9ImFsZXJ0LWJsb2NrIGVy cm9yIj4nLmdUeHQoJ2dlbmVyYWxfZXJyb3InKS4nOg0KICAgICAgICAgICAgbm8gY2F0ZWdv cmllcyBvciBhcnRpY2xlcyB3ZXJlIGltcG9ydGVkLjwvcD4nOw0KICAgICAgICB9DQoNCiAg ICAgICAgdW5zZXQoJGt1b19pbXBvcnRfcmVzdWx0cyk7DQoNCiAgICB9DQogICAgZWxzZSB7 DQogICAgICAgICRrdW9faW1wb3J0X2h0bWwgPSAnPHAgY2xhc3M9ImFsZXJ0LWJsb2NrIGVy cm9yIj4nLmdUeHQoJ2dlbmVyYWxfZXJyb3InKS4nOiB0aGUgZmlsZSBpcyBub3QgdmFsaWQu PC9wPic7DQogICAgfQ0KDQogICAgZWNobyAka3VvX2ltcG9ydF9odG1sOw0KDQogICAgdW5z ZXQoDQogICAgICAgICRrdW9faW1wb3J0X2h0bWwsDQogICAgICAgICRfRklMRVMNCiAgICAp Ow0KfQ0KDQplY2hvIGt1b191cGxvYWRfZm9ybSgpOw0KDQp9DQoNCn0iO3M6NDoidHlwZSI7 czoxOiIzIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo0OiJo ZWxwIjtzOjE0OTI6IjxwIGNsYXNzPSJhbGVydC1ibG9jayBpbmZvcm1hdGlvbiI+PHN0cm9u Zz48YSBocmVmPSI/ZXZlbnQ9a3VvX3dwX2ltcG9ydCIgc3R5bGU9ImRpc3BsYXk6YmxvY2si PkltcG9ydDwvYT48L3N0cm9uZz48L3A+CjxoMj5XaGF0IGRvZXMgdGhpcyBwbHVnaW4gZG8/ PC9oMj4KPHA+SXQgdHJhbnNmb3JtcyBXb3JkUHJlc3MgPHN0cm9uZz5jYXRlZ29yaWVzPC9z dHJvbmc+IHRvIFRleHRwYXR0ZXJuIGNhdGVnb3JpZXMsIHRoZW4gaXQgdHJhbnNmb3JtcyBX b3JkUHJlc3MgPHN0cm9uZz5wb3N0czwvc3Ryb25nPiBhbmQgPHN0cm9uZz5wYWdlczwvc3Ry b25nPiB0byBUZXh0cGF0dGVybiBhcnRpY2xlcy4gVGhlIHRhYmxlIGJlbG93IHNob3dzIHdo YXQgYml0cyBvZiBpbmZvcm1hdGlvbiBhcmUgdXNlZCBmcm9tIGVhY2ggcGFnZSBhbmQgcG9z dC48L3A+Cjx0YWJsZT4KPHRoZWFkPgo8dHI+Cjx0aD5CZWZvcmUgKGluIFdvcmRQcmVzcyk8 L3RoPgo8dGg+QWZ0ZXIgKGluIFRleHRwYXR0ZXJuKTwvdGg+CjwvdHI+CjwvdGhlYWQ+Cjx0 Ym9keT4KPHRyPgo8dGQ+VGl0bGU8L3RkPgo8dGQ+VGl0bGU8L3RkPgo8L3RyPgo8dHI+Cjx0 ZD5EYXRlIHdoZW4gcHVibGlzaGVkPC90ZD4KPHRkPlB1Ymxpc2g6IGRhdGUgYW5kIHRpbWU8 L3RkPgo8L3RyPgo8dHI+Cjx0ZD5Db21tZW50aW5nIHN0YXR1czwvdGQ+Cjx0ZD5Db21tZW50 OiBvbi9vZmY8L3RkPgo8L3RyPgo8dHI+Cjx0ZD5Qb3N0L1BhZ2Ugc3RhdHVzPC90ZD4KPHRk PlN0YXR1czogSGlkZGVuLCBQZW5kaW5nIG9yIExpdmU8L3RkPgo8L3RyPgo8dHI+Cjx0ZD5D YXRlZ29yaWVzIGFuZCBUZXJtczwvdGQ+Cjx0ZD5NZXRhIGtleXdvcmRzPC90ZD4KPC90cj4K PHRyPgo8dGQ+QXV0aG9yIHVzZXJuYW1lPC90ZD4KPHRkPlBvc3RlZCBieSB1c2VybmFtZTwv dGQ+CjwvdHI+Cjx0cj4KPHRkPkV4Y2VycHQ8L3RkPgo8dGQ+RXhjZXJwdDwvdGQ+CjwvdHI+ Cjx0cj4KPHRkPkNvbnRlbnQ8L3RkPgo8dGQ+Qm9keTwvdGQ+CjwvdHI+Cjx0cj4KPHRkPlVS TCBzbHVnPC90ZD4KPHRkPlVSTC1vbmx5IHRpdGxlPC90ZD4KPC90cj4KPC90Ym9keT4KPC90 YWJsZT4KPHA+VGhpcyB0b29sIGRvZXMgbm90IGltcG9ydCBjb21tZW50cyBvciBtZWRpYSBm aWxlcyAobGlrZSBpbWFnZXMpLjwvcD4KPHA+PGNvZGU+a3VvX3dwX2ltcG9ydDwvY29kZT4g aGFzIGJlZW4gdGVzdGVkIHdpdGggVGV4dHBhdHRlcm4gNC42LjIgYW5kIDQuNy4wLWRldiwg YW5kIFhNTCBmaWxlcyBnZW5lcmF0ZWQgYnkgV29yZFByZXNzIDQuOS40LjwvcD4KPHA+UGxl YXNlIDxzdHJvbmc+PGEgaHJlZj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dl YnNjcj9jbWQ9X3MteGNsaWNrJmFtcDtob3N0ZWRfYnV0dG9uX2lkPUZZNUdDQkwyUTRHOTgi IHJlbD0ibm9mb2xsb3cgZXh0ZXJuYWwiIHRhcmdldD0iX2JsYW5rIj5jb25zaWRlciBkb25h dGluZzwvYT48L3N0cm9uZz4gdG8gbWFrZSB0aGlzIHRvb2wgYmV0dGVyLjwvcD4iO3M6Mzoi bWQ1IjtzOjMyOiIwZTEwZDFjOGIwNDk0NWVmMTE5Nzg1MzZiNWNhM2Q1MyI7fQ==