# Name: zem_contact_reborn v4.5.0.0 # Type: Public plugin # Form mailer for Textpattern # Author: TXP Community # URL: http://forum.textpattern.com/viewtopic.php?id=23728 # 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: # ..................................................................... YToxMjp7czo0OiJuYW1lIjtzOjE4OiJ6ZW1fY29udGFjdF9yZWJvcm4iO3M6NjoiYXV0aG9y IjtzOjEzOiJUWFAgQ29tbXVuaXR5IjtzOjEwOiJhdXRob3JfdXJpIjtzOjUxOiJodHRwOi8v Zm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjM3MjgiO3M6NzoidmVy c2lvbiI7czo3OiI0LjUuMC4wIjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6ImNvZGUiO3M6Mjg1NzU6ImZ1bmN0aW9uIHplbV9j b250YWN0KCRhdHRzLCAkdGhpbmcgPSAnJykNCnsNCglnbG9iYWwgJHNpdGVuYW1lLCAkcHJl ZnMsICRwcm9kdWN0aW9uX3N0YXR1cywgJHplbV9jb250YWN0X2Zyb20sDQoJCSR6ZW1fY29u dGFjdF9yZWNpcGllbnQsICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1p dCwNCgkJJHplbV9jb250YWN0X2Zvcm0sICR6ZW1fY29udGFjdF9sYWJlbHMsICR6ZW1fY29u dGFjdF92YWx1ZXM7DQoNCglleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KA0KCQkn Y2xhc3MnICAgICAgICA9PiAnemVtQ29udGFjdEZvcm0nLA0KCQknY29weXNlbmRlcicgICA9 PiAwLA0KCQknZm9ybScgICAgICAgICA9PiAnJywNCgkJJ2Zyb20nICAgICAgICAgPT4gJycs DQoJCSdmcm9tX2Zvcm0nICAgID0+ICcnLA0KCQknbGFiZWwnICAgICAgICA9PiBnVHh0KCd6 ZW1fY29udGFjdF9jb250YWN0JyksDQoJCSdyZWRpcmVjdCcgICAgID0+ICcnLA0KCQknc2hv d19lcnJvcicgICA9PiAxLA0KCQknc2hvd19pbnB1dCcgICA9PiAxLA0KCQknc2VuZF9hcnRp Y2xlJyA9PiAwLA0KCQknc3ViamVjdCcgICAgICA9PiBnVHh0KCd6ZW1fY29udGFjdF9lbWFp bF9zdWJqZWN0JywgYXJyYXkoJ3tzaXRlfScgPT4gaHRtbF9lbnRpdHlfZGVjb2RlKCRzaXRl bmFtZSxFTlRfUVVPVEVTKSkpLA0KCQknc3ViamVjdF9mb3JtJyA9PiAnJywNCgkJJ3RvJyAg ICAgICAgICAgPT4gJycsDQoJCSd0b19mb3JtJyAgICAgID0+ICcnLA0KCQkndGhhbmtzJyAg ICAgICA9PiBncmFmKGdUeHQoJ3plbV9jb250YWN0X2VtYWlsX3RoYW5rcycpKSwNCgkJJ3Ro YW5rc19mb3JtJyAgPT4gJycNCgkpLCAkYXR0cykpOw0KDQoJdW5zZXQoJGF0dHNbJ3Nob3df ZXJyb3InXSwgJGF0dHNbJ3Nob3dfaW5wdXQnXSk7DQoJJHplbV9jb250YWN0X2Zvcm1faWQg PSBtZDUoc2VyaWFsaXplKCRhdHRzKS5wcmVnX3JlcGxhY2UoJy9bXHRcc1xyXG5dLycsJycs JHRoaW5nKSk7DQoJJHplbV9jb250YWN0X3N1Ym1pdCA9IChwcygnemVtX2NvbnRhY3RfZm9y bV9pZCcpID09ICR6ZW1fY29udGFjdF9mb3JtX2lkKTsNCg0KCWlmICghaXNfY2FsbGFibGUo J21haWwnKSkNCgl7DQoJCXJldHVybiAoJHByb2R1Y3Rpb25fc3RhdHVzID09ICdsaXZlJykg Pw0KCQkJZ1R4dCgnemVtX2NvbnRhY3RfbWFpbF9zb3JyeScpIDoNCgkJCWdUeHQoJ3dhcm5f bWFpbF91bmF2YWlsYWJsZScpOw0KCX0NCg0KCXN0YXRpYyAkaGVhZGVyc19zZW50ID0gZmFs c2U7DQoJaWYgKCEkaGVhZGVyc19zZW50KSB7DQoJCWhlYWRlcignTGFzdC1Nb2RpZmllZDog Jy5nbWRhdGUoJ0QsIGQgTSBZIEg6aTpzJyx0aW1lKCktMzYwMCoyNCo3KS4nIEdNVCcpOw0K CQloZWFkZXIoJ0V4cGlyZXM6ICcuZ21kYXRlKCdELCBkIE0gWSBIOmk6cycsdGltZSgpKzYw MCkuJyBHTVQnKTsNCgkJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbXVzdC1y ZXZhbGlkYXRlJyk7DQoJCSRoZWFkZXJzX3NlbnQgPSB0cnVlOw0KCX0NCg0KCSRub25jZSAg ID0gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKHBzKCd6ZW1fY29udGFjdF9ub25jZScpKTsN CgkkcmVub25jZSA9IGZhbHNlOw0KDQoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpDQoJew0K CQlzYWZlX2RlbGV0ZSgndHhwX2Rpc2N1c3Nfbm9uY2UnLCAnaXNzdWVfdGltZSA8IGRhdGVf c3ViKG5vdygpLCBpbnRlcnZhbCAxMCBtaW51dGUpJyk7DQoJCWlmICgkcnMgPSBzYWZlX3Jv dygndXNlZCcsICd0eHBfZGlzY3Vzc19ub25jZScsICJub25jZSA9ICckbm9uY2UnIikpDQoJ CXsNCgkJCWlmICgkcnNbJ3VzZWQnXSkNCgkJCXsNCgkJCQl1bnNldCgkemVtX2NvbnRhY3Rf ZXJyb3IpOw0KCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gZ1R4dCgnemVtX2NvbnRhY3Rf Zm9ybV91c2VkJyk7DQoJCQkJJHJlbm9uY2UgPSB0cnVlOw0KCQkJCSRfUE9TVCA9IGFycmF5 KCk7DQoJCQkJJF9QT1NUWyd6ZW1fY29udGFjdF9zdWJtaXQnXSA9IFRSVUU7DQoJCQkJJF9Q T1NUWyd6ZW1fY29udGFjdF9mb3JtX2lkJ10gPSAkemVtX2NvbnRhY3RfZm9ybV9pZDsNCgkJ CQkkX1BPU1RbJ3plbV9jb250YWN0X25vbmNlJ10gPSAkbm9uY2U7DQoJCQl9DQoJCX0NCgkJ ZWxzZQ0KCQl7DQoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IGdUeHQoJ3plbV9jb250YWN0 X2Zvcm1fZXhwaXJlZCcpOw0KCQkJJHJlbm9uY2UgPSB0cnVlOw0KCQl9DQoJfQ0KDQoJaWYg KCR6ZW1fY29udGFjdF9zdWJtaXQgYW5kICRub25jZSBhbmQgISRyZW5vbmNlKQ0KCXsNCgkJ JHplbV9jb250YWN0X25vbmNlID0gJG5vbmNlOw0KCX0NCg0KCWVsc2VpZiAoISRzaG93X2Vy cm9yIG9yICRzaG93X2lucHV0KQ0KCXsNCgkJJHplbV9jb250YWN0X25vbmNlID0gbWQ1KHVu aXFpZChyYW5kKCksIHRydWUpKTsNCgkJc2FmZV9pbnNlcnQoJ3R4cF9kaXNjdXNzX25vbmNl JywgImlzc3VlX3RpbWUgPSBub3coKSwgbm9uY2UgPSAnJHplbV9jb250YWN0X25vbmNlJyIp Ow0KCX0NCg0KCSRmb3JtID0gKCRmb3JtKSA/IGZldGNoX2Zvcm0oJGZvcm0pIDogJHRoaW5n Ow0KDQoJaWYgKGVtcHR5KCRmb3JtKSkNCgl7DQoJCSRmb3JtID0gJw0KPHR4cDp6ZW1fY29u dGFjdF90ZXh0IGxhYmVsPSInLmdUeHQoJ3plbV9jb250YWN0X25hbWUnKS4nIiAvPjxiciAv Pg0KPHR4cDp6ZW1fY29udGFjdF9lbWFpbCAvPjxiciAvPicuDQooJHNlbmRfYXJ0aWNsZSA/ ICc8dHhwOnplbV9jb250YWN0X2VtYWlsIHNlbmRfYXJ0aWNsZT0iMSIgbGFiZWw9IicuZ1R4 dCgnemVtX2NvbnRhY3RfcmVjaXBpZW50JykuJyIgLz48YnIgLz4nIDogJycpLg0KJzx0eHA6 emVtX2NvbnRhY3RfdGV4dGFyZWEgLz48YnIgLz4NCjx0eHA6emVtX2NvbnRhY3Rfc3VibWl0 IC8+DQonOw0KCX0NCg0KCSRmb3JtID0gcGFyc2UoJGZvcm0pOw0KDQoJaWYgKCR0b19mb3Jt KQ0KCXsNCgkJJHRvID0gcGFyc2UoZmV0Y2hfZm9ybSgkdG9fZm9ybSkpOw0KCX0NCg0KCWlm ICghJHRvIGFuZCAhJHNlbmRfYXJ0aWNsZSkNCgl7DQoJCXJldHVybiBnVHh0KCd6ZW1fY29u dGFjdF90b19taXNzaW5nJyk7DQoJfQ0KDQoJJG91dCA9ICcnOw0KDQoJaWYgKCEkemVtX2Nv bnRhY3Rfc3VibWl0KSB7DQoJICAjIGRvbid0IHNob3cgZXJyb3JzIG9yIHNlbmQgbWFpbA0K CX0NCg0KCWVsc2VpZiAoIWVtcHR5KCR6ZW1fY29udGFjdF9lcnJvcikpDQoJew0KCQlpZiAo JHNob3dfZXJyb3Igb3IgISRzaG93X2lucHV0KQ0KCQl7DQoJCQkkb3V0IC49IG4uJzx1bCBj bGFzcz0iemVtRXJyb3IiPic7DQoNCgkJCWZvcmVhY2ggKGFycmF5X3VuaXF1ZSgkemVtX2Nv bnRhY3RfZXJyb3IpIGFzICRlcnJvcikNCgkJCXsNCgkJCQkkb3V0IC49IG4udC4nPGxpPicu JGVycm9yLic8L2xpPic7DQoJCQl9DQoNCgkJCSRvdXQgLj0gbi4nPC91bD4nOw0KDQoJCQlp ZiAoISRzaG93X2lucHV0KSByZXR1cm4gJG91dDsNCgkJfQ0KCX0NCg0KCWVsc2VpZiAoJHNo b3dfaW5wdXQgYW5kIGlzX2FycmF5KCR6ZW1fY29udGFjdF9mb3JtKSkNCgl7DQoJCS8vLyBs b2FkIGFuZCBjaGVjayBzcGFtIHBsdWdpbnMvDQoJCWNhbGxiYWNrX2V2ZW50KCd6ZW1jb250 YWN0LnN1Ym1pdCcpOw0KCQkkZXZhbHVhdGlvbiA9JiBnZXRfemVtY29udGFjdF9ldmFsdWF0 b3IoKTsNCgkJJGNsZWFuID0gJGV2YWx1YXRpb24tPmdldF96ZW1jb250YWN0X3N0YXR1cygp Ow0KCQlpZiAoJGNsZWFuICE9IDApIHsNCgkJCXJldHVybiBnVHh0KCd6ZW1fY29udGFjdF9z cGFtJyk7DQoJCX0NCg0KCQlpZiAoJGZyb21fZm9ybSkNCgkJew0KCQkJJGZyb20gPSBwYXJz ZShmZXRjaF9mb3JtKCRmcm9tX2Zvcm0pKTsNCgkJfQ0KDQoJCWlmICgkc3ViamVjdF9mb3Jt KQ0KCQl7DQoJCQkkc3ViamVjdCA9IHBhcnNlKGZldGNoX2Zvcm0oJHN1YmplY3RfZm9ybSkp Ow0KCQl9DQoNCgkJJHNlcCA9ICFpc193aW5kb3dzKCkgPyAiXG4iIDogIlxyXG4iOw0KDQoJ CSRtc2cgPSBhcnJheSgpOw0KDQoJCWZvcmVhY2ggKCR6ZW1fY29udGFjdF9sYWJlbHMgYXMg JG5hbWUgPT4gJGxhYmVsKQ0KCQl7DQoJCQlpZiAoIXRyaW0oJHplbV9jb250YWN0X3ZhbHVl c1skbmFtZV0pKSBjb250aW51ZTsNCgkJCSRtc2dbXSA9ICRsYWJlbC4nOiAnLiR6ZW1fY29u dGFjdF92YWx1ZXNbJG5hbWVdOw0KCQl9DQoNCgkJaWYgKCRzZW5kX2FydGljbGUpDQoJCXsN CgkJCWdsb2JhbCAkdGhpc2FydGljbGU7DQoJCQkkc3ViamVjdCA9IHN0cl9yZXBsYWNlKCcm IzM4OycsICcmJywgJHRoaXNhcnRpY2xlWyd0aXRsZSddKTsNCgkJCSRtc2dbXSA9IHBlcm1s aW5rdXJsKCR0aGlzYXJ0aWNsZSk7DQoJCQkkbXNnW10gPSAkc3ViamVjdDsNCgkJCSRzX2Fy ID0gYXJyYXkoJyYjODIxNjsnLCAnJiM4MjE3OycsICcmIzgyMjA7JywgJyYjODIyMTsnLCAn JiM4MjE3OycsICcmIzgyNDI7JywgJyYjODI0MzsnLCAnJiM4MjMwOycsICcmIzgyMTE7Jywg JyYjODIxMjsnLCAnJiMyMTU7JywgJyYjODQ4MjsnLCAnJiMxNzQ7JywgJyYjMTY5OycsICcm bHQ7JywgJyZndDsnLCAnJnF1b3Q7JywgJyZhbXA7JywgJyYjMzg7JywgIlx0IiwgJzxwJyk7 DQoJCQlpZiAoJHByZWZzWydvdmVycmlkZV9lbWFpbGNoYXJzZXQnXSBhbmQgaXNfY2FsbGFi bGUoJ3V0ZjhfZGVjb2RlJykpIHsNCgkJCQkkcl9hciA9IGFycmF5KCInIiwgIiciLCAnIics ICciJywgIiciLCAiJyIsICciJywgJy4uLicsICctJywgJy0tJywgJ3gnLCAnW3RtXScsICco ciknLCAnKGMpJywgJzwnLCAnPicsICciJywgJyYnLCAnJicsICcgJywgIlxuPHAiKTsNCgkJ CX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkcl9hciA9IGFycmF5KCfigJgnLCAn4oCZJywgJ+KA nCcsICfigJ0nLCAn4oCZJywgJz8nLCAnPycsICfigKYnLCAn4oCTJywgJ+KAlCcsICfDlycs ICfihKInLCAnwq4nLCAnwqknLCAnPCcsICc+JywgJyInLCAnJicsICcmJywgJyAnLCAiXG48 cCIpOw0KCQkJfQ0KCQkJJG1zZ1tdID0gdHJpbShzdHJpcF90YWdzKHN0cl9yZXBsYWNlKCRz X2FyLCRyX2FyLCh0cmltKHN0cmlwX3RhZ3MoJHRoaXNhcnRpY2xlWydleGNlcnB0J10pKSA/ ICR0aGlzYXJ0aWNsZVsnZXhjZXJwdCddIDogJHRoaXNhcnRpY2xlWydib2R5J10pKSkpOw0K CQkJaWYgKGVtcHR5KCR6ZW1fY29udGFjdF9yZWNpcGllbnQpKQ0KCQkJew0KCQkJCXJldHVy biBnVHh0KCd6ZW1fY29udGFjdF9maWVsZF9taXNzaW5nJywgYXJyYXkoJ3tmaWVsZH0nID0+ IGdUeHQoJ3plbV9jb250YWN0X3JlY2lwaWVudCcpKSk7DQoJCQl9DQoJCQllbHNlDQoJCQl7 DQoJCQkJJHRvID0gJHplbV9jb250YWN0X3JlY2lwaWVudDsNCgkJCX0NCgkJfQ0KDQoJCSRt c2cgPSBqb2luKCJcblxuIiwgJG1zZyk7DQoJCSRtc2cgPSBzdHJfcmVwbGFjZSgiXHJcbiIs ICJcbiIsICRtc2cpOw0KCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxyIiwgIlxuIiwgJG1zZyk7 DQoJCSRtc2cgPSBzdHJfcmVwbGFjZSgiXG4iLCAkc2VwLCAkbXNnKTsNCg0KCQlpZiAoJGZy b20pDQoJCXsNCgkJCSRyZXBseSA9ICR6ZW1fY29udGFjdF9mcm9tOw0KCQl9DQoNCgkJZWxz ZQ0KCQl7DQoJCQkkZnJvbSA9ICR6ZW1fY29udGFjdF9mcm9tOw0KCQkJJHJlcGx5ID0gJyc7 DQoJCX0NCg0KCQkkZnJvbSAgICA9IHplbV9jb250YWN0X3N0cmlwKCRmcm9tKTsNCgkJJHRv ICAgICAgPSB6ZW1fY29udGFjdF9zdHJpcCgkdG8pOw0KCQkkc3ViamVjdCA9IHplbV9jb250 YWN0X3N0cmlwKCRzdWJqZWN0KTsNCgkJJHJlcGx5ICAgPSB6ZW1fY29udGFjdF9zdHJpcCgk cmVwbHkpOw0KCQkkbXNnICAgICA9IHplbV9jb250YWN0X3N0cmlwKCRtc2csIEZBTFNFKTsN Cg0KCQlpZiAoJHByZWZzWydvdmVycmlkZV9lbWFpbGNoYXJzZXQnXSBhbmQgaXNfY2FsbGFi bGUoJ3V0ZjhfZGVjb2RlJykpDQoJCXsNCgkJCSRjaGFyc2V0ID0gJ0lTTy04ODU5LTEnOw0K CQkJJHN1YmplY3QgPSB1dGY4X2RlY29kZSgkc3ViamVjdCk7DQoJCQkkbXNnICAgICA9IHV0 ZjhfZGVjb2RlKCRtc2cpOw0KCQl9DQoNCgkJZWxzZQ0KCQl7DQoJCQkkY2hhcnNldCA9ICdV VEYtOCc7DQoJCX0NCg0KCQkkc3ViamVjdCA9IHplbV9jb250YWN0X21haWxoZWFkZXIoJHN1 YmplY3QsICd0ZXh0Jyk7DQoNCgkJJGhlYWRlcnMgPSAnRnJvbTogJy4kZnJvbS4NCgkJCSgk cmVwbHkgPyAoJHNlcC4nUmVwbHktVG86ICcuJHJlcGx5KSA6ICcnKS4NCgkJCSRzZXAuJ1gt TWFpbGVyOiBUZXh0cGF0dGVybiAoemVtX2NvbnRhY3RfcmVib3JuKScuDQoJCQkkc2VwLidY LU9yaWdpbmF0aW5nLUlQOiAnLnplbV9jb250YWN0X3N0cmlwKCghZW1wdHkoJF9TRVJWRVJb J0hUVFBfWF9GT1JXQVJERURfRk9SJ10pID8gJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURf Rk9SJ10uJyB2aWEgJyA6ICcnKS4kX1NFUlZFUlsnUkVNT1RFX0FERFInXSkuDQoJCQkkc2Vw LidDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Jy4NCgkJCSRzZXAuJ0NvbnRlbnQt VHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iJy4kY2hhcnNldC4nIic7DQoNCgkJc2FmZV91 cGRhdGUoJ3R4cF9kaXNjdXNzX25vbmNlJywgInVzZWQgPSAnMScsIGlzc3VlX3RpbWUgPSBu b3coKSIsICJub25jZSA9ICckbm9uY2UnIik7DQoNCgkJaWYgKG1haWwoJHRvLCAkc3ViamVj dCwgJG1zZywgJGhlYWRlcnMpKQ0KCQl7DQoJCQkkX1BPU1QgPSBhcnJheSgpOw0KDQoJCQlp ZiAoJGNvcHlzZW5kZXIgYW5kICR6ZW1fY29udGFjdF9mcm9tKQ0KCQkJew0KCQkJCW1haWwo emVtX2NvbnRhY3Rfc3RyaXAoJHplbV9jb250YWN0X2Zyb20pLCAkc3ViamVjdCwgJG1zZywg JGhlYWRlcnMpOw0KCQkJfQ0KDQoJCQlpZiAoJHJlZGlyZWN0KQ0KCQkJew0KCQkJCXdoaWxl IChAb2JfZW5kX2NsZWFuKCkpOw0KCQkJCSR1cmkgPSBodS5sdHJpbSgkcmVkaXJlY3QsJy8n KTsNCgkJCQlpZiAoZW1wdHkoJF9TRVJWRVJbJ0ZDR0lfUk9MRSddKSBhbmQgZW1wdHkoJF9F TlZbJ0ZDR0lfUk9MRSddKSkNCgkJCQl7DQoJCQkJCXR4cF9zdGF0dXNfaGVhZGVyKCczMDMg U2VlIE90aGVyJyk7DQoJCQkJCWhlYWRlcignTG9jYXRpb246ICcuJHVyaSk7DQoJCQkJCWhl YWRlcignQ29ubmVjdGlvbjogY2xvc2UnKTsNCgkJCQkJaGVhZGVyKCdDb250ZW50LUxlbmd0 aDogMCcpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQkkdXJpID0gaHRtbHNwZWNp YWxjaGFycygkdXJpKTsNCgkJCQkJJHJlZnJlc2ggPSBnVHh0KCd6ZW1fY29udGFjdF9yZWZy ZXNoJyk7DQoJCQkJCWVjaG8gPDw8RU5EDQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1cz Qy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcv VFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+DQo8aHRtbCB4bWxucz0i aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5nPSJlbiI+ DQo8aGVhZD4NCgk8dGl0bGU+JHNpdGVuYW1lPC90aXRsZT4NCgk8bWV0YSBodHRwLWVxdWl2 PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4N Cgk8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0kdXJpIiAvPg0K PC9oZWFkPg0KPGJvZHk+DQo8YSBocmVmPSIkdXJpIj4kcmVmcmVzaDwvYT4NCjwvYm9keT4N CjwvaHRtbD4NCkVORDsNCgkJCQl9DQoJCQkJZXhpdDsNCgkJCX0NCg0KCQkJZWxzZQ0KCQkJ ew0KCQkJCXJldHVybiAnPGRpdiBjbGFzcz0iemVtVGhhbmtzIiBpZD0iemNyJy4kemVtX2Nv bnRhY3RfZm9ybV9pZC4nIj4nIC4NCgkJCQkJKCR0aGFua3NfZm9ybSA/IGZldGNoX2Zvcm0o JHRoYW5rc19mb3JtKSA6ICR0aGFua3MpIC4NCgkJCQkJJzwvZGl2Pic7DQoJCQl9DQoJCX0N Cg0KCQllbHNlDQoJCXsNCgkJCSRvdXQgLj0gZ3JhZihnVHh0KCd6ZW1fY29udGFjdF9tYWls X3NvcnJ5JykpOw0KCQl9DQoJfQ0KDQoJaWYgKCRzaG93X2lucHV0IGFuZCAhJHNlbmRfYXJ0 aWNsZSBvciBncHMoJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNsZScpKQ0KCXsNCgkJcmV0dXJu ICc8Zm9ybSBtZXRob2Q9InBvc3QiJy4oKCEkc2hvd19lcnJvciBhbmQgJHplbV9jb250YWN0 X2Vycm9yKSA/ICcnIDogJyBpZD0iemNyJy4kemVtX2NvbnRhY3RfZm9ybV9pZC4nIicpLicg Y2xhc3M9IicuJGNsYXNzLiciIGFjdGlvbj0iJy5odG1sc3BlY2lhbGNoYXJzKHNlcnZlclNl dCgnUkVRVUVTVF9VUkknKSkuJyN6Y3InLiR6ZW1fY29udGFjdF9mb3JtX2lkLiciPicuDQoJ CQkoICRsYWJlbCA/IG4uJzxmaWVsZHNldD4nIDogbi4nPGRpdj4nICkuDQoJCQkoICRsYWJl bCA/IG4uJzxsZWdlbmQ+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGVnZW5kPicg OiAnJyApLg0KCQkJJG91dC4NCgkJCW4uJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Inpl bV9jb250YWN0X25vbmNlIiB2YWx1ZT0iJy4kemVtX2NvbnRhY3Rfbm9uY2UuJyIgLz4nLg0K CQkJbi4nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iemVtX2NvbnRhY3RfZm9ybV9pZCIg dmFsdWU9IicuJHplbV9jb250YWN0X2Zvcm1faWQuJyIgLz4nLg0KCQkJJGZvcm0uDQoJCQlj YWxsYmFja19ldmVudCgnemVtY29udGFjdC5mb3JtJykuDQoJCQkoICRsYWJlbCA/IChuLic8 L2ZpZWxkc2V0PicpIDogKG4uJzwvZGl2PicpICkuDQoJCQluLic8L2Zvcm0+JzsNCgl9DQoN CglyZXR1cm4gJyc7DQp9DQoNCmZ1bmN0aW9uIHplbV9jb250YWN0X3N0cmlwKCRzdHIsICRo ZWFkZXIgPSBUUlVFKSB7DQoJaWYgKCRoZWFkZXIpICRzdHIgPSBzdHJpcF9ybigkc3RyKTsN CglyZXR1cm4gcHJlZ19yZXBsYWNlKCcvW1x4MDBdLycsICcgJywgJHN0cik7DQp9DQoNCmZ1 bmN0aW9uIHplbV9jb250YWN0X3RleHQoJGF0dHMpDQp7DQoJZ2xvYmFsICR6ZW1fY29udGFj dF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdDsNCg0KCWV4dHJhY3QoemVtX2NvbnRhY3Rf bEF0dHMoYXJyYXkoDQoJCSd0eXBlJyAgICAgICAgID0+ICd0ZXh0JywNCgkJJ2NsYXNzJyAg ICAgICAgPT4gJ3plbVRleHQnLA0KCQknYnJlYWsnICAgICAgICA9PiAnJywNCgkJJ2lzRXJy b3InICAgICAgPT4gJycsDQoJCSdsYWJlbCcgICAgICAgID0+IGdUeHQoJ3plbV9jb250YWN0 X3RleHQnKSwNCgkJJ21heCcgICAgICAgICAgPT4gMTAwLA0KCQknbWluJyAgICAgICAgICA9 PiAwLA0KCQknc3RlcCcgICAgICAgICA9PiAnJywNCgkJJ25hbWUnICAgICAgICAgPT4gJycs DQoJCSdyZXF1aXJlZCcgICAgID0+IDEsDQoJCSdwYXR0ZXJuJyAgICAgID0+ICcnLA0KCQkn cGxhY2Vob2xkZXInICA9PiAnJywNCiAgICAgICAgICAgICAgICAndmFsdWUnICAgICAgICA9 PiAnJywNCgkJJ2F1dG9mb2N1cycgICAgPT4gJycsDQoJCSdhdXRvY29tcGxldGUnID0+ICcn LA0KCQknc2l6ZScgICAgICAgICA9PiAnJywNCgkpLCAkYXR0cykpOw0KDQoJJHNpemUgPSBp bnR2YWwoJHNpemUpOw0KDQoJJG51bWVyaWNfdHlwZXMgPSBhcnJheSgNCgkJJ2RhdGUnLA0K CQknZGF0ZXRpbWUnLA0KCQknZGF0ZXRpbWUtbG9jYWwnLA0KCQknbW9udGgnLA0KCQknbnVt YmVyJywNCgkJJ3JhbmdlJywNCgkJJ3RpbWUnLA0KCQknd2VlaycsDQoJKTsNCg0KCWlmIChl bXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOw0K DQoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpDQoJew0KCQkkdmFsdWUgPSB0cmltKHBzKCRu YW1lKSk7DQoJCSR1dGY4bGVuID0gcHJlZ19tYXRjaF9hbGwoIi8uL3N1IiwgJHZhbHVlLCAk dXRmOGFyKTsNCgkJJGhsYWJlbCA9IGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKTsNCg0KCQlp ZiAoc3RybGVuKCR2YWx1ZSkpDQoJCXsNCgkJCWlmICghJHV0ZjhsZW4pDQoJCQl7DQoJCQkJ JHplbV9jb250YWN0X2Vycm9yW10gPSBnVHh0KCd6ZW1fY29udGFjdF9pbnZhbGlkX3V0Zjgn LCBhcnJheSgne2ZpZWxkfScgPT4gJGhsYWJlbCkpOw0KCQkJCSRpc0Vycm9yID0gImVycm9y RWxlbWVudCI7DQoJCQl9DQoNCgkJCWVsc2VpZiAoJG1pbiBhbmQgKCFpbl9hcnJheSgkdHlw ZSwgJG51bWVyaWNfdHlwZXMpKSBhbmQgJHV0ZjhsZW4gPCAkbWluKQ0KCQkJew0KCQkJCSR6 ZW1fY29udGFjdF9lcnJvcltdID0gZ1R4dCgnemVtX2NvbnRhY3RfbWluX3dhcm5pbmcnLCBh cnJheSgne2ZpZWxkfScgPT4gJGhsYWJlbCwgJ3t2YWx1ZX0nID0+ICRtaW4pKTsNCgkJCQkk aXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOw0KCQkJfQ0KDQoJCQllbHNlaWYgKCRtYXggYW5k ICghaW5fYXJyYXkoJHR5cGUsICRudW1lcmljX3R5cGVzKSkgYW5kICR1dGY4bGVuID4gJG1h eCkNCgkJCXsNCgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IGdUeHQoJ3plbV9jb250YWN0 X21heF93YXJuaW5nJywgYXJyYXkoJ3tmaWVsZH0nID0+ICRobGFiZWwsICd7dmFsdWV9JyA9 PiAkbWF4KSk7DQoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsNCgkJCX0NCg0KCQkJ ZWxzZWlmICgkbWluIGFuZCAoaW5fYXJyYXkoJHR5cGUsICRudW1lcmljX3R5cGVzKSkgYW5k ICR2YWx1ZSA8ICRtaW4pDQoJCQl7DQoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSBnVHh0 KCd6ZW1fY29udGFjdF9taW52YWxfd2FybmluZycsIGFycmF5KCd7ZmllbGR9JyA9PiAkaGxh YmVsLCAne3ZhbHVlfScgPT4gJG1pbikpOw0KCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVu dCI7DQoJCQl9DQoNCgkJCWVsc2VpZiAoJG1heCBhbmQgKGluX2FycmF5KCR0eXBlLCAkbnVt ZXJpY190eXBlcykpIGFuZCAkdmFsdWUgPiAkbWF4KQ0KCQkJew0KCQkJCSR6ZW1fY29udGFj dF9lcnJvcltdID0gZ1R4dCgnemVtX2NvbnRhY3RfbWF4dmFsX3dhcm5pbmcnLCBhcnJheSgn e2ZpZWxkfScgPT4gJGhsYWJlbCwgJ3t2YWx1ZX0nID0+ICRtYXgpKTsNCgkJCQkkaXNFcnJv ciA9ICJlcnJvckVsZW1lbnQiOw0KCQkJfQ0KDQoJCQllbHNlDQoJCQl7DQoJCQkJemVtX2Nv bnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlKTsNCgkJCX0NCgkJfQ0KCQllbHNl aWYgKCRyZXF1aXJlZCkNCgkJew0KCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSBnVHh0KCd6 ZW1fY29udGFjdF9maWVsZF9taXNzaW5nJywgYXJyYXkoJ3tmaWVsZH0nID0+ICRobGFiZWwp KTsNCgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7DQoJCX0NCgl9DQoNCgllbHNlDQoJ ew0KCQkkdmFsdWUgPSAkdmFsdWU7DQoJfQ0KDQoJJGRvY3R5cGUgPSBnZXRfcHJlZignZG9j dHlwZScpOw0KCSRtaW5fYXR0ID0gJG1heF9hdHQgPSAkc3RlcF9hdHQgPSAkdmFsdWVfYXR0 ID0gJyc7DQoNCglpZiAoJGRvY3R5cGUgIT09ICd4aHRtbCcgJiYgJHR5cGUgIT09ICd0ZXh0 JyAmJiAkdHlwZSAhPT0gJ2VtYWlsJyAmJiAkdHlwZSAhPT0gJ3VybCcgKSB7DQogIAkJJG1p bl9hdHQgPSAoJG1pbiAhPT0gJycpID8gJyBtaW49IicuJG1pbi4nIicgOiAnJzsNCgkJJG1h eF9hdHQgPSAoJG1heCAhPT0gJycpID8gJyBtYXg9IicuJG1heC4nIicgOiAnJzsNCgkJJHN0 ZXBfYXR0ID0gKCRzdGVwICE9PSAnJykgPyAnIHN0ZXA9IicuJHN0ZXAuJyInIDogJyc7DQog ICAgICAgICAgICAgICAgJHZhbHVlX2F0dCA9ICgkdmFsdWUgIT09ICcnKSA/ICcgdmFsdWU9 IicuJHZhbHVlLiciJyA6ICcnOw0KCX0NCg0KCSRzaXplID0gKCRzaXplKSA/ICcgc2l6ZT0i Jy4kc2l6ZS4nIicgOiAnJzsNCgkkbWF4bGVuZ3RoID0gKCRtYXggJiYgIWluX2FycmF5KCR0 eXBlLCAkbnVtZXJpY190eXBlcykpID8gJyBtYXhsZW5ndGg9IicuJG1heC4nIicgOiAnJzsN CgkkcGF0dGVybiA9ICgkcGF0dGVybikgPyAnIHBhdHRlcm49IicuJHBhdHRlcm4uJyInIDog Jyc7DQoJJHBsYWNlaG9sZGVyID0gKCRwbGFjZWhvbGRlcikgPyAnIHBsYWNlaG9sZGVyPSIn LiRwbGFjZWhvbGRlci4nIicgOiAnJzsNCgkkYXV0b2ZvY3VzID0gKCRhdXRvZm9jdXMpID8g JyBhdXRvZm9jdXM9IicuJGF1dG9mb2N1cy4nIicgOiAnJzsNCgkkYXV0b2NvbXBsZXRlID0g KCRhdXRvY29tcGxldGUpID8gJyBhdXRvY29tcGxldGU9IicuJGF1dG9jb21wbGV0ZS4nIicg OiAnJzsNCgkkemVtUmVxdWlyZWQgPSAkcmVxdWlyZWQgPyAnemVtUmVxdWlyZWQnIDogJyc7 DQoNCiAgICAgICAgcmV0dXJuICc8bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSInLiRj bGFzcy4nICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLmh0bWxzcGVj aWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRicmVhay4NCgkJJzxpbnB1dCB0eXBlPSIn LiR0eXBlLiciIGlkPSInLiRuYW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJHplbVJlcXVp cmVkLiRpc0Vycm9yLiciIG5hbWU9IicuJG5hbWUuJyInLiRzaXplLiRtYXhsZW5ndGguJHBh dHRlcm4uJHBsYWNlaG9sZGVyLiRhdXRvZm9jdXMuJGF1dG9jb21wbGV0ZS4kbWluX2F0dC4k bWF4X2F0dC4kc3RlcF9hdHQuJHZhbHVlX2F0dC4nIC8+JzsNCn0NCg0KZnVuY3Rpb24gemVt X2NvbnRhY3RfdGV4dGFyZWEoJGF0dHMpDQp7DQoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJv ciwgJHplbV9jb250YWN0X3N1Ym1pdDsNCg0KCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMo YXJyYXkoDQoJCSdicmVhaycgICAgICAgPT4gJycsDQoJCSdjbGFzcycgICAgICAgPT4gJ3pl bVRleHRhcmVhJywNCgkJJ2NvbHMnICAgICAgICA9PiA1OCwNCgkJJ2RlZmF1bHQnICAgICA9 PiAnJywNCgkJJ2lzRXJyb3InICAgICA9PiAnJywNCgkJJ2xhYmVsJyAgICAgICA9PiBnVHh0 KCd6ZW1fY29udGFjdF9tZXNzYWdlJyksDQoJCSdtYXgnICAgICAgICAgPT4gMTAwMDAsDQoJ CSdtaW4nICAgICAgICAgPT4gMCwNCgkJJ25hbWUnICAgICAgICA9PiAnJywNCgkJJ3JlcXVp cmVkJyAgICA9PiAxLA0KCQkncGxhY2Vob2xkZXInID0+ICcnLA0KCQknYXV0b2ZvY3VzJyAg ID0+ICcnLA0KCQkncm93cycgICAgICAgID0+IDgNCgkpLCAkYXR0cykpOw0KDQoJJG1pbiA9 IGludHZhbCgkbWluKTsNCgkkbWF4ID0gaW50dmFsKCRtYXgpOw0KCSRjb2xzID0gaW50dmFs KCRjb2xzKTsNCgkkcm93cyA9IGludHZhbCgkcm93cyk7DQoNCglpZiAoZW1wdHkoJG5hbWUp KSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsNCg0KCWlmICgkemVt X2NvbnRhY3Rfc3VibWl0KQ0KCXsNCgkJJHZhbHVlID0gcHJlZ19yZXBsYWNlKCcvXlxzKltc clxuXS8nLCAnJywgcnRyaW0ocHMoJG5hbWUpKSk7DQoJCSR1dGY4bGVuID0gcHJlZ19tYXRj aF9hbGwoIi8uL3N1IiwgbHRyaW0oJHZhbHVlKSwgJHV0Zjhhcik7DQoJCSRobGFiZWwgPSBo dG1sc3BlY2lhbGNoYXJzKCRsYWJlbCk7DQoNCgkJaWYgKHN0cmxlbihsdHJpbSgkdmFsdWUp KSkNCgkJew0KCQkJaWYgKCEkdXRmOGxlbikNCgkJCXsNCgkJCQkkemVtX2NvbnRhY3RfZXJy b3JbXSA9IGdUeHQoJ3plbV9jb250YWN0X2ludmFsaWRfdXRmOCcsIGFycmF5KCd7ZmllbGR9 JyA9PiAkaGxhYmVsKSk7DQoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsNCgkJCX0N Cg0KCQkJZWxzZWlmICgkbWluIGFuZCAkdXRmOGxlbiA8ICRtaW4pDQoJCQl7DQoJCQkJJHpl bV9jb250YWN0X2Vycm9yW10gPSBnVHh0KCd6ZW1fY29udGFjdF9taW5fd2FybmluZycsIGFy cmF5KCd7ZmllbGR9JyA9PiAkaGxhYmVsLCAne3ZhbHVlfScgPT4gJG1pbikpOw0KCQkJCSRp c0Vycm9yID0gImVycm9yRWxlbWVudCI7DQoJCQl9DQoNCgkJCWVsc2VpZiAoJG1heCBhbmQg JHV0ZjhsZW4gPiAkbWF4KQ0KCQkJew0KCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gZ1R4 dCgnemVtX2NvbnRhY3RfbWF4X3dhcm5pbmcnLCBhcnJheSgne2ZpZWxkfScgPT4gJGhsYWJl bCwgJ3t2YWx1ZX0nID0+ICRtYXgpKTsNCgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQi Ow0KCQkJCSMkdmFsdWUgPSBqb2luKCcnLGFycmF5X3NsaWNlKCR1dGY4YXJbMF0sMCwkbWF4 KSk7DQoJCQl9DQoNCgkJCWVsc2UNCgkJCXsNCgkJCQl6ZW1fY29udGFjdF9zdG9yZSgkbmFt ZSwgJGxhYmVsLCAkdmFsdWUpOw0KCQkJfQ0KCQl9DQoNCgkJZWxzZWlmICgkcmVxdWlyZWQp DQoJCXsNCgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gZ1R4dCgnemVtX2NvbnRhY3RfZmll bGRfbWlzc2luZycsIGFycmF5KCd7ZmllbGR9JyA9PiAkaGxhYmVsKSk7DQoJCQkkaXNFcnJv ciA9ICJlcnJvckVsZW1lbnQiOw0KCQl9DQoJfQ0KDQoJZWxzZQ0KCXsNCgkJJHZhbHVlID0g JHZhbHVlOw0KCX0NCg0KCSR6ZW1SZXF1aXJlZCA9ICRyZXF1aXJlZCA/ICd6ZW1SZXF1aXJl ZCcgOiAnJzsNCgkkcGxhY2Vob2xkZXIgPSAoJHBsYWNlaG9sZGVyKSA/ICcgcGxhY2Vob2xk ZXI9IicuJHBsYWNlaG9sZGVyLiciJyA6ICcnOw0KCSRhdXRvZm9jdXMgPSAoJGF1dG9mb2N1 cykgPyAnIGF1dG9mb2N1cz0iJy4kYXV0b2ZvY3VzLiciJyA6ICcnOw0KDQoJcmV0dXJuICc8 bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJHplbVJlcXVpcmVk LiRpc0Vycm9yLicgJy4kbmFtZS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9s YWJlbD4nLiRicmVhay4NCgkJJzx0ZXh0YXJlYSBpZD0iJy4kbmFtZS4nIiBjbGFzcz0iJy4k Y2xhc3MuJyAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciIGNv bHM9IicuJGNvbHMuJyIgcm93cz0iJy4kcm93cy4nIicuJHBsYWNlaG9sZGVyLiRhdXRvZm9j dXMuJz4nLmh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKS4nPC90ZXh0YXJlYT4nOw0KfQ0KDQpm dW5jdGlvbiB6ZW1fY29udGFjdF9lbWFpbCgkYXR0cykNCnsNCglnbG9iYWwgJHplbV9jb250 YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3VibWl0LCAkemVtX2NvbnRhY3RfZnJvbSwgJHpl bV9jb250YWN0X3JlY2lwaWVudDsNCg0KCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJy YXkoDQoJCSd0eXBlJyAgICAgICAgID0+ICdlbWFpbCcsDQogICAgICAgICAgICAgICAgJ2Ns YXNzJyAgICAgICAgPT4gJ3plbVRleHQnLA0KCQknZGVmYXVsdCcgICAgICA9PiAnJywNCgkJ J2lzRXJyb3InICAgICAgPT4gJycsDQoJCSdsYWJlbCcgICAgICAgID0+IGdUeHQoJ3plbV9j b250YWN0X2VtYWlsJyksDQoJCSdtYXgnICAgICAgICAgID0+IDEwMCwNCgkJJ21pbicgICAg ICAgICAgPT4gMCwNCgkJJ25hbWUnICAgICAgICAgPT4gJycsDQoJCSdyZXF1aXJlZCcgICAg ID0+IDEsDQoJCSdicmVhaycgICAgICAgID0+ICcnLA0KCQknc2l6ZScgICAgICAgICA9PiAn JywNCgkJJ3BsYWNlaG9sZGVyJyAgPT4gJycsDQoJCSdhdXRvZm9jdXMnICAgID0+ICcnLA0K CQknYXV0b2NvbXBsZXRlJyA9PiAnJywNCgkJJ3NlbmRfYXJ0aWNsZScJPT4gMA0KCSksICRh dHRzKSk7DQoNCglpZiAoZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVs Mm5hbWUoJGxhYmVsKTsNCg0KCSRlbWFpbCA9ICR6ZW1fY29udGFjdF9zdWJtaXQgPyB0cmlt KHBzKCRuYW1lKSkgOiAkZGVmYXVsdDsNCg0KCWlmICgkemVtX2NvbnRhY3Rfc3VibWl0IGFu ZCBzdHJsZW4oJGVtYWlsKSkNCgl7DQoJCWlmICghaXNfdmFsaWRfZW1haWwoJGVtYWlsKSkN CgkJew0KCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSBnVHh0KCd6ZW1fY29udGFjdF9pbnZh bGlkX2VtYWlsJywgYXJyYXkoJ3tlbWFpbH0nID0+IGh0bWxzcGVjaWFsY2hhcnMoJGVtYWls KSkpOw0KCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsNCgkJfQ0KDQoJCWVsc2UNCgkJ ew0KCQkJcHJlZ19tYXRjaCgiL0AoLispJC8iLCAkZW1haWwsICRtYXRjaCk7DQoJCQkkZG9t YWluID0gJG1hdGNoWzFdOw0KDQoJCQlpZiAoaXNfY2FsbGFibGUoJ2NoZWNrZG5zcnInKSBh bmQgY2hlY2tkbnNycigndGV4dHBhdHRlcm4uY29tLicsJ0EnKSBhbmQgIWNoZWNrZG5zcnIo JGRvbWFpbi4nLicsJ01YJykgYW5kICFjaGVja2Ruc3JyKCRkb21haW4uJy4nLCdBJykpDQoJ CQl7DQoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSBnVHh0KCd6ZW1fY29udGFjdF9pbnZh bGlkX2hvc3QnLCBhcnJheSgne2hvc3R9JyA9PiBodG1sc3BlY2lhbGNoYXJzKCRkb21haW4p KSk7DQoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsNCgkJCX0NCg0KCQkJZWxzZQ0K CQkJew0KCQkJCWlmICgkc2VuZF9hcnRpY2xlKSB7DQoJCQkJCSR6ZW1fY29udGFjdF9yZWNp cGllbnQgPSAkZW1haWw7DQoJCQkJfQ0KCQkJCWVsc2Ugew0KCQkJCQkkemVtX2NvbnRhY3Rf ZnJvbSA9ICRlbWFpbDsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCglyZXR1cm4gemVtX2Nv bnRhY3RfdGV4dChhcnJheSgNCgkJJ3R5cGUnICAgICAgICAgPT4gJHR5cGUsDQoJCSdpc0Vy cm9yJyAgICAgID0+ICRpc0Vycm9yLA0KCQknbGFiZWwnICAgICAgICA9PiAkbGFiZWwsDQoJ CSdtYXgnICAgICAgICAgID0+ICRtYXgsDQoJCSdtaW4nICAgICAgICAgID0+ICRtaW4sDQoJ CSduYW1lJyAgICAgICAgID0+ICRuYW1lLA0KCQkncmVxdWlyZWQnICAgICA9PiAkcmVxdWly ZWQsDQoJCSdicmVhaycgICAgICAgID0+ICRicmVhaywNCgkJJ2NsYXNzJyAgICAgICAgPT4g JGNsYXNzLA0KCQknc2l6ZScgICAgICAgICA9PiAkc2l6ZSwNCgkJJ3BsYWNlaG9sZGVyJyAg PT4gJHBsYWNlaG9sZGVyLA0KCQknYXV0b2ZvY3VzJyAgICA9PiAkYXV0b2ZvY3VzLA0KCQkn YXV0b2NvbXBsZXRlJyA9PiAkYXV0b2NvbXBsZXRlLA0KCSkpOw0KfQ0KDQpmdW5jdGlvbiB6 ZW1fY29udGFjdF9zZWxlY3QoJGF0dHMpDQp7DQoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJv ciwgJHplbV9jb250YWN0X3N1Ym1pdDsNCg0KCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMo YXJyYXkoDQoJCSduYW1lJyAgICAgID0+ICcnLA0KCQknYnJlYWsnICAgICA9PiAnICcsDQoJ CSdjbGFzcycgICAgID0+ICd6ZW1TZWxlY3QnLA0KCQknZGVsaW1pdGVyJyA9PiAnLCcsDQoJ CSdpc0Vycm9yJyAgID0+ICcnLA0KCQknbGFiZWwnICAgICA9PiBnVHh0KCd6ZW1fY29udGFj dF9vcHRpb24nKSwNCgkJJ2xpc3QnICAgICAgPT4gZ1R4dCgnemVtX2NvbnRhY3RfZ2VuZXJh bF9pbnF1aXJ5JyksDQoJCSdyZXF1aXJlZCcgID0+IDEsDQoJCSdzZWxlY3RlZCcgID0+ICcn LA0KCQknYXV0b2ZvY3VzJyA9PiAnJywNCgkpLCAkYXR0cykpOw0KDQoJaWYgKGVtcHR5KCRu YW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7DQoNCgkkbGlz dCA9IGFycmF5X21hcCgndHJpbScsIGV4cGxvZGUoJGRlbGltaXRlciwgcHJlZ19yZXBsYWNl KCcvW1xyXG5cdFxzXSsvJywgJyAnLCRsaXN0KSkpOw0KDQoJaWYgKCR6ZW1fY29udGFjdF9z dWJtaXQpDQoJew0KCQkkdmFsdWUgPSB0cmltKHBzKCRuYW1lKSk7DQoNCgkJaWYgKHN0cmxl bigkdmFsdWUpKQ0KCQl7DQoJCQlpZiAoaW5fYXJyYXkoJHZhbHVlLCAkbGlzdCkpDQoJCQl7 DQoJCQkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlKTsNCgkJCX0N Cg0KCQkJZWxzZQ0KCQkJew0KCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gZ1R4dCgnemVt X2NvbnRhY3RfaW52YWxpZF92YWx1ZScsIGFycmF5KCd7ZmllbGR9JyA9PiBodG1sc3BlY2lh bGNoYXJzKCRsYWJlbCksICd7dmFsdWV9JyA9PiBodG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSkp KTsNCgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOw0KCQkJfQ0KCQl9DQoNCgkJZWxz ZWlmICgkcmVxdWlyZWQpDQoJCXsNCgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gZ1R4dCgn emVtX2NvbnRhY3RfZmllbGRfbWlzc2luZycsIGFycmF5KCd7ZmllbGR9JyA9PiBodG1sc3Bl Y2lhbGNoYXJzKCRsYWJlbCkpKTsNCgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7DQoJ CX0NCgl9DQoJZWxzZQ0KCXsNCgkJJHZhbHVlID0gJHNlbGVjdGVkOw0KCX0NCg0KCSRvdXQg PSAnJzsNCg0KCWZvcmVhY2ggKCRsaXN0IGFzICRpdGVtKQ0KCXsNCgkJJG91dCAuPSBuLnQu JzxvcHRpb24nLigkaXRlbSA9PSAkdmFsdWUgPyAnIHNlbGVjdGVkPSJzZWxlY3RlZCI+JyA6 ICc+JykuKHN0cmxlbigkaXRlbSkgPyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtKSA6ICcgJyku Jzwvb3B0aW9uPic7DQoJfQ0KDQoJJHplbVJlcXVpcmVkID0gJHJlcXVpcmVkID8gJ3plbVJl cXVpcmVkJyA6ICcnOw0KCSRhdXRvZm9jdXMgPSAoJGF1dG9mb2N1cykgPyAnIGF1dG9mb2N1 cz0iJy4kYXV0b2ZvY3VzLiciJyA6ICcnOw0KDQoJcmV0dXJuICc8bGFiZWwgZm9yPSInLiRu YW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLicgJy4k bmFtZS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRicmVhay4N CgkJbi4nPHNlbGVjdCBpZD0iJy4kbmFtZS4nIiBuYW1lPSInLiRuYW1lLiciIGNsYXNzPSIn LiRjbGFzcy4nICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLiciJy4kYXV0b2ZvY3VzLic+Jy4N CgkJCSRvdXQuDQoJCW4uJzwvc2VsZWN0Pic7DQp9DQoNCmZ1bmN0aW9uIHplbV9jb250YWN0 X2NoZWNrYm94KCRhdHRzKQ0Kew0KCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1f Y29udGFjdF9zdWJtaXQ7DQoNCglleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KA0K CQknYnJlYWsnICAgICA9PiAnICcsDQoJCSdjbGFzcycgICAgID0+ICd6ZW1DaGVja2JveCcs DQoJCSdjaGVja2VkJyAgID0+IDAsDQoJCSdpc0Vycm9yJyAgID0+ICcnLA0KCQknbGFiZWwn ICAgICA9PiBnVHh0KCd6ZW1fY29udGFjdF9jaGVja2JveCcpLA0KCQknbmFtZScgICAgICA9 PiAnJywNCgkJJ3JlcXVpcmVkJyAgPT4gMSwNCgkJJ2F1dG9mb2N1cycgPT4gJycsDQoJKSwg JGF0dHMpKTsNCg0KCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFi ZWwybmFtZSgkbGFiZWwpOw0KDQoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpDQoJew0KCQkk dmFsdWUgPSAoYm9vbCkgcHMoJG5hbWUpOw0KDQoJCWlmICgkcmVxdWlyZWQgYW5kICEkdmFs dWUpDQoJCXsNCgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gZ1R4dCgnemVtX2NvbnRhY3Rf ZmllbGRfbWlzc2luZycsIGFycmF5KCd7ZmllbGR9JyA9PiBodG1sc3BlY2lhbGNoYXJzKCRs YWJlbCkpKTsNCgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7DQoJCX0NCg0KCQllbHNl DQoJCXsNCgkJCXplbV9jb250YWN0X3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSA/IGdU eHQoJ3llcycpIDogZ1R4dCgnbm8nKSk7DQoJCX0NCgl9DQoNCgllbHNlIHsNCgkJJHZhbHVl ID0gJGNoZWNrZWQ7DQoJfQ0KDQoJJHplbVJlcXVpcmVkID0gJHJlcXVpcmVkID8gJ3plbVJl cXVpcmVkJyA6ICcnOw0KCSRhdXRvZm9jdXMgPSAoJGF1dG9mb2N1cykgPyAnIGF1dG9mb2N1 cz0iJy4kYXV0b2ZvY3VzLiciJyA6ICcnOw0KDQoJcmV0dXJuICc8aW5wdXQgdHlwZT0iY2hl Y2tib3giIGlkPSInLiRuYW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJHplbVJlcXVpcmVk LiRpc0Vycm9yLiciIG5hbWU9IicuJG5hbWUuJyInLg0KCQkoJHZhbHVlID8gJyBjaGVja2Vk PSJjaGVja2VkIicgOiAnJykuJGF1dG9mb2N1cy4nIC8+Jy4kYnJlYWsuDQoJCSc8bGFiZWwg Zm9yPSInLiRuYW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJHplbVJlcXVpcmVkLiRpc0Vy cm9yLicgJy4kbmFtZS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4n Ow0KfQ0KDQpmdW5jdGlvbiB6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvKCRhdHRzKQ0Kew0KCWds b2JhbCAkemVtX2NvbnRhY3Rfc3VibWl0Ow0KDQoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0 cyhhcnJheSgNCgkJJ2xhYmVsJwkJPT4gJycsDQoJCSduYW1lJwkJPT4gJycNCgkpLCAkYXR0 cykpOw0KDQoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJu YW1lKCRsYWJlbCk7DQoNCglpZiAoc3RybGVuKCRuYW1lKSBhbmQgJHplbV9jb250YWN0X3N1 Ym1pdCkNCgl7DQoJCWlmICghJGxhYmVsKSAkbGFiZWwgPSAkbmFtZTsNCgkJemVtX2NvbnRh Y3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgc2VydmVyU2V0KCRuYW1lKSk7DQoJfQ0KfQ0KDQpm dW5jdGlvbiB6ZW1fY29udGFjdF9zZWNyZXQoJGF0dHMsICR0aGluZyA9ICcnKQ0Kew0KCWds b2JhbCAkemVtX2NvbnRhY3Rfc3VibWl0Ow0KDQoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0 cyhhcnJheSgNCgkJJ25hbWUnCT0+ICcnLA0KCQknbGFiZWwnCT0+IGdUeHQoJ3plbV9jb250 YWN0X3NlY3JldCcpLA0KCQkndmFsdWUnCT0+ICcnDQoJKSwgJGF0dHMpKTsNCg0KCSRuYW1l ID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbmFtZSA/ICRuYW1lIDogJGxhYmVsKTsNCg0K CWlmICgkemVtX2NvbnRhY3Rfc3VibWl0KQ0KCXsNCgkJaWYgKCR0aGluZykgJHZhbHVlID0g dHJpbShwYXJzZSgkdGhpbmcpKTsNCgkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJl bCwgJHZhbHVlKTsNCgl9DQoNCglyZXR1cm4gJyc7DQp9DQoNCmZ1bmN0aW9uIHplbV9jb250 YWN0X3JhZGlvKCRhdHRzKQ0Kew0KCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1f Y29udGFjdF9zdWJtaXQsICR6ZW1fY29udGFjdF92YWx1ZXM7DQoNCglleHRyYWN0KHplbV9j b250YWN0X2xBdHRzKGFycmF5KA0KCQknYnJlYWsnICAgICA9PiAnICcsDQoJCSdjbGFzcycg ICAgID0+ICd6ZW1SYWRpbycsDQoJCSdjaGVja2VkJyAgID0+IDAsDQoJCSdncm91cCcgICAg ID0+ICcnLA0KCQknbGFiZWwnICAgICA9PiBnVHh0KCd6ZW1fY29udGFjdF9vcHRpb24nKSwN CgkJJ25hbWUnICAgICAgPT4gJycsDQoJCSdhdXRvZm9jdXMnID0+ICcnLA0KCSksICRhdHRz KSk7DQoNCglzdGF0aWMgJGN1cl9uYW1lID0gJyc7DQoJc3RhdGljICRjdXJfZ3JvdXAgPSAn JzsNCg0KCWlmICghJG5hbWUgYW5kICEkZ3JvdXAgYW5kICEkY3VyX25hbWUgYW5kICEkY3Vy X2dyb3VwKSB7DQoJCSRjdXJfZ3JvdXAgPSBnVHh0KCd6ZW1fY29udGFjdF9yYWRpbycpOw0K CQkkY3VyX25hbWUgPSAkY3VyX2dyb3VwOw0KCX0NCglpZiAoJGdyb3VwIGFuZCAhJG5hbWUg YW5kICRncm91cCAhPSAkY3VyX2dyb3VwKSAkbmFtZSA9ICRncm91cDsNCg0KCWlmICgkbmFt ZSkgJGN1cl9uYW1lID0gJG5hbWU7DQoJZWxzZSAkbmFtZSA9ICRjdXJfbmFtZTsNCg0KCWlm ICgkZ3JvdXApICRjdXJfZ3JvdXAgPSAkZ3JvdXA7DQoJZWxzZSAkZ3JvdXAgPSAkY3VyX2dy b3VwOw0KDQoJJGlkICAgPSAncScubWQ1KCRuYW1lLic9PicuJGxhYmVsKTsNCgkkbmFtZSA9 IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJG5hbWUpOw0KDQoJaWYgKCR6ZW1fY29udGFjdF9z dWJtaXQpDQoJew0KCQkkaXNfY2hlY2tlZCA9IChwcygkbmFtZSkgPT0gJGlkKTsNCg0KCQlp ZiAoJGlzX2NoZWNrZWQgb3IgJGNoZWNrZWQgYW5kICFpc3NldCgkemVtX2NvbnRhY3RfdmFs dWVzWyRuYW1lXSkpDQoJCXsNCgkJCXplbV9jb250YWN0X3N0b3JlKCRuYW1lLCAkZ3JvdXAs ICRsYWJlbCk7DQoJCX0NCgl9DQoNCgllbHNlDQoJew0KCQkkaXNfY2hlY2tlZCA9ICRjaGVj a2VkOw0KCX0NCg0KCSRhdXRvZm9jdXMgPSAoJGF1dG9mb2N1cykgPyAnIGF1dG9mb2N1cz0i Jy4kYXV0b2ZvY3VzLiciJyA6ICcnOw0KDQoJcmV0dXJuICc8aW5wdXQgdmFsdWU9IicuJGlk LiciIHR5cGU9InJhZGlvIiBpZD0iJy4kaWQuJyIgY2xhc3M9IicuJGNsYXNzLicgJy4kbmFt ZS4nIiBuYW1lPSInLiRuYW1lLiciJy4kYXV0b2ZvY3VzLg0KCQkoICRpc19jaGVja2VkID8g JyBjaGVja2VkPSJjaGVja2VkIiAvPicgOiAnIC8+JykuJGJyZWFrLg0KCQknPGxhYmVsIGZv cj0iJy4kaWQuJyIgY2xhc3M9IicuJGNsYXNzLicgJy4kbmFtZS4nIj4nLmh0bWxzcGVjaWFs Y2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nOw0KfQ0KDQpmdW5jdGlvbiB6ZW1fY29udGFjdF9z ZW5kX2FydGljbGUoJGF0dHMpDQp7DQoJaWYgKCFpc3NldCgkX1JFUVVFU1RbJ3plbV9jb250 YWN0X3NlbmRfYXJ0aWNsZSddKSkgew0KCQkkbGlua3RleHQgPSAoZW1wdHkoJGF0dHNbJ2xp bmt0ZXh0J10pKSA/IGdUeHQoJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNsZScpIDogJGF0dHNb J2xpbmt0ZXh0J107DQoJCSRqb2luID0gKGVtcHR5KCRfU0VSVkVSWydRVUVSWV9TVFJJTkcn XSkpID8gJz8nIDogJyYnOw0KCQkkaHJlZiA9ICRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiRq b2luLid6ZW1fY29udGFjdF9zZW5kX2FydGljbGU9eWVzJzsNCgkJcmV0dXJuICc8YSBocmVm PSInLmh0bWxzcGVjaWFsY2hhcnMoJGhyZWYpLiciPicuaHRtbHNwZWNpYWxjaGFycygkbGlu a3RleHQpLic8L2E+JzsNCgl9DQoJcmV0dXJuOw0KfQ0KDQpmdW5jdGlvbiB6ZW1fY29udGFj dF9zdWJtaXQoJGF0dHMsICR0aGluZykNCnsNCglleHRyYWN0KHplbV9jb250YWN0X2xBdHRz KGFycmF5KA0KCQknYnV0dG9uJyA9PiAwLA0KCQknbGFiZWwnICA9PiBnVHh0KCd6ZW1fY29u dGFjdF9zZW5kJyksDQoJCSdjbGFzcycgID0+ICd6ZW1TdWJtaXQnLA0KCSksICRhdHRzKSk7 DQoNCgkkbGFiZWwgPSBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCk7DQoNCglpZiAoJGJ1dHRv biBvciBzdHJsZW4oJHRoaW5nKSkNCgl7DQoJCXJldHVybiAnPGJ1dHRvbiB0eXBlPSJzdWJt aXQiIGNsYXNzPSInLiRjbGFzcy4nIiBuYW1lPSJ6ZW1fY29udGFjdF9zdWJtaXQiIHZhbHVl PSInLiRsYWJlbC4nIj4nLigkdGhpbmcgPyB0cmltKHBhcnNlKCR0aGluZykpIDogJGxhYmVs KS4nPC9idXR0b24+JzsNCgl9DQoJZWxzZQ0KCXsNCgkJcmV0dXJuICc8aW5wdXQgdHlwZT0i c3VibWl0IiBjbGFzcz0iJy4kY2xhc3MuJyIgbmFtZT0iemVtX2NvbnRhY3Rfc3VibWl0IiB2 YWx1ZT0iJy4kbGFiZWwuJyIgLz4nOw0KCX0NCn0NCg0KZnVuY3Rpb24gemVtX2NvbnRhY3Rf bEF0dHMoJGFyciwgJGF0dHMpDQp7DQoJZm9yZWFjaChhcnJheSgnYnV0dG9uJywgJ2NvcHlz ZW5kZXInLCAnY2hlY2tlZCcsICdyZXF1aXJlZCcsICdzZW5kX2FydGljbGUnLCAnc2hvd19p bnB1dCcsICdzaG93X2Vycm9yJykgYXMgJGtleSkNCgl7DQoJCWlmIChpc3NldCgkYXR0c1sk a2V5XSkpDQoJCXsNCgkJCSRhdHRzWyRrZXldID0gKCRhdHRzWyRrZXldID09PSAneWVzJyBv ciBpbnR2YWwoJGF0dHNbJGtleV0pKSA/IDEgOiAwOw0KCQl9DQoJfQ0KCWlmIChpc3NldCgk YXR0c1snYnJlYWsnXSkgYW5kICRhdHRzWydicmVhayddID09ICdicicpICRhdHRzWydicmVh ayddID0gJzxiciAvPic7DQoJcmV0dXJuIGxBdHRzKCRhcnIsICRhdHRzKTsNCn0NCg0KY2xh c3MgemVtY29udGFjdF9ldmFsdWF0aW9uDQp7DQoJdmFyICRzdGF0dXM7DQoNCglmdW5jdGlv biB6ZW1jb250YWN0X2V2YWx1YXRpb24oKSB7DQoJCSR0aGlzLT5zdGF0dXMgPSAwOw0KCX0N Cg0KCWZ1bmN0aW9uIGFkZF96ZW1jb250YWN0X3N0YXR1cygkY2hlY2spIHsNCgkJJHRoaXMt PnN0YXR1cyArPSAkY2hlY2s7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0X3plbWNvbnRhY3Rfc3Rh dHVzKCkgew0KCQlyZXR1cm4gJHRoaXMtPnN0YXR1czsNCgl9DQp9DQoNCmZ1bmN0aW9uICZn ZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKQ0Kew0KCXN0YXRpYyAkaW5zdGFuY2U7DQoNCglp ZighaXNzZXQoJGluc3RhbmNlKSkgew0KCQkkaW5zdGFuY2UgPSBuZXcgemVtY29udGFjdF9l dmFsdWF0aW9uKCk7DQoJfQ0KCXJldHVybiAkaW5zdGFuY2U7DQp9DQoNCmZ1bmN0aW9uIHpl bV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKQ0Kew0KCSRsYWJlbCA9IHRyaW0oJGxhYmVs KTsNCglpZiAoc3RybGVuKCRsYWJlbCkgPT0gMCkgcmV0dXJuICdpbnZhbGlkJzsNCglpZiAo c3RybGVuKCRsYWJlbCkgPD0gMzIgYW5kIHByZWdfbWF0Y2goJy9eW2EtekEtWl1bQS1aYS16 MC05Ol8tXSokLycsICRsYWJlbCkpIHJldHVybiAkbGFiZWw7DQoJZWxzZSByZXR1cm4gJ3En Lm1kNSgkbGFiZWwpOw0KfQ0KDQpmdW5jdGlvbiB6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwg JGxhYmVsLCAkdmFsdWUpDQp7DQoJZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtLCAkemVtX2Nv bnRhY3RfbGFiZWxzLCAkemVtX2NvbnRhY3RfdmFsdWVzOw0KCSR6ZW1fY29udGFjdF9mb3Jt WyRsYWJlbF0gPSAkdmFsdWU7DQoJJHplbV9jb250YWN0X2xhYmVsc1skbmFtZV0gPSAkbGFi ZWw7DQoJJHplbV9jb250YWN0X3ZhbHVlc1skbmFtZV0gPSAkdmFsdWU7DQp9DQoNCmZ1bmN0 aW9uIHplbV9jb250YWN0X21haWxoZWFkZXIoJHN0cmluZywgJHR5cGUpDQp7DQoJZ2xvYmFs ICRwcmVmczsNCglpZiAoIXN0cnN0cigkc3RyaW5nLCc9PycpIGFuZCAhcHJlZ19tYXRjaCgn L1tceDAwLVx4MUZceDdGLVx4RkZdLycsICRzdHJpbmcpKSB7DQoJCWlmICgicGhyYXNlIiA9 PSAkdHlwZSkgew0KCQkJaWYgKHByZWdfbWF0Y2goJy9bXVsoKTw+QCw7OiIuXHg1Q10vJywg JHN0cmluZykpIHsNCgkJCQkkc3RyaW5nID0gJyInLiBzdHJ0cigkc3RyaW5nLCBhcnJheSgi XFwiID0+ICJcXFxcIiwgJyInID0+ICdcIicpKSAuICciJzsNCgkJCX0NCgkJfQ0KCQllbHNl aWYgKCJ0ZXh0IiAhPSAkdHlwZSkgew0KCQkJdHJpZ2dlcl9lcnJvcignVW5rbm93biBlbmNv ZGVfbWFpbGhlYWRlciB0eXBlJywgRV9VU0VSX1dBUk5JTkcpOw0KCQl9DQoJCXJldHVybiAk c3RyaW5nOw0KCX0NCglpZiAoJHByZWZzWydvdmVycmlkZV9lbWFpbGNoYXJzZXQnXSkgew0K CQkkc3RhcnQgPSAnPT9JU08tODg1OS0xP0I/JzsNCgkJJHBjcmUgID0gJy8uezEsNDJ9L3Mn Ow0KCX0NCgllbHNlIHsNCgkJJHN0YXJ0ID0gJz0/VVRGLTg/Qj8nOw0KCQkkcGNyZSAgPSAn Ly57MSw0NX0oPz1bXHgwMC1ceDdGXHhDMC1ceEZGXXwkKS9zJzsNCgl9DQoJJGVuZCA9ICc/ PSc7DQoJJHNlcCA9IGlzX3dpbmRvd3MoKSA/ICJcclxuIiA6ICJcbiI7DQoJcHJlZ19tYXRj aF9hbGwoJHBjcmUsICRzdHJpbmcsICRtYXRjaGVzKTsNCglyZXR1cm4gJHN0YXJ0IC4gam9p bigkZW5kLiRzZXAuJyAnLiRzdGFydCwgYXJyYXlfbWFwKCdiYXNlNjRfZW5jb2RlJywkbWF0 Y2hlc1swXSkpIC4gJGVuZDsNCn0NCg0KZnVuY3Rpb24gemVtX2NvbnRhY3RfanMoJGF0dHMp DQp7DQoJDQokdmFyMSA9IGVzY2FwZV9qcyhncHMoJ3BhcmFtJykpOw0KJHZhcjIgPSBlc2Nh cGVfanMoZ3BzKCdwYXJhbScpKTsNCiAgICAgICAgJHZhcjEgPSAiDQogICAgICAgIDxzY3Jp cHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPg0KICAgICAgICAgICAgdmFyIHBsYWNlaG9s ZGVyID0gJCggXCIuemVtVGV4dCwgLnplbVRleHRhcmVhXCIgKTsNCiAgICAgICAgICAgICAg ICBpZiAoIU1vZGVybml6ci5pbnB1dC5wbGFjZWhvbGRlcikgew0KICAgICAgICAgICAgICAg ICAgICB2YXIgcGxhY2Vob2xkZXIgPSAkKCBcIi56ZW1UZXh0LCAuemVtVGV4dGFyZWFcIiAp LmVhY2goZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlz KS52YWwoKSA9PSAnJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS52YWwo JCh0aGlzKS5hdHRyKCdwbGFjZWhvbGRlcicpKTsNCiAgICAgICAgICAgICAgICAgICAgICAg ICQodGhpcykuYWRkQ2xhc3MoJ3BsYWNlaG9sZGVyJyk7DQogICAgICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5mb2N1cyhmdW5jdGlvbigpIHsNCiAg ICAgICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnZhbCgpID09ICQodGhpcykuYXR0 cigncGxhY2Vob2xkZXInKSAmJiAkKHRoaXMpLmhhc0NsYXNzKCdwbGFjZWhvbGRlcicpKSB7 DQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnZhbCgnJyk7DQogICAgICAgICAg ICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdwbGFjZWhvbGRlcicpOw0KICAg ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0pLmJsdXIoZnVuY3Rp b24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZigkKHRoaXMpLnZhbCgpID09ICcn KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS52YWwoJCh0aGlzKS5hdHRy KCdwbGFjZWhvbGRlcicpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRk Q2xhc3MoJ3BsYWNlaG9sZGVyJyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAg ICAgICAgICAkKCdbcGxhY2Vob2xkZXJdJykucGFyZW50cygnZm9ybScpLnN1Ym1pdChmdW5j dGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnW3BsYWNl aG9sZGVyXScpLmVhY2goZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBp ZiAoJCh0aGlzKS52YWwoKSA9PSAkKHRoaXMpLmF0dHIoJ3BsYWNlaG9sZGVyJykgJiYgJCh0 aGlzKS5oYXNDbGFzcygncGxhY2Vob2xkZXInKSkgew0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICQodGhpcykudmFsKCcnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAg ICAgICAgICAgICAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBmdW5jdGlvbigpIHsNCiAg ICAgICAgICAgICAgICAgICAgICAgICQoJ1twbGFjZWhvbGRlcl0nKS5lYWNoKGZ1bmN0aW9u KCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnZhbCgpID09 ICQodGhpcykuYXR0cigncGxhY2Vob2xkZXInKSAmJiAkKHRoaXMpLmhhc0NsYXNzKCdwbGFj ZWhvbGRlcicpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS52YWwo JycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg ICAgfSk7DQogICAgICAgICAgICAgICAgICAgIH07ICAgDQp9DQogICAgICAgIDwvc2NyaXB0 PiI7DQogICAgICAgICR2YXIyID0gIg0KICAgICAgICA8c2NyaXB0IHR5cGU9XCJ0ZXh0L2ph dmFzY3JpcHRcIj4NCiAgICAgICAgICAgICAgICBpZiAoIU1vZGVybml6ci5pbnB1dC5kYXRl KSB7DQogICAgICAgICAgICAgICAgICAgICQoZnVuY3Rpb24oKSB7DQoJCSAgICAgICAgdmFy IGRhdGUgPSAkKCBcIiNkYXRlXCIgKS5kYXRlcGlja2VyKHsNCiAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGVGb3JtYXQ6ICd5eS1tbS1kZCcNCiAgICAgICAgICAgICAgICAgICAgICAg IH0pOw0KICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9IA0KICAgICAg ICAgICAgICAgIGlmICghTW9kZXJuaXpyLmlucHV0Lm51bWJlcikgew0KICAgICAgICAgICAg ICAgICAgICAkKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG51 bWJlciA9ICQoIFwiI251bWJlclwiICkuc3Bpbm5lcigpOw0KICAgICAgICAgICAgICAgICAg ICB9KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCFNb2Rlcm5p enIuaW5wdXQucmFuZ2UpIHsNCiAgICAgICAgICAgICAgICAgICAgJChmdW5jdGlvbigpIHsN CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByYW5nZSA9ICQoXCIjcmFuZ2VcIik7DQoJ CSAgICAgICAgJChcIiNyYW5nZVwiKS5lYWNoKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFyIHJhbmdlID0gJCh0aGlzKTsNCiAgICAgICAgICAgIA0KICAg ICAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlckRpdiA9ICQoXCI8ZGl2Lz5cIik7DQog ICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXJEaXYud2lkdGgocmFuZ2Uud2lkdGgoKSk7 DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmFmdGVyKA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlckRpdi5zbGlkZXIoew0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1pbjogcGFyc2VGbG9hdChyYW5nZS5hdHRyKFwibWlu XCIpKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHBhcnNlRmxvYXQocmFu Z2UuYXR0cihcIm1heFwiKSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6 IHBhcnNlRmxvYXQocmFuZ2UudmFsKCkpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0ZXA6IHBhcnNlRmxvYXQocmFuZ2UuYXR0cihcInN0ZXBcIikpLA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNsaWRlOiBmdW5jdGlvbihldnQsIHVpKSB7DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbCh1aS52YWx1ZSk7DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFu Z2U6IGZ1bmN0aW9uKGV2dCwgdWkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmFuZ2UudmFsKHVpLnZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAg ICAgICkuDQogICAgICAgICAgICAgICAgICAgICAgICBoaWRlKCk7DQogICAgICAgICAgICAg ICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9 DQogICAgICAgIDwvc2NyaXB0PiI7DQoNCnJldHVybiAiJHZhcjEgJHZhcjIiOw0KfSI7czo0 OiJ0eXBlIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7czoxOiIw IjtzOjQ6ImhlbHAiO3M6NDAyMTc6IjxzdHlsZT4KICAgbGkgY29kZSB7Zm9udC13ZWlnaHQ6 IGJvbGQ7fQogICBwcmUge3BhZGRpbmc6IDAuNWVtIDFlbTsgYmFja2dyb3VuZDogI2VlZTsg Ym9yZGVyOiAxcHggZGFzaGVkICNjY2M7fQogICBoMSwgaDIsIGgzLCBoMyBjb2RlIHtmb250 LWZhbWlseTogc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IGJvbGQ7fQogICBoMSwgaDIsIGgz IHttYXJnaW4tbGVmdDogLTFlbTt9CiAgIGgyLCBoMyB7bWFyZ2luLXRvcDogMmVtO30KICAg aDEge2ZvbnQtc2l6ZTogM2VtO30KICAgaDIge2ZvbnQtc2l6ZTogMmVtO30KICAgaDMge2Zv bnQtc2l6ZTogMS41ZW07fQogICBsaSBhIGNvZGUge2ZvbnQtd2VpZ2h0OiBub3JtYWw7fQog ICAucmVxdWlyZWQsIC53YXJuaW5nIHtjb2xvcjpyZWQ7fQogPC9zdHlsZT4KCgk8aDEgaWQ9 InRvcCI+WmVtIENvbnRhY3QgUmVib3JuPC9oMT4KCgk8cD5QbGVhc2UgcmVwb3J0cyBidWdz IGFuZCBwcm9ibGVtcyB3aXRoIHRoaXMgcGx1Z2luIGluIDxhIGhyZWY9Imh0dHA6Ly9mb3J1 bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yMzcyOCI+dGhpcyBmb3J1bSB0 aHJlYWQ8L2E+LjwvcD4KCgk8aDIgaWQ9ImNvbnRlbnRzIj5Db250ZW50czwvaDI+CgoJPHVs PgoJCTxsaT48YSBocmVmPSIjZmVhdHVyZXMiPkZlYXR1cmVzPC9hPgoJCTxsaT48YSBocmVm PSIjc3RhcnQiPkdldHRpbmcgc3RhcnRlZDwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2Nv bnRhY3Rmb3JtIj5Db250YWN0IGZvcm08L2E+PC9saT4KCTwvdWw+PC9saT4KCTx1bD4KCQk8 bGk+PGEgaHJlZj0iI3NlbmRhcnRpY2xlIj5TZW5kIGFydGljbGU8L2E+PC9saT4KCQk8bGk+ PGEgaHJlZj0iI3RhZ3MiPlRhZ3M8L2E+CgkJPGxpPjxhIGhyZWY9IiN6YyI+IDxjb2RlPiYj NjA7dHhwOnplbV9jb250YWN0IC8mIzYyOzwvY29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhy ZWY9IiN6Y190ZXh0Ij4gPGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dCAvJiM2Mjs8 L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfZW1haWwiPiA8Y29kZT4mIzYw O3R4cDp6ZW1fY29udGFjdF9lbWFpbCAvJiM2Mjs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48 YSBocmVmPSIjemNfdGV4dGFyZWEiPiA8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF90ZXh0 YXJlYSAvJiM2Mjs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfc3VibWl0 Ij4gPGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IC8mIzYyOzwvY29kZT4gPC9h PjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19zZWxlY3QiPiA8Y29kZT4mIzYwO3R4cDp6ZW1f Y29udGFjdF9zZWxlY3QgLyYjNjI7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0i I3pjX2NoZWNrYm94Ij4gPGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggLyYj NjI7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pjX3JhZGlvIj4gPGNvZGU+ JiM2MDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gLyYjNjI7PC9jb2RlPiA8L2E+PC9saT4KCQk8 bGk+PGEgaHJlZj0iI3pjX3NlY3JldCI+IDxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3Nl Y3JldCAvJiM2Mjs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfc2VydmVy X2luZm8iPiA8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvIC8mIzYyOzwv Y29kZT4gPC9hPjwvbGk+Cgk8L3VsPjwvbGk+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiN6Y19z ZW5kX2FydGljbGUiPiA8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZW5kX2FydGljbGUg LyYjNjI7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2FkdmFuY2VkIj5BZHZh bmNlZCBleGFtcGxlczwvYT4KCQk8bGk+PGEgaHJlZj0iI3Nob3dfZXJyb3IiPlNlcGFyYXRl IGlucHV0IGFuZCBlcnJvciBmb3JtczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjc3ViamVj dF9mb3JtIj5Vc2VyIHNlbGVjdGFibGUgc3ViamVjdCBmaWVsZDwvYT48L2xpPgoJPC91bD48 L2xpPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjdG9fZm9ybSI+VXNlciBzZWxlY3RhYmxlIHJl Y2lwaWVudCwgd2l0aG91dCBzaG93aW5nIGVtYWlsIGFkZHJlc3NlczwvYT48L2xpPgoJPC91 bD48L2xpPgoJCTxsaT48YSBocmVmPSIjc3R5bGluZyI+U3R5bGluZzwvYT48L2xpPgoJCTxs aT48YSBocmVmPSIjaGlzdG9yeSI+SGlzdG9yeTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIj Y3JlZGl0cyI+Q3JlZGl0czwvYT48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+PGEgaHJlZj0i I2FwaSI+UGx1Z2luIDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+QVBJ PC9zcGFuPjwvc3Bhbj4gYW5kIGNhbGxiYWNrIGV2ZW50czwvYT48L2xpPgoJPC91bD4KCgk8 aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5BcmJpdHJhcnkg dGV4dCBmaWVsZHMgY2FuIGJlIHNwZWNpZmllZCwgd2l0aCBtaW4vbWF4L3JlcXVpcmVkIHNl dHRpbmdzIGZvciB2YWxpZGF0aW9uLjwvbGk+CgkJPGxpPkVtYWlsIGFkZHJlc3MgdmFsaWRh dGlvbiwgaW5jbHVkaW5nIGEgY2hlY2sgZm9yIGEgdmFsaWQgTVggcmVjb3JkIChVbml4IG9u bHkpLjwvbGk+CgkJPGxpPlNhZmUgZXNjYXBpbmcgb2YgaW5wdXQgZGF0YS48L2xpPgoJCTxs aT5VVEYtOCBzYWZlLjwvbGk+CgkJPGxpPkFjY2Vzc2libGUgZm9ybSBsYXlvdXQsIGluY2x1 ZGluZyA8Y29kZT4mIzYwO2xhYmVsJiM2Mjs8L2NvZGU+LCA8Y29kZT4mIzYwO2xlZ2VuZCYj NjI7PC9jb2RlPiBhbmQgPGNvZGU+JiM2MDtmaWVsZHNldCYjNjI7PC9jb2RlPiB0YWdzLjwv bGk+CgkJPGxpPlZhcmlvdXMgY2xhc3NlcyBhbmQgaWRzIHRvIGFsbG93IGVhc3kgc3R5bGlu ZyBvZiBhbGwgcGFydHMgb2YgdGhlIGZvcm0uPC9saT4KCQk8bGk+QSBzZXBhcmF0ZSBsYW5n dWFnZSBwbHVnLWluIHRvIGVuYWJsZSBlYXN5IGxvY2FsaXNhdGlvbi48L2xpPgoJPC91bD4K CTx1bD4KCQk8bGk+U3BhbSBwcmV2ZW50aW9uIDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBj bGFzcz0iY2FwcyI+QVBJPC9zcGFuPjwvc3Bhbj4gKHVzZWQgYnkgVHJhbnF1aWxsbyYjODIx NztzIDxjb2RlPnBhcF9jb250YWN0X2NsZWFuZXI8L2NvZGU+IHBsdWdpbikuPC9saT4KCTwv dWw+CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMiBpZD0i c3RhcnQiPkdldHRpbmcgc3RhcnRlZDwvaDI+CgoJPGgzIGlkPSJjb250YWN0Zm9ybSI+Q29u dGFjdCBmb3JtPC9oMz4KCgk8cD5UaGUgc2ltcGxlc3QgZm9ybSBpcyBzaG93biBiZWxvdywg d2hpY2ggcHJvZHVjZXMgYSBkZWZhdWx0IGZvcm0gd2l0aCBOYW1lLCBFbWFpbCBhbmQgTWVz c2FnZSBmaWVsZHMuIEVtYWlsIHdpbGwgYmUgZGVsaXZlcmVkIHRvIHJlY2lwaWVudEBleGFt cGxlLmNvbSwgd2l0aCB0aGUgdXNlciYjODIxNztzIHN1cHBsaWVkIGVtYWlsIGFzIHRoZSAm IzgyMjA7RnJvbTomIzgyMjE7IGFkZHJlc3MuPC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDp6 ZW1fY29udGFjdCB0bz0mIzM0O3JlY2lwaWVudEBleGFtcGxlLmNvbSYjMzQ7IC8mIzYyOwo8 L2NvZGU+PC9wcmU+CgoJPHA+VG8gc3BlY2lmeSBmaWVsZHMgZXhwbGljaXRseSwgdXNlIHNv bWV0aGluZyBsaWtlIHRoaXM6PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFj dCB0bz0mIzM0O3JlY2lwaWVudEBleGFtcGxlLmNvbSYjMzQ7JiM2MjsKICAmIzYwO3R4cDp6 ZW1fY29udGFjdF9lbWFpbCAvJiM2MjsKICAmIzYwO3R4cDp6ZW1fY29udGFjdF90ZXh0IGxh YmVsPSYjMzQ7UGhvbmUmIzM0OyBtaW49NyBtYXg9MTUvJiM2MjsKICAmIzYwO3R4cDp6ZW1f Y29udGFjdF90ZXh0YXJlYSBsYWJlbD0mIzM0O1lvdXIgcXVlc3Rpb24mIzM0OyAvJiM2MjsK ICAmIzYwO3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgbGFiZWw9JiMzNDtTZW5kJiMzNDsgLyYj NjI7CiYjNjA7L3R4cDp6ZW1fY29udGFjdCYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5BbHRl cm5hdGl2ZWx5LCBwbGFjZSB0aGUgZmllbGQgc3BlY2lmaWNhdGlvbnMgaW4gYSBUZXh0cGF0 dGVybiBmb3JtLCBhbmQgY2FsbCBpdCBsaWtlIHRoaXM6PC9wPgoKPHByZT48Y29kZT4mIzYw O3R4cDp6ZW1fY29udGFjdCB0bz0mIzM0O3JlY2lwaWVudEBleGFtcGxlLmNvbSYjMzQ7IGZv cm09JiMzNDtteWNvbnRhY3Rmb3JtJiMzNDsgLyYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD48 YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJzZW5kYXJ0aWNs ZSI+U2VuZCBhcnRpY2xlPC9oMz4KCgk8cD5XaXRoaW4gdGhlIGNvbnRleHQgb2YgYW4gaW5k aXZpZHVhbCBhcnRpY2xlLCB0aGlzIHBsdWdpbiBjYW4gYmUgdXNlZCB0byBzZW5kIHRoZSBh cnRpY2xlIChvciBleGNlcnB0LCBpZiBpdCBleGlzdHMpIHRvIGFuIGVtYWlsIGFkZHJlc3Mg c3BlY2lmaWVkIGJ5IHRoZSB2aXNpdG9yLiBUaGlzIHJlcXVpcmVzIGF0IGxlYXN0IHR3byB0 YWdzOgoJPHVsPgoJCTxsaT48Y29kZT56ZW1fY29udGFjdDwvY29kZT4sIHRvIGNyZWF0ZSBm b3JtIHRoYXQgaXMgaW5pdGlhbGx5IGhpZGRlbiBieSBzZXR0aW5nIHRoZSA8Y29kZT5zZW5k X2FydGljbGU8L2NvZGU+IGF0dHJpYnV0ZS48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+PGNv ZGU+emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlPC9jb2RlPiwgdG8gY3JlYXRlIGEgJiM4MjE2 O3NlbmQgYXJ0aWNsZSYjODIxNzsgbGluayB3aGljaCByZXZlYWxzIHRoZSBhZm9yZW1lbnRp b25lZCBmb3JtIHdoZW4gY2xpY2tlZC48L2xpPgoJPC91bD48L3A+Cgo8cHJlPjxjb2RlPiYj NjA7dHhwOnplbV9jb250YWN0IHNlbmRfYXJ0aWNsZT0mIzM0OzEmIzM0OyAvJiM2MjsKJiM2 MDt0eHA6emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlIC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJ PHA+QnkgZGVmYXVsdCB0aGUgZm9ybSBjb250YWlucyBmaWVsZHMgZm9yIHlvdXIgbmFtZSBh bmQgZW1haWwgYWRkcmVzcywgdGhlIHJlY2lwaWVudCYjODIxNztzIGVtYWlsIGFkZHJlc3Mg YW5kIGEgcGVyc29uYWwgbWVzc2FnZSwgYnV0IHNpbWlsYXIgdG8gY29udGFjdCBmb3JtcyB5 b3UgY2FuIGNyZWF0ZSB5b3VyIG93biBmb3JtIGxheW91dC4gU29tZSB0aGluZ3MgeW91IG5l ZWQgdG8ga25vdzoKCTx1bD4KCQk8bGk+U2V0IHRoZSA8Y29kZT5zZW5kX2FydGljbGU8L2Nv ZGU+IGF0dHJpYnV0ZSB0byA8Y29kZT4xPC9jb2RlPiBpbiB0aGUgPGNvZGU+emVtX2NvbnRh Y3Q8L2NvZGU+IHRhZy48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+VXNlIGEgPGNvZGU+emVt X2NvbnRhY3RfZW1haWw8L2NvZGU+IHRhZyB3aXRoIHRoZSA8Y29kZT5zZW5kX2FydGljbGU8 L2NvZGU+IGF0dHJpYnV0ZSBzZXQgdG8gPGNvZGU+MTwvY29kZT4uIFRoaXMgZmllbGQgd2ls bCBiZSB1c2VkIGFzIHRoZSByZWNpcGllbnQgZW1haWwgYWRkcmVzcy48L2xpPgoJPC91bD48 L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0IHRvPSYjMzQ7eW91QGV4YW1w bGUuY29tJiMzNDsgc2VuZF9hcnRpY2xlPSYjMzQ7MSYjMzQ7JiM2MjsKICAmIzYwO3R4cDp6 ZW1fY29udGFjdF9lbWFpbCBsYWJlbD0mIzM0O1JlY2lwaWVudCBFbWFpbCYjMzQ7IHNlbmRf YXJ0aWNsZT0mIzM0OzEmIzM0OyAvJiM2MjsKICAmIzYwO3R4cDp6ZW1fY29udGFjdF9lbWFp bCBsYWJlbD0mIzM0O1lvdXIgRW1haWwmIzM0OyAvJiM2MjsKICAmIzYwO3R4cDp6ZW1fY29u dGFjdF9zdWJtaXQgbGFiZWw9JiMzNDtTZW5kIEFydGljbGUmIzM0OyAvJiM2MjsKJiM2MDsv dHhwOnplbV9jb250YWN0JiM2MjsKPC9jb2RlPgo8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFj dF9zZW5kX2FydGljbGUgLyYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9w Ij5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgyIGlkPSJ0YWdzIj5UYWdzPC9oMj4KCgk8cD48 YSBocmVmPSIjemMiPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0IC8mIzYyOzwvY29kZT48 L2E+IHByb2R1Y2VzIGEgZmxleGlibGUsIGN1c3RvbWlzYWJsZSBlbWFpbCBjb250YWN0IGZv cm0uIEl0IGlzIGludGVuZGVkIGZvciB1c2UgYXMgYW4gZW5xdWlyeSBmb3JtIGZvciBjb21t ZXJjaWFsIGFuZCBwcml2YXRlIHNpdGVzLCBhbmQgaW5jbHVkZXMgc2V2ZXJhbCBmZWF0dXJl cyB0byBoZWxwIHJlZHVjZSBjb21tb24gcHJvYmxlbXMgd2l0aCBzdWNoIGZvcm1zIChpbnZh bGlkIGVtYWlsIGFkZHJlc3NlcywgbWlzc2luZyBpbmZvcm1hdGlvbikuPC9wPgoKCTxwPjxh IGhyZWY9IiN6Y19zZW5kX2FydGljbGUiPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3Nl bmRfYXJ0aWNsZSAvJiM2Mjs8L2NvZGU+PC9hPiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSAm IzgyMjA7c2VuZCBhcnRpY2xlJiM4MjIxOyBsaW5rIHdpdGhpbiBhbiBhcnRpY2xlIGZvcm0s IGNvbm5lY3RpbmcgaXQgdG8gdGhlIGNvbnRhY3QgZm9ybS48L3A+CgoJPHA+QWxsIG90aGVy IHRhZ3MgcHJvdmlkZWQgYnkgdGhpcyBwbHVnaW4gY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUg YSA8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdCYjNjI7PC9jb2RlPiAmIzgyMzA7IDxjb2Rl PiYjNjA7L3R4cDp6ZW1fY29udGFjdCYjNjI7PC9jb2RlPiBjb250YWluZXIgdGFnIG9yIGlu IGEgVGV4dHBhdHRlcm4gZm9ybSB1c2VkIGFzIHRoZSA8Y29kZT5mb3JtPC9jb2RlPiBhdHRy aWJ1dGUgaW4gdGhlIDxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0IC8mIzYyOzwvY29kZT4g dGFnLjwvcD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgz IGlkPSJ6YyI+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3QgLyYjNjI7PC9jb2RlPjwvaDM+ CgoJPHA+TWF5IGJlIHVzZWQgYXMgYSBzZWxmLWNsb3Npbmcgb3IgY29udGFpbmVyIHRhZy4g UGxhY2UgdGhpcyB3aGVyZSB5b3Ugd2FudCB0aGUgaW5wdXQgZm9ybSB0byBnby4gU3RhdHVz IGFuZCBlcnJvciBtZXNzYWdlcywgaWYgYW55LCB3aWxsIGJlIGRpc3BsYXllZCBiZWZvcmUg dGhlIGZvcm0uPC9wPgoKCTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxjb2Rl PnRvPSYjMzQ7ZW1haWwgYWRkcmVzcyYjMzQ7PC9jb2RlPiA8c3BhbiBjbGFzcz0icmVxdWly ZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpSZWNpcGllbnQgZW1haWwgYWRkcmVzcy48L2xp PgoJPC91bD4KCTx1bD4KCQk8bGk+PGNvZGU+dG9fZm9ybT0mIzM0O2Zvcm0gbmFtZSYjMzQ7 PC9jb2RlPjxiciAvPgpVc2Ugc3BlY2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8c3Ryb25nPnRv PC9zdHJvbmc+IGF0dHJpYnV0ZSkuPC9saT4KCTwvdWw+CgoJPHVsPgoJCTxsaT48Y29kZT5m cm9tPSYjMzQ7ZW1haWwgYWRkcmVzcyYjMzQ7PC9jb2RlPjxiciAvPgpFbWFpbCBhZGRyZXNz IHVzZWQgaW4gdGhlICYjODIyMDtGcm9tOiYjODIyMTsgZmllbGQgd2hlbiBzZW5kaW5nIGVt YWlsLiBEZWZhdWx0cyB0byB0aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcy4gSWYg c3BlY2lmaWVkLCB0aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcyB3aWxsIGJlIHBs YWNlZCBpbiB0aGUgJiM4MjIwO1JlcGx5LVRvOiYjODIyMTsgZmllbGQgaW5zdGVhZC48L2xp PgoJPC91bD4KCTx1bD4KCQk8bGk+PGNvZGU+ZnJvbV9mb3JtPSYjMzQ7Zm9ybSBuYW1lJiMz NDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQgZm9ybSAob3ZlcnJpZGVzIDxzdHJvbmc+ ZnJvbTwvc3Ryb25nPiBhdHRyaWJ1dGUpLjwvbGk+Cgk8L3VsPgoKCTx1bD4KCQk8bGk+PGNv ZGU+c3ViamVjdD0mIzM0O3N1YmplY3QgdGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpTdWJqZWN0 IHVzZWQgd2hlbiBzZW5kaW5nIGFuIGVtYWlsLiBEZWZhdWx0IGlzIHRoZSBzaXRlIG5hbWUu PC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxjb2RlPnN1YmplY3RfZm9ybT0mIzM0O2Zvcm0g bmFtZSYjMzQ7PC9jb2RlPjxiciAvPgpVc2Ugc3BlY2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8 c3Ryb25nPnN1YmplY3Q8L3N0cm9uZz4gYXR0cmlidXRlKS48L2xpPgoJPC91bD4KCgk8dWw+ CgkJPGxpPjxjb2RlPnRoYW5rcz0mIzM0O3RleHQmIzM0OzwvY29kZT48YnIgLz4KTWVzc2Fn ZSBzaG93biBhZnRlciBzdWNjZXNzZnVsbHkgc3VibWl0dGluZyBhIG1lc3NhZ2UuIERlZmF1 bHQgaXMgPHN0cm9uZz5UaGFuayB5b3UsIHlvdXIgbWVzc2FnZSBoYXMgYmVlbiBzZW50PC9z dHJvbmc+LjwvbGk+CgkJPGxpPjxjb2RlPnRoYW5rc19mb3JtPSYjMzQ7Zm9ybSBuYW1lJiMz NDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQgZm9ybSAob3ZlcnJpZGVzIDxzdHJvbmc+ dGhhbmtzPC9zdHJvbmc+IGF0dHJpYnV0ZSkuPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxj b2RlPnJlZGlyZWN0PSYjMzQ7VVJMJiMzNDs8L2NvZGU+PGJyIC8+ClJlZGlyZWN0IHRvIHNw ZWNpZmllZCA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj48L3NwYW4+IChvdmVycmlkZXMgPHN0cm9uZz50aGFua3M8L3N0cm9uZz4gYW5kIDxzdHJv bmc+dGhhbmtzX2Zvcm08L3N0cm9uZz4gYXR0cmlidXRlcykuIDxzcGFuIGNsYXNzPSJjYXBz Ij48c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPjwvc3Bhbj4gbXVzdCBiZSByZWxhdGl2 ZSB0byB0aGUgVGV4dHBhdHRlcm4gU2l0ZSA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj48L3NwYW4+LiBFeGFtcGxlOiA8ZW0+cmVkaXJlY3Q9JiM4 MjIwO21vbmtleSYjODIyMTs8L2VtPiB3b3VsZCByZWRpcmVjdCB0byBodHRwOi8vZXhhbXBs ZS5jb20vbW9ua2V5LjwvbGk+Cgk8L3VsPgoKCTx1bD4KCQk8bGk+PGNvZGU+bGFiZWw9JiMz NDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+CkxhYmVsIGZvciB0aGUgY29udGFjdCBmb3JtLiBJ ZiBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nLCBkaXNwbGF5IG9mIHRoZSBmaWVsZHNldCBhbmQg bGVnZW5kIHRhZ3Mgd2lsbCBiZSBzdXBwcmVzc2VkLiBEZWZhdWx0IGlzIDxzdHJvbmc+Q29u dGFjdDwvc3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5zZW5kX2FydGljbGU9JiMzNDtib29s ZWFuJiMzNDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdG8gdXNlIHRoaXMgZm9ybSB0byA8YSBo cmVmPSIjYXJ0aWNsZSI+c2VuZCBhbiBhcnRpY2xlPC9hPi4gQXZhaWxhYmxlIHZhbHVlczog PHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVm YXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48L2xpPgoJPC91bD4KCTx1bD4KCQk8 bGk+PGNvZGU+Y29weXNlbmRlcj0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48YnIgLz4KV2hl dGhlciB0byBzZW5kIGEgY29weSBvZiB0aGUgZW1haWwgdG8gdGhlIHNlbmRlciYjODIxNztz IGFkZHJlc3MuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwg PHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+ IChubykuPC9saT4KCTwvdWw+CgoJPHVsPgoJCTxsaT48Y29kZT5mb3JtPSYjMzQ7Zm9ybSBu YW1lJiMzNDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQgZm9ybSwgY29udGFpbmluZyB0 aGUgbGF5b3V0IG9mIHRoZSBjb250YWN0IGZvcm0gZmllbGRzLjwvbGk+CgkJPGxpPjxjb2Rl PnNob3dfaW5wdXQ9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CiBXaGV0aGVyIHRv IGRpc3BsYXkgdGhlIGZvcm0gaW5wdXQgZmllbGRzLiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ry b25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0 IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+ PGNvZGU+c2hvd19lcnJvcj0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48YnIgLz4KIFdoZXRo ZXIgdG8gZGlzcGxheSBlcnJvciBhbmQgc3RhdHVzIG1lc3NhZ2VzLiBBdmFpbGFibGUgdmFs dWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8p LiBEZWZhdWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgoJPC91bD4KCgk8 aDQ+RXhhbXBsZXM8L2g0PgoKCTxwPlNlZSA8YSBocmVmPSIjY29udGFjdGZvcm0iPkdldHRp bmcgc3RhcnRlZDwvYT4gYW5kIDxhIGhyZWY9IiNhZHZhbmNlZCI+QWR2YW5jZWQgZXhhbXBs ZXM8L2E+LjwvcD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJ PGgzIGlkPSJ6Y190ZXh0Ij48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF90ZXh0IC8mIzYy OzwvY29kZT48L2gzPgoKCTxwPkNyZWF0ZXMgYSB0ZXh0IGlucHV0IGZpZWxkIGFuZCBjb3Jy ZXNwb25kaW5nIDxjb2RlPiYjNjA7bGFiZWwmIzYyOzwvY29kZT4gdGFnLiBUaGUgaW5wdXQg dmFsdWUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZW1haWwsIHByZWNlZGVkIGJ5IHRoZSBs YWJlbC48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+bGFi ZWw9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClRleHQgbGFiZWwgZGlzcGxheWVkIHRv IHRoZSB1c2VyLiBEZWZhdWx0IGlzIDxzdHJvbmc+VGV4dDwvc3Ryb25nPi48L2xpPgoJCTxs aT48Y29kZT50eXBlPSYjMzQ7dmFsdWUmIzM0OzwvY29kZT48YnIgLz4KRmllbGQgdHlwZSwg YXMgZGVmaW5lZCBieSB0aGUgVzNDLCBzdWNoIGFzICd0ZXh0JywgJ251bWJlcicsICdyYW5n ZScsICdkYXRlJywgZXRjLiBEZWZhdWx0IGlzICd0ZXh0Jy48L2xpPgoJCTxsaT48Y29kZT5u YW1lPSYjMzQ7dmFsdWUmIzM0OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNlZCBp biB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFu Pjwvc3Bhbj4gaW5wdXQgdGFnLjwvbGk+CgkJPGxpPjxjb2RlPmJyZWFrPSYjMzQ7dGFnJiMz NDs8L2NvZGU+PGJyIC8+CkJyZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQg ZmllbGQuIERlZmF1bHQgaXMgPGNvZGU+JiM2MDticiAvJiM2Mjs8L2NvZGU+LiBVc2UgPGNv ZGU+YnJlYWs9JiMzNDsmIzM0OzwvY29kZT4gdG8gcHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQg ZmllbGQgb24gdGhlIHNhbWUgbGluZS48L2xpPgoJCTxsaT48Y29kZT5kZWZhdWx0PSYjMzQ7 dmFsdWUmIzM0OzwvY29kZT48YnIgLz4KRGVmYXVsdCB2YWx1ZSB3aGVuIG5vIGlucHV0IGlz IHByb3ZpZGVkLjwvbGk+CgkJPGxpPjxjb2RlPm1pbj0mIzM0O251bWJlciYjMzQ7PC9jb2Rl PjxiciAvPgpNaW5pbXVtIGlucHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLCBvciBtaW5pbXVt IGZpZWxkIHZhbHVlIGZvciBudW1lcmljIHR5cGVzLiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwv c3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5tYXg9JiMzNDtudW1iZXImIzM0OzwvY29kZT48 YnIgLz4KTWF4aW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycywgb3IgbWF4aW11bSBm aWVsZCB2YWx1ZSBmb3IgbnVtZXJpYyB0eXBlcy4gRGVmYXVsdCBpcyA8c3Ryb25nPjEwMDwv c3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5zdGVwPSYjMzQ7bnVtYmVyJiMzNDs8L2NvZGU+ PGJyIC8+CkludGVydmFsIGJldHdlZW4gc3VjY2Vzc2l2ZSBwZXJtaXNzaWJsZSB2YWx1ZXMg aW4gbnVtZXJpYyBpbnB1dCBjb250cm9scy48L2xpPgoJCTxsaT48Y29kZT5zaXplPSYjMzQ7 aW50ZWdlciYjMzQ7PC9jb2RlPjxiciAvPgpTaXplIG9mIHRoZSBpbnB1dCBmaWVsZCBhcyBk aXNwbGF5ZWQgdG8gdGhlIHVzZXIuPC9saT4KCQk8bGk+PGNvZGU+Y2xhc3M9JiMzNDtjbGFz c25hbWUmIzM0OzwvY29kZT48YnIgLz4KQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBpbnB1 dCBmaWVsZC4gRGVmYXVsdCBpcyB6ZW1UZXh0LjwvbGk+CgkJPGxpPjxjb2RlPnBsYWNlaG9s ZGVyPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpQbGFjZWhvbGRlciB0ZXh0IHRvIHB1 dCBpbiB0aGUgaW5wdXQgZmllbGQuPC9saT4KCQk8bGk+PGNvZGU+YXV0b2ZvY3VzPSYjMzQ7 Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAvPgpTZXQgdGhlIGZpZWxkIHRvIHJlY2VpdmUgZm9j dXMuPC9saT4KCQk8bGk+PGNvZGU+YXV0b2NvbXBsZXRlPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9j b2RlPjxiciAvPgpQZXJtaXQgdGhlIGZpZWxkIHRvIG9mZmVyIGVudHJpZXMgZnJvbSBwcmV2 aW91c2x5IHN1cHBsaWVkIGNvbnRlbnQuPC9saT4KCQk8bGk+PGNvZGU+cGF0dGVybj0mIzM0 O3JlZ3VsYXIgZXhwcmVzc2lvbiYjMzQ7PC9jb2RlPjxiciAvPgpKYXZhc2NyaXB0IHJlZ3Vs YXIgZXhwcmVzc2lvbiB3aXRoIHdoaWNoIHRvIHZhbGlkYXRlIHRoZSBmaWVsZCBjb250ZW50 cy48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+PGNvZGU+cmVxdWlyZWQ9JiMzNDtib29sZWFu JiMzNDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyB0ZXh0IGZpZWxkIG11c3QgYmUgZmls bGVkIG91dC4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8 c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4g KHllcykuPC9saT4KCTwvdWw+CgoJPGg0PkV4YW1wbGU8L2g0PgoKPHByZT48Y29kZT4mIzYw O3R4cDp6ZW1fY29udGFjdF90ZXh0IGxhYmVsPSYjMzQ7WW91ciBuYW1lJiMzNDsgLyYjNjI7 CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+ CgoJPGgzIGlkPSJ6Y19lbWFpbCI+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfZW1haWwg LyYjNjI7PC9jb2RlPjwvaDM+CgoJPHA+SW5wdXQgZmllbGQgZm9yIHVzZXImIzgyMTc7cyBl bWFpbCBhZGRyZXNzLjwvcD4KCgk8cD5UaGUgZW50ZXJlZCBlbWFpbCBhZGRyZXNzIHdpbGwg YXV0b21hdGljYWxseSBiZSB2YWxpZGF0ZWQgdG8gbWFrZSBzdXJlIGl0IGlzIG9mIHRoZSBm b3JtICYjODIyMDthYmNAeHh4Lnl5eVsuenp6XSYjODIyMTsuIE9uIG5vbi1XaW5kb3dzIHNl cnZlcnMsIGEgdGVzdCB3aWxsIGJlIGRvbmUgdG8gdmVyaWZ5IHRoYXQgYW4gQSBvciBNWCBy ZWNvcmQgZXhpc3RzIGZvciB0aGUgZG9tYWluLiBOZWl0aGVyIHRlc3QgcHJldmVudHMgc3Bh bSwgYnV0IGl0IGRvZXMgaGVscCBkZXRlY3RpbmcgYWNjaWRlbnRhbCB0eXBpbmcgZXJyb3Jz LjwvcD4KCgk8aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5sYWJlbD0m IzM0O3RleHQmIzM0OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhl IHVzZXIuIERlZmF1bHQgaXMgPHN0cm9uZz5FbWFpbDwvc3Ryb25nPi48L2xpPgoJCTxsaT48 Y29kZT5uYW1lPSYjMzQ7dmFsdWUmIzM0OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMg dXNlZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5IVE1M PC9zcGFuPjwvc3Bhbj4gaW5wdXQgdGFnLjwvbGk+CgkJPGxpPjxjb2RlPnR5cGU9JiMzNDt2 YWx1ZSYjMzQ7PC9jb2RlPjxiciAvPgpGaWVsZCB0eXBlLCBhcyBkZWZpbmVkIGJ5IHRoZSBX M0MuIFN1aXRhYmxlIHZhbHVlcyBhcmUgJ3RleHQnIG9yICdlbWFpbCcuIERlZmF1bHQgaXMg J2VtYWlsJy48L2xpPgoJCTxsaT48Y29kZT5icmVhaz0mIzM0O3RhZyYjMzQ7PC9jb2RlPjxi ciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZh dWx0IGlzIDxjb2RlPiYjNjA7YnIgLyYjNjI7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSYj MzQ7JiMzNDs8L2NvZGU+IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRo ZSBzYW1lIGxpbmUuPC9saT4KCQk8bGk+PGNvZGU+ZGVmYXVsdD0mIzM0O3ZhbHVlJiMzNDs8 L2NvZGU+PGJyIC8+CkRlZmF1bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48 L2xpPgoJCTxsaT48Y29kZT5taW49JiMzNDtpbnRlZ2VyJiMzNDs8L2NvZGU+PGJyIC8+Ck1p bmltdW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4w PC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxjb2RlPm1heD0mIzM0O2ludGVnZXImIzM0OzwvY29k ZT48YnIgLz4KTWF4aW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBp cyA8c3Ryb25nPjEwMDwvc3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5zaXplPSYjMzQ7aW50 ZWdlciYjMzQ7PC9jb2RlPjxiciAvPgpTaXplIG9mIHRoZSBpbnB1dCBmaWVsZCBhcyBkaXNw bGF5ZWQgdG8gdGhlIHVzZXIuPC9saT4KCQk8bGk+PGNvZGU+cmVxdWlyZWQ9JiMzNDtib29s ZWFuJiMzNDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyB0ZXh0IGZpZWxkIG11c3QgYmUg ZmlsbGVkIG91dC4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMp LCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9u Zz4gKHllcykuPC9saT4KCQk8bGk+PGNvZGU+Y2xhc3M9JiMzNDtjbGFzc25hbWUmIzM0Ozwv Y29kZT48YnIgLz4KQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBmaWVsZC4gRGVmYXVsdCBp cyB6ZW1UZXh0LjwvbGk+CgkJPGxpPjxjb2RlPnBsYWNlaG9sZGVyPSYjMzQ7dGV4dCYjMzQ7 PC9jb2RlPjxiciAvPgpQbGFjZWhvbGRlciB0ZXh0IHRvIHB1dCBpbiB0aGUgZmllbGQuPC9s aT4KCQk8bGk+PGNvZGU+YXV0b2ZvY3VzPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAv PgpTZXQgdGhlIGZpZWxkIHRvIHJlY2VpdmUgaW5pdGlhbCBmb2N1cy48L2xpPgoJCTxsaT48 Y29kZT5hdXRvY29tcGxldGU9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+ClBlcm1p dCB0aGUgZmllbGQgdG8gb2ZmZXIgZW50cmllcyBmcm9tIHByZXZpb3VzbHkgc3VwcGxpZWQg Y29udGVudC48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+PGNvZGU+c2VuZF9hcnRpY2xlPSYj MzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgZmllbGQgaXMgdXNl ZCBhcyB0aGUgcmVjaXBpZW50IGVtYWlsIGFkZHJlc3Mgd2hlbiB1c2luZyB0aGUgc2VuZF9h cnRpY2xlIGZ1bmN0aW9uLiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4g KHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwv c3Ryb25nPiAobm8pLjwvbGk+Cgk8L3VsPgoKCTxoND5FeGFtcGxlPC9oND4KCjxwcmU+PGNv ZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfZW1haWwgbGFiZWw9JiMzNDtZb3VyIGVtYWlsIGFk ZHJlc3MmIzM0OyAvJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJh Y2sgdG8gdG9wPC9hPjwvcD4KCgk8aDMgaWQ9InpjX3RleHRhcmVhIj48Y29kZT4mIzYwO3R4 cDp6ZW1fY29udGFjdF90ZXh0YXJlYSAvJiM2Mjs8L2NvZGU+PC9oMz4KCgk8cD5DcmVhdGVz IGEgdGV4dGFyZWEuPC9wPgoKCTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxj b2RlPmxhYmVsPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3Bs YXllZCB0byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8c3Ryb25nPk1lc3NhZ2U8L3N0cm9uZz4u PC9saT4KCQk8bGk+PGNvZGU+bmFtZT0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+PGJyIC8+CkZp ZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFz cz0iY2FwcyI+SFRNTDwvc3Bhbj48L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJCTxsaT48Y29k ZT5icmVhaz0mIzM0O3RhZyYjMzQ7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0 aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiYjNjA7YnIgLyYj NjI7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSYjMzQ7JiMzNDs8L2NvZGU+IHRvIHB1dCB0 aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuPC9saT4KCQk8bGk+ PGNvZGU+ZGVmYXVsdD0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+PGJyIC8+CkRlZmF1bHQgdmFs dWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xpPgoJCTxsaT48Y29kZT5jb2xzPSYj MzQ7aW50ZWdlciYjMzQ7PC9jb2RlPjxiciAvPgpDb2x1bW4gd2lkdGguIERlZmF1bHQgaXMg PHN0cm9uZz41ODwvc3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5yb3dzPSYjMzQ7aW50ZWdl ciYjMzQ7PC9jb2RlPjxiciAvPgpSb3cgaGVpZ2h0LiBEZWZhdWx0IGlzIDxzdHJvbmc+ODwv c3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5taW49JiMzNDtpbnRlZ2VyJiMzNDs8L2NvZGU+ PGJyIC8+Ck1pbmltdW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMg PHN0cm9uZz4wPC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxjb2RlPm1heD0mIzM0O2ludGVnZXIm IzM0OzwvY29kZT48YnIgLz4KTWF4aW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4g RGVmYXVsdCBpcyA8c3Ryb25nPjEwMDAwPC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxjb2RlPmNs YXNzPSYjMzQ7Y2xhc3NuYW1lJiMzNDs8L2NvZGU+PGJyIC8+CkNTUyBjbGFzcyB0byBhcHBs eSB0byB0aGUgdGV4dGFyZWEuIERlZmF1bHQgaXMgemVtVGV4dGFyZWEuPC9saT4KCQk8bGk+ PGNvZGU+cGxhY2Vob2xkZXI9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClBsYWNlaG9s ZGVyIHRleHQgdG8gcHV0IGluIHRoZSB0ZXh0YXJlYS48L2xpPgoJCTxsaT48Y29kZT5hdXRv Zm9jdXM9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+ClNldCB0aGUgdGV4dGFyZWEg dG8gcmVjZWl2ZSBpbml0aWFsIGZvY3VzLjwvbGk+Cgk8L3VsPgoJPHVsPgoJCTxsaT48Y29k ZT5yZXF1aXJlZD0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlz IHRleHQgZmllbGQgbXVzdCBiZSBmaWxsZWQgb3V0LiBBdmFpbGFibGUgdmFsdWVzOiA8c3Ry b25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLiBEZWZhdWx0 IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgoJPC91bD4KCgk8aDQ+RXhhbXBs ZTwvaDQ+CgoJPHA+VGV4dGFyZWEgdGhhdCBpcyA0MCBjaGFycyB3aWRlLCAxMCBsaW5lcyBo aWdoLCB3aXRoIGEgY3VzdG9taXplZCBsYWJlbDo8L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhw OnplbV9jb250YWN0X3RleHRhcmVhIGNvbHM9JiMzNDs0MCYjMzQ7IHJvd3M9JiMzNDsxMCYj MzQ7IGxhYmVsPSYjMzQ7WW91ciBxdWVzdGlvbiYjMzQ7IC8mIzYyOwo8L2NvZGU+PC9wcmU+ CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNf c3VibWl0Ij48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgLyYjNjI7PC9jb2Rl PjwvaDM+CgoJPHA+Q3JlYXRlcyBhIHN1Ym1pdCBidXR0b24uPGJyIC8+CldoZW4gdXNlZCBh cyBhIGNvbnRhaW5lciB0YWcsIGEgJiM4MjIwO2J1dHRvbiYjODIyMTsgZWxlbWVudCB3aWxs IGJlIHVzZWQgaW5zdGVhZCBvZiBhbiAmIzgyMjA7aW5wdXQmIzgyMjE7IGVsZW1lbnQuPC9w PgoKCTxoND5BdHRyaWJ1dGVzOjwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5sYWJlbD0mIzM0 O3RleHQmIzM0OzwvY29kZT48YnIgLz4KVGV4dCBzaG93biBvbiB0aGUgc3VibWl0IGJ1dHRv bi4gRGVmYXVsdCBpcyAmIzgyMjA7U2VuZCYjODIyMTsuPC9saT4KCQk8bGk+PGNvZGU+Y2xh c3M9JiMzNDtjbGFzc25hbWUmIzM0OzwvY29kZT48YnIgLz4KQ1NTIGNsYXNzIHRvIGFwcGx5 IHRvIHRoZSBidXR0b24uIERlZmF1bHQgaXMgemVtU3VibWl0PC9saT4KCTwvdWw+Cgk8dWw+ CgkJPGxpPjxjb2RlPmJ1dHRvbj0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48YnIgLz4KPGVt PkRlcHJlY2F0ZWQuIFVzZSBhIGNvbnRhaW5lciB0YWcgaWYgeW91IHdhbnQgYSBidXR0b24g ZWxlbWVudC48L2VtPjwvbGk+Cgk8L3VsPgoKCTxoND5FeGFtcGxlczwvaDQ+CgoJPHA+U3Rh bmRhcmQgc3VibWl0IGJ1dHRvbjo8L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250 YWN0X3N1Ym1pdCAvJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPlN1Ym1pdCBidXR0b24gd2l0 aCB5b3VyIG93biB0ZXh0OjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rf c3VibWl0IGxhYmVsPSYjMzQ7U2VuZCYjMzQ7IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+ VXNhZ2UgYXMgYSBjb250YWluZXIgdGFnLCB3aGljaCBhbGxvd3MgeW91IHRvIHVzZSBUZXh0 cGF0dGVybiB0YWdzIGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gbWFya3Vw IGluIHRoZSBzdWJtaXQgYnV0dG9uOjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2Nv bnRhY3Rfc3VibWl0JiM2MjsmIzYwO3N0cm9uZyYjNjI7U2VuZCYjNjA7L3N0cm9uZyYjNjI7 IHF1ZXN0aW9uJiM2MDsvdHhwOnplbV9jb250YWN0X3N1Ym1pdCYjNjI7CjwvY29kZT48L3By ZT4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0JiM2MjsmIzYwO2lt ZyBzcmM9JiMzNDtwYXRoL3RvL2ltZy5wbmcmIzM0OyBhbHQ9JiMzNDtzdWJtaXQmIzM0OyYj NjI7JiM2MDsvdHhwOnplbV9jb250YWN0X3N1Ym1pdCYjNjI7CjwvY29kZT48L3ByZT4KCgk8 cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJ6Y19zZWxl Y3QiPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3NlbGVjdCAvJiM2Mjs8L2NvZGU+PC9o Mz4KCgk8cD5DcmVhdGVzIGEgZHJvcC1kb3duIHNlbGVjdGlvbiBsaXN0LjwvcD4KCgk8aDQ+ QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5saXN0PSYjMzQ7Y29tbWEtc2Vw YXJhdGVkIHZhbHVlcyYjMzQ7PC9jb2RlPiA8c3BhbiBjbGFzcz0icmVxdWlyZWQiPnJlcXVp cmVkPC9zcGFuPjxiciAvPgpMaXN0IG9mIGl0ZW1zIHRvIHNob3cgaW4gdGhlIHNlbGVjdCBi b3guPC9saT4KCQk8bGk+PGNvZGU+c2VsZWN0ZWQ9JiMzNDt2YWx1ZSYjMzQ7PC9jb2RlPjxi ciAvPgpMaXN0IGl0ZW0gdGhhdCBpcyBzZWxlY3RlZCBieSBkZWZhdWx0LjwvbGk+CgkJPGxp Pjxjb2RlPmxhYmVsPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRp c3BsYXllZCB0byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8c3Ryb25nPk9wdGlvbjwvc3Ryb25n Pi48L2xpPgoJCTxsaT48Y29kZT5uYW1lPSYjMzQ7dmFsdWUmIzM0OzwvY29kZT48YnIgLz4K RmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNs YXNzPSJjYXBzIj5IVE1MPC9zcGFuPjwvc3Bhbj4gaW5wdXQgdGFnLjwvbGk+CgkJPGxpPjxj b2RlPmJyZWFrPSYjMzQ7dGFnJiMzNDs8L2NvZGU+PGJyIC8+CkJyZWFrIHRhZyBiZXR3ZWVu IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQuIERlZmF1bHQgaXMgPGNvZGU+JiM2MDticiAv JiM2Mjs8L2NvZGU+LiBVc2UgPGNvZGU+YnJlYWs9JiMzNDsmIzM0OzwvY29kZT4gdG8gcHV0 IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhlIHNhbWUgbGluZS48L2xpPgoJCTxs aT48Y29kZT5kZWxpbWl0ZXI9JiMzNDtjaGFyYWN0ZXImIzM0OzwvY29kZT48YnIgLz4KU2Vw YXJhdG9yIGNoYXJhY3RlciB1c2VkIGluIHRoZSA8c3Ryb25nPmxpc3Q8L3N0cm9uZz4gYXR0 cmlidXRlLiBEZWZhdWx0IGlzIDxzdHJvbmc+LDwvc3Ryb25nPiAoY29tbWEpLjwvbGk+CgkJ PGxpPjxjb2RlPmNsYXNzPSYjMzQ7Y2xhc3NuYW1lJiMzNDs8L2NvZGU+PGJyIC8+CkNTUyBj bGFzcyB0byBhcHBseSB0byB0aGUgZmllbGQuIERlZmF1bHQgaXMgemVtU2VsZWN0LjwvbGk+ CgkJPGxpPjxjb2RlPmF1dG9mb2N1cz0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48YnIgLz4K U2V0IHRoZSBmaWVsZCB0byByZWNlaXZlIGluaXRpYWwgZm9jdXMuPC9saT4KCTwvdWw+Cgk8 dWw+CgkJPGxpPjxjb2RlPnJlcXVpcmVkPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAv PgpXaGV0aGVyIGEgbm9uLWVtcHR5IG9wdGlvbiBtdXN0IGJlIHNlbGVjdGVkLiBBdmFpbGFi bGUgdmFsdWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25n PiAobm8pLiBEZWZhdWx0IGlzIDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKS48L2xpPgoJPC91 bD4KCgk8aDQ+RXhhbXBsZXM8L2g0PgoKCTxwPlNlbGVjdCBsaXN0IGxhYmVsZWQgJiM4MjE2 O0RlcGFydG1lbnQmIzgyMTc7LCBjb250YWluaW5nIHRocmVlIG9wdGlvbnMgYW5kIGEgYmxh bmsgb3B0aW9uIChkdWUgdG8gdGhlIGNvbW1hIGJlZm9yZSAmIzgyMTY7TWFya2V0aW5nJiM4 MjE3Oykgc2hvd24gYnkgZGVmYXVsdCwgZm9yY2luZyB0aGUgdXNlciB0byBtYWtlIGEgc2Vs ZWN0aW9uLjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0IGxh YmVsPSYjMzQ7RGVwYXJ0bWVudCYjMzQ7IGxpc3Q9JiMzNDssTWFya2V0aW5nLFNhbGVzLFN1 cHBvcnQmIzM0OyAvJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPlNlbGVjdCBsaXN0IGNvbnRh aW5pbmcgdGhyZWUgb3B0aW9ucyB3aXRoICYjODIxNjtNYXJrZXRpbmcmIzgyMTc7IHNlbGVj dGVkIGJ5IGRlZmF1bHQuPC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9z ZWxlY3QgbGlzdD0mIzM0O01hcmtldGluZyxTYWxlcyxTdXBwb3J0JiMzNDsgc2VsZWN0ZWQ9 JiMzNDtNYXJrZXRpbmcmIzM0OyAvJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9 IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDMgaWQ9InpjX2NoZWNrYm94Ij48Y29k ZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCAvJiM2Mjs8L2NvZGU+PC9oMz4KCgk8 cD5DcmVhdGVzIGEgY2hlY2sgYm94LjwvcD4KCgk8aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHVs PgoJCTxsaT48Y29kZT5sYWJlbD0mIzM0O3RleHQmIzM0OzwvY29kZT48YnIgLz4KVGV4dCBs YWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgPHN0cm9uZz5DaGVja2Jv eDwvc3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5uYW1lPSYjMzQ7dmFsdWUmIzM0OzwvY29k ZT48YnIgLz4KRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMi PjxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPjwvc3Bhbj4gaW5wdXQgdGFnLjwvbGk+ CgkJPGxpPjxjb2RlPmJyZWFrPSYjMzQ7dGFnJiMzNDs8L2NvZGU+PGJyIC8+CkJyZWFrIHRh ZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQuIERlZmF1bHQgaXMgPGNvZGU+ JiM2MDticiAvJiM2Mjs8L2NvZGU+LiBVc2UgPGNvZGU+YnJlYWs9JiMzNDsmIzM0OzwvY29k ZT4gdG8gcHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhlIHNhbWUgbGluZS48 L2xpPgoJCTxsaT48Y29kZT5jaGVja2VkPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAv PgpXaGV0aGVyIHRoaXMgYm94IGlzIGNoZWNrZWQgd2hlbiBmaXJzdCBkaXNwbGF5ZWQuIEF2 YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9z dHJvbmc+IChubykuIERlZmF1bHQgaXMgJiM4MjIwOzAmIzgyMjE7IChubykuPC9saT4KCQk8 bGk+PGNvZGU+Y2xhc3M9JiMzNDtjbGFzc25hbWUmIzM0OzwvY29kZT48YnIgLz4KQ1NTIGNs YXNzIHRvIGFwcGx5IHRvIHRoZSBmaWVsZC4gRGVmYXVsdCBpcyB6ZW1DaGVja2JveC48L2xp PgoJCTxsaT48Y29kZT5hdXRvZm9jdXM9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+ ClNldCB0aGUgZmllbGQgdG8gcmVjZWl2ZSBpbml0aWFsIGZvY3VzLjwvbGk+Cgk8L3VsPgoJ PHVsPgoJCTxsaT48Y29kZT5yZXF1aXJlZD0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48YnIg Lz4KV2hldGhlciB0aGlzIGNoZWNrYm94IG11c3QgYmUgZmlsbGVkIG91dC4gQXZhaWxhYmxl IHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4g KG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4KCTwvdWw+ CgoJPGg0PkV4YW1wbGVzPC9oND4KCgk8cD5TaHJpbmstd3JhcCBhZ3JlZW1lbnQgd2hpY2gg bXVzdCBiZSBjaGVja2VkIGJ5IHRoZSB1c2VyIGJlZm9yZSB0aGUgZW1haWwgd2lsbCBiZSBz ZW50LjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggbGFi ZWw9JiMzNDtJIGFjY2VwdCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMmIzM0OyAvJiM2MjsK PC9jb2RlPjwvcHJlPgoKCTxwPk9wdGlvbmFsIGNoZWNrYm94ZXM6PC9wPgoKPHByZT48Y29k ZT5TZWxlY3Qgd2hpY2ggb3BlcmF0aW5nIHN5c3RlbXMgYXJlIHlvdSBmYW1pbGlhciB3aXRo OiYjNjA7YnIgLyYjNjI7CiYjNjA7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSYj MzQ7V2luZG93cyYjMzQ7IHJlcXVpcmVkPSYjMzQ7MCYjMzQ7IC8mIzYyOyYjNjA7YnIgLyYj NjI7CiYjNjA7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSYjMzQ7VW5peC9MaW51 eC9CU0QmIzM0OyByZXF1aXJlZD0mIzM0OzAmIzM0OyAvJiM2MjsmIzYwO2JyIC8mIzYyOwom IzYwO3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBsYWJlbD0mIzM0O01hY09TJiMzNDsgcmVx dWlyZWQ9JiMzNDswJiMzNDsgLyYjNjI7JiM2MDticiAvJiM2MjsKPC9jb2RlPjwvcHJlPgoK CTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDMgaWQ9InpjX3Jh ZGlvIj48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9yYWRpbyAvJiM2Mjs8L2NvZGU+PC9o Mz4KCgk8cD5DcmVhdGVzIGEgcmFkaW8gYnV0dG9uLjwvcD4KCgk8aDQ+QXR0cmlidXRlczwv aDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5ncm91cD0mIzM0O3RleHQmIzM0OzwvY29kZT4gPHNw YW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4KVGV4dCB1c2VkIGlu IHRoZSBlbWFpbCB0byBkZXNjcmliZSB0aGlzIGdyb3VwIG9mIHJhZGlvIGJ1dHRvbnMuIFRo aXMgYXR0cmlidXRlIHZhbHVlIGlzIHJlbWVtYmVyZWQgZm9yIHN1YnNlcXVlbnQgcmFkaW8g YnV0dG9ucywgc28geW91IG9ubHkgaGF2ZSB0byBzZXQgaXQgb24gdGhlIGZpcnN0IHJhZGlv IGJ1dHRvbiBvZiBhIGdyb3VwLiBEZWZhdWx0IGlzIDxzdHJvbmc+UmFkaW88L3N0cm9uZz4u PC9saT4KCQk8bGk+PGNvZGU+bGFiZWw9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+IDxzcGFuIGNs YXNzPSJyZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ClRleHQgbGFiZWwgZGlzcGxh eWVkIHRvIHRoZSB1c2VyIGFzIHJhZGlvIGJ1dHRvbiBvcHRpb24uPC9saT4KCQk8bGk+PGNv ZGU+bmFtZT0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5hbWUsIGFzIHVz ZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwv c3Bhbj48L3NwYW4+IGlucHV0IHRhZy4gVGhpcyBhdHRyaWJ1dGUgdmFsdWUgaXMgcmVtZW1i ZXJlZCBmb3Igc3Vic2VxdWVudCByYWRpbyBidXR0b25zLCBzbyB5b3Ugb25seSBoYXZlIHRv IHNldCBpdCBvbiB0aGUgZmlyc3QgcmFkaW8gYnV0dG9uIG9mIGEgZ3JvdXAuIElmIGl0IGhh c24mIzgyMTc7dCBiZWVuIHNldCBhdCBhbGwsIGl0IHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRo ZSA8Y29kZT5ncm91cDwvY29kZT4gYXR0cmlidXRlLjwvbGk+CgkJPGxpPjxjb2RlPmJyZWFr PSYjMzQ7dGFnJiMzNDs8L2NvZGU+PGJyIC8+CkJyZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJl bCBhbmQgZmllbGQuIERlZmF1bHQgaXMgYSBzcGFjZS48L2xpPgoJCTxsaT48Y29kZT5jbGFz cz0mIzM0O2NsYXNzbmFtZSYjMzQ7PC9jb2RlPjxiciAvPgpDU1MgY2xhc3MgdG8gYXBwbHkg dG8gdGhlIGZpZWxkLiBEZWZhdWx0IGlzIHplbVJhZGlvLjwvbGk+CgkJPGxpPjxjb2RlPmF1 dG9mb2N1cz0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48YnIgLz4KU2V0IHRoZSBmaWVsZCB0 byByZWNlaXZlIGluaXRpYWwgZm9jdXMuPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxjb2Rl PmNoZWNrZWQ9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyBy YWRpbyBvcHRpb24gaXMgY2hlY2tlZCB3aGVuIHRoZSBmb3JtIGlzIGZpcnN0IGRpc3BsYXll ZC4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25n PjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48 L2xpPgoJPC91bD4KCgk8aDQ+RXhhbXBsZTwvaDQ+CgoJPHA+R3JvdXAgbXV0dWFsbHkgZXhj bHVzaXZlIHJhZGlvIGJ1dHRvbnMgYnkgc2V0dGluZyB0aGUgPGNvZGU+Z3JvdXA8L2NvZGU+ IGF0dHJpYnV0ZSBvbiB0aGUgZmlyc3QgcmFkaW8gYnV0dG9uIGluIGEgZ3JvdXAuIE9ubHkg dGhlIGNob3NlbiByYWRpbyBidXR0b24gZnJvbSBlYWNoIGdyb3VwIHdpbGwgYmUgdXNlZCBp biB0aGUgZW1haWwgbWVzc2FnZS4gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBvdXRwdXQgaW4gdGhl IGZvcm0gPHN0cm9uZz5ncm91cDogbGFiZWw8L3N0cm9uZz4gZm9yIGVhY2ggb2YgdGhlIGNo b3NlbiByYWRpbyBidXR0b25zLjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRh Y3RfcmFkaW8gbGFiZWw9JiMzNDtNZWRpdW0mIzM0OyBncm91cD0mIzM0O0kgbGlrZSBteSBz dGVhayYjMzQ7IC8mIzYyOwomIzYwO3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0mIzM0 O1JhcmUmIzM0OyAvJiM2MjsKJiM2MDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9JiMz NDtXZWxsIGRvbmUmIzM0OyAvJiM2MjsKPC9jb2RlPgo8Y29kZT4mIzYwO3R4cDp6ZW1fY29u dGFjdF9yYWRpbyBsYWJlbD0mIzM0O1dpbmUmIzM0OyBncm91cD0mIzM0O1dpdGggYSBnbGFz cyBvZiYjMzQ7IC8mIzYyOwomIzYwO3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0mIzM0 O0JlZXImIzM0OyAvJiM2MjsKJiM2MDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9JiMz NDtXYXRlciYjMzQ7IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3RvcCI+ QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfc2VjcmV0Ij48Y29kZT4mIzYwO3R4 cDp6ZW1fY29udGFjdF9zZWNyZXQgLyYjNjI7PC9jb2RlPjwvaDM+CgoJPHA+VGhpcyB0YWcg aGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9ybSBvciA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwv c3Bhbj4gb3V0cHV0LCBidXQgd2lsbCBpbmNsdWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24g aW4gdGhlIGVtYWlsLiBJdCBjYW4gYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2luZyB0YWcgb3Ig YXMgYSBjb250YWluZXIgdGFnLjwvcD4KCgk8aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJ CTxsaT48Y29kZT5uYW1lPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpVc2VkIGludGVy bmFsbHkuIFNldCB0aGlzIG9ubHkgaWYgeW91IGhhdmUgbXVsdGlwbGUgJiM4MjE2O3NlY3Jl dCYjODIxNzsgZm9ybSBlbGVtZW50cyB3aXRoIGlkZW50aWNhbCBsYWJlbHMuPC9saT4KCQk8 bGk+PGNvZGU+bGFiZWw9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClVzZWQgdG8gaWRl bnRpZnkgdGhlIGZpZWxkIGluIHRoZSBlbWFpbC4gRGVmYXVsdCBpcyA8c3Ryb25nPlNlY3Jl dDwvc3Ryb25nPi48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+PGNvZGU+dmFsdWU9JiMzNDt2 YWx1ZSYjMzQ7PC9jb2RlPjxiciAvPgpTb21lIHRleHQgeW91IHdhbnQgdG8gYWRkIHRvIHRo ZSBlbWFpbC48L2xpPgoJPC91bD4KCgk8aDQ+RXhhbXBsZXM8L2g0PgoKCTxwPlVzYWdlIGFz IGEgc2VsZi1jbG9zaW5nIHRhZzwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRh Y3Rfc2VjcmV0IHZhbHVlPSYjMzQ7VGhlIGFuc3dlciBpcyA0MiYjMzQ7IC8mIzYyOwo8L2Nv ZGU+PC9wcmU+CgoJPHA+VXNhZ2UgYXMgYSBjb250YWluZXIgdGFnPC9wPgoKPHByZT48Y29k ZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgbGFiZWw9JiMzNDtEZWFyIHVzZXImIzM0 OyYjNjI7CiAgUGxlYXNlIHByb3ZpZGUgYSB1c2VmdWwgZXhhbXBsZSBmb3IgdGhpcyB0YWch CiYjNjA7L3R4cDp6ZW1fY29udGFjdF9zZWNyZXQmIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+ PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfc2VydmVy aW5mbyI+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rfc2VydmVyaW5mbyAvJiM2Mjs8L2Nv ZGU+PC9oMz4KCgk8cD5UaGlzIHRhZyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBmb3JtIG9yIDxz cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBvdXRwdXQsIGJ1dCB3aWxsIGluY2x1ZGUg YWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpbiB0aGUgZW1haWwgYmFzZWQgb24gdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+ICRfU0VSVkVSIHZhcmlhYmxlLjwvcD4KCgk8aDQ+ QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5uYW1lPSYjMzQ7dmFsdWUmIzM0 OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4K TmFtZSBvZiB0aGUgc2VydmVyIHZhcmlhYmxlLiBTZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9w aHAubmV0L21hbnVhbC9yZXNlcnZlZC52YXJpYWJsZXMucGhwI3Jlc2VydmVkLnZhcmlhYmxl cy5zZXJ2ZXIiPjxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IG1hbnVhbDwvYT4gZm9y IGEgZnVsbCBsaXN0LjwvbGk+Cgk8L3VsPgoJPHVsPgoJCTxsaT48Y29kZT5sYWJlbD0mIzM0 O3RleHQmIzM0OzwvY29kZT48YnIgLz4KVXNlZCB0byBpZGVudGlmeSB0aGUgZmllbGQgaW4g dGhlIGVtYWlsLiBEZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIDxzdHJvbmc+bmFtZTwv c3Ryb25nPiBhdHRyaWJ1dGUuPC9saT4KCTwvdWw+CgoJPGg0PkV4YW1wbGVzPC9oND4KCgk8 cD5BZGQgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIHZpc2l0b3IgdG8gdGhlIGVtYWlsPC9wPgoK PHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvIG5hbWU9JiMzNDtS RU1PVEVfQUREUiYjMzQ7IGxhYmVsPSYjMzQ7SVAgbnVtYmVyJiMzNDsgLyYjNjI7CjwvY29k ZT48L3ByZT4KCgk8cD5BZGQgdGhlIG5hbWUgb2YgdGhlIHZpc2l0b3ImIzgyMTc7cyBicm93 c2VyIHRvIHRoZSBlbWFpbDwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rf c2VydmVyaW5mbyBuYW1lPSYjMzQ7SFRUUF9VU0VSX0FHRU5UJiMzNDsgbGFiZWw9JiMzNDtC cm93c2VyJiMzNDsgLyYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9wIj5C YWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJ6Y19zZW5kX2FydGljbGUiPjxjb2RlPiYj NjA7dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSAvJiM2Mjs8L2NvZGU+PC9oMz4KCgk8 cD5Vc2UgdGhpcyB0YWcgaW4geW91ciBpbmRpdmlkdWFsIGFydGljbGUgZm9ybSwgd2hlcmUg eW91IHdhbnQgdGhlICYjODIyMDtzZW5kIGFydGljbGUmIzgyMjE7IGxpbmsgdG8gYmUgZGlz cGxheWVkLjwvcD4KCgk8aDQ+QXR0cmlidXRlczo8L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+ bGlua3RleHQ9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClRleHQgZGlzcGxheWVkIGZv ciB0aGUgbGluay4gRGVmYXVsdCBpcyA8c3Ryb25nPnNlbmQgYXJ0aWNsZTwvc3Ryb25nPjwv bGk+Cgk8L3VsPgoKCTxoND5FeGFtcGxlczo8L2g0PgoKCTxwPlNlZSA8YSBocmVmPSIjc2Vu ZGFydGljbGUiPkdldHRpbmcgc3RhcnRlZDwvYT48L3A+CgoJPHA+PGEgaHJlZj0iI3RvcCI+ QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMiBpZD0iYWR2YW5jZWQiPkFkdmFuY2VkIGV4YW1w bGVzPC9oMj4KCgk8aDMgaWQ9InNob3dfZXJyb3IiPlNlcGFyYXRlIGlucHV0IGFuZCBlcnJv ciBmb3JtczwvaDM+CgoJPHA+VXNpbmcgPGNvZGU+c2hvd19pbnB1dDwvY29kZT4gYW5kIDxj b2RlPnNob3dfZXJyb3I8L2NvZGU+IHRvIGRpc3BsYXkgdGhlIGZvcm0gYW5kIGVycm9yIG1l c3NhZ2VzIG9uIGRpZmZlcmVudCBwYXJ0cyBvZiBhIHBhZ2UuIEEgZm9ybSBpcyB1c2VkIHRv IG1ha2Ugc3VyZSB0aGUgY29udGVudHMgb2YgYm90aCBmb3JtcyBhcmUgaWRlbnRpY2FsLCBv dGhlcndpc2UgdGhleSB3b3VsZCBiZSBzZWVuIGFzIHR3byBpbmRlcGVuZGVudCBmb3Jtcy4g VGhlIGZpcnN0IGZvcm0gb25seSBzaG93cyBlcnJvcnMgKG5vIGlucHV0KSwgdGhlIHNlY29u ZCBmb3JtIG9ubHkgc2hvd3MgdGhlIGlucHV0IGZpZWxkcyAobm8gZXJyb3JzKS48L3A+Cgo8 cHJlPjxjb2RlPiYjNjA7ZGl2IGlkPSYjMzQ7ZXJyb3ImIzM0OyYjNjI7CiAgJiM2MDt0eHA6 emVtX2NvbnRhY3QgZm9ybT0mIzM0O2NvbnRhY3RfZm9ybSYjMzQ7IHNob3dfaW5wdXQ9JiMz NDswJiMzNDsgLyYjNjI7CiYjNjA7L2RpdiYjNjI7CjwvY29kZT4KPGNvZGU+JiM2MDtkaXYg aWQ9JiMzNDtpbnB1dGZvcm0mIzM0OyYjNjI7CiAgJiM2MDt0eHA6emVtX2NvbnRhY3QgZm9y bT0mIzM0O2NvbnRhY3RfZm9ybSYjMzQ7IHNob3dfZXJyb3I9JiMzNDswJiMzNDsgLyYjNjI7 CiYjNjA7L2RpdiYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5BcGFydCBmcm9tIHRoZSA8Y29k ZT5zaG93X2Vycm9yPC9jb2RlPiBhbmQgPGNvZGU+c2hvd19pbnB1dDwvY29kZT4gYXR0cmli dXRlcywgYWxsIG90aGVyIGF0dHJpYnV0ZXMgbXVzdCBiZSAxMDAlIGlkZW50aWNhbCBpbiBi b3RoIGZvcm1zLCBvdGhlcndpc2UgdGhleSB3b3VsZCBiZSBzZWVuIGFzIHR3byB1bnJlbGF0 ZWQgZm9ybXMuPC9wPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4K Cgk8aDMgaWQ9InN1YmplY3RfZm9ybSI+VXNlciBzZWxlY3RhYmxlIHN1YmplY3QgZmllbGQ8 L2gzPgoKCTxwPlNwZWNpZnkgdGhlIDxjb2RlPnN1YmplY3RfZm9ybTwvY29kZT4gYXR0cmli dXRlIGFuZCBjcmVhdGUgYSBmb3JtIHdoaWNoIGluY2x1ZGVzIGEgPGNvZGU+emVtX2NvbnRh Y3Rfc2VsZWN0PC9jb2RlPiB0YWc6PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29u dGFjdCB0bz0mIzM0O3lvdUBleGFtcGxlLmNvbSYjMzQ7IHN1YmplY3RfZm9ybT0mIzM0O215 X3N1YmplY3RfZm9ybSYjMzQ7IC8mIzYyOwogICYjNjA7dHhwOnplbV9jb250YWN0X3RleHQg bGFiZWw9JiMzNDtOYW1lJiMzNDsgLyYjNjI7JiM2MDticiAvJiM2MjsKICAmIzYwO3R4cDp6 ZW1fY29udGFjdF9lbWFpbCAvJiM2MjsmIzYwO2JyIC8mIzYyOwogICYjNjA7dHhwOnplbV9j b250YWN0X3NlbGVjdCBsYWJlbD0mIzM0O0Nob29zZSBTdWJqZWN0JiMzNDsgbGlzdD0mIzM0 OyxRdWVzdGlvbixGZWVkYmFjayYjMzQ7IC8mIzYyOyYjNjA7YnIgLyYjNjI7CiAgJiM2MDt0 eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgbGFiZWw9JiMzNDtNZXNzYWdlJiMzNDsgLyYjNjI7 JiM2MDticiAvJiM2MjsKJiM2MDsvdHhwOnplbV9jb250YWN0JiM2MjsKPC9jb2RlPjwvcHJl PgoKCTxwPkNyZWF0ZSBhIFRleHRwYXR0ZXJuIGZvcm0gY2FsbGVkICYjODIyMDtteV9zdWJq ZWN0X2Zvcm0mIzgyMjE7LCBjb250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6 cGhwJiM2MjsKICBnbG9iYWwgJHplbV9jb250YWN0X2Zvcm07CiAgZWNobyAkemVtX2NvbnRh Y3RfZm9ybVsmIzM5O0Nob29zZSBTdWJqZWN0JiMzOTtdOwomIzYwOy90eHA6cGhwJiM2MjsK PC9jb2RlPjwvcHJlPgoKCTxwPlRoZSA8Y29kZT5sYWJlbDwvY29kZT4gdXNlZCBpbiB0aGUg PGNvZGU+emVtX2NvbnRhY3Rfc2VsZWN0PC9jb2RlPiB0YWcgbXVzdCBiZSBpZGVudGljYWwg dG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGUgaW4gdGhlIDxjb2RlPnN1YmplY3RfZm9y bTwvY29kZT4uIEhlcmUgd2UgdXNlZCA8Y29kZT5DaG9vc2Ugc3ViamVjdDwvY29kZT4uPC9w PgoKCTxwPklmIHlvdSYjODIxNztkIHByZWZlciB0byBhZGQgYSBjb21tb24gcHJlZml4IGZv ciBhbGwgc3ViamVjdHMsIHVzZSBhIDxjb2RlPnN1YmplY3RfZm9ybTwvY29kZT4gY29udGFp bmluZzo8L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnBocCYjNjI7CiAgZ2xvYmFsICR6ZW1f Y29udGFjdF9mb3JtOwogIGVjaG8gJiMzOTtNeSBjb21tb24gcHJlZml4IC0gJiMzOTsgLiAk emVtX2NvbnRhY3RfZm9ybVsmIzM5O0Nob29zZSBTdWJqZWN0JiMzOTtdOwomIzYwOy90eHA6 cGhwJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9w PC9hPjwvcD4KCgk8aDMgaWQ9InRvX2Zvcm0iPlVzZXIgc2VsZWN0YWJsZSByZWNpcGllbnQs IHdpdGhvdXQgc2hvd2luZyBlbWFpbCBhZGRyZXNzPC9oMz4KCgk8cD5TcGVjaWZ5IHRoZSA8 Y29kZT50b19mb3JtPC9jb2RlPiBhdHRyaWJ1dGUgYW5kIGNyZWF0ZSBhIGZvcm0gd2hpY2gg aW5jbHVkZXMgYSA8Y29kZT56ZW1fY29udGFjdF9zZWxlY3Q8L2NvZGU+IHRhZzo8L3A+Cgo8 cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0IHRvX2Zvcm09JiMzNDtteV96ZW1fY29u dGFjdF90b19mb3JtJiMzNDsmIzYyOwogICYjNjA7dHhwOnplbV9jb250YWN0X3RleHQgbGFi ZWw9JiMzNDtOYW1lJiMzNDsgLyYjNjI7JiM2MDticiAvJiM2MjsKICAmIzYwO3R4cDp6ZW1f Y29udGFjdF9lbWFpbCAvJiM2MjsmIzYwO2JyIC8mIzYyOwogICYjNjA7dHhwOnplbV9jb250 YWN0X3NlbGVjdCBsYWJlbD0mIzM0O0RlcGFydG1lbnQmIzM0OyBsaXN0PSYjMzQ7LFN1cHBv cnQsU2FsZXMmIzM0OyAvJiM2MjsmIzYwO2JyIC8mIzYyOwogICYjNjA7dHhwOnplbV9jb250 YWN0X3RleHRhcmVhIGxhYmVsPSYjMzQ7TWVzc2FnZSYjMzQ7IC8mIzYyOyYjNjA7YnIgLyYj NjI7CiYjNjA7L3R4cDp6ZW1fY29udGFjdCYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5DcmVh dGUgYSBUZXh0cGF0dGVybiBmb3JtIGNhbGxlZCAmIzgyMjA7bXlfemVtX2NvbnRhY3RfdG9f Zm9ybSYjODIyMTssIGNvbnRhaW5pbmc6PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDpwaHAm IzYyOwogIGdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybTsKICBzd2l0Y2goJHplbV9jb250YWN0 X2Zvcm1bJiMzOTtEZXBhcnRtZW50JiMzOTtdKQogIHsKICAgIGNhc2UgJiMzOTtTdXBwb3J0 JiMzOTs6CiAgICAgIGVjaG8gJiMzOTtjcmV3QGV4YW1wbGUuY29tJiMzOTs7CiAgICAgIGJy ZWFrOwogICAgY2FzZSAmIzM5O1NhbGVzJiMzOTs6CiAgICAgIGVjaG8gJiMzOTtzaG93bWV0 aGVtb25leUBleGFtcGxlLmNvbSYjMzk7OwogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAg ICAgIGVjaG8gJiMzOTtzb21lb25lQGV4YW1wbGUuY29tJiMzOTs7CiAgfQomIzYwOy90eHA6 cGhwJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSA8Y29kZT5sYWJlbDwvY29kZT4gdXNl ZCBpbiB0aGUgPGNvZGU+emVtX2NvbnRhY3Rfc2VsZWN0PC9jb2RlPiB0YWcgbXVzdCBiZSBp ZGVudGljYWwgdG8gdGhlIGNvcnJlc3BvbnNpbmcgdmFyaWFibGUgaW4gdGhlIDxjb2RlPnRv X2Zvcm08L2NvZGU+LiBIZXJlIHdlIHVzZWQgPGNvZGU+RGVwYXJ0bWVudDwvY29kZT4uPC9w PgoKCTxwPkEgJiM4MjE2O2RlZmF1bHQmIzgyMTc7IGVtYWlsIGFkZHJlc3MgaW4gdGhlIDxj b2RlPnRvX2Zvcm08L2NvZGU+IGlzIHNwZWNpZmllZCB0byBlbnN1cmUgdGhhdCBhIHZhbGlk IGVtYWlsIGFkZHJlc3MgaXMgdXNlZCBpbiBjYXNlcyB3aGVyZSB5b3UgYWRkIG9yIGNoYW5n ZSBhIHNlbGVjdC9yYWRpbyBvcHRpb24gYW5kIGZvcmdldCB0byB1cGRhdGUgdGhlIDxjb2Rl PnRvX2Zvcm08L2NvZGU+LjwvcD4KCgk8cCBjbGFzcz0id2FybmluZyI+TmV2ZXIgdXNlIHRh Z3MgbGlrZSA8Y29kZT56ZW1fY29udGFjdF90ZXh0PC9jb2RlPiwgPGNvZGU+emVtX2NvbnRh Y3RfZW1haWw8L2NvZGU+IG9yIDxjb2RlPnplbV9jb250YWN0X3RleHRhcmVhPC9jb2RlPiBm b3Igc2V0dGluZyB0aGUgcmVjaXBpZW50IGFkZHJlc3MsIG90aGVyd2lzZSB5b3VyIGZvcm0g Y2FuIGJlIGFidXNlZCB0byBzZW5kIHNwYW0gdG8gYW55IGVtYWlsIGFkZHJlc3MhPC9wPgoK CTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9InN0eWxp bmciPlN0eWxpbmc8L2gyPgoKCTxwPlRoZSBmb3JtIGl0c2VsZiBoYXMgYSBjbGFzcyA8c3Ry b25nPnplbUNvbnRhY3RGb3JtPC9zdHJvbmc+IHNldCBvbiB0aGUgPGNvZGU+Rk9STTwvY29k ZT4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZy48L3A+CgoJPHA+VGhlIGxp c3Qgb2YgZXJyb3IgbWVzc2FnZXMgKGlmIGFueSkgaGFzIGEgY2xhc3MgPHN0cm9uZz56ZW1F cnJvcjwvc3Ryb25nPiBzZXQgb24gdGhlIDxjb2RlPlVMPC9jb2RlPiA8c3BhbiBjbGFzcz0i Y2FwcyI+SFRNTDwvc3Bhbj4gdGFnIHRoYXQgZW5jbG9zZXMgdGhlIGxpc3Qgb2YgZXJyb3Jz LjwvcD4KCgk8cD5BbGwgZm9ybSBlbGVtZW50cyBhbmQgY29ycmVzcG9uZGluZyBsYWJlbHMg aGF2ZSB0aGUgZm9sbG93aW5nIGNsYXNzZXMgKG9yIGlkcyBzZXQpOgoJPG9sPgoJCTxsaT5P bmUgb2YgPHN0cm9uZz56ZW1UZXh0PC9zdHJvbmc+LCA8c3Ryb25nPnplbVRleHRhcmVhPC9z dHJvbmc+LCA8c3Ryb25nPnplbVNlbGVjdDwvc3Ryb25nPiwgPHN0cm9uZz56ZW1SYWRpbzwv c3Ryb25nPiwgPHN0cm9uZz56ZW1DaGVja2JveDwvc3Ryb25nPiwgPHN0cm9uZz56ZW1TdWJt aXQ8L3N0cm9uZz4uIEl0IHNob3VsZCBiZSBvYnZpb3VzIHdoaWNoIGNsYXNzIGlzIHVzZWQg Zm9yIHdoaWNoIGZvcm0gZWxlbWVudCAoYW5kIGNvcnJlc3BvbmRpbmcgbGFiZWwpLjwvbGk+ CgkJPGxpPjxzdHJvbmc+emVtUmVxdWlyZWQ8L3N0cm9uZz4gb3IgPHN0cm9uZz5lcnJvckVs ZW1lbnQ8L3N0cm9uZz4gb3IgPHN0cm9uZz56ZW1SZXF1aXJlZGVycm9yRWxlbWVudDwvc3Ry b25nPiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGZvcm0gZWxlbWVudCBpcyByZXF1aXJl ZCwgYW4gZXJyb3Igd2FzIGZvdW5kIGluIHdoYXRldmVyIHRoZSB2aXNpdG9yIGVudGVyZWQm IzgyMzA7IG9yIGJvdGguPC9saT4KCTwvb2w+Cgk8b2w+CgkJPGxpPkFuIGluZGl2aWR1YWwg JiM4MjIwO2lkJiM4MjIxOyBvciAmIzgyMjA7Y2xhc3MmIzgyMjE7IHNldCB0byB0aGUgdmFs dWUgb2YgdGhlIDxjb2RlPm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGUgY29ycmVzcG9u ZGluZyB0YWcuIFdoZW4gc3R5bGluZyBmb3JtcyBiYXNlZCBvbiB0aGlzIGNsYXNzLCB5b3Ug c2hvdWxkIGV4cGxpY2l0bHkgc2V0IHRoZSA8Y29kZT5uYW1lPC9jb2RlPiBhdHRyaWJ1dGUg YmVjYXVzZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBuYW1lcyBtYXkgY2hhbmdlIGluIG5l d2VyIHplbV9jb250YWN0X3JlYm9ybiB2ZXJzaW9ucy48L2xpPgoJPC9vbD48L3A+CgoJPHA+ PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMiBpZD0iaGlzdG9yeSI+ SGlzdG9yeTwvaDI+CgoJPHA+T25seSB0aGUgY2hhbmdlcyB0aGF0IG1heSBhZmZlY3QgcGVv cGxlIHdobyB1cGdyYWRlIGFyZSBkZXRhaWxlZCBiZWxvdy48YnIgLz4KVG8gc2F2ZSBzcGFj ZSwgbGlua3MgdG8gZm9ydW0gdG9waWNzIHRoYXQgZGV0YWlsIGFsbCB0aGUgY2hhbmdlcyBp biBlYWNoIHZlcnNpb24gaGF2ZSBiZWVuIGFkZGVkLjwvcD4KCgk8dWw+CgkJPGxpPjEwIHNl cCAyMDEzOiA8c3Ryb25nPnZlcnNpb24gNC41LjAuMDwvc3Ryb25nPgoJPHVsPgoJCTxsaT5I VE1MIDUgYXR0cmlidXRlcyBhZGRlZDogPGNvZGU+cGxhY2Vob2xkZXI8L2NvZGU+LCA8Y29k ZT5hdXRvZm9jdXM8L2NvZGU+LCA8Y29kZT5hdXRvY29tcGxldGU8L2NvZGU+LCA8Y29kZT50 eXBlPC9jb2RlPiwgPGNvZGU+cGF0dGVybjwvY29kZT48L2xpPgoJCTxsaT5DU1MgPGNvZGU+ Y2xhc3M8L2NvZGU+IGF0dHJpYnV0ZSBhbGxvd3Mgb3ZlcnJpZGluZyBidWlsdC1pbiBjbGFz cyBuYW1lczwvbGk+CgkJPGxpPlRleHRwYWNrIHJlcGxhY2VzIHplbV9jb250YWN0X2xhbmcg cGx1Z2luPC9saT4KCTwvdWw+PC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjE0IGZlYiAyMDA3 OiA8c3Ryb25nPnZlcnNpb24gNC4wLjMuMTk8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cDovL2Zv cnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTIxMTQ0Ij5jaGFuZ2Vsb2c8 L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNzZW5kYXJ0aWNsZSI+c2VuZF9hcnRpY2xlPC9h PiBmdW5jdGlvbmFsaXR5IHJldmlzZWQsIHJlcXVpcmluZyBjaGFuZ2VzIHdoZW4gdXBncmFk aW5nIGZyb20gZWFybGllciB2ZXJzaW9uczwvbGk+CgkJPGxpPk5ldyBsYW5ndWFnZSBzdHJp bmdzOiAmIzgyMTY7c2VuZF9hcnRpY2xlJiM4MjE3OyBhbmQgJiM4MjE2O3JlY2lwaWVudCYj ODIxNzsgKHJlcGxhY2VzICYjODIxNjtyZWNlaXZlciYjODIxNzspPC9saT4KCQk8bGk+U2V0 cyBvZiByYWRpbyBidXR0b25zIHJlcXVpcmUgdGhlIG5ldyA8YSBocmVmPSIjemNfcmFkaW8i Pmdyb3VwPC9hPiBhdHRyaWJ1dGU8L2xpPgoJCTxsaT5ZZXMvTm8gdmFsdWVzIGRlcHJlY2F0 ZWQgaW4gZmF2b3IgZm9yIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNh cHMiPlRYUDwvc3Bhbj48L3NwYW4+IHN0YW5kYXJkIDEvMCB2YWx1ZXMgKHllcy9ubyBzdGls bCB3b3JrIGluIHRoaXMgdmVyc2lvbik8L2xpPgoJPC91bD48L2xpPgoJPC91bD4KCTx1bD4K CQk8bGk+MjAgbm92IDIwMDY6IDxzdHJvbmc+dmVyc2lvbiA0LjAuMy4xODwvc3Ryb25nPiA8 YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9 MTk4MjMiPmNoYW5nZWxvZzwvYT4KCTx1bD4KCQk8bGk+SURzICYjODIxNjt6ZW1Db250YWN0 Rm9ybSYjODIxNzsgYW5kICYjODIxNjt6ZW1TdWJtaXQmIzgyMTc7IGhhdmUgY2hhbmdlZCB0 byBjbGFzc2VzIHRvIGFsbG93IG11bHRpcGxlIGZvcm1zIHBlciBwYWdlPC9saT4KCTwvdWw+ PC9saT4KCTx1bD4KCQk8bGk+TmV3IGxhbmd1YWdlIHN0cmluZ3M6ICYjODIxNjtmb3JtX3Vz ZWQmIzgyMTc7LCAmIzgyMTY7aW52YWxpZF91dGY4JiM4MjE3OywgJiM4MjE2O21heF93YXJu aW5nJiM4MjE3OywgJiM4MjE2O25hbWUmIzgyMTc7LCAmIzgyMTY7cmVmcmVzaCYjODIxNzss ICYjODIxNjtzZWNyZXQmIzgyMTc7PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+MTIgbWFyIDIw MDY6IDxzdHJvbmc+dmVyc2lvbiA0LjAuMy4xNzwvc3Ryb25nPiA8YSBocmVmPSJodHRwOi8v Zm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MTM0MTYiPmNoYW5nZWxv ZzwvYT48L2xpPgoJCTxsaT4xMSBmZWIgMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4xNjwvc3Ry b25nPjwvbGk+CgkJPGxpPjA2IGZlYiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjE1PC9zdHJv bmc+CgkJPGxpPjAzIGZlYiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjE0PC9zdHJvbmc+PC9s aT4KCTx1bD4KCQk8bGk+UmVxdWlyZXMgc2VwYXJhdGUgemVtX2NvbnRhY3RfbGFuZyBwbHVn aW48L2xpPgoJPC91bD48L2xpPgoJCTxsaT4yOSBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9u IC4xMjwvc3Ryb25nPjwvbGk+CgkJPGxpPjI3IGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24g LjExPC9zdHJvbmc+PC9saT4KCQk8bGk+MjMgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAu MDkgYW5kIC4xMDwvc3Ryb25nPjwvbGk+CgkJPGxpPjIzIGphbiAyMDA2OiA8c3Ryb25nPnZl cnNpb24gLjA4PC9zdHJvbmc+PC9saT4KCQk8bGk+MTcgamFuIDIwMDY6IDxzdHJvbmc+dmVy c2lvbiAuMDc8L3N0cm9uZz48L2xpPgoJCTxsaT4xNiBqYW4gMjAwNjogPHN0cm9uZz52ZXJz aW9uIC4wNSBhbmQgLjA2PC9zdHJvbmc+PC9saT4KCQk8bGk+MTUgamFuIDIwMDY6IDxzdHJv bmc+dmVyc2lvbiAuMDQ8L3N0cm9uZz48L2xpPgoJCTxsaT4xMCBqYW4gMjAwNjogPHN0cm9u Zz52ZXJzaW9uIC4wMzwvc3Ryb25nPjwvbGk+Cgk8L3VsPgoJPHVsPgoJCTxsaT4xOSBkZWMg MjAwNTogPHN0cm9uZz52ZXJzaW9uIC4wMjwvc3Ryb25nPjwvbGk+Cgk8L3VsPgoKCTxwPjxh IGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9ImNyZWRpdHMiPkNy ZWRpdHM8L2gyPgoKCTx1bD4KCQk8bGk+PHN0cm9uZz56ZW08L3N0cm9uZz4gd3JvdGUgdGhl IHplbV9jb250YWN0IDAuNiBwbHVnaW4gb24gd2hpY2ggdGhpcyBwbHVnaW4gd2FzIGluaXRp YWxseSBiYXNlZC48L2xpPgoJCTxsaT48c3Ryb25nPk1hcnk8L3N0cm9uZz4gY29tcGxldGVs eSByZXZpc2VkIHRoZSBwbHVnaW4gY29kZS48L2xpPgoJCTxsaT48c3Ryb25nPlN0dWFydDwv c3Ryb25nPiBUdXJuZWQgaXQgaW50byBhIHBsdWdpbiwgYWRkZWQgYSByZXZpc2VkIGhlbHAg dGV4dCBhbmQgYWRkaXRpb25hbCBjb2RlLiBNYWludGFpbmVkIGFsbCBwbHVnaW4gdmVyc2lv bnMgdGlsbCA0LjAuMy4xNy48L2xpPgoJCTxsaT48c3Ryb25nPndldDwvc3Ryb25nPiBhZGRl ZCB0aGUgemVtX2NvbnRhY3RfcmFkaW8gdGFnLjwvbGk+CgkJPGxpPjxzdHJvbmc+VHJhbnF1 aWxsbzwvc3Ryb25nPiBhZGRlZCB0aGUgYW50aS1zcGFtIDxzcGFuIGNsYXNzPSJjYXBzIj48 c3BhbiBjbGFzcz0iY2FwcyI+QVBJPC9zcGFuPjwvc3Bhbj4gYW5kIHplbV9jb250YWN0X3Nl bmRfYXJ0aWNsZSBmdW5jdGlvbmFsaXR5LjwvbGk+CgkJPGxpPjxzdHJvbmc+YXNsc3c2Njwv c3Ryb25nPiwgPHN0cm9uZz5qZHlrYXN0PC9zdHJvbmc+IGFuZCBvdGhlcnMgKD8pIHByb3Zp ZGVkIGFkZGl0aW9uYWwgY29kZTwvbGk+CgkJPGxpPjxzdHJvbmc+UnV1ZDwvc3Ryb25nPiBj bGVhbmVkIHVwIGFuZCBhdWRpdGVkIHRoZSBjb2RlIHRvIHdlZWQgb3V0IGJ1Z3MgYW5kIGNv bXBsZXRlbHkgcmV2aXNlZCB0aGUgaGVscCB0ZXh0LiBNYWludGFpbmVyIG9mIHZlcnNpb25z IDQuMC4zLjE4IGFuZCB1cC48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+U3VwcG9ydGVkIGFu ZCB0ZXN0ZWQgdG8gZGVzdHJ1Y3Rpb24gYnkgdGhlIFRleHRwYXR0ZXJuIGNvbW11bml0eS48 L2xpPgoJPC91bD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJ PGgyIGlkPSJhcGkiPlplbSBDb250YWN0IFJlYm9ybiYjODIxNztzIDxzcGFuIGNsYXNzPSJj YXBzIj5BUEk8L3NwYW4+PC9oMj4KCgk8cD5UaGUgcGx1Z2luIDxzcGFuIGNsYXNzPSJjYXBz Ij5BUEk8L3NwYW4+IG9mIHplbSBjb250YWN0LCBkZXZlbG9wZWQgYnkgVHJhbnF1aWxsbywg aXMgc2ltaWxhciB0byB0aGUgY29tbWVudHMgPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bh bj4gb2YgVGV4dHBhdHRlcm4sIHdoaWNoIGlzIGV4cGxhaW5lZCBpbiB0aGUgVGV4dGJvb2sg PGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90aXRsZT1Q bHVnaW5fRGV2ZWxvcG1lbnRfVG9waWNzIj5QbHVnaW4gRGV2ZWxvcG1lbnQgVG9waWNzPC9h PiBhbmQgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90 aXRsZT1Db21iYXRfQ29tbWVudF9TcGFtIj5Db21iYXQgQ29tbWVudCBTcGFtPC9hPi48L3A+ CgoJPHA+VHdvIGNhbGxiYWNrIGV2ZW50cyBleGlzdCBpbiB6ZW1fY29udGFjdF9yZWJvcm46 Cgk8dWw+CgkJPGxpPjxjb2RlPnplbWNvbnRhY3Quc3VibWl0PC9jb2RlPiBpcyBjYWxsZWQg YWZ0ZXIgdGhlIGZvcm0gaXMgc3VibWl0dGVkIGFuZCB0aGUgdmFsdWVzIGFyZSBjaGVja2Vk IGlmIGVtcHR5IG9yIHZhbGlkIGVtYWlsIGFkZHJlc3NlcywgYnV0IGJlZm9yZSB0aGUgbWFp bCBpcyBzZW50LjwvbGk+Cgk8L3VsPgoJPHVsPgoJCTxsaT48Y29kZT56ZW1jb250YWN0LmZv cm08L2NvZGU+IGxldCYjODIxNztzIHlvdSBpbnNlcnQgY29udGVudCBpbiB0aGUgY29udGFj dCBmb3JtIGFzIGRpc3BsYXllZCB0byB0aGUgdmlzaXRvci48L2xpPgoJPC91bD48L3A+CgoJ PHA+Rm9yIHJlZmVyZW5jZSBoZXJlIGFyZSB0aGUgY29tbWFuZHMgdGhhdCB3aWxsIGJlIGlu dGVyZXN0aW5nIHRvIHBsdWdpbiBkZXZlbG9wZXJzOjwvcD4KCjxwcmU+PGNvZGU+Ly8gVGhp cyB3aWxsIGNhbGwgeW91ciBmdW5jdGlvbiBiZWZvcmUgdGhlIGZvcm0gaXMgc3VibWl0dGVk Ci8vIFNvIHlvdSBjYW4gYW5hbHlzZSB0aGUgc3VibWl0dGVkIGRhdGEKcmVnaXN0ZXJfY2Fs bGJhY2soJiMzOTthYmNfbXlmdW5jdGlvbiYjMzk7LCYjMzk7emVtY29udGFjdC5zdWJtaXQm IzM5Oyk7CjwvY29kZT4KPGNvZGU+Ly8gVGhpcyB3aWxsIGNhbGwgeW91ciBmdW5jdGlvbiBh bmQgYWRkIHRoZSBvdXRwdXQgKHVzZSByZXR1cm4gJG15c3R1ZmYpCi8vIHRvIHRoZSBjb250 YWN0LWZvcm0uCnJlZ2lzdGVyX2NhbGxiYWNrKCYjMzk7YWJjX215b3RoZXJmdW5jdGlvbjIm IzM5OywmIzM5O3plbWNvbnRhY3QuZm9ybSYjMzk7KTsKPC9jb2RlPgo8Y29kZT4vLyBUbyBn ZXQgaG9sZCBvZiB0aGUgZm9ybS12YXJpYWJsZXMgeW91IGNhbiB1c2UKZ2xvYmFsIHplbV9j b250YWN0X2Zvcm07CjwvY29kZT4KPGNvZGU+Ly8gV2l0aCB0aGUgZm9sbG93aW5nIHR3byBs aW5lcyB5b3UgY2FuIHRlbGwgemVtX2NvbnRhY3QgaWYgeW91cgovLyBwbHVnaW4gZm91bmQg c3BhbQokZXZhbHVhdG9yID0mIzM4OyBnZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKTsKPC9j b2RlPgo8Y29kZT4vLyBUaGUgcGFzc2VkIHZhbHVlIG11c3QgYmUgbm9uLXplcm8gdG8gbWFy ayB0aGUgY29udGVudCBhcyBzcGFtLgovLyBWYWx1ZSBtdXN0IGJlIGEgbnVtYmVyIGJldHdl ZW4gMCBhbmQgMS4KJGV2YWx1YXRvciAtJiM2MjsgYWRkX3plbWNvbnRhY3Rfc3RhdHVzKDEp Owo8L2NvZGU+PC9wcmU+CgoJPHA+TXVsdGlwbGUgcGx1Z2lucyBjYW4gYmUgYWN0aXZlIGF0 IHRoZSBzYW1lIHRpbWUgYW5kIGVhY2ggb2YgdGhlbSBjYW4gbWFyayB0aGUgc3VibWl0dGVk IGNvbnRlbnQgYXMgc3BhbSBhbmQgcHJldmVudCB0aGUgZm9ybSBmcm9tIGJlaW5nIHN1Ym1p dHRlZC48L3A+CgoJPHA+PHN0cm9uZz5BbiBleGFtcGxlIG9mIGEgcGx1Zy1pbiBjb25uZWN0 aW5nIHRvIFplbSBDb250YWN0IFJlYm9ybiYjODIxNztzIEFQSTo8L3N0cm9uZz48L3A+Cgo8 cHJlPjxjb2RlPnJlZ2lzdGVyX2NhbGxiYWNrKCYjMzk7cGFwX3plbWNvbnRhY3RfZm9ybSYj Mzk7LCYjMzk7emVtY29udGFjdC5mb3JtJiMzOTspOwpyZWdpc3Rlcl9jYWxsYmFjaygmIzM5 O3BhcF96ZW1jb250YWN0X3N1Ym1pdCYjMzk7LCYjMzk7emVtY29udGFjdC5zdWJtaXQmIzM5 Oyk7CjwvY29kZT4KPGNvZGU+ZnVuY3Rpb24gcGFwX3plbWNvbnRhY3RfZm9ybSgpIHsKICAk ZmllbGQgPSAmIzM5OyYjNjA7ZGl2IHN0eWxlPSYjMzQ7ZGlzcGxheTpub25lJiMzNDsmIzYy OyYjMzk7LgogICAgZmlucHV0KCYjMzk7dGV4dCYjMzk7LCYjMzk7cGhvbmUmIzM5Oyxwcygm IzM5O3Bob25lJiMzOTspLCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7 JiMzOTssJiMzOTsmIzM5OywmIzM5O3Bob25lJiMzOTspLiYjMzk7JiM2MDticiAvJiM2Mjsm IzM5Oy4KICAgIGZpbnB1dCgmIzM5O3RleHQmIzM5OywmIzM5O21haWwmIzM5OyxwcygmIzM5 O21haWwmIzM5OyksJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5 OywmIzM5OyYjMzk7LCYjMzk7bWFpbCYjMzk7KS4mIzM5OyYjNjA7L2RpdiYjNjI7JiMzOTs7 CiAgcmV0dXJuICRmaWVsZDsmIzYwOy9jb2RlJiM2MjsKfQo8L2NvZGU+Cjxjb2RlPmZ1bmN0 aW9uIHBhcF96ZW1jb250YWN0X3N1Ym1pdCgpIHsKICAkY2hlY2tpbmdfbWFpbF9maWVsZCA9 IHRyaW0ocHMoJiMzOTttYWlsJiMzOTspKTsKICAkY2hlY2tpbmdfcGhvbmVfZmllbGQgPSB0 cmltKHBzKCYjMzk7cGhvbmUmIzM5OykpOwo8L2NvZGU+Cjxjb2RlPiAgJGV2YWx1YXRpb24g PSYjMzg7IGdldF96ZW1jb250YWN0X2V2YWx1YXRvcigpOwo8L2NvZGU+Cjxjb2RlPiAgLy8g SWYgdGhlIGhpZGRlbiBmaWVsZHMgYXJlIGZpbGxlZCBvdXQsIHRoZSBjb250YWN0IGZvcm0g d29uJiMzOTt0IGJlIHN1Ym1pdHRlZCEKICBpZiAoJGNoZWNraW5nX21haWxfZmllbGQgIT0g JiMzOTsmIzM5OyBvciAkY2hlY2tpbmdfcGhvbmVfZmllbGQgIT0gJiMzOTsmIzM5Oykgewog ICAgJGV2YWx1YXRpb24gLSYjNjI7IGFkZF96ZW1jb250YWN0X3N0YXR1cygxKTsKICB9CiAg cmV0dXJuOwp9CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRv cDwvYT48L3A+IjtzOjM6Im1kNSI7czozMjoiYjE5MTg3YTUzYzRlNDFhMzYwNjY2M2Y5OWQ5 ZTk4ZTIiO3M6ODoidGV4dHBhY2siO3M6MTQ2ODoiI0Bjb21tb24KemVtX2NvbnRhY3RfY2hl Y2tib3ggPT4gQ2hlY2tib3gKemVtX2NvbnRhY3RfY29udGFjdCA9PiBDb250YWN0CnplbV9j b250YWN0X2VtYWlsID0+IEVtYWlsCnplbV9jb250YWN0X2VtYWlsX3N1YmplY3QgPT4gSW5x dWlyeQp6ZW1fY29udGFjdF9lbWFpbF90aGFua3MgPT4gVGhhbmsgeW91LCB5b3VyIG1lc3Nh Z2UgaGFzIGJlZW4gc2VudAp6ZW1fY29udGFjdF9maWVsZF9taXNzaW5nID0+IFJlcXVpcmVk IGZpZWxkIG1pc3NpbmcKemVtX2NvbnRhY3RfZm9ybV9leHBpcmVkID0+IFRoZSBmb3JtIGhh cyBleHBpcmVkLCBwbGVhc2UgdHJ5IGFnYWluIQp6ZW1fY29udGFjdF9mb3JtX3VzZWQgPT4g VGhlIGZvcm0gd2FzIGFscmVhZHkgc3VibWl0dGVkLCBwbGVhc2UgZmlsbCBvdXQgYSBuZXcg Zm9ybSEKemVtX2NvbnRhY3RfZ2VuZXJhbF9pbnF1aXJ5ID0+IEdlbmVyYWwgaW5xdWlyeQp6 ZW1fY29udGFjdF9pbnZhbGlkX2VtYWlsID0+IE5vdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3MK emVtX2NvbnRhY3RfaW52YWxpZF9ob3N0ID0+IE5vdCBhIHZhbGlkIGVtYWlsIGhvc3QKemVt X2NvbnRhY3RfaW52YWxpZF91dGY4ID0+IEludmFsaWQgVVRGLTggY2hhcmFjdGVycwp6ZW1f Y29udGFjdF9pbnZhbGlkX3ZhbHVlID0+IEludmFsaWQgdmFsdWUKemVtX2NvbnRhY3RfbWFp bF9zb3JyeSA9PiBTb3JyeSwgdW5hYmxlIHRvIHNlbmQgZW1haWwKemVtX2NvbnRhY3RfbWF4 dmFsX3dhcm5pbmcgPT4gVmFsdWUgZXhjZWVkcyBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0 ZXJzCnplbV9jb250YWN0X21heF93YXJuaW5nID0+IFZhbHVlIGV4Y2VlZHMgbWF4aW11bSBu dW1iZXIgb2YgY2hhcmFjdGVycwp6ZW1fY29udGFjdF9tZXNzYWdlID0+IE1lc3NhZ2UKemVt X2NvbnRhY3RfbWludmFsX3dhcm5pbmcgPT4gVmFsdWUgZG9lcyBub3QgbWVldCBtaW5pbXVt IG51bWJlciBvZiBjaGFyYWN0ZXJzCnplbV9jb250YWN0X21pbl93YXJuaW5nID0+IFZhbHVl IGRvZXMgbm90IG1lZXQgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycwp6ZW1fY29udGFj dF9uYW1lID0+IE5hbWUKemVtX2NvbnRhY3Rfb3B0aW9uID0+IENvbnRhY3QKemVtX2NvbnRh Y3RfcmFkaW8gPT4gUmFkaW8KemVtX2NvbnRhY3RfcmVjaXBpZW50ID0+IFJlY2lwaWVudAp6 ZW1fY29udGFjdF9yZWZyZXNoID0+IEZvbGxvdyB0aGlzIGxpbmsgaWYgdGhlIHBhZ2UgZG9l cyBub3QgcmVmcmVzaCBhdXRvbWF0aWNhbGx5Lgp6ZW1fY29udGFjdF9zZWNyZXQgPT4gU2Vj cmV0CnplbV9jb250YWN0X3NlbmQgPT4gU2VuZAp6ZW1fY29udGFjdF9zZW5kX2FydGljbGUg PT4gU2VuZCBhcnRpY2xlCnplbV9jb250YWN0X3NwYW0gPT4gV2UgZG8gbm90IGFjY2VwdCBz cGFtLCB0aGFuayB5b3UhCnplbV9jb250YWN0X3RleHQgPT4gVGV4dAp6ZW1fY29udGFjdF90 b19taXNzaW5nID0+IFRvIGVtYWlsIGFkZHJlc3MgaXMgbWlzc2luZyI7fQ==