# Name: smd_featured v0.10 # Type: Admin/Client side plugin # Quickly label and display featured articles for your site's home / landing pages # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfZmVhdHVyZWQiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMTAiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjgwOiJRdWlja2x5IGxhYmVsIGFuZCBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzIGZvciB5 b3VyIHNpdGUncyBob21lIC8gbGFuZGluZyBwYWdlcyI7czo0OiJjb2RlIjtzOjE5MDc0OiJp ZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRf ZXZlbnQ7DQoNCgkkc21kX2ZlYXR1cmVkX2V2ZW50ID0gJ3NtZF9mZWF0dXJlZCc7DQoJJHNt ZF9mZWF0dXJlZF9wcml2cyA9IGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfcHJpdnMnLCAnMSwy Jyk7DQoNCglhZGRfcHJpdnMoJHNtZF9mZWF0dXJlZF9ldmVudCwgJHNtZF9mZWF0dXJlZF9w cml2cyk7DQoJcmVnaXN0ZXJfdGFiKCJjb250ZW50IiwgJHNtZF9mZWF0dXJlZF9ldmVudCwg c21kX2ZlYXR1cmVkX2dUeHQoJ3RhYl9uYW1lJykpOw0KCXJlZ2lzdGVyX2NhbGxiYWNrKCdz bWRfZmVhdHVyZWRfbWFuYWdlJywgJHNtZF9mZWF0dXJlZF9ldmVudCk7DQoJcmVnaXN0ZXJf Y2FsbGJhY2soJ3NtZF9mZWF0dXJlZF93ZWxjb21lJywgJ3BsdWdpbl9saWZlY3ljbGUuc21k X2ZlYXR1cmVkJyk7DQp9DQoNCmlmICghZGVmaW5lZCgnU01EX0ZFQVQnKSkgew0KCWRlZmlu ZSgiU01EX0ZFQVQiLCAnc21kX2ZlYXR1cmVkJyk7DQp9DQoNCi8vICoqKioqKioqKioNCi8v IEFETUlOIFNJREUNCi8vICoqKioqKioqKioNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX21hbmFnZSgkZXZ0LCAkc3RwKSB7DQoJaWYgKCRz dHAgPT0gJ3NhdmVfcGFuZV9zdGF0ZScpIHsNCgkJc21kX2ZlYXR1cmVkX3NhdmVfcGFuZV9z dGF0ZSgpOw0KCX0gZWxzZSB7DQoJCWlmKCEkc3RwIG9yICFpbl9hcnJheSgkc3RwLCBhcnJh eSgNCgkJCQknc21kX2ZlYXR1cmVkX3RhYmxlX2luc3RhbGwnLA0KCQkJCSdzbWRfZmVhdHVy ZWRfdGFibGVfcmVtb3ZlJywNCgkJCQknc21kX2ZlYXR1cmVkX3NhdmUnLA0KCQkJCSdzbWRf ZmVhdHVyZWRfdGFnaXQnLA0KCQkJKSkpIHsNCgkJCXNtZF9mZWF0dXJlZF9saXN0KCcnKTsN CgkJfSBlbHNlICRzdHAoKTsNCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3dlbGNvbWUoJGV2dCwgJHN0cCkgew0KCSRtc2cg PSAnJzsNCglzd2l0Y2ggKCRzdHApIHsNCgkJY2FzZSAnaW5zdGFsbGVkJzoNCgkJCXNtZF9m ZWF0dXJlZF90YWJsZV9pbnN0YWxsKDApOw0KCQkJJG1zZyA9ICdUaGFua3MgZm9yIGluc3Rh bGxpbmcgc21kX2ZlYXR1cmVkLiBQbGVhc2UgcmVhZCB0aGUgZG9jcyA6LSknOw0KCQkJYnJl YWs7DQoJCWNhc2UgJ2RlbGV0ZWQnOg0KCQkJc21kX2ZlYXR1cmVkX3RhYmxlX3JlbW92ZSgw KTsNCgkJCWJyZWFrOw0KCX0NCglyZXR1cm4gJG1zZzsNCn0NCg0KLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfbGlzdCgkbXNnPScnKSB7DQoJ Z2xvYmFsICRzbWRfZmVhdHVyZWRfZXZlbnQ7DQoNCglwYWdldG9wKHNtZF9mZWF0dXJlZF9n VHh0KCd0YWJfbmFtZScpLCAkbXNnKTsNCglleHRyYWN0KGdwc2EoYXJyYXkoJ3NtZF9mZWF0 X2lkJywgJ3NtZF9mZWF0X2xhYmVsJywgJ3NtZF9mZWF0X3NlYXJjaGtlZXAnLCAnc21kX2Zl YXRfZmlsdGtlZXAnKSkpOw0KDQoJaWYgKHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgpKSB7 DQoJCSRmZWF0bGlzdCA9IHNhZmVfcm93cygnKicsIFNNRF9GRUFULCAnMT0xJyk7DQoJCSRm ZWF0bGlzdCA9IGVtcHR5KCRmZWF0bGlzdCkgPyBhcnJheSgpIDogJGZlYXRsaXN0Ow0KCQkk ZWRpdG5hbWUgPSAkZmVhdF9sYWJlbCA9ICRmZWF0X2Rlc2MgPSAnJzsNCg0KCQkkZnR5cGVz ID0gJGZsaXN0ID0gYXJyYXkoKTsNCgkJJGZ0eXBlc1snc21kX3VubGFiZWxsZWQnXSA9IHNt ZF9mZWF0dXJlZF9nVHh0KCd1bmxhYmVsbGVkJyk7DQoJCWZvcmVhY2ggKCRmZWF0bGlzdCBh cyAkaXRlbSkgew0KCQkJaWYgKGlzc2V0KCRpdGVtWydsYWJlbCddKSAmJiAhZW1wdHkoJGl0 ZW1bJ2xhYmVsJ10pKSB7DQoJCQkJJGZ0eXBlc1skaXRlbVsnbGFiZWwnXV0gPSAkaXRlbVsn bGFiZWwnXTsNCgkJCX0NCgkJCSRmbGlzdFskaXRlbVsnaWQnXV0gPSBhcnJheSgnbGFiZWwn ID0+ICRpdGVtWydsYWJlbCddLCAnZGVzY3JpcHRpb24nID0+ICRpdGVtWydkZXNjcmlwdGlv biddLCAnZGVzY19odG1sJyA9PiAkaXRlbVsnZGVzY19odG1sJ10pOw0KCQl9DQoNCgkJJGZl YXRsaXN0ID0gJGZsaXN0Ow0KDQoJCS8vIEdldCBhZGRpdGlvbmFsIGZpbHRlcmluZyBmcm9t IGhpZGRlbiBwcmVmcw0KCQkkd2hlcmUgPSBhcnJheSgnMT0xJyk7DQoJCSRzZWNsaXN0ID0g Z2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9zZWN0aW9uX2xpc3QnLCAnJyk7DQoJCWlmICgkc2Vj bGlzdCkgew0KCQkJJHdoZXJlW10gPSAiU2VjdGlvbiBJTiAoJyIuam9pbigiJywnIiwgZG9f bGlzdCgkc2VjbGlzdCkpLiInKSI7DQoJCX0NCgkJJHdoZXJlW10gPSAiU3RhdHVzIElOICg0 LDUpIjsNCgkJJG9yZGVyYnkgPSBnZXRfcHJlZignc21kX2ZlYXR1cmVkX3NvcnQnLCAnUG9z dGVkIGRlc2MnKTsNCg0KCQkkcnMgPSBzYWZlX3Jvd3MoJyonLCAndGV4dHBhdHRlcm4nLCBq b2luKCcgQU5EICcsICR3aGVyZSkuICcgT1JERVIgQlkgJy4kb3JkZXJieSk7DQoJCWZvcmVh Y2ggKCRycyBhcyAkcm93KSB7DQoJCQkkZnR5cGUgPSBpc3NldCgkZmVhdGxpc3RbJHJvd1sn SUQnXV1bJ2xhYmVsJ10pID8gJGZlYXRsaXN0WyRyb3dbJ0lEJ11dWydsYWJlbCddIDogJyc7 DQoJCQkkb3V0W10gPSBhcnJheSgkcm93WydJRCddLCAkcm93WydUaXRsZSddLCAkZnR5cGUp Ow0KCQkJaWYgKCRzbWRfZmVhdF9pZCAmJiAkcm93WydJRCddID09ICRzbWRfZmVhdF9pZCkg ew0KCQkJCSRlZGl0bmFtZSA9ICRyb3dbJ1RpdGxlJ107DQoJCQkJJGZlYXRfbGFiZWwgPSAk ZmVhdGxpc3RbJHNtZF9mZWF0X2lkXVsnbGFiZWwnXTsNCgkJCQkkZmVhdF9kZXNjID0gZG9T dHJpcChzdHJfcmVwbGFjZSgnXHJcbicsJw0KJywgJGZlYXRsaXN0WyRzbWRfZmVhdF9pZF1b J2Rlc2NyaXB0aW9uJ10pKTsNCgkJCX0NCgkJfQ0KCQllY2hvICc8ZmllbGRzZXQgaWQ9InNt ZF9mZWF0dXJlZF9maWx0Ij48bGVnZW5kIGNsYXNzPSJwbGFpbiBsZXZlcicuKGdldF9wcmVm KCdwYW5lX3NtZF9mZWF0dXJlZF9maWx0ZXJzX3Zpc2libGUnKSA/ICcgZXhwYW5kZWQnIDog JycpLiciPjxhIGhyZWY9IiNzbWRfZmVhdHVyZWRfZmlsdGVycyI+Jy5zbWRfZmVhdHVyZWRf Z1R4dCgnbGl2ZV9zZWFyY2gnKS4nPC9hPjwvbGVnZW5kPjxkaXYgaWQ9InNtZF9mZWF0dXJl ZF9maWx0ZXJzIiBjbGFzcz0idG9nZ2xlIiBzdHlsZT0iZGlzcGxheTonLihnZXRfcHJlZign cGFuZV9zbWRfZmVhdHVyZWRfZmlsdGVyc192aXNpYmxlJykgPyAnYmxvY2snIDogJ25vbmUn KS4nIj4nOw0KCQllY2hvIHNtZF9mZWF0dXJlZF9nVHh0KCdieV9uYW1lJykuZklucHV0KCd0 ZXh0JywgJ3NtZF9mZWF0X3NlYXJjaCcsICRzbWRfZmVhdF9zZWFyY2hrZWVwLCAnJywgJycs ICcnLCAnJywgJycsICdzbWRfZmVhdF9zZWFyY2gnKS4NCgkJCSgoJGZ0eXBlcykgPyAnPGRp diBpZD0ic21kX2ZlYXR1cmVkX2J5bGFiZWwiPicuc21kX2ZlYXR1cmVkX2dUeHQoJ2J5X2xh YmVsJykuc2VsZWN0SW5wdXQoJ3NtZF9mZWF0X2ZpbHQnLCAkZnR5cGVzLCAkc21kX2ZlYXRf ZmlsdGtlZXAsIDEsICcnLCAnc21kX2ZlYXRfZmlsdCcpLic8L2Rpdj4nIDogJycpOw0KCQll Y2hvICc8L2Rpdj48L2ZpZWxkc2V0Pic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9InNtZF9mZWF0 X2VkaXRmb3JtIiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0Ij4nOw0KCQllY2hv IGhJbnB1dCgnc21kX2ZlYXRfc2VhcmNoa2VlcCcsICcnKS4NCgkJCQloSW5wdXQoJ3NtZF9m ZWF0X2ZpbHRrZWVwJywgJycpLg0KCQkJCWhJbnB1dCgnc21kX2ZlYXRfaWQnLCAnJykuDQoJ CQkJZUlucHV0KCRzbWRfZmVhdHVyZWRfZXZlbnQpLg0KCQkJCXNJbnB1dCgnc21kX2ZlYXR1 cmVkX2xpc3QnKTsNCgkJZWNobyAnPC9mb3JtPic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9InNt ZF9mZWF0X3NhdmVmb3JtIiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0IiBvbnN1 Ym1pdD0icmV0dXJuIHNtZF9mZWF0dXJlZF9zYXZla2VlcCgpOyI+JzsNCgkJZWNobyBzdGFy dFRhYmxlKCdjb250cm9sJywnJywnJywnMycpOw0KCQlpZiAoJHNtZF9mZWF0X2lkKSB7DQoJ CQllY2hvIHRyKA0KCQkJCXRkKCcmbmJzcDsnKS50ZGNzKGdUeHQoJ2VkaXQnKS5zcC5zdHJv bmcoJGVkaXRuYW1lKSwgMikNCgkJCSk7DQoJCQllY2hvIHRyKA0KCQkJCWZMYWJlbENlbGwo Z1R4dCgnbGFiZWwnKSwgJycsICdzbWRfZmVhdF9sYWJlbCcpLg0KCQkJCXRkKGZJbnB1dCgn dGV4dCcsICdzbWRfZmVhdF9sYWJlbCcsICRmZWF0X2xhYmVsLCAnJywgJycsICcnLCAnJywg JycsICdzbWRfZmVhdF9sYWJlbCcpKQ0KCQkJKTsNCgkJCWVjaG8gdHIoDQoJCQkJZkxhYmVs Q2VsbChnVHh0KCdkZXNjcmlwdGlvbicpLCAnJywgJ3NtZF9mZWF0X2Rlc2MnKS4NCgkJCQl0 ZCh0ZXh0X2FyZWEoJ3NtZF9mZWF0X2Rlc2MnLCA4MCwgNDAwLCAkZmVhdF9kZXNjLCAnc21k X2ZlYXRfZGVzYycpKS4NCgkJCQl0ZChmSW5wdXQoJ3N1Ym1pdCcsICcnLCBnVHh0KCdzYXZl JyksICdzbWFsbGVyYm94JykpLg0KCQkJCWhJbnB1dCgnc21kX2ZlYXRfc2VhcmNoa2VlcCcs ICcnKS4NCgkJCQloSW5wdXQoJ3NtZF9mZWF0X2ZpbHRrZWVwJywgJycpLg0KCQkJCWhJbnB1 dCgnc21kX2ZlYXRfaWQnLCAkc21kX2ZlYXRfaWQpLg0KCQkJCWVJbnB1dCgkc21kX2ZlYXR1 cmVkX2V2ZW50KS4NCgkJCQlzSW5wdXQoJ3NtZF9mZWF0dXJlZF9zYXZlJykNCgkJCSk7DQoJ CX0NCgkJZWNobyBlbmRUYWJsZSgpOw0KCQllY2hvICc8L2Zvcm0+JzsNCg0KCQkkZWRidG4g PSBzbWFsbCgnWycuZ1R4dCgnZWRpdCcpLiddJyk7DQoNCgkJaWYgKCRvdXQpIHsNCgkJCSRz aXplcyA9IGRvX2xpc3QoZ2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9ib3hfc2l6ZScsICcxNTB4 NDAnKSwgJ3gnKTsNCgkJCSRzaXplc1swXSA9IChpc3NldCgkc2l6ZXNbMF0pICYmIGlzX251 bWVyaWMoJHNpemVzWzBdKSkgPyAkc2l6ZXNbMF0gOiAnMTUwJzsNCgkJCSRzaXplc1sxXSA9 IChpc3NldCgkc2l6ZXNbMV0pICYmIGlzX251bWVyaWMoJHNpemVzWzFdKSkgPyAkc2l6ZXNb MV0gOiAnNDAnOw0KDQoJCQkkcm93cyA9IGNvdW50KCRycyk7DQoJCQkkdGJsb3V0ID0gYXJy YXkoKTsNCgkJCSRhdHRzID0gJyBjbGFzcz0ic21kX2ZlYXR1cmVkX3RhYmxlIHNtZF9jbGVh ciIgaWQ9Imxpc3QiIGFsaWduPSJjZW50ZXIiJzsNCg0KCQkJJHRibG91dFtdID0gaGVkKHNt ZF9mZWF0dXJlZF9nVHh0KCdtYW5hZ2VfbGJsJywgYXJyYXkoKSwgJ3JhdycpLCAzLCAnIGNs YXNzPSJzbWRfY2xlYXIiJyk7DQoJCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgJHJvd3M7ICRp ZHgrKykgew0KCQkJCSRpc2ZlYXQgPSAoaXNzZXQoJG91dFskaWR4XSkgJiYgYXJyYXlfa2V5 X2V4aXN0cygkb3V0WyRpZHhdWzBdLCAkZmVhdGxpc3QpKTsNCgkJCQkkY2VsbGNsYXNzID0g JGlzZmVhdCA/ICcgY2xhc3M9InNtZF9mZWF0dXJlZCInIDogJyc7DQoJCQkJJGVkbGluayA9 ICRpc2ZlYXQgPyAnPGEgY2xhc3M9ImVkbGluayIgaHJlZj0iIyIgb25jbGljaz0icmV0dXJu IHNtZF9mZWF0dXJlZF9lZGl0a2VlcChcJycuJG91dFskaWR4XVswXS4nXCcpOyI+Jy4kZWRi dG4uJzwvYT4nLnNwIDogJyc7DQoJCQkJJHJvd2RhdGEgPSAoaXNzZXQoJG91dFskaWR4XSkp ID8gJzxzcGFuIG5hbWU9InNtZF9mZWF0X25hbWUiIGNsYXNzPSJzbWRfaGlkZGVuIj4nLiRv dXRbJGlkeF1bMV0uJzwvc3Bhbj4nIDogJyc7DQoJCQkJJHJvd2RhdGEgLj0gJGlzZmVhdCA/ ICc8c3BhbiBuYW1lPSJzbWRfZmVhdF9sYWJlbCIgY2xhc3M9ImV4dHJhIHNtZF9oaWRkZW4i PicuJG91dFskaWR4XVsyXS4nPC9zcGFuPicgOiAnJzsNCgkJCQkkdGJsb3V0W10gPSAoaXNz ZXQoJG91dFskaWR4XSkpID8gJzxkaXYnLiRjZWxsY2xhc3MuJz4nLiRlZGxpbmsuJzxhIGhy ZWY9IiMiIG9uY2xpY2s9InJldHVybiBzbWRfZmVhdHVyZWRfc2VsZWN0KHRoaXMsIFwnJy4k b3V0WyRpZHhdWzBdLidcJykiPicuJG91dFskaWR4XVsxXS4nPC9hPicuJHJvd2RhdGEuJzwv ZGl2PicgOiAnPGRpdj48L2Rpdj4nOw0KCQkJfQ0KCQkJZWNobyB0YWcoam9pbigiIiwkdGJs b3V0KSwgJ2RpdicsICRhdHRzKTsNCgkJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9jbGVhciI+ PC9kaXY+JzsNCgkJfQ0KDQoJCSRxcyA9IGFycmF5KA0KCQkJImV2ZW50IiA9PiAkc21kX2Zl YXR1cmVkX2V2ZW50LA0KCQkpOw0KDQoJCSRxc1ZhcnMgPSAiaW5kZXgucGhwIi5qb2luX3Fz KCRxcyk7DQoJCSR2ZXJpZnlUeHQgPSBzbWRfZmVhdHVyZWRfZ1R4dCgndW5mZWF0dXJlX2Nv bmZpcm0nKTsNCg0KCQllY2hvIDw8PEVPUw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp cHQiPg0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3NlbGVjdChvYmosIGlkKSB7DQoJb2JqID0g alF1ZXJ5KG9iaikucGFyZW50KCk7DQoNCgkvLyBOLkIuIE5lZ2F0aXZlIGxvZ2ljIHVzZWQg aGVyZSBiZWNhdXNlIHdlJ3JlIGNoZWNraW5nIHRoZSBjbGFzcyBfYmVmb3JlXyBpdCdzIGJl ZW4gdG9nZ2xlZA0KCXZhciBhY3Rpb24gPSAoKG9iaikuaGFzQ2xhc3MoInNtZF9mZWF0dXJl ZCIpKSA/ICdyZW1vdmUnIDogJ2FkZCc7DQoJaWYgKGFjdGlvbiA9PSAncmVtb3ZlJykgew0K CQl2YXIgcmV0ID0gY29uZmlybSgneyR2ZXJpZnlUeHR9Jyk7DQoJCWlmIChyZXQgPT0gZmFs c2UpIHsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCX0NCglqUXVlcnkucG9zdCgneyRxc1Zh cnN9JywgeyBzdGVwOiAic21kX2ZlYXR1cmVkX3RhZ2l0Iiwgc21kX2ZlYXRfaWQ6IGlkLCBz bWRfZmVhdF9hY3Rpb246IGFjdGlvbiB9LA0KCQlmdW5jdGlvbihkYXRhKSB7DQoJCQlvYmou dG9nZ2xlQ2xhc3MoJ3NtZF9mZWF0dXJlZCcpOw0KCQkJaWYgKGFjdGlvbiA9PSAnYWRkJykg ew0KCQkJCW9iai5wcmVwZW5kKCc8YSBjbGFzcz0iZWRsaW5rIiBocmVmPSIjIiBvbmNsaWNr PSJyZXR1cm4gc21kX2ZlYXR1cmVkX2VkaXRrZWVwKFwnJytpZCsnXCcpIj57JGVkYnRufTwv YT4mbmJzcDsnKTsNCgkJCQlvYmouYXBwZW5kKCc8c3BhbiBuYW1lPSJzbWRfZmVhdF9sYWJl bCIgY2xhc3M9ImV4dHJhIHNtZF9oaWRkZW4iPjwvc3Bhbj4nKTsNCgkJCX0gZWxzZSB7DQoJ CQkJb2JqLmZpbmQoJ2EuZWRsaW5rJykucmVtb3ZlKCk7DQoJCQkJb2JqLmZpbmQoJ3NwYW4u ZXh0cmEnKS5yZW1vdmUoKTsNCgkJCQlpZiAoalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIiku dmFsKCkgIT0gJycpIGpRdWVyeSgiI3NtZF9mZWF0X3NlYXJjaCIpLmtleXVwKCk7DQoJCQkJ aWYgKGpRdWVyeSgiI3NtZF9mZWF0X2ZpbHQiKS52YWwoKSAhPSAnJykgalF1ZXJ5KCIjc21k X2ZlYXRfZmlsdCIpLmNoYW5nZSgpOw0KCQkJfQ0KCQl9DQoJKTsNCglyZXR1cm4gZmFsc2U7 DQp9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9lZGl0a2VlcChpZCkgew0KCWpRdWVyeSgi I3NtZF9mZWF0X2VkaXRmb3JtIFtuYW1lPSdzbWRfZmVhdF9zZWFyY2hrZWVwJ10iKS52YWwo alF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikudmFsKCkpOw0KCWpRdWVyeSgiI3NtZF9mZWF0 X2VkaXRmb3JtIFtuYW1lPSdzbWRfZmVhdF9maWx0a2VlcCddIikudmFsKGpRdWVyeSgiI3Nt ZF9mZWF0dXJlZF9ieWxhYmVsICNzbWRfZmVhdF9maWx0IG9wdGlvbjpzZWxlY3RlZCIpLnZh bCgpKTsNCglqUXVlcnkoIiNzbWRfZmVhdF9lZGl0Zm9ybSBbbmFtZT0nc21kX2ZlYXRfaWQn XSIpLnZhbChpZCk7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZWRpdGZvcm0iKS5zdWJtaXQoKTsN Cn0NCg0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3NhdmVrZWVwKCkgew0KCWpRdWVyeSgiI3Nt ZF9mZWF0X3NhdmVmb3JtIFtuYW1lPSdzbWRfZmVhdF9zZWFyY2hrZWVwJ10iKS52YWwoalF1 ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikudmFsKCkpOw0KCWpRdWVyeSgiI3NtZF9mZWF0X3Nh dmVmb3JtIFtuYW1lPSdzbWRfZmVhdF9maWx0a2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9m ZWF0dXJlZF9ieWxhYmVsICNzbWRfZmVhdF9maWx0IG9wdGlvbjpzZWxlY3RlZCIpLnZhbCgp KTsNCn0NCg0KZnVuY3Rpb24gc21kX2ZlYXRfZmlsdGVyKHNlbGVjdG9yLCBxdWVyeSwgbmFt LCBjc2Vuc2UpIHsNCgl2YXIgcXVlcnkgPSBqUXVlcnkudHJpbShxdWVyeSk7DQoJY3NlbnNl ID0gKGNzZW5zZSkgPyAiIiA6ICJpIjsNCglxdWVyeSA9IHF1ZXJ5LnJlcGxhY2UoLyAvZ2ks ICd8Jyk7IC8vIGFkZCBPUiBmb3IgcmVnZXggcXVlcnkNCgl2YXIgcmUgPSBuZXcgUmVnRXhw KHF1ZXJ5LCBjc2Vuc2UpOw0KCWpRdWVyeShzZWxlY3RvcikuZWFjaChmdW5jdGlvbigpIHsN CgkJc2VsID0gKHR5cGVvZiBuYW09PSJ1bmRlZmluZWQiIHx8IG5hbT09JycpID8galF1ZXJ5 KHRoaXMpIDogalF1ZXJ5KHRoaXMpLmZpbmQoInNwYW5bbmFtZT0nIituYW0rIiddIik7DQoJ CWlmIChxdWVyeSA9PSAnJykgew0KCQkJaWYgKHNlbC5sZW5ndGggPT0gMSAmJiBzZWwudGV4 dCgpID09ICcnKSB7DQoJCQkJalF1ZXJ5KHRoaXMpLnNob3coKTsNCgkJCX0gZWxzZSB7DQoJ CQkJalF1ZXJ5KHRoaXMpLmhpZGUoKTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmIChzZWwu dGV4dCgpLnNlYXJjaChyZSkgPCAwKSB7DQoJCQkJalF1ZXJ5KHRoaXMpLmhpZGUoKTsNCgkJ CX0gZWxzZSB7DQoJCQkJalF1ZXJ5KHRoaXMpLnNob3coKTsNCgkJCX0NCgkJfQ0KCX0pOw0K fQ0KDQpqUXVlcnkoZnVuY3Rpb24oKSB7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIiku a2V5dXAoZnVuY3Rpb24oZXZlbnQpIHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLnZh bCgnMCcpOyAvLyBDbGVhciB0aGUgZmlsdGVyIGRyb3Bkb3duDQoJCS8vIGlmIGVzYyBpcyBw cmVzc2VkIG9yIG5vdGhpbmcgaXMgZW50ZXJlZA0KCQlpZiAoZXZlbnQua2V5Q29kZSA9PSAy NyB8fCBqUXVlcnkodGhpcykudmFsKCkgPT0gJycpIHsNCgkJCWpRdWVyeSh0aGlzKS52YWwo JycpOw0KCQkJalF1ZXJ5KCIuc21kX2ZlYXR1cmVkX3RhYmxlIGRpdjpub3QoLnRibGhlYWQp Iikuc2hvdygpOw0KCQl9IGVsc2Ugew0KCQkJc21kX2ZlYXRfZmlsdGVyKCcuc21kX2ZlYXR1 cmVkX3RhYmxlIGRpdjpub3QoLnRibGhlYWQpJywgalF1ZXJ5KHRoaXMpLnZhbCgpLCAnc21k X2ZlYXRfbmFtZScsIDApOw0KCQl9DQoJfSk7DQoJaWYgKCd7JHNtZF9mZWF0X3NlYXJjaGtl ZXB9JyAhPSAnJykgew0KCQlqUXVlcnkoIiNzbWRfZmVhdF9zZWFyY2giKS5rZXl1cCgpOw0K CX0NCglqUXVlcnkoIiNzbWRfZmVhdF9maWx0IikuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KSB7 DQoJCWpRdWVyeSgiI3NtZF9mZWF0X3NlYXJjaCIpLnZhbCgnJyk7IC8vIEVtcHR5IHRoZSBz ZWFyY2ggYm94DQoJCWlmIChqUXVlcnkodGhpcykudmFsKCkgPT0gJycpIHsNCgkJCWpRdWVy eSgnLnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50YmxoZWFkKScpLnNob3coKTsNCgkJ fSBlbHNlIGlmIChqUXVlcnkodGhpcykudmFsKCkgPT0gJ3NtZF91bmxhYmVsbGVkJykgew0K CQkJc21kX2ZlYXRfZmlsdGVyKCcuc21kX2ZlYXR1cmVkX3RhYmxlIGRpdjpub3QoLnRibGhl YWQpJywgJycsICdzbWRfZmVhdF9sYWJlbCcsIDApOw0KCQl9IGVsc2Ugew0KCQkJc21kX2Zl YXRfZmlsdGVyKCcuc21kX2ZlYXR1cmVkX3RhYmxlIGRpdjpub3QoLnRibGhlYWQpJywgalF1 ZXJ5KHRoaXMpLnZhbCgpLCAnc21kX2ZlYXRfbGFiZWwnLCAxKTsNCgkJfQ0KCX0pOw0KCWlm ICgneyRzbWRfZmVhdF9maWx0a2VlcH0nICE9ICcnKSB7DQoJCWpRdWVyeSgiI3NtZF9mZWF0 X2ZpbHQiKS5jaGFuZ2UoKTsNCgl9DQoJaWYgKCd7JHNtZF9mZWF0X2lkfScgIT0gJycpIHsN CgkJalF1ZXJ5KCIjc21kX2ZlYXRfbGFiZWwiKS5mb2N1cygpOw0KCX0NCn0pOw0KDQo8L3Nj cmlwdD4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQouc21kX2hpZGRlbiB7DQoJZGlzcGxh eTpub25lOw0KfQ0KLnNtZF9mZWF0dXJlZCB7DQoJYmFja2dyb3VuZDojZmZjOw0KCWZvbnQt d2VpZ2h0OmJvbGQ7DQp9DQojc21kX2ZlYXR1cmVkX2ZpbHQgew0KCWZvbnQtc2l6ZTo5MCU7 DQoJZmxvYXQ6bGVmdDsNCgltYXJnaW46LTEwcHggMCAxMnB4IDEwcHg7DQoJcGFkZGluZzo3 cHggM3B4Ow0KfQ0KLnNtZF9mZWF0dXJlZF90YWJsZSB7DQoJd2lkdGg6ODAwcHg7DQoJbWFy Z2luOjAgYXV0byA4MHB4Ow0KfQ0KLnNtZF9jbGVhciB7DQoJY2xlYXI6Ym90aDsNCn0NCi5z bWRfZmVhdHVyZWRfdGFibGUgZGl2IHsNCglmbG9hdDpsZWZ0Ow0KCXdpZHRoOnskc2l6ZXNb MF19cHg7DQoJaGVpZ2h0Onskc2l6ZXNbMV19cHg7DQoJYm9yZGVyOjFweCBzb2xpZCAjZGRk Ow0KCXBhZGRpbmc6NHB4Ow0KCW92ZXJmbG93OmhpZGRlbjsNCn0NCjwvc3R5bGU+DQpFT1M7 DQoJfSBlbHNlIHsNCgkJLy8gVGFibGUgbm90IGluc3RhbGxlZA0KCQkkYnRuSW5zdGFsbCA9 ICc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP2V2ZW50PScuJHNtZF9mZWF0dXJlZF9l dmVudC5hLidzdGVwPXNtZF9mZWF0dXJlZF90YWJsZV9pbnN0YWxsIiBzdHlsZT0iZGlzcGxh eTppbmxpbmUiPicuZklucHV0KCdzdWJtaXQnLCAnc3VibWl0Jywgc21kX2ZlYXR1cmVkX2dU eHQoJ3RibF9pbnN0YWxsX2xibCcpLCAnc21hbGxlcmJveCcpLic8L2Zvcm0+JzsNCgkJJGJ0 blN0eWxlID0gJyBzdHlsZT0iYm9yZGVyOjA7aGVpZ2h0OjI1cHgiJzsNCgkJZWNobyBzdGFy dFRhYmxlKCdsaXN0Jyk7DQoJCWVjaG8gdHIodGRhKCRidG5JbnN0YWxsLCAkYnRuU3R5bGUp KTsNCgkJZWNobyBlbmRUYWJsZSgpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQovLyBVcGRhdGUgdGhlIHBhc3NlZCByZWNvcmQgaW4gdGhlIGZlYXR1cmVkIHRh YmxlDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfc2F2ZSgpIHsNCglnbG9iYWwgJHNtZF9mZWF0 dXJlZF9ldmVudDsNCg0KCWV4dHJhY3QoZ3BzYShhcnJheSgnc21kX2ZlYXRfaWQnLCAnc21k X2ZlYXRfbGFiZWwnLCAnc21kX2ZlYXRfZGVzYycpKSk7DQoJYXNzZXJ0X2ludCgkc21kX2Zl YXRfaWQpOw0KDQoJJHNtZF9mZWF0X2Rlc2N0aWxlID0gJHNtZF9mZWF0X2Rlc2M7DQoJJHNt ZF9mZWF0X2xhYmVsID0gZG9TbGFzaCgkc21kX2ZlYXRfbGFiZWwpOw0KDQoJaWYgKHNtZF9m ZWF0dXJlZF90YWJsZV9leGlzdCgpKSB7DQoJCUBpbmNsdWRlX29uY2UgdHhwYXRoLicvbGli L2NsYXNzVGV4dGlsZS5waHAnOw0KCQlAaW5jbHVkZV9vbmNlIHR4cGF0aC4nL3B1Ymxpc2gu cGhwJzsNCgkJaWYgKGNsYXNzX2V4aXN0cygnVGV4dGlsZScpKSB7DQoJCQkkdGV4dGlsZSA9 IG5ldyBUZXh0aWxlKCk7DQoJCQkkc21kX2ZlYXRfZGVzY3RpbGUgPSBkb1NsYXNoKCR0ZXh0 aWxlLT5UZXh0aWxlVGhpcyhwYXJzZSgkc21kX2ZlYXRfZGVzYykpKTsNCgkJfQ0KDQoJCSRz bWRfZmVhdF9kZXNjID0gZG9TbGFzaCgkc21kX2ZlYXRfZGVzYyk7DQoJCSRyZXQgPSBzYWZl X3Vwc2VydChTTURfRkVBVCwgImxhYmVsPSckc21kX2ZlYXRfbGFiZWwnLCBkZXNjcmlwdGlv bj0nJHNtZF9mZWF0X2Rlc2MnLCBkZXNjX2h0bWw9JyRzbWRfZmVhdF9kZXNjdGlsZSciLCAi aWQ9JyRzbWRfZmVhdF9pZCciKTsNCgkJdW5zZXQoJF9QT1NUWydzbWRfZmVhdF9pZCddKTsN Cgl9DQoNCglzbWRfZmVhdHVyZWRfbGlzdChzbWRfZmVhdHVyZWRfZ1R4dCgnc2F2ZWQnKSk7 DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gQ3JlYXRlIGFuIGVtcHR5 IGVudHJ5IGluIHRoZSBmZWF0dXJlZCB0YWJsZSBvciBkZXN0cm95IGl0DQpmdW5jdGlvbiBz bWRfZmVhdHVyZWRfdGFnaXQoKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRfZXZlbnQ7DQoJ ZXh0cmFjdChkb1NsYXNoKGdwc2EoYXJyYXkoJ3NtZF9mZWF0X2lkJywgJ3NtZF9mZWF0X2Fj dGlvbicpKSkpOw0KDQoJYXNzZXJ0X2ludCgkc21kX2ZlYXRfaWQpOw0KDQoJaWYgKCRzbWRf ZmVhdF9hY3Rpb24gPT0gJ2FkZCcpIHsNCgkJJHJldCA9IHNhZmVfdXBzZXJ0KFNNRF9GRUFU LCAibGFiZWw9JyciLCAiaWQ9JyRzbWRfZmVhdF9pZCciKTsNCgl9IGVsc2UgaWYgKCRzbWRf ZmVhdF9hY3Rpb24gPT0gJ3JlbW92ZScpIHsNCgkJJHJldCA9IHNhZmVfZGVsZXRlKFNNRF9G RUFULCAiaWQ9JyRzbWRfZmVhdF9pZCciKTsNCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0 aW9uIHNtZF9mZWF0dXJlZF9zYXZlX3BhbmVfc3RhdGUoKSB7DQoJJHBhbmVzID0gYXJyYXko J3NtZF9mZWF0dXJlZF9maWx0ZXJzJyk7DQoJJHBhbmUgPSBncHMoJ3BhbmUnKTsNCglpZiAo aW5fYXJyYXkoJHBhbmUsICRwYW5lcykpDQoJew0KCQlzZXRfcHJlZigicGFuZV97JHBhbmV9 X3Zpc2libGUiLCAoZ3BzKCd2aXNpYmxlJykgPT0gJ3RydWUnID8gJzEnIDogJzAnKSwgJ3Nt ZF9mZWF0dXJlZCcsIFBSRUZfSElEREVOLCAneWVzbm9yYWRpbycsIDAsIFBSRUZfUFJJVkFU RSk7DQoJCXNlbmRfeG1sX3Jlc3BvbnNlKCk7DQoJfSBlbHNlIHsNCgkJc2VuZF94bWxfcmVz cG9uc2UoYXJyYXkoJ2h0dHAtc3RhdHVzJyA9PiAnNDAwIEJhZCBSZXF1ZXN0JykpOw0KCX0N Cn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBBZGQgZmVhdHVyZWQgdGFi bGUgaWYgbm90IGFscmVhZHkgaW5zdGFsbGVkDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfdGFi bGVfaW5zdGFsbCgkc2hvd3BhbmU9JzEnKSB7DQoJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQn XSA9IDA7DQoJCSRyZXQgPSAnJzsNCgkJJHNxbCA9IGFycmF5KCk7DQoJCSRzcWxbXSA9ICJD UkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgIi5QRlguU01EX0ZFQVQuImAgKA0KCQkJYGlk YCBpbnQoOCkgTk9UIE5VTEwsDQoJCQlgbGFiZWxgIHZhcmNoYXIoMzIpIE5VTEwgZGVmYXVs dCAnJywNCgkJCWBkZXNjcmlwdGlvbmAgdGV4dCBOVUxMIGRlZmF1bHQgJycsDQoJCQlgZGVz Y19odG1sYCB0ZXh0IE5VTEwgZGVmYXVsdCAnJywNCgkJCVBSSU1BUlkgS0VZIChgaWRgKQ0K CQkpIEVOR0lORT1NeUlTQU0iOw0KDQoJCWlmKGdwcygnZGVidWcnKSkgew0KCQkJZG1wKCRz cWwpOw0KCQl9DQoJCWZvcmVhY2ggKCRzcWwgYXMgJHFyeSkgew0KCQkJJHJldCA9IHNhZmVf cXVlcnkoJHFyeSk7DQoJCQlpZiAoJHJldD09PWZhbHNlKSB7DQoJCQkJJEdMT0JBTFNbJ3R4 cF9lcnJfY291bnQnXSsrOw0KCQkJCWVjaG8gIjxiPiIuJEdMT0JBTFNbJ3R4cF9lcnJfY291 bnQnXS4iLjwvYj4gIi5teXNxbF9lcnJvcigpLiI8YnIgLz5cbiI7DQoJCQkJZWNobyAiPCEt LVxuICRxcnkgXG4tLT5cbiI7DQoJCQl9DQoJCX0NCg0KCWlmICgkR0xPQkFMU1sndHhwX2Vy cl9jb3VudCddID09IDApIHsNCgkJJG1lc3NhZ2UgPSBzbWRfZmVhdHVyZWRfZ1R4dCgndGJs X2luc3RhbGxlZCcpOw0KCX0gZWxzZSB7DQoJCWlmICgkc2hvd3BhbmUpIHsNCgkJCSRtZXNz YWdlID0gc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9ub3RfaW5zdGFsbGVkJyk7DQoJCQlzbWRf ZmVhdHVyZWRfbGlzdCgkbWVzc2FnZSk7DQoJCX0NCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KLy8gRHJvcCB0YWJsZSBpZiBpbiBkYXRhYmFzZQ0KZnVuY3Rpb24g c21kX2ZlYXR1cmVkX3RhYmxlX3JlbW92ZSgpIHsNCgkkcmV0ID0gJyc7DQoJJHNxbCA9IGFy cmF5KCk7DQoJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSA9IDA7DQoJaWYgKHNtZF9mZWF0 dXJlZF90YWJsZV9leGlzdCgpKSB7DQoJCSRzcWxbXSA9ICJEUk9QIFRBQkxFIElGIEVYSVNU UyAiIC5QRlguU01EX0ZFQVQuICI7ICI7DQoJCWlmKGdwcygnZGVidWcnKSkgew0KCQkJZG1w KCRzcWwpOw0KCQl9DQoJCWZvcmVhY2ggKCRzcWwgYXMgJHFyeSkgew0KCQkJJHJldCA9IHNh ZmVfcXVlcnkoJHFyeSk7DQoJCQlpZiAoJHJldD09PWZhbHNlKSB7DQoJCQkJJEdMT0JBTFNb J3R4cF9lcnJfY291bnQnXSsrOw0KCQkJCWVjaG8gIjxiPiIuJEdMT0JBTFNbJ3R4cF9lcnJf Y291bnQnXS4iLjwvYj4gIi5teXNxbF9lcnJvcigpLiI8YnIgLz5cbiI7DQoJCQkJZWNobyAi PCEtLVxuICRxcnkgXG4tLT5cbiI7DQoJCQl9DQoJCX0NCgl9DQoJaWYgKCRHTE9CQUxTWyd0 eHBfZXJyX2NvdW50J10gPT0gMCkgew0KCQkkbWVzc2FnZSA9IHNtZF9mZWF0dXJlZF9nVHh0 KCd0YmxfcmVtb3ZlZCcpOw0KCX0gZWxzZSB7DQoJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVk X2dUeHQoJ3RibF9ub3RfcmVtb3ZlZCcpOw0KCQlzbWRfZmVhdHVyZWRfbGlzdCgkbWVzc2Fn ZSk7DQoJfQ0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNt ZF9mZWF0dXJlZF90YWJsZV9leGlzdCgkYWxsPScnKSB7DQoJaWYgKCRhbGwpIHsNCgkJJHRi bHMgPSBhcnJheShTTURfRkVBVCA9PiA0KTsNCgkJJG91dCA9IGNvdW50KCR0YmxzKTsNCgkJ Zm9yZWFjaCAoJHRibHMgYXMgJHRibCA9PiAkY29scykgew0KCQkJaWYgKGdwcygnZGVidWcn KSkgew0KCQkJCWVjaG8gIisrIFRBQkxFICIuJHRibC4iIEhBUyAiLmNvdW50KEBzYWZlX3No b3coJ2NvbHVtbnMnLCAkdGJsKSkuIiBDT0xVTU5TOyBSRVFVSVJFUyAiLiRjb2xzLiIgKysi LmJyOw0KCQkJfQ0KCQkJaWYgKGNvdW50KEBzYWZlX3Nob3coJ2NvbHVtbnMnLCAkdGJsKSkg PT0gJGNvbHMpIHsNCgkJCQkkb3V0LS07DQoJCQl9DQoJCX0NCgkJcmV0dXJuICgkb3V0PT09 MCkgPyAxIDogMDsNCgl9IGVsc2Ugew0KCQlpZiAoZ3BzKCdkZWJ1ZycpKSB7DQoJCQllY2hv ICIrKyBUQUJMRSAiLlNNRF9GRUFULiIgSEFTICIuY291bnQoQHNhZmVfc2hvdygnY29sdW1u cycsIFNNRF9GRUFUKSkuIiBDT0xVTU5TOyI7DQoJCX0NCgkJcmV0dXJuKEBzYWZlX3Nob3co J2NvbHVtbnMnLCBTTURfRkVBVCkpOw0KCX0NCn0NCg0KLy8gKioqKioqKioqKioqKioqKg0K Ly8gUFVCTElDIFNJREUgVEFHUw0KLy8gKioqKioqKioqKioqKioqKg0KLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWQoJGF0dHMsICR0aGluZykg ew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVkX2luZm8sICRzbWRfcHJpb3JfZmVhdHVyZWQsICRw cmVmczsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdsYWJlbCcgICAgPT4gJycsDQoJ CSd1bmxhYmVsJyAgPT4gJ0ZlYXR1cmVkJywNCgkJJ2xhYmVsdGFnJyA9PiAnJywNCgkJJ3Rp bWUnICAgICA9PiAncGFzdCcsDQoJCSdzdGF0dXMnICAgPT4gJzQsNScsDQoJCSdzZWN0aW9u JyAgPT4gJycsDQoJCSdsaW1pdCcgICAgPT4gJycsDQoJCSdzb3J0JyAgICAgPT4gJycsDQoJ CSdmb3JtJyAgICAgPT4gJycsDQoJCSd3cmFwdGFnJyAgPT4gJycsDQoJCSdicmVhaycgICAg PT4gJycsDQoJCSdjbGFzcycgICAgPT4gJycsDQoJCSdodG1sX2lkJyAgPT4gJycsDQoJKSwk YXR0cykpOw0KDQoJaWYgKGlzc2V0KCRhdHRzWydsYWJlbCddKSkgew0KCQlpZiAoJGxhYmVs KSB7DQoJCQkkd2hlcmUgPSAiQklOQVJZIGxhYmVsIFJFR0VYUCAnIi4kYXR0c1snbGFiZWwn XS4iJyI7DQoJCX0gZWxzZSB7DQoJCQkkd2hlcmUgPSAibGFiZWw9JyciOw0KCQl9DQoJCXVu c2V0KCRhdHRzWydsYWJlbCddKTsNCgl9IGVsc2Ugew0KCQkkd2hlcmUgPSAiMT0xIjsNCgl9 DQoNCgkvLyBFeGNsdWRlIHByZXZpb3VzbHkgc2VlbiBhcnRpY2xlcw0KCWlmICghZW1wdHko JHNtZF9wcmlvcl9mZWF0dXJlZCkpIHsNCgkJJHdoZXJlIC49ICcgQU5EIHNtZGZlYXQuaWQg Tk9UIElOKCcgLiBqb2luKCcsJywgJHNtZF9wcmlvcl9mZWF0dXJlZCkgLiAnKSc7DQoJfQ0K DQoJaWYgKCR0aW1lKSB7DQoJCXN3aXRjaCAoJHRpbWUpIHsNCgkJCWNhc2UgJ2FueSc6DQoJ CQkJYnJlYWs7DQoJCQljYXNlICdmdXR1cmUnOg0KCQkJCSR3aGVyZSAuPSAiIEFORCBQb3N0 ZWQgPiBub3coKSI7DQoJCQkJYnJlYWs7DQoJCQlkZWZhdWx0Og0KCQkJCSR3aGVyZSAuPSAi IEFORCBQb3N0ZWQgPD0gbm93KCkiOw0KCQl9DQoJCWlmICghJHByZWZzWydwdWJsaXNoX2V4 cGlyZWRfYXJ0aWNsZXMnXSkgew0KCQkJJHdoZXJlIC49ICIgQU5EIChub3coKSA8PSBFeHBp cmVzIE9SIEV4cGlyZXMgPSAiLk5VTExEQVRFVElNRS4iKSI7DQoJCX0NCgkJdW5zZXQoJGF0 dHNbJ3RpbWUnXSk7DQoJfQ0KDQoJaWYgKCRzdGF0dXMpIHsNCgkJJHdoZXJlIC49ICcgQU5E IFN0YXR1cyBpbiAoJy5qb2luKCcsJywgZG9fbGlzdCgkc3RhdHVzKSkuJyknOw0KCQl1bnNl dCgkYXR0c1snc3RhdHVzJ10pOw0KCX0NCg0KCWlmICgkc2VjdGlvbikgew0KCQkkd2hlcmUg Lj0gIiBBTkQgU2VjdGlvbiBpbiAoJyIuam9pbigiJywnIiwgZG9fbGlzdCgkc2VjdGlvbikp LiInKSI7DQoJCXVuc2V0KCRhdHRzWydzZWN0aW9uJ10pOw0KCX0NCg0KCWlmICgkc29ydCkg ew0KCQkkd2hlcmUgLj0nIE9SREVSIEJZICcuJHNvcnQ7DQoJCXVuc2V0KCRhdHRzWydzb3J0 J10pOw0KCX0NCg0KCWlmICgkbGltaXQpIHsNCgkJJHdoZXJlIC49JyBMSU1JVCAnLiRsaW1p dDsNCgkJdW5zZXQoJGF0dHNbJ2xpbWl0J10pOw0KCX0NCg0KCS8vIERvbid0IHBhc3MgdGhl IHJlbWFpbmluZyBhdHRyaWJ1dGVzIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCBvbnRvIHRoZSBh cnRpY2xlIHRhZw0KCXVuc2V0KA0KCQkkYXR0c1snbGFiZWwnXSwNCgkJJGF0dHNbJ3VubGFi ZWwnXSwNCgkJJGF0dHNbJ2xhYmVsdGFnJ10sDQoJCSRhdHRzWyd3cmFwdGFnJ10sDQoJCSRh dHRzWydicmVhayddLA0KCQkkYXR0c1snY2xhc3MnXSwNCgkJJGF0dHNbJ2h0bWxfaWQnXQ0K CSk7DQoNCgkkcnMgPSBnZXRSb3dzKCdTRUxFQ1QgKiwgdW5peF90aW1lc3RhbXAoUG9zdGVk KSBhcyB1UG9zdGVkLCB1bml4X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcywgdW5p eF90aW1lc3RhbXAoTGFzdE1vZCkgYXMgdUxhc3RNb2QgRlJPTSAnLlBGWC4ndGV4dHBhdHRl cm4gQVMgdHhwIExFRlQgSk9JTiAnLlBGWC4nc21kX2ZlYXR1cmVkIEFTIHNtZGZlYXQgT04g dHhwLklEPXNtZGZlYXQuaWQgV0hFUkUgJy4kd2hlcmUpOw0KCSRvdXQgPSBhcnJheSgpOw0K CWlmICgkcnMpIHsNCgkJZm9yZWFjaCAoJHJzIGFzICRyb3cpIHsNCgkJCSRzbWRfZmVhdHVy ZWRfaW5mb1snbGFiZWwnXSA9ICRyb3dbJ2xhYmVsJ107DQoJCQkkc21kX2ZlYXR1cmVkX2lu Zm9bJ2Rlc2NyaXB0aW9uJ10gPSAkcm93WydkZXNjX2h0bWwnXTsNCgkJCSRhdHRzWydpZCdd ID0gJHJvd1snSUQnXTsNCgkJCSRhcnRvdXQgPSBhcnRpY2xlKCRhdHRzLCAkdGhpbmcpOw0K DQoJCQlpZiAoJGFydG91dCkgew0KCQkJCSRzbWRfcHJpb3JfZmVhdHVyZWRbXSA9ICRyb3db J0lEJ107DQoJCQkJJG91dFtdID0gJGFydG91dDsNCgkJCX0NCgkJfQ0KCX0NCglpZiAoJG91 dCkgew0KCQlyZXR1cm4gKCgkbGFiZWx0YWcpID8gZG9MYWJlbCggKCAoJGxhYmVsID09ICcn KSA/ICR1bmxhYmVsIDogJGxhYmVsKSwgJGxhYmVsdGFnICkgOiAnJykNCgkJCS5kb1dyYXAo JG91dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzLCAnJywgJycsICcnLCAkaHRtbF9pZCk7 DQoJfQ0KCXJldHVybiAnJzsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpm dW5jdGlvbiBzbWRfdW5mZWF0dXJlZCgkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICRzbWRf cHJpb3JfZmVhdHVyZWQ7DQoNCgkkd2hlcmUgPSAiMT0xIjsNCg0KCS8vIEV4Y2x1ZGUgcHJl dmlvdXNseSBzZWVuIGFydGljbGVzDQoJaWYgKCFlbXB0eSgkc21kX3ByaW9yX2ZlYXR1cmVk KSkgew0KCQkkd2hlcmUgLj0gJyBBTkQgaWQgTk9UIElOKCcgLiBqb2luKCcsJywgJHNtZF9w cmlvcl9mZWF0dXJlZCkgLiAnKSc7DQoJfQ0KDQoJJHJzID0gc2FmZV9jb2x1bW4oJ0lEJywg J3RleHRwYXR0ZXJuJywgJHdoZXJlKTsNCgkkYXR0c1snaWQnXSA9IGpvaW4oJywnLCAkcnMp Ow0KCSRvdXQgPSBhcnRpY2xlKCRhdHRzLCAkdGhpbmcpOw0KDQoJcmV0dXJuICRvdXQ7DQp9 DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVk X2luZm8oJGF0dHMpIHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9pbmZvOw0KDQoJZXh0cmFj dChsQXR0cyhhcnJheSgNCgkJJ2l0ZW0nID0+ICcnLA0KCSksJGF0dHMpKTsNCg0KCXJldHVy biAoaXNzZXQoJHNtZF9mZWF0dXJlZF9pbmZvWyRpdGVtXSkgPyAkc21kX2ZlYXR1cmVkX2lu Zm9bJGl0ZW1dIDogJycpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8v IFBsdWdpbi1zcGVjaWZpYyByZXBsYWNlbWVudCBzdHJpbmdzIC0gbG9jYWxpc2UgYXMgcmVx dWlyZWQNCi8vIFRPRE86IG1ha2UgdGhlc2UgaW50byBhIHRleHRwYWNrIHdoZW4gcGx1Z2lu IGNvbXBvc2VyIHN1cHBvcnRzIHRoZW0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9nVHh0KCR3 aGF0LCAkYXR0cyA9IGFycmF5KCkpIHsNCgkkbGFuZyA9IGFycmF5KA0KCQknYnlfbGFiZWwn ID0+ICdCeSBsYWJlbDogJywNCgkJJ2J5X25hbWUnID0+ICdCeSBuYW1lOiAnLA0KCQknbGl2 ZV9zZWFyY2gnID0+ICdBcnRpY2xlIGxpdmUgc2VhcmNoJywNCgkJJ21hbmFnZV9sYmwnID0+ ICdDbGljayB0byBzZWxlY3QgZmVhdHVyZWQgYXJ0aWNsZXMsIHdoaWNoIHdpbGwgYmUgc2hv d24gPHNwYW4gY2xhc3M9InNtZF9mZWF0dXJlZCI+PGEgaHJlZj0iIyI+aGlnaGxpZ2h0ZWQ8 L2E+PC9zcGFuPi4nLA0KCQknc2F2ZWQnID0+ICdBcnRpY2xlIGluZm8gdXBkYXRlZCcsDQoJ CSd0YWJfbmFtZScgPT4gJ0ZlYXR1cmVkIGFydGljbGVzJywNCgkJJ3RibF9pbnN0YWxsX2xi bCcgPT4gJ0luc3RhbGwgdGFibGUnLA0KCQkndGJsX2luc3RhbGxlZCcgPT4gJ1RhYmxlIGlu c3RhbGxlZCcsDQoJCSd0Ymxfbm90X2luc3RhbGxlZCcgPT4gJ1RhYmxlIG5vdCBpbnN0YWxs ZWQnLA0KCQkndGJsX3JlbW92ZWQnID0+ICdUYWJsZSByZW1vdmVkJywNCgkJJ3RibF9ub3Rf cmVtb3ZlZCcgPT4gJ1RhYmxlIG5vdCByZW1vdmVkJywNCgkJJ3VuZmVhdHVyZV9jb25maXJt JyA9PiAnU3VyZSB0byB1bmZlYXR1cmUgdGhpcyBhcnRpY2xlPycsDQoJCSd1bmxhYmVsbGVk JyA9PiAnW3VubGFiZWxsZWRdJywNCgkpOw0KCXJldHVybiBzdHJ0cigkbGFuZ1skd2hhdF0s ICRhdHRzKTsNCn0iO3M6NDoidHlwZSI7czoxOiIxIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6 NToiZmxhZ3MiO3M6MToiMiI7czo0OiJoZWxwIjtzOjE1NDU1OiI8ZGl2IGlkPSJzbWRfaGVs cCI+CgoJPGgxPnNtZF9mZWF0dXJlZDwvaDE+CgoJPHA+UHVsbCBvbmUgb3IgbW9yZSBhcnRp Y2xlcyBvdXQgb2YgdGhlIHJlZ3VsYXIgYXJ0aWNsZSBmbG93IGFuZCBwaW1wIHRoZW0gJiM4 MjEyOyBwZXJoYXBzIG9uIGEgc2VjdGlvbiBsYW5kaW5nIHBhZ2Ugb3IgeW91ciBob21lIHBh Z2UuPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5PbmUtY2xpY2sgc2Vs ZWN0aW9uIG9mIGFydGljbGVzIHRvIGZlYXR1cmU8L2xpPgoJCTxsaT5MYWJlbCB5b3VyIGZl YXR1cmVkIGFydGljbGVzLCBhbGxvd2luZyB5b3UgdG8gZ3JvdXAgdGhlbSBpbnRvIGFyZWFz IGxpa2UgRmVhdHVyZWQsIFRlYXNlcnMsIGV0YzwvbGk+CgkJPGxpPkFkZCBhbiBvcHRpb25h bCBkZXNjcmlwdGlvbiB0byBlYWNoIGFydGljbGUgc28geW91IGNhbiB1c2UgdGhhdCBhcyBj b3B5LCBpbnN0ZWFkIG9mIHNvbWV0aGluZyBmcm9tIHRoZSBhcnRpY2xlIGl0c2VsZiAoc3Vw cG9ydHMgVGV4dGlsZSBhbmQgc29tZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0 YWdzKTwvbGk+CgkJPGxpPlNlYXJjaCB5b3VyIGFydGljbGVzIGJ5IHRpdGxlIG9yIGxhYmVs OyBmaWx0ZXJpbmcgaW4gcmVhbC10aW1lPC9saT4KCQk8bGk+SGlkZGVuIHByZWYgYWxsb3dz IHByZS1maWx0ZXJpbmcgYnkgYW4gYWRtaW5pc3RyYXRvciBzbyBvbmx5IGFydGljbGVzIGZy b20gY2VydGFpbiBzZWN0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciBwaW1wYWdlPC9saT4KCQk8 bGk+RGlzcGxheSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBmZWF0dXJlZCBhcnRpY2xlcyB1c2lu ZyByZWd1bGFyIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGFydGljbGUgdGFnczwv bGk+CgkJPGxpPktlZXBzIHRyYWNrIG9mIHdoaWNoIGFydGljbGVzIGhhdmUgYmVlbiBzZWVu IGFscmVhZHkgb24gdGhlIHBhZ2Ugc28gbGF0ZXIgZmVhdHVyZWQgKG9yIHVuZmVhdHVyZWQp IGFydGljbGVzIGFyZW4mIzgyMTc7dCBkdXBsaWNhdGVkPC9saT4KCTwvdWw+CgoJPGgyPkF1 dGhvciAvIENyZWRpdHM8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNv bS9jb250YWN0Ij5TdGVmIERhd3NvbjwvYT48L3A+CgoJPGgyPkluc3RhbGxhdGlvbiAvIFVu aW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFzcz0icmVxdWlyZWQiPlJlcXVpcmVzIFRleHRw YXR0ZXJuIDQuMi4wKzwvcD4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVy IDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy8xMTc0L3NtZF9mZWF0 dXJlZCI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVm ZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGludG8g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMg cGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVm PSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MzM5Mzgi PmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1 Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPldoZW4geW91IGlu c3RhbGwgdGhlIHBsdWdpbiwgdGhlIG5lY2Vzc2FyeSB0YWJsZSBpcyBhdXRvbWF0aWNhbGx5 IGluc3RhbGxlZCBmb3IgeW91LiBUaGVyZSYjODIxNztzIGN1cnJlbnRseSBubyBmYWNpbGl0 eSBmb3IgcmVtb3ZpbmcgaXQgZHVyaW5nIHBsdWdpbiBvcGVyYXRpb24sIGJ1dCBpdCB3aWxs IGJlIGRlbGV0ZWQgaWYgdGhlIHBsdWdpbiBpcyByZW1vdmVkIGZyb20geW91ciBzeXN0ZW0u PC9wPgoKCTxwPlRvIHVuaW5zdGFsbCwgc2ltcGx5IGRlbGV0ZSB0aGUgcGx1Z2luIGZyb20g dGhlIEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFnZS48L3A+CgoJPGgyPkNvbmZpZ3VyaW5nIGZl YXR1cmVkIGFydGljbGVzPC9oMj4KCgk8cD5WaXNpdCB0aGUgPGVtPkNvbnRlbnQtJmd0O0Zl YXR1cmVkIGFydGljbGVzPC9lbT4gY29uZmlnIHRhYi4gQSBsaXN0IG9mIGFsbCBhcnRpY2xl cyAoZnJvbSB0aGUgYWRtaW4tc2VsZWN0ZWQgc2VjdGlvbnMpIGFyZSBwcmVzZW50ZWQgaW4g YSBncmlkLjwvcD4KCgk8aDM+VG8gZmVhdHVyZSBhbiBhcnRpY2xlPC9oMz4KCgk8cD5DbGlj ayBpdHMgbmFtZS4gSXQgd2lsbCBiZSBoaWdobGlnaHRlZCBhbmQgYW4gPGNvZGU+W0VkaXRd PC9jb2RlPiBidXR0b24gYXBwZWFycyBiZXNpZGUgaXQuIElmIHlvdSBjaG9vc2Ugbm90IHRv IGVkaXQgdGhlIGFydGljbGUgaW5mb3JtYXRpb24sIGl0IHdpbGwgYmUgZmVhdHVyZWQgYnV0 IHVubGFiZWxsZWQuPC9wPgoKCTxwPkNsaWNraW5nIDxjb2RlPltFZGl0XTwvY29kZT4gd2ls bCBkaXNwbGF5IHR3byBpbnB1dCBib3hlczo8L3A+CgoJPHVsPgoJCTxsaT48c3Ryb25nPkxh YmVsPC9zdHJvbmc+IDogYWxsb3dzIHlvdSB0byBsYWJlbCAoZ3JvdXApIHRoZSBhcnRpY2xl IHdpdGggb3RoZXJzIG9mIGEgc2ltaWxhciBmZWF0dXJlZCBzdGF0dXMuIEZvciBleGFtcGxl LCB5b3UgY291bGQgbGFiZWwgc29tZSBhcnRpY2xlcyB0byBnbyBpbiBhICYjODIxNjt0ZWFz ZXJzJiM4MjE3OyBibG9jayBvbiB5b3VyIGhvbWUgcGFnZSBieSBsYWJlbGxpbmcgZWFjaCBw b3RlbnRpYWwgYXJ0aWNsZSB3aXRoIDxjb2RlPlRlYXNlcjwvY29kZT4uIEJlIGNhcmVmdWw6 IDxzdHJvbmc+bGFiZWxzIGFyZSBjYXNlIHNlbnNpdGl2ZTwvc3Ryb25nPjwvbGk+CgkJPGxp PjxzdHJvbmc+RGVzY3JpcHRpb248L3N0cm9uZz4gOiBhbGxvd3MgeW91IHRvIHN0b3JlIHNv bWUgVGV4dGlsZS1hd2FyZSBzdXBwb3J0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhcnRp Y2xlLiBUaGlzIGNvdWxkIHNpbXBseSBiZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB5 b3VyIG93biB1c2UsIG9yIHNvbWUgY29weSB0aGF0IHlvdSBtYXkgd2lzaCB0byBkaXNwbGF5 IGluIHlvdXIgdGVhc2VycyBibG9jayB0byBlbnRpY2UgcGVvcGxlIHRvIHJlYWQgdGhlIGFy dGljbGUuIEl0IGNhbiBiZSBhcyBzaW1wbGUgb3IgYXMgY29tcGxleCBhcyB5b3UgbGlrZSBh bmQgY2FuIGNvbnRhaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyAoaWYg dGhleSBtYWtlIHNlbnNlIHRvIHVzZSBhdCB0aGF0IHBvaW50ICYjODIxMjsgYXJ0aWNsZSB0 YWdzIGNhbm5vdCBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgYnV0IDxjb2RlPiZsdDt0eHA6c2l0 ZV91cmwgLyZndDs8L2NvZGU+IGNhbik8L2xpPgoJPC91bD4KCgk8cD5XaGVuIHlvdSYjODIx NztyZSBoYXBweSB3aXRoIHlvdXIgY2F0ZWdvcmlzYXRpb24gYW5kL29yIGRlc2NyaXB0aW9u IHRleHQsIGhpdCBTYXZlIHRvIHN0b3JlIGl0LiBZb3UgY2FuIGVkaXQgdGhlIGluZm9ybWF0 aW9uIGF0IGFueSB0aW1lIGJ5IGNsaWNraW5nIHRoZSBhcHByb3ByaWF0ZSA8Y29kZT5bRWRp dF08L2NvZGU+IGJ1dHRvbiBmcm9tIHRoZSBhcnRpY2xlIGxpc3QuPC9wPgoKCTxoMz5UbyB1 bmZlYXR1cmUgYW4gYXJ0aWNsZTwvaDM+CgoJPHA+Q2xpY2sgaXRzIG5hbWUgYWdhaW4uIFdo ZW4geW91IGNvbmZpcm0gdGhhdCB5b3UgYXJlIHN1cmUsIHRoZSBhcnRpY2xlJiM4MjE3O3Mg bGFiZWwgYW5kIGRlc2NyaXB0aW9uIGFyZSBkZWxldGVkLCBzbyBiZSBzdXJlIHlvdSByZWFs bHkgd2FudCB0byByZW1vdmUgdGhlbSwgb3IgaGF2ZSBiYWNrZWQgdGhlIGluZm9ybWF0aW9u IHVwIHNvbWV3aGVyZS48L3A+CgoJPGgzPkZpbmRpbmcgYXJ0aWNsZXMgdG8gZmVhdHVyZTwv aDM+CgoJPHA+V2l0aCBsYXJnZSBhcnRpY2xlIGxpc3RzIGl0IGNhbiBiZWNvbWUgZGlmZmlj dWx0IHRvIGZpbmQgdGhlIG9uZSB5b3Ugd2FudC4gSW4gdGhlIHRvcC1sZWZ0IGlzIGFuIDxl bT5BcnRpY2xlIGxpdmUgc2VhcmNoPC9lbT4uIENsaWNrIGl0IHRvIHJldmVhbCB0aGUgc2Vh cmNoIGNyaXRlcmlhLiBTaW1wbHkgc3RhcnQgdHlwaW5nIGluIHRoZSA8ZW0+QnkgbmFtZTwv ZW0+IGJveCBhbmQgeW91ciBhcnRpY2xlIGxpc3Qgd2lsbCBiZSByZWR1Y2VkIGFzIHlvdSB0 eXBlIHRvIG9ubHkgdGhvc2UgdGhhdCBtYXRjaC4gVHlwZSBtdWx0aXBsZSB3b3JkcyB0byBm aW5kIGFydGljbGVzIHRoYXQgY29udGFpbiBhbnkgb2YgdGhlIGdpdmVuIHdvcmRzLiBUbyBx dWlja2x5IGNsZWFyIHRoZSBib3gsIGhpdCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkVTQzwv c3Bhbj5hcGUga2V5LjwvcD4KCgk8cD5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUg c2VsZWN0IGxpc3QgdG8gY2hvb3NlIGFsbCBhcnRpY2xlcyB3aXRoIGEgcGFydGljdWxhciBs YWJlbC4gVGhlIGVtcHR5IGVudHJ5IGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QgbWVhbnMgJiM4 MjIwO2FsbCBhcnRpY2xlcyYjODIyMTsuIElmIHlvdSBjbGljayB0byBmZWF0dXJlIGFuIGFy dGljbGUgYnV0IGRvbiYjODIxNzt0IHN1cHBseSBhIGxhYmVsIHlvdSBjYW4gZGlzcGxheSBp dCBieSBjaG9vc2luZyB0aGUgPGNvZGU+W3VubGFiZWxsZWRdPC9jb2RlPiBpdGVtIGZyb20g dGhlIGxpc3QuIElmIHlvdSBoYXZlIGxhYmVsbGVkIGFueSBhcnRpY2xlcywgZWFjaCBsYWJl bCB5b3UgaGF2ZSBzdXBwbGllZCB3aWxsIGFsc28gYmUgYW4gb3B0aW9uIGluIHRoZSBsaXN0 LiBSZW1lbWJlciB0aGF0IGxhYmVscyBhcmUgY2FzZSBzZW5zaXRpdmUuPC9wPgoKCTxwPk5v dGUgdGhhdCBmaWx0ZXJpbmcgYnkgbmFtZSBvciBieSBsYWJlbCBhcmUgbXV0dWFsbHkgZXhj bHVzaXZlIGFjdGlvbnM6IHNlbGVjdGluZyBzb21ldGhpbmcgZnJvbSB0aGUgZHJvcGRvd24g d2lsbCBjbGVhciB0aGUgdGV4dCBib3gsIGFuZCB0eXBpbmcgc29tZXRoaW5nIGluIHRoZSB0 ZXh0IGJveCB3aWxsIHJlc2V0IHRoZSBkcm9wZG93bi48L3A+CgoJPHA+WW91ciBzZWFyY2gg Y3JpdGVyaWEgYXJlIHJlbWVtYmVyZWQgYmV0d2VlbiBlZGl0L2xpc3Qgdmlld3Mgc28geW91 IHdvbiYjODIxNzt0IGxvc2UgeW91ciBwbGFjZS48L3A+CgoJPGgzPlBsdWdpbiBjb25maWd1 cmF0aW9uPC9oMz4KCgk8cD5Zb3UgY2FuIGFsdGVyIHRoZSBiZWhhdmlvdXIgb2YgdGhlIHBs dWdpbiBieSBjcmVhdGluZyBzb21lIGhpZGRlbiBwcmVmZXJlbmNlcyAodGhlIHNtZF9wcmVm YWxpemVyIHBsdWdpbiBjYW4gaGVscCBoZXJlKS4gVGhlcmUgYXJlIGEgZmV3IHByZWZzIHlv dSBtYXkgZGVmaW5lOjwvcD4KCgk8b2w+CgkJPGxpPjxzdHJvbmc+c21kX2ZlYXR1cmVkX3By aXZzPC9zdHJvbmc+IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwcml2IGxldmVsIG51 bWJlcnMgdGhhdCBjYW4gYWNjZXNzIHRoZSA8ZW0+RmVhdHVyZWQgYXJ0aWNsZXM8L2VtPiB0 YWIuIERlZmF1bHQ6IDxjb2RlPjEsMjwvY29kZT48L2xpPgoJCTxsaT48c3Ryb25nPnNtZF9m ZWF0dXJlZF9ib3hfc2l6ZTwvc3Ryb25nPiA6IHRha2VzIGEgPGNvZGU+d2lkdGggeCBoZWln aHQ8L2NvZGU+IHZhbHVlIGFuZCBzcGVjaWZpZXMgdGhlIHNpemUgaW4gcGl4ZWxzIG9mIGVh Y2ggY2VsbCBpbiB0aGUgZ3JpZC4gRGVmYXVsdCBpcyA8Y29kZT4xNTB4NDA8L2NvZGU+PC9s aT4KCQk8bGk+PHN0cm9uZz5zbWRfZmVhdHVyZWRfc2VjdGlvbl9saXN0PC9zdHJvbmc+OiBk ZWZpbmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBzZWN0aW9uIG5hbWVzLiBUaGVzZSB3 aWxsIGJlIHRoZSBvbmx5IHNlY3Rpb25zIGZyb20gd2hpY2ggYXJ0aWNsZXMgYXJlIGFsbG93 ZWQgdG8gYmUgZmVhdHVyZWQ8L2xpPgoJCTxsaT48c3Ryb25nPnNtZF9mZWF0dXJlZF9zb3J0 PC9zdHJvbmc+IDogZGVmaW5lcyB0aGUgc29ydCBvcmRlciBvZiB0aGUgYXJ0aWNsZSBsaXN0 LiBVc2UgYW55IHZhbGlkIGRhdGFiYXNlIGNvbHVtbiBuYW1lIGZvbGxvd2VkIGJ5IGVpdGhl ciA8Y29kZT5hc2M8L2NvZGU+IG9yIDxjb2RlPmRlc2M8L2NvZGU+IHRvIGNob29zZSB0aGUg c29ydCBkaXJlY3Rpb24uIEZvciBleGFtcGxlLCA8Y29kZT5UaXRsZSBhc2M8L2NvZGU+LiBE ZWZhdXQgaXMgPGNvZGU+UG9zdGVkIGRlc2M8L2NvZGU+PC9saT4KCTwvb2w+CgoJPHA+SWYg dXNpbmcgc21kX3ByZWZhbGl6ZXIgdG8gY3JlYXRlIHRoZSBwcmVmcywgc2V0IHRoZSBuYW1l IGFuZCB2YWx1ZSBhcyBhYm92ZSBhbmQgdGhlbiBzZXQgdGhlIGZvbGxvd2luZyBhZGRpdGlv bmFsIHBhcmFtZXRlcnM6PC9wPgoKCTx1bD4KCQk8bGk+PHN0cm9uZz50eXBlPC9zdHJvbmc+ IDogaGlkZGVuPC9saT4KCQk8bGk+PHN0cm9uZz5ldmVudDwvc3Ryb25nPiA6IHNtZF9mZWF0 dXJlZDwvbGk+CgkJPGxpPjxzdHJvbmc+aW5wdXQgY29udHJvbDwvc3Ryb25nPiA6IHRleHRf aW5wdXQ8L2xpPgoJCTxsaT48c3Ryb25nPnVzZXI8L3N0cm9uZz4gOiAvIGVtcHR5IC88L2xp PgoJCTxsaT48c3Ryb25nPnBvc2l0aW9uPC9zdHJvbmc+OiAwPC9saT4KCTwvdWw+CgoJPGgy PkRpc3BsYXlpbmcgZmVhdHVyZWQgYXJ0aWNsZXM8L2gyPgoKCTxwPk9uY2UgeW91IGhhdmUg Y2hvc2VuIHlvdXIgZmVhdHVyZWQgYXJ0aWNsZXMsIHlvdSBuZWVkIGEgd2F5IHRvIGRpc3Bs YXkgdGhlbTo8L3A+CgoJPGgzPjxjb2RlPiZsdDt0eHA6c21kX2ZlYXR1cmVkIC8mZ3Q7PC9j b2RlPjwvaDM+CgoJPHA+QWN0cyBhIGJpdCBsaWtlIHRoZSBzdGFuZGFyZCA8Y29kZT4mbHQ7 dHhwOmFydGljbGUgLyZndDs8L2NvZGU+IHRhZyB0byBkaXNwbGF5IGZlYXR1cmVkIGFydGlj bGVzLiBBdHRyaWJ1dGVzOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5s YWJlbDwvc3Bhbj4gOiBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzIHdpdGggdGhpcyBsYWJl bC4gU3BlY2lmeSA8Y29kZT5sYWJlbD0mcXVvdDsmcXVvdDs8L2NvZGU+IHRvIGRpc3BsYXkg dW5sYWJlbGxlZCBhcnRpY2xlcyAod2hpY2ggYXJlIDxzdHJvbmc+bm90PC9zdHJvbmc+IHRo ZSBzYW1lIGFzIHVuZmVhdHVyZWQgYXJ0aWNsZXMpLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBv bWl0dGVkLCBhbGwgZmVhdHVyZWQgYXJ0aWNsZXMgJiM4MjEyOyBpcnJlc3BlY3RpdmUgb2Yg bGFiZWwgJiM4MjEyOyB3aWxsIGJlIGRpc3BsYXllZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5sYWJlbHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgJiM4MjEyOyB3aXRo b3V0IGJyYWNrZXRzICYjODIxMjsgdG8gYXBwbHkgdG8gdGhlIGxhYmVsIGF0dHJpYnV0ZS4g SWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIHRoZSBsYWJlbCBpdHNlbGYgaXMgZGlz cGxheWVkIGF0IHRoZSBoZWFkIG9mIHlvdXIgZmVhdHVyZWQgYXJ0aWNsZSBsaXN0LiBJZiB5 b3Ugd2lzaCB0byBkaXNwbGF5IHVubGFiZWxsZWQgYXJ0aWNsZXMgeW91IG5lZWQgdG8gc3Bl Y2lmeSB0aGUgPGNvZGU+dW5sYWJlbDwvY29kZT4gYXR0cmlidXRlIG9yIHlvdSYjODIxNzts bCBzZWUgbm8gbGFiZWwuIE5vdGUgdGhhdCB0aGlzIHRhZyBkaWZmZXJzIGZyb20gdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGNvbnZlbnRpb246IHlvdSB3aWxsIDxlbT5v bmx5PC9lbT4gc2VlIHRoZSBsYWJlbCBpZiB5b3Ugc3BlY2lmeSB0aGUgPGNvZGU+bGFiZWx0 YWc8L2NvZGU+LiBZb3UgY2FuIGRpc3BsYXkgdGhlIGxhYmVsIGluc2lkZSB5b3VyIGFydGlj bGVzIHVzaW5nIHRoZSA8Y29kZT4mbHQ7dHhwOmZlYXR1cmVkX2luZm8gLyZndDs8L2NvZGU+ IHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj51bmxhYmVsPC9zcGFuPiA6IHdo ZW4gdXNpbmcgPGNvZGU+bGFiZWw9JnF1b3Q7JnF1b3Q7PC9jb2RlPiAodG8gc2hvdyB1bmxh YmVsbGVkIGFydGljbGVzKSB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIGxhYmVsIHRv IHVzZSBpbnNpZGUgdGhlIDxjb2RlPmxhYmVsdGFnPC9jb2RlPi4gRGVmYXVsdDogJiM4MjIw O0ZlYXR1cmVkJiM4MjIxOzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aW1lPC9z cGFuPiA6IGxpbWl0IHRoZSBhcnRpY2xlcyB0byB0aG9zZSBpbiB0aGUgPGNvZGU+cGFzdDwv Y29kZT4sIHRoZSA8Y29kZT5mdXR1cmU8L2NvZGU+IG9yIDxjb2RlPmFueTwvY29kZT4uIERl ZmF1bHQ6IDxjb2RlPnBhc3Q8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnN0YXR1czwvc3Bhbj4gOiBvbmx5IGRpc3BsYXkgYXJ0aWNsZXMgb2YgdGhlIGdpdmVuIHN0 YXR1cyBudW1iZXIocykuIERlZmF1bHQ6IDxjb2RlPjQsNTwvY29kZT4gKGEuay5hLiBsaXZl IGFuZCBzdGlja3kpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNlY3Rpb248L3Nw YW4+IDogb25seSBkaXNwbGF5IGFydGljbGVzIGZyb20gdGhlIGdpdmVuIHNlY3Rpb24ocyku IElmIHRoZSBzZWN0aW9uIGxpc3QgaXMgcmVzdHJpY3RlZCB1c2luZyB0aGUgcGx1Z2luIHBy ZWZlcmVuY2VzLCB0aGUgc2VjdGlvbnMgdXNlZCBoZXJlIG11c3QgYWxzbyBiZSBpbiB0aGF0 IGxpc3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiB1c2Ug dGhpcyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHRvIGRpc3BsYXkgZWFj aCBhcnRpY2xlLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBjb250YWluZXIgY29udGVudHM8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGltaXQ8L3NwYW4+IDogbWF4aW11bSBudW1i ZXIgb2YgZmVhdHVyZWQgYXJ0aWNsZXMgdG8gZGlzcGxheTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5zb3J0PC9zcGFuPiA6IG9yZGVyIHRoZSBmZWF0dXJlZCBhcnRpY2xlcyBi eSA8Y29kZT5pZDwvY29kZT4sIDxjb2RlPmxhYmVsPC9jb2RlPiwgPGNvZGU+VGl0bGU8L2Nv ZGU+LCA8Y29kZT5Qb3N0ZWQ8L2NvZGU+LCBhbmQgc28gb24uIFRoZSBzYW1lIGxpc3QgYXZh aWxhYmxlIGZvciB0aGUgPGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9jb2RlPiB0YWcg YXJlIHVzYWJsZSBoZXJlLiBBZGQgPGNvZGU+YXNjPC9jb2RlPiBvciA8Y29kZT5kZXNjPC9j b2RlPiB0byB0aGUgYXR0cmlidXRlIHRvIGFsdGVyIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNv cnQuIFlvdSBtYXkgYWxzbyB1c2UgPGNvZGU+cmFuZCgpPC9jb2RlPiB0byBzb3J0IHRoZSBh cnRpY2xlcyByYW5kb21seTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53cmFwdGFn PC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyAmIzgyMTI7IHdpdGhvdXQgYnJhY2tldHMgJiM4 MjEyOyB0byB3cmFwIGFyb3VuZCB0aGUgbGlzdCBvZiBmZWF0dXJlZCBhcnRpY2xlczwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0 YWcgJiM4MjEyOyB3aXRob3V0IGJyYWNrZXRzICYjODIxMjsgb3IgdGV4dCB0byBwdXQgYmV0 d2VlbiBlYWNoIGFydGljbGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8 L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUg dG8gYXBwbHkgdG8gdGhlIHdyYXB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ aHRtbF9pZDwvc3Bhbj4gOiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5ET008L3NwYW4+IElEIHRv IGFwcGx5IHRvIHRoZSB3cmFwdGFnPC9saT4KCTwvdWw+CgoJPHA+WW91IG1heSB1c2UgdGhl IHRhZyBhcyBhIGNvbnRhaW5lciBhbmQgYW55IHRhZ3MgeW91IHNwZWNpZnkgd2lsbCBiZSBk aXNwbGF5ZWQgaW4gZWFjaCBmZWF0dXJlZCBhcnRpY2xlLiBZb3UgY2FuIHVzZSBzdGFuZGFy ZCBhcnRpY2xlIHRhZ3Mgc3VjaCBhcyA8Y29kZT4mbHQ7dHhwOnRpdGxlIC8mZ3Q7PC9jb2Rl PiwgPGNvZGU+Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O3R4cDpw ZXJtbGluayAvJmd0OzwvY29kZT4sIGV0YzwvcD4KCgk8cCBjbGFzcz0iaW1wb3J0YW50Ij5O b3RlIHRoYXQgeW91IGNhbiYjODIxNzt0IHVzZSA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJl ZCZndDs8L2NvZGU+IGluc2lkZSBhbiBhcnRpY2xlIG9yIGFuIEFydGljbGUgRm9ybS4gRG9p bmcgc28gd2lsbCB0cmlnZ2VyIGEgd2FybmluZyBiZWNhdXNlIGl0JiM4MjE3O3MgdGhlIHNh bWUgYXMgcHV0dGluZyBhbm90aGVyIGFydGljbGUgdGFnIGluc2lkZSBhbiBhcnRpY2xlLiBV c2UgdGhlIHRhZyBvbmx5IGluIFBhZ2VzLCBvciBpbiBhIEZvcm0gdGhhdCBpcyBuZXZlciBk aXJlY3RseSB1c2VkIHRvIGRpc3BsYXkgYXJ0aWNsZSBjb250ZW50LjwvcD4KCgk8cD5FYWNo IHRpbWUgeW91IHVzZSA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4g aXQgbWFrZXMgYSBub3RlIG9mIHRoZSBhcnRpY2xlcyBpdCBoYXMgZGlzcGxheWVkIGFuZCB3 aWxsIG5vdCBkdXBsaWNhdGUgYXJ0aWNsZXMgaW4gbGF0ZXIgdGFncy48L3A+CgoJPGgzPjxj b2RlPiZsdDt0eHA6c21kX2ZlYXR1cmVkX2luZm8gLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5B bGxvd3MgeW91IHRvIGRpc3BsYXkgdGhlIGxhYmVsIG9yIHRoZSBkZXNjcmlwdGlvbiB3aXRo aW4geW91ciA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4gIGZvcm0v Y29udGFpbmVyLjwvcD4KCgk8cD5IYXMgb25lIGF0dHJpYnV0ZTo8L3A+CgoJPHVsPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+aXRlbTwvc3Bhbj4gOiB0aGUgdGhpbmcgeW91IHdhbnQg dG8gZGlzcGxheS4gQ2hvb3NlIGZyb206Cgk8dWw+CgkJPGxpPjxzdHJvbmc+bGFiZWw8L3N0 cm9uZz46IHRoZSBsYWJlbDwvbGk+CgkJPGxpPjxzdHJvbmc+ZGVzY3JpcHRpb248L3N0cm9u Zz46IHRoZSBUZXh0aWxlLXByb2Nlc3NlZCBkZXNjcmlwdGlvbjwvbGk+Cgk8L3VsPjwvbGk+ Cgk8L3VsPgoKCTxoMz48Y29kZT4mbHQ7dHhwOnNtZF91bmZlYXR1cmVkIC8mZ3Q7PC9jb2Rl PjwvaDM+CgoJPHA+VXNlIHRoaXMgdGFnIGlmIHlvdSB3aXNoIHRvIHNob3cgdGhlICYjODIx NjtyZW1haW5pbmcmIzgyMTc7IGFydGljbGVzICYjODIxMjsgaS5lLiBvbmVzIG5vdCBhbHJl YWR5IGRpc3BsYXllZCBieSBhbnkgcHJlY2VkaW5nIDxjb2RlPiZsdDt0eHA6c21kX2ZlYXR1 cmVkIC8mZ3Q7PC9jb2RlPiB0YWdzLiBJdCBhY3RzIHZlcnkgbXVjaCBsaWtlIHRoZSBidWls dC1pbiBhcnRpY2xlIHRhZyAmIzgyMTI7IGFuZCB0YWtlcyBhbGwgdGhlIHNhbWUgYXR0cmli dXRlcyAmIzgyMTI7IGJ1dCBpdHMgY29udGV4dCBpcyAmIzgyMjA7YW55IGFydGljbGVzIGZy b20gYW55IHNlY3Rpb24gZGVmaW5lZCBpbiB0aGUgc21kX2ZlYXR1cmVkIHBsdWdpbiB0aGF0 IGhhdmUgbm90IGJlZW4gZGlzcGxheWVkIGFscmVhZHkmIzgyMjE7LjwvcD4KCgk8aDI+RXhh bXBsZXM8L2gyPgoKCTxoMz5FeGFtcGxlIDE6IENvbXBsZXRlIGRpcmVjdG9yeSBvZiBmZWF0 dXJlZCBhcnRpY2xlczwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4mbHQ7dHhwOnNtZF9mZWF0dXJlZCBsYWJlbHRhZz0mcXVvdDtoMiZxdW90OyBsaW1p dD0mcXVvdDsyMCZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7ZGwmcXVvdDsgc29ydD0mcXVv dDtsYWJlbCZxdW90OyZndDsKICAgJmx0O3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICAgICZs dDtoMiZndDsmbHQ7dHhwOnNtZF9mZWF0dXJlZF9pbmZvIGl0ZW09JnF1b3Q7bGFiZWwmcXVv dDsgLyZndDsmbHQ7L2gyJmd0OwogICAmbHQ7L3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICZs dDtkdCZndDsKICAgICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7 Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICZsdDsvZHQmZ3Q7CiAgICZsdDtkZCZndDsKICAg ICAgJmx0O3R4cDpleGNlcnB0IC8mZ3Q7CiAgICZsdDsvZGQmZ3Q7CiZsdDsvdHhwOnNtZF9m ZWF0dXJlZCZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMz5FeGFtcGxlIDI6IE9uZSBmZWF0dXJl ZCBhcnRpY2xlIGFuZCBzaXggdGVhc2VycyBvbiB0aGUgaG9tZSBwYWdlPC9oMz4KCgk8cD5T ZWxlY3QgYW4gYXJ0aWNsZSBhbmQgbGFiZWwgaXQgPGNvZGU+ZmVhdHVyZTwvY29kZT4uIFNl bGVjdCBzaXggb3RoZXJzIGFuZCBsYWJlbCB0aGVtIDxjb2RlPnRlYXNlcnM8L2NvZGU+LiBB ZGQgc29tZSBkZXNjcmlwdGlvbiB0ZXh0IHRvIHlvdXIgdGVhYXNlciBhcnRpY2xlcy48L3A+ CgoJPHA+SW4geW91ciBkZWZhdWx0IFBhZ2UsIHB1dCB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2ZlYXR1cmVkIGxhYmVs PSZxdW90O2ZlYXR1cmUmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O2RpdiZxdW90OyBodG1s X2lkPSZxdW90O21haW5fZmVhdHVyZSZxdW90OyZndDsKICAgJmx0O3R4cDpwZXJtbGluayZn dDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICZsdDt0eHA6 YXJ0aWNsZV9pbWFnZSBjbGFzcz0mcXVvdDtmZWF0X2ltYWdlJnF1b3Q7IC8mZ3Q7CiAgICZs dDtwIGNsYXNzPSZxdW90O2xlYWRpbiZxdW90OyZndDsmbHQ7dHhwOmV4Y2VycHQgLyZndDsm bHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsKPC9jb2RlPjwvcHJlPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZmVhdHVy ZWQgbGFiZWw9JnF1b3Q7dGVhc2VycyZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7dWwmcXVv dDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsgaHRtbF9pZD0mcXVvdDt0ZWFzZXJfYmxvY2smcXVv dDsmZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsv dHhwOnBlcm1saW5rJmd0OwogICAmbHQ7cCBjbGFzcz0mcXVvdDtsZWFkaW4mcXVvdDsmZ3Q7 Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7Jmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfZmVhdHVyZWQm Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JZiB5b3Ugd2FudGVkIHRvIGhhdmUgc29tZSBvdGhl ciBhcnRpY2xlcyBiZW5lYXRoIHRob3NlLCBidXQgZGlkbiYjODIxNzt0IHdhbnQgYW55IGR1 cGxpY2F0ZXMgdG8gYXBwZWFyIHlvdSBjb3VsZCB1c2U6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfdW5mZWF0dXJlZCBmb3JtPSZx dW90O215X2xpc3QmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMz5FeGFtcGxlIDM6 IFBlci1zZWN0aW9uIGxhbmRpbmcgcGFnZSBmZWF0dXJlZCBhcnRpY2xlczwvaDM+CgoJPHA+ SWYgeW91IGhhZCBhIHpvbyBzaXRlIHdpdGggYSBzZWNpdG9uIGZvciBwcmltYXRlcywgYSBz ZWN0aW9uIGZvciBtYW1tYWxzIGFuZCBhIHNlY3Rpb24gZm9yIHJlcHRpbGVzLCB3aGVuIHlv dSBzZXQgdXAgeW91ciBmZWF0dXJlZCBhcnRpY2xlIGxpc3QgZGVmaW5lIHRoZWlyIG5hbWVz IGxpa2UgdGhpczo8L3A+CgoJPHVsPgoJCTxsaT5GZWF0dXJlZCBwcmltYXRlczwvbGk+CgkJ PGxpPkZlYXR1cmVkIG1hbW1hbHM8L2xpPgoJCTxsaT5GZWF0dXJlZCByZXB0aWxlczwvbGk+ Cgk8L3VsPgoKCTxwPk9uIHlvdXIgc2VjdGlvbiBsYW5kaW5nIHBhZ2UgdGVtcGxhdGUgeW91 IGNhbiB0aGVuIGRvIHRoaXMgdG8gZGlzcGxheSBmb3VyIGFydGljbGVzIGZyb20gdGhlIHJl bGV2YW50IChjdXJyZW50KSBzZWN0aW9uOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDtoMiZndDtMb29rIHdobyYjMzk7cyBoZXJlOiZsdDsvaDIm Z3Q7CiZsdDt0eHA6c21kX2ZlYXR1cmVkIGxhYmVsPSYjMzk7RmVhdHVyZWQgJmx0O3R4cDpz ZWN0aW9uIC8mZ3Q7JiMzOTsKICAgICBzZWN0aW9uPSYjMzk7Jmx0O3R4cDpzZWN0aW9uIC8m Z3Q7JiMzOTsgbGltaXQ9JnF1b3Q7NCZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7ZGl2JnF1 b3Q7IGh0bWxfaWQ9JnF1b3Q7ZmVhdF9ibG9jayZxdW90OyZndDsKICAgJmx0O2RpdiBjbGFz cz0mcXVvdDtwaW1wZWRfYXJ0aWNsZSZxdW90OyZndDsKICAgICAgJmx0O3R4cDpwZXJtbGlu ayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICAgICZs dDt0eHA6c21kX2ZlYXR1cmVkX2luZm8gaXRlbT0mcXVvdDtkZXNjcmlwdGlvbiZxdW90OyAv Jmd0OwogICAmbHQ7L2RpdiZndDsKJmx0Oy90eHA6c21kX2ZlYXR1cmVkJmd0Owo8L2NvZGU+ PC9wcmU+Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHls ZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21k X2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmll ciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7 fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFw eCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9j azsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGgx IHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2lu OiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRv bTogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9u dDogMTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAj Mjc1Njg1OyBmb250OiBib2xkIDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFj aW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsg dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQg MTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAx MHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0g eyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJh Y2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFi bGUge3dpZHRoOjkwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9 CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBh ZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsg fQojc21kX2hlbHAgLmltcG9ydGFudCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFy Z2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9w OjVweDsgfQo8L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czoz OiJtZDUiO3M6MzI6IjU5NThhZTBiMDUyZTdlMWY4Y2MzM2MzOGM3MDhlYWM3Ijt9