# Name: etc_link_to v0.2.1 # Type: Public side plugin # # Author: Oleg Loukianov # URL: http://www.iut-fbleau.fr/projet/etc/ # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJldGNfbGlua190byI7czo2OiJhdXRob3IiO3M6MTQ6 Ik9sZWcgTG91a2lhbm92IjtzOjEwOiJhdXRob3JfdXJpIjtzOjM2OiJodHRwOi8vd3d3Lml1 dC1mYmxlYXUuZnIvcHJvamV0L2V0Yy8iO3M6NzoidmVyc2lvbiI7czo1OiIwLjIuMSI7czox MToiZGVzY3JpcHRpb24iO3M6MDoiIjtzOjQ6ImNvZGUiO3M6Njk4MzoiZnVuY3Rpb24gZXRj X2dldE5laWdoYm91cigkcywgJGF0dHMgPSBhcnJheSgpKQ0Kew0KCWdsb2JhbCAkcHJlZnM7 DQoJZXh0cmFjdCgkYXR0cyk7Ly9zb3J0LHNvcnRieSxzb3J0ZGlyLGtleXdvcmRzLGV4cGly ZWQsaWQsdGltZQ0KCXN0YXRpYyAkY2FjaGUgPSBhcnJheSgpOw0KDQoJJGtleSA9IG1kNSgk cy5qb2luKG4sICRhdHRzKSk7DQoJaWYgKGlzc2V0KCRjYWNoZVska2V5XSkpIHsNCgkJcmV0 dXJuICRjYWNoZVska2V5XTsNCgl9DQoNCgkkZXhwaXJlZCA9ICgkZXhwaXJlZCAmJiAoJHBy ZWZzWydwdWJsaXNoX2V4cGlyZWRfYXJ0aWNsZXMnXSkpOw0KCSRjdXN0b21GaWVsZHMgPSBn ZXRDdXN0b21GaWVsZHMoKTsNCg0KCS8vQnVpbGRpbmcgcXVlcnkgcGFydHMNCgkvLyBsaWZ0 ZWQgZnJvbSBwdWJsaXNoLnBocC4gVGhpcyBpcyBzb21ld2hhdCBlbWJhcnJhc3NpbmcsIGlz bid0IGl0Pw0KCSRpZHMgPSBhcnJheV9tYXAoJ2ludHZhbCcsIGRvX2xpc3QoJGlkKSk7DQoJ JGlkID0gKCEkaWQpID8gJycgOiAiIGFuZCBJRCBJTiAoIi5qb2luKCcsJywgJGlkcykuIiki Ow0KCXN3aXRjaCAoJHRpbWUpIHsNCgkJY2FzZSAnYW55JzoNCgkJCSR0aW1lID0gIiI7IGJy ZWFrOw0KCQljYXNlICdmdXR1cmUnOg0KCQkJJHRpbWUgPSAiIGFuZCBQb3N0ZWQgPiBub3co KSI7IGJyZWFrOw0KCQlkZWZhdWx0Og0KCQkJJHRpbWUgPSAiIGFuZCBQb3N0ZWQgPD0gbm93 KCkiOw0KCX0NCglpZiAoISRleHBpcmVkKSB7DQoJCSR0aW1lIC49ICIgYW5kIChub3coKSA8 PSBFeHBpcmVzIG9yIEV4cGlyZXMgPSAiLk5VTExEQVRFVElNRS4iKSI7DQoJfQ0KDQoJJGN1 c3RvbSA9ICcnOw0KDQoJaWYgKCRjdXN0b21GaWVsZHMpIHsNCgkJZm9yZWFjaCgkY3VzdG9t RmllbGRzIGFzICRjRmllbGQpIHsNCgkJCWlmIChpc3NldCgkYXR0c1skY0ZpZWxkXSkpDQoJ CQkJJGN1c3RvbVBhaXJzWyRjRmllbGRdID0gJGF0dHNbJGNGaWVsZF07DQoJCX0NCgkJaWYo IWVtcHR5KCRjdXN0b21QYWlycykpIHsNCgkJCSRjdXN0b20gPSBidWlsZEN1c3RvbVNxbCgk Y3VzdG9tRmllbGRzLCRjdXN0b21QYWlycyk7DQoJCX0NCgl9DQoNCglpZiAoJGtleXdvcmRz KSB7DQoJCSRrZXlzID0gZG9TbGFzaChkb19saXN0KCRrZXl3b3JkcykpOw0KCQlmb3JlYWNo ICgka2V5cyBhcyAka2V5KSB7DQoJCQkka2V5cGFydHNbXSA9ICJGSU5EX0lOX1NFVCgnIi4k a2V5LiInLEtleXdvcmRzKSI7DQoJCX0NCgkJJGtleXdvcmRzID0gIiBhbmQgKCIgLiBqb2lu KCcgb3IgJywka2V5cGFydHMpIC4gIikiOw0KCX0NCg0KCSRzYWZlX25hbWUgPSBzYWZlX3Bm eCgndGV4dHBhdHRlcm4nKTsNCgkkcSA9IGFycmF5KA0KCQknc2VsZWN0IElEIGZyb20gJy4k c2FmZV9uYW1lLicgd2hlcmUgU3RhdHVzPTQgJywNCgkJKCRzIT0nJyAmJiAkcyE9J2RlZmF1 bHQnKSA/ICJhbmQgU2VjdGlvbiA9ICciLmRvU2xhc2goJHMpLiInIiA6IGZpbHRlckZyb250 UGFnZSgpLA0KCQkkaWQsDQoJCSR0aW1lLA0KCQkkY3VzdG9tLA0KCQkka2V5d29yZHMsDQoJ CSdvcmRlciBieSAnLiRzb3J0DQoJKTsNCg0KCSRjYWNoZVska2V5XSA9IGdldFRoaW5ncyhq b2luKG4uJyAnLCRxKSk7DQoJcmV0dXJuIChpc19hcnJheSgkY2FjaGVbJGtleV0pKSA/ICRj YWNoZVska2V5XSA6IGFycmF5KCk7DQp9DQoNCi8qKg0KICogRmluZCBuZXh0IGFuZCBwcmV2 aW91cyBhcnRpY2xlcyByZWxhdGl2ZSB0byBhIHByb3ZpZGVkIHRocmVzaG9sZCBsZXZlbA0K ICoNCiAqIEBwYXJhbSBpbnQgJGlkIFRoZSAicGl2b3QiIGFydGljbGUncyBpZDsgdXNlIHpl cm8gKDApIHRvIGluZGljYXRlICR0aGlzYXJ0aWNsZQ0KICogQHBhcmFtIHN0cmluZyAkcyBz dHJpbmcgT3B0aW9uYWwgc2VjdGlvbiByZXN0cmljdGlvbiBpZiAkaWQgIT0gMA0KICogQHJl dHVybiBhcnJheSBBbiBhcnJheSBwb3B1bGF0ZWQgd2l0aCBhcnRpY2xlIGRhdGEgZnJvbSB0 aGUgbmV4dCBhbmQgcHJldmlvdXMgYXJ0aWNsZQ0KICovDQpmdW5jdGlvbiBldGNfZ2V0TmV4 dFByZXYoJGlkID0gMCwgJHMgPSAnJywgJHRhcmdldCA9ICcnKQ0Kew0KCWlmICgkaWQgIT09 IDApIHsNCgkJLy8gUGl2b3QgaXMgc3BlY2lmaWMgYXJ0aWNsZSBieSBJRDogSW4gbGFjayBv ZiBmdXJ0aGVyIGluZm9ybWF0aW9uLCByZXZlcnQgdG8gZGVmYXVsdCBzb3J0IG9yZGVyICdQ b3N0ZWQgZGVzYycNCgkJJGF0dHMgPSBmaWx0ZXJBdHRzKGFycmF5KCdzb3J0YnknID0+ICdQ b3N0ZWQnLCAnc29ydGRpcicgPT4gJ2Rlc2MnKSk7DQoJfSBlbHNlIHsNCgkJLy8gUGl2b3Qg aXMgJHRoaXNhcnRpY2xlOiBVc2UgYXJ0aWNsZSBhdHRyaWJ1dGVzIHRvIGZpbmQgaXRzIG5l aWdoYm91cnMNCgkJYXNzZXJ0X2FydGljbGUoKTsNCgkJZ2xvYmFsICR0aGlzYXJ0aWNsZTsN CgkJaWYgKCFpc19hcnJheSgkdGhpc2FydGljbGUpKSB7DQoJCQlyZXR1cm4gYXJyYXkoKTsN CgkJfQ0KDQoJCSRhdHRzID0gZmlsdGVyQXR0cygpOw0KDQoJCSRzID0gJHRoaXNhcnRpY2xl WydzZWN0aW9uJ107DQoJCSRpZCA9ICR0aGlzYXJ0aWNsZVsndGhpc2lkJ107DQoJfQ0KDQoJ JHNvcnRsaXN0ID0gZXRjX2dldE5laWdoYm91cigkcywgJGF0dHMpOw0KCSRjb3VudCA9IGNv dW50KCRzb3J0bGlzdCk7DQoJJGN1cnJlbnQgPSBhcnJheV9zZWFyY2goJGlkLCAkc29ydGxp c3QpOw0KCSRyZWwgPSBhcnJheSgnZmlyc3QnLCAnbGFzdCcsICdwcmV2JywgJ25leHQnKTsN CgkkaXNfcmVsID0gaW5fYXJyYXkoJHRhcmdldCwgJHJlbCk7DQoJJHdoZXJlID0gJG91dCA9 IGFycmF5KCk7DQoJaWYoJGN1cnJlbnQgIT09IGZhbHNlKSBpZigkaXNfcmVsKSB7DQoJCWlm KCRjdXJyZW50ID4gMCkgew0KCQkJJHdoZXJlWydmaXJzdCddID0gJHNvcnRsaXN0WzBdOw0K CQkJJHdoZXJlWydwcmV2J10gPSAkc29ydGxpc3RbJGN1cnJlbnQgLSAxXTsNCgkJfQ0KCQlp ZigkY3VycmVudCA8ICRjb3VudCAtIDEpIHsNCgkJCSR3aGVyZVsnbGFzdCddID0gJHNvcnRs aXN0WyRjb3VudCAtIDFdOw0KCQkJJHdoZXJlWyduZXh0J10gPSAkc29ydGxpc3RbJGN1cnJl bnQgKyAxXTsNCgkJfQ0KCX0gZWxzZSBmb3JlYWNoKGRvX2xpc3QoJHRhcmdldCkgYXMgJHZh bCkgew0KCQlzd2l0Y2goJHZhbFswXSkgew0KCQkJY2FzZSAnKycgOiBjYXNlICctJyA6ICRr ZXkgPSAkY3VycmVudCArIGludHZhbCgkdmFsKTsgYnJlYWs7DQoJCQljYXNlICckJyA6ICRr ZXkgPSAkY291bnQgKyBpbnR2YWwoc3Vic3RyKCR2YWwsIDEpKSAtIDE7IGJyZWFrOw0KCQkJ Y2FzZSAnMCcgOiAka2V5ID0gJGN1cnJlbnQ7IGJyZWFrOy8vY3VycmVudA0KCQkJY2FzZSAn bCcgOiAka2V5ID0gJGNvdW50IC0gMTsgYnJlYWs7Ly9sYXN0DQoJCQljYXNlICdwJyA6ICRr ZXkgPSAkY3VycmVudCAtIDE7IGJyZWFrOy8vcHJldg0KCQkJY2FzZSAnbicgOiAka2V5ID0g JGN1cnJlbnQgKyAxOyBicmVhazsvL25leHQNCgkJCWNhc2UgJ2YnIDogJGtleSA9IDA7IGJy ZWFrOy8vZmlyc3QNCgkJCWRlZmF1bHQgOiAka2V5ID0gaW50dmFsKCR2YWwpIC0gMTsvL3N0 YXJ0IHdpdGggMQ0KCQl9DQoJCWlmKGlzc2V0KCRzb3J0bGlzdFska2V5XSkpICR3aGVyZVtd ID0gJHNvcnRsaXN0WyRrZXldOw0KCX0NCg0KCSRmaWx0ZXIgPSBpbXBsb2RlKCcsJywgJHdo ZXJlKTsNCgkkbmVpZ2hib3VycyA9ICR3aGVyZSA/IGdldFJvd3MoJ3NlbGVjdCBJRCwgVGl0 bGUsIHVybF90aXRsZSwgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1cG9zdGVkIGZyb20g Jy5zYWZlX3BmeCgndGV4dHBhdHRlcm4nKS4iIHdoZXJlIElEIElOICgkZmlsdGVyKSIuKCRp c19yZWwgPyAnJyA6ICJPUkRFUiBCWSBGSUVMRChJRCwgJGZpbHRlcikiKSkgOiBhcnJheSgp Ow0KDQoJaWYoJGlzX3JlbCkgew0KCQkkd2hlcmUgPSBhcnJheV9mbGlwKCR3aGVyZSk7DQoJ CWZvcmVhY2goJG5laWdoYm91cnMgYXMgJHJvdykgew0KCQkJJHRoZXJlbCA9ICR3aGVyZVsk cm93WydJRCddXTsNCgkJCSRvdXRbJHRoZXJlbC4nX2lkJ10gPSAkcm93WydJRCddOw0KCQkJ JG91dFskdGhlcmVsLidfdGl0bGUnXSAgPSAkcm93WydUaXRsZSddOw0KCQkJJG91dFskdGhl cmVsLidfdXRpdGxlJ10gPSAkcm93Wyd1cmxfdGl0bGUnXTsNCgkJCSRvdXRbJHRoZXJlbC4n X3Bvc3RlZCddID0gJHJvd1sndXBvc3RlZCddOw0KCQl9DQoJCWZvcmVhY2goJHJlbCBhcyAk dGhlcmVsKSBpZighaXNzZXQoJG91dFskdGhlcmVsLidfaWQnXSkpIHsNCgkJCSRvdXRbJHRo ZXJlbC4nX2lkJ10gPSAkb3V0WyR0aGVyZWwuJ190aXRsZSddID0gJG91dFskdGhlcmVsLidf dXRpdGxlJ10gPSAkb3V0WyR0aGVyZWwuJ19wb3N0ZWQnXSA9ICcnOw0KCQl9DQoJCXJldHVy biAkb3V0Ow0KCX0NCgllbHNlIHJldHVybiAkbmVpZ2hib3VyczsNCn0NCg0KCWZ1bmN0aW9u IGV0Y19saW5rX3RvKCRhdHRzLCAkdGhpbmcgPSBOVUxMKQ0KCXsNCgkJZ2xvYmFsIC8qKiBA bm9pbnNwZWN0aW9uIFBocFVudXNlZExvY2FsVmFyaWFibGVJbnNwZWN0aW9uICovDQoJCSR0 aGlzYXJ0aWNsZSwgJG5leHRfaWQsICRuZXh0X3RpdGxlLCAkcHJldl9pZCwgJHByZXZfdGl0 bGUsICRsYXN0X2lkLCAkbGFzdF90aXRsZSwgJGZpcnN0X2lkLCAkZmlyc3RfdGl0bGUsICRl dGNfbGlua19pZCwgJGV0Y19saW5rX3RpdGxlOw0KDQoJCWFzc2VydF9hcnRpY2xlKCk7DQoN CgkJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJCSd0YXJnZXQnID0+ICcwJywNCgkJCSdsaW5r JyA9PiAnMScsDQoJCQknd3JhcHRhZycgPT4gJycsDQoJCQknYnJlYWsnID0+ICcnLA0KCQkJ J2xpbWl0JyA9PiBudWxsLA0KCQkJJ29mZnNldCcgPT4gMCwNCgkJCSdzaG93YWx3YXlzJyA9 PiAwDQoJCSksICRhdHRzKSk7DQoJCSRvdXQgPSAkbmVpZ2hib3VycyA9IGFycmF5KCk7DQoJ CSRpc19yZWwgPSBmYWxzZTsNCg0KCQlpZiAoaXNfYXJyYXkoJHRoaXNhcnRpY2xlKSkgc3dp dGNoKCR0YXJnZXQpDQoJCXsNCgkJCWNhc2UgJ25leHQnIDogY2FzZSAncHJldicgOiBjYXNl ICdmaXJzdCcgOiBjYXNlICdsYXN0JyA6IGlmICghaXNzZXQoJHRoaXNhcnRpY2xlWyR0YXJn ZXQuJ19pZCddKSkNCgkJCXsNCgkJCQkkbnAgPSBldGNfZ2V0TmV4dFByZXYoMCwgJycsICR0 YXJnZXQpOw0KCQkJCSR0aGlzYXJ0aWNsZSA9ICRucCArICR0aGlzYXJ0aWNsZTsNCgkJCQll eHRyYWN0KCRucCk7DQoJCQl9DQoNCgkJCWlmICgkdGhpc2FydGljbGVbJHRhcmdldC4nX2lk J10pDQoJCQl7DQoJCQkJJG5laWdoYm91cnNbXSA9IGFycmF5KCdJRCcgPT4gJHRoaXNhcnRp Y2xlWyR0YXJnZXQuJ19pZCddLCAnVGl0bGUnID0+ICR0aGlzYXJ0aWNsZVskdGFyZ2V0Lidf dGl0bGUnXSk7DQoJCQl9DQoJCQkkaXNfcmVsID0gdHJ1ZTsNCgkJCWJyZWFrOw0KDQoJCQlk ZWZhdWx0IDogJG5laWdoYm91cnMgPSBldGNfZ2V0TmV4dFByZXYoMCwgJycsICR0YXJnZXQp Ow0KCQl9DQoNCgkJaWYoJG9mZnNldCA9PT0gJyonKSBpZigkbGltaXQgPiAwKSBmb3JlYWNo KCRuZWlnaGJvdXJzIGFzICRuZWlnaGJvdXIpIGlmKCRuZWlnaGJvdXJbJ0lEJ10gPT0gJHRo aXNhcnRpY2xlWyd0aGlzaWQnXSkgew0KCQkJJHRoaXNrZXkgPSBrZXkoJG5laWdoYm91cnMp Ow0KCQkJYnJlYWs7DQoJCX0NCgkJaWYoaXNzZXQoJHRoaXNrZXkpKSB7DQoJCQkkb2Zmc2V0 ID0gJHRoaXNrZXkgPCAkbGltaXQvMiA/IDAgOiAoY291bnQoJG5laWdoYm91cnMpIC0gJHRo aXNrZXkgPCAkbGltaXQvMiA/IC0kbGltaXQgOiBmbG9vcigkdGhpc2tleSAtICRsaW1pdC8y KSk7DQoJCX0gZWxzZWlmKCRvZmZzZXQgPT09ICcqJykgJG9mZnNldCA9IDA7DQoNCgkJZm9y ZWFjaCgoJGxpbWl0IHx8ICRvZmZzZXQgPyBhcnJheV9zbGljZSgkbmVpZ2hib3VycywgJG9m ZnNldCwgJGxpbWl0KSA6ICRuZWlnaGJvdXJzKSBhcyAkbmVpZ2hib3VyKQ0KCQl7DQoJCQlp ZiAoJHRoaW5nKQ0KCQkJew0KCQkJCSRldGNfbGlua19pZCA9ICRuZWlnaGJvdXJbJ0lEJ107 DQoJCQkJJGV0Y19saW5rX3RpdGxlID0gJG5laWdoYm91clsnVGl0bGUnXTsNCgkJCQkkdGFy Z2V0X3RpdGxlID0gZXNjYXBlX3RpdGxlKCRldGNfbGlua190aXRsZSk7DQoJCQkJJGNvbnRl bnQgPSBwYXJzZSgkdGhpbmcpOw0KDQoJCQkJJG91dFtdID0gJGxpbmsgPyAnPGEgaHJlZj0i Jy5wZXJtbGlua3VybF9pZCgkbmVpZ2hib3VyWydJRCddKS4nIicuKCRpc19yZWwgPyAnIHJl bCA9ICInLiR0YXJnZXQuJyInIDogJycpLg0KCQkJCQkoJHRhcmdldF90aXRsZSAhPSAkY29u dGVudD8gJyB0aXRsZT0iJy4kdGFyZ2V0X3RpdGxlLiciJyA6ICcnKS4NCgkJCQkJKCR0aGlz YXJ0aWNsZVsndGhpc2lkJ10gPT0gJGV0Y19saW5rX2lkPyAnIGNsYXNzPSJhY3RpdmUiJyA6 ICcnKS4NCgkJCQkJJz4nLiRjb250ZW50Lic8L2E+JyA6ICRjb250ZW50Ow0KCQkJfQ0KCQkJ ZWxzZSAkb3V0W10gPSBwZXJtbGlua3VybF9pZCgkbmVpZ2hib3VyWydJRCddKTsNCgkJfQ0K DQoJCXJldHVybiAkb3V0ID8gZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICcnLCAn JywgJycsICcnLCAnJykgOiAoJHNob3dhbHdheXMgPyBwYXJzZSgkdGhpbmcpIDogJycpOw0K CX0NCg0KZnVuY3Rpb24gZXRjX2xpbmtfaWQoKQ0KCXsNCgkJZ2xvYmFsICR0aGlzYXJ0aWNs ZSwgJGV0Y19saW5rX2lkOw0KDQoJCWFzc2VydF9hcnRpY2xlKCk7DQoNCgkJaWYgKCFpc19h cnJheSgkdGhpc2FydGljbGUpIHx8ICFpc3NldCgkZXRjX2xpbmtfaWQpKQ0KCQl7DQoJCQly ZXR1cm4gMDsNCgkJfQ0KCQlyZXR1cm4gaW50dmFsKCRldGNfbGlua19pZCk7DQoJfQ0KZnVu Y3Rpb24gZXRjX2xpbmtfdGl0bGUoKQ0KCXsNCgkJZ2xvYmFsICR0aGlzYXJ0aWNsZSwgJGV0 Y19saW5rX3RpdGxlOw0KDQoJCWFzc2VydF9hcnRpY2xlKCk7DQoNCgkJaWYgKCFpc19hcnJh eSgkdGhpc2FydGljbGUpIHx8ICFpc3NldCgkZXRjX2xpbmtfdGl0bGUpKQ0KCQl7DQoJCQly ZXR1cm4gJyc7DQoJCX0NCgkJcmV0dXJuIGVzY2FwZV90aXRsZSgkZXRjX2xpbmtfdGl0bGUp Ow0KCX0iO3M6NDoidHlwZSI7czoxOiIwIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NToiZmxh Z3MiO3M6MToiMCI7czo0OiJoZWxwIjtzOjEyMDg6IjxwPkEgcmVwbGFjZW1lbnQgZm9yIDxj b2RlPiZsdDt0eHA6bGlua190b19wcmV2L25leHQgLyZndDs8L2NvZGU+IHRhZ3MgdGhhdCBy ZXNwZWN0cyBhbnkgc29ydCBvcmRlci4gQ2FuIGFsc28gb3V0cHV0IGxpbmtzIHRvIDxjb2Rl PmZpcnN0L2xhc3QvbnRoL2N1cnJlbnQmIzE3NztudGg8L2NvZGU+IGFydGljbGUuPC9wPgoK CTxoND5SZXF1aXJlbWVudHM8L2g0PgoKCTxwPlRleHRwYXR0ZXJuIDQuNS40IG9yIG5ld2Vy LjwvcD4KCgk8aDQ+VXNhZ2U8L2g0PgoKCTxwPjxjb2RlPiZsdDt0eHA6ZXRjX2xpbmtfdG8g dGFyZ2V0PSZxdW90O25leHQmcXVvdDsgLyZndDs8L2NvZGU+IG9yIDxjb2RlPiZsdDt0eHA6 ZXRjX2xpbmtfdG8gdGFyZ2V0PSZxdW90O3ByZXYmcXVvdDsgLyZndDs8L2NvZGU+LjwvcD4K CjxwcmU+PGNvZGU+Jmx0O3R4cDpldGNfbGlua190byB0YXJnZXQ9ImZpcnN0LC0yLC0xLCsx LCsyLGxhc3QiIGJyZWFrPSIsIiZndDsKICAmbHQ7dHhwOmV0Y19saW5rX3RpdGxlIC8mZ3Q7 KCZsdDt0eHA6ZXRjX2xpbmtfaWQgLyZndDspCiZsdDsvdHhwOmV0Y19saW5rX3RvJmd0Ozwv Y29kZT4KPC9wcmU+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHN0cm9u Zz50YXJnZXQ8L3N0cm9uZz46IDxjb2RlPnByZXYsbmV4dCxmaXJzdCxsYXN0LCtuLC1uLG48 L2NvZGU+IChkZWZhdWx0OiBjdXJyZW50IGFydGljbGUpLjwvbGk+CgkJPGxpPjxzdHJvbmc+ bGluazwvc3Ryb25nPjogd2hldGhlciB0byB3cmFwIGNvbnRlbnQgaW4gYSBsaW5rIChkZWZh dWx0IDxjb2RlPjE8L2NvZGU+KS48L2xpPgoJCTxsaT48c3Ryb25nPmxpbWl0PC9zdHJvbmc+ OiBhcyB1c3VhbCAoZGVmYXVsdCBubyBsaW1pdCkuPC9saT4KCQk8bGk+PHN0cm9uZz5vZmZz ZXQ8L3N0cm9uZz46IGFzIHVzdWFsIChkZWZhdWx0IDApLiBJZiBzZXQgdG8gPGNvZGU+Kjwv Y29kZT4sIHRoZSBsaXN0IHdpbGwgYmUgY2VudGVyZWQgb24gdGhlIGN1cnJlbnQgYXJ0aWNs ZS48L2xpPgoJCTxsaT48c3Ryb25nPndyYXB0YWc8L3N0cm9uZz46IGFzIHVzdWFsIChkZWZh dWx0IGVtcHR5KS48L2xpPgoJCTxsaT48c3Ryb25nPmJyZWFrPC9zdHJvbmc+OiBhcyB1c3Vh bCAoZGVmYXVsdCBlbXB0eSkuPC9saT4KCQk8bGk+PHN0cm9uZz5zaG93YWx3YXlzPC9zdHJv bmc+OiBhcyB1c3VhbCAoZGVmYXVsdCA8Y29kZT4wPC9jb2RlPikuPC9saT4KCTwvdWw+Ijtz OjM6Im1kNSI7czozMjoiMWJmMDRlZWI0ZjZjZDEwYzYxMDQzNzVhNzAwZjVlZjkiO30=