# Name: smd_featured v0.21 # Type: Admin/Client side plugin # Quickly label and display featured articles for your site's home / landing pages # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfZmVhdHVyZWQiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMjEiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjgwOiJRdWlja2x5IGxhYmVsIGFuZCBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzIGZvciB5 b3VyIHNpdGUncyBob21lIC8gbGFuZGluZyBwYWdlcyI7czo0OiJjb2RlIjtzOjMwNjM0OiJp ZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRf ZXZlbnQsICRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRzOw0KDQoJJHNtZF9mZWF0dXJlZF9l dmVudCA9ICdzbWRfZmVhdHVyZWQnOw0KCSRzbWRfZmVhdHVyZWRfcHJpdnMgPSBnZXRfcHJl Zignc21kX2ZlYXR1cmVkX3ByaXZzJywgJzEsMicpOw0KCSRzbWRfZmVhdHVyZWRfcHJlZl9w cml2cyA9ICcxLDInOw0KCSRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRzID0gYXJyYXkoDQoJ CTAgPT4gJ3RpdGxlJywNCgkJMSA9PiAnZGVzYycsDQoJKTsNCg0KCWFkZF9wcml2cygkc21k X2ZlYXR1cmVkX2V2ZW50LCAkc21kX2ZlYXR1cmVkX3ByaXZzKTsNCglyZWdpc3Rlcl90YWIo ImNvbnRlbnQiLCAkc21kX2ZlYXR1cmVkX2V2ZW50LCBzbWRfZmVhdHVyZWRfZ1R4dCgndGFi X25hbWUnKSk7DQoJcmVnaXN0ZXJfY2FsbGJhY2soJ3NtZF9mZWF0dXJlZF9tYW5hZ2UnLCAk c21kX2ZlYXR1cmVkX2V2ZW50KTsNCglyZWdpc3Rlcl9jYWxsYmFjaygnc21kX2ZlYXR1cmVk X3dlbGNvbWUnLCAncGx1Z2luX2xpZmVjeWNsZS5zbWRfZmVhdHVyZWQnKTsNCn0NCg0KaWYg KCFkZWZpbmVkKCdTTURfRkVBVCcpKSB7DQoJZGVmaW5lKCJTTURfRkVBVCIsICdzbWRfZmVh dHVyZWQnKTsNCn0NCg0KLy8gKioqKioqKioqKg0KLy8gQURNSU4gU0lERQ0KLy8gKioqKioq KioqKg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVy ZWRfbWFuYWdlKCRldnQsICRzdHApIHsNCglpZiAoJHN0cCA9PSAnc2F2ZV9wYW5lX3N0YXRl Jykgew0KCQlzbWRfZmVhdHVyZWRfc2F2ZV9wYW5lX3N0YXRlKCk7DQoJfSBlbHNlIHsNCgkJ aWYoISRzdHAgb3IgIWluX2FycmF5KCRzdHAsIGFycmF5KA0KCQkJCSdzbWRfZmVhdHVyZWRf dGFibGVfaW5zdGFsbCcsDQoJCQkJJ3NtZF9mZWF0dXJlZF90YWJsZV9yZW1vdmUnLA0KCQkJ CSdzbWRfZmVhdHVyZWRfcHJlZnNhdmUnLA0KCQkJCSdzbWRfZmVhdHVyZWRfc2F2ZScsDQoJ CQkJJ3NtZF9mZWF0dXJlZF90YWdpdCcsDQoJCQkJJ3NtZF9mZWF0dXJlZF9jaGFuZ2VfcGFn ZWJ5JywNCgkJCSkpKSB7DQoJCQlzbWRfZmVhdHVyZWRfbGlzdCgnJyk7DQoJCX0gZWxzZSAk c3RwKCk7DQoJfQ0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9u IHNtZF9mZWF0dXJlZF93ZWxjb21lKCRldnQsICRzdHApIHsNCgkkbXNnID0gJyc7DQoJc3dp dGNoICgkc3RwKSB7DQoJCWNhc2UgJ2luc3RhbGxlZCc6DQoJCQlzbWRfZmVhdHVyZWRfdGFi bGVfaW5zdGFsbCgwKTsNCgkJCSRtc2cgPSAnVGhhbmtzIGZvciBpbnN0YWxsaW5nIHNtZF9m ZWF0dXJlZC4gUGxlYXNlIHJlYWQgdGhlIGRvY3MgOi0pJzsNCgkJCWJyZWFrOw0KCQljYXNl ICdkZWxldGVkJzoNCgkJCXNtZF9mZWF0dXJlZF90YWJsZV9yZW1vdmUoMCk7DQoJCQlicmVh azsNCgl9DQoJcmV0dXJuICRtc2c7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX2xpc3QoJG1zZz0nJykgew0KCWdsb2JhbCAkc21k X2ZlYXR1cmVkX2V2ZW50LCAkc21kX2ZlYXR1cmVkX2xpc3RfcGFnZWJ5LCAkc21kX2ZlYXR1 cmVkX3RleHRpbGVfb3B0czsNCg0KCXBhZ2V0b3Aoc21kX2ZlYXR1cmVkX2dUeHQoJ3RhYl9u YW1lJyksICRtc2cpOw0KCWV4dHJhY3QoZ3BzYShhcnJheSgnc21kX2ZlYXRfaWQnLCAnc21k X2ZlYXRfbGFiZWwnLCAnc21kX2ZlYXRfc2VhcmNoa2VlcCcsICdzbWRfZmVhdF9maWx0a2Vl cCcsICdwYWdlJykpKTsNCg0KCWlmIChzbWRfZmVhdHVyZWRfdGFibGVfZXhpc3QoMSkpIHsN CgkJJGZlYXRsaXN0ID0gc2FmZV9yb3dzKCcqJywgU01EX0ZFQVQsICcxPTEnKTsNCgkJJGZl YXRsaXN0ID0gZW1wdHkoJGZlYXRsaXN0KSA/IGFycmF5KCkgOiAkZmVhdGxpc3Q7DQoJCSRl ZGl0bmFtZSA9ICRmZWF0X2xhYmVsID0gJGZlYXRfdGl0bGUgPSAkZmVhdF9kZXNjID0gJyc7 DQoNCgkJJGV0eXBlcyA9ICRmdHlwZXMgPSAkZmxpc3QgPSBhcnJheSgpOw0KCQkkZXR5cGVz WycnXSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd1bmxhYmVsbGVkJyk7DQoJCSRmdHlwZXNbJ3Nt ZF91bmxhYmVsbGVkJ10gPSBzbWRfZmVhdHVyZWRfZ1R4dCgndW5sYWJlbGxlZCcpOw0KCQlm b3JlYWNoICgkZmVhdGxpc3QgYXMgJGl0ZW0pIHsNCgkJCWlmIChpc3NldCgkaXRlbVsnbGFi ZWwnXSkgJiYgIWVtcHR5KCRpdGVtWydsYWJlbCddKSkgew0KCQkJCSRmdHlwZXNbJGl0ZW1b J2xhYmVsJ11dID0gJGV0eXBlc1skaXRlbVsnbGFiZWwnXV0gPSAkaXRlbVsnbGFiZWwnXTsN CgkJCX0NCgkJCSRmbGlzdFskaXRlbVsnZmVhdF9pZCddXSA9IGFycmF5KCdsYWJlbCcgPT4g JGl0ZW1bJ2xhYmVsJ10sICd0aXRsZScgPT4gJGl0ZW1bJ2ZlYXRfdGl0bGUnXSwgJ3RpdGxl X2h0bWwnID0+ICRpdGVtWydmZWF0X3RpdGxlX2h0bWwnXSwgJ2Rlc2NyaXB0aW9uJyA9PiAk aXRlbVsnZGVzY3JpcHRpb24nXSwgJ2Rlc2NfaHRtbCcgPT4gJGl0ZW1bJ2Rlc2NfaHRtbCdd KTsNCgkJfQ0KDQoJCSRmZWF0bGlzdCA9ICRmbGlzdDsNCg0KCQkvLyBHZXQgYWRkaXRpb25h bCBmaWx0ZXJpbmcgZnJvbSBoaWRkZW4gcHJlZnMNCgkJJHdoZXJlID0gYXJyYXkoJzE9MScp Ow0KCQkkc2VjbGlzdCA9IGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfc2VjdGlvbl9saXN0Jywg JycpOw0KCQlpZiAoJHNlY2xpc3QpIHsNCgkJCSR3aGVyZVtdID0gIlNlY3Rpb24gSU4gKCci LmpvaW4oIicsJyIsIGRvX2xpc3QoJHNlY2xpc3QpKS4iJykiOw0KCQl9DQoJCSR3aGVyZVtd ID0gIlN0YXR1cyBJTiAoNCw1KSI7DQoNCgkJJG9yZGVyYnkgPSBnZXRfcHJlZignc21kX2Zl YXR1cmVkX3NvcnQnLCAnUG9zdGVkIGRlc2MnLCAxKTsNCgkJJG9yZGVycXJ5ID0gKCRvcmRl cmJ5KSA/ICcgT1JERVIgQlkgJy5kb1NsYXNoKCRvcmRlcmJ5KSA6ICcnOw0KCQkkY3Vyck9y ZGVyID0gZXhwbG9kZSgnICcsICRvcmRlcmJ5KTsNCgkJJGN1cnJPcmRlclswXSA9IChpc3Nl dCgkY3Vyck9yZGVyWzBdKSkgPyAkY3Vyck9yZGVyWzBdIDogJ1Bvc3RlZCc7DQoJCSRjdXJy T3JkZXJbMV0gPSAoaXNzZXQoJGN1cnJPcmRlclsxXSkpID8gJGN1cnJPcmRlclsxXSA6ICdk ZXNjJzsNCgkJJGRpc3BsYXkgPSBnZXRfcHJlZignc21kX2ZlYXR1cmVkX2Rpc3BsYXknLCAn YWxsJywgMSk7DQoNCgkJLy8gR2VuZXJhdGUgdGhlIGV4dHJhIGNyaXRlcmlhIGlmIGluIGxp c3Qgdmlldw0KCQlpZiAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnKSB7DQoJCQlpZiAoJHNtZF9m ZWF0X3NlYXJjaGtlZXApIHsNCgkJCQkkaXRlbXMgPSBkb19saXN0KCRzbWRfZmVhdF9zZWFy Y2hrZWVwLCAnICcpOw0KCQkJCSRpdGxpc3QgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2ggKCRp dGVtcyBhcyAkaXRlbSkgew0KCQkJCQlpZiAodHJpbSgkaXRlbSkgIT0gJycpIHsNCgkJCQkJ CSRpdGxpc3RbXSA9ICJUaXRsZSBsaWtlICclJGl0ZW0lJyI7DQoJCQkJCX0NCgkJCQl9DQoJ CQkJJHdoZXJlW10gPSAnKCcuam9pbignIE9SICcsICRpdGxpc3QpLicpJzsNCgkJCX0NCgkJ CWlmICgkc21kX2ZlYXRfZmlsdGtlZXApIHsNCgkJCQkkbGJsID0gKCRzbWRfZmVhdF9maWx0 a2VlcCA9PSAnc21kX3VubGFiZWxsZWQnKSA/ICcnIDogJHNtZF9mZWF0X2ZpbHRrZWVwOw0K CQkJCSRpZHMgPSBzYWZlX2NvbHVtbignZmVhdF9pZCcsIFNNRF9GRUFULCAiQklOQVJZIGxh YmVsID0gJyRsYmwnIik7DQoJCQkJJHdoZXJlW10gPSAiSUQgSU4gKCciLmpvaW4oIicsJyIs ICRpZHMpLiInKSI7DQoJCQl9DQoJCX0NCg0KCQkkd2hlcmUgPSBqb2luKCcgQU5EICcsICR3 aGVyZSk7DQoJCSR0b3RhbCA9IHNhZmVfY291bnQoJ3RleHRwYXR0ZXJuJywgJHdoZXJlKTsN CgkJJGRvX3BhZyA9ICEkc21kX2ZlYXRfZmlsdGtlZXAgJiYgISRzbWRfZmVhdF9zZWFyY2hr ZWVwOw0KDQoJCSRsaW1pdCA9ICgkZGlzcGxheT09J3BhZ2luYXRlZCcgJiYgJGRvX3BhZykg PyBtYXgoJHNtZF9mZWF0dXJlZF9saXN0X3BhZ2VieSwgMTUpIDogOTk5OTk7DQoJCWxpc3Qo JHBhZ2UsICRvZmZzZXQsICRudW1QYWdlcykgPSBwYWdlcigkdG90YWwsICRsaW1pdCwgJHBh Z2UpOw0KDQoJCSRycyA9IHNhZmVfcm93cygnKicsICd0ZXh0cGF0dGVybicsICR3aGVyZS4g JG9yZGVycXJ5IC4gIiBsaW1pdCAkb2Zmc2V0LCAkbGltaXQiKTsNCgkJJG91dCA9IGFycmF5 KCk7DQoJCWZvcmVhY2ggKCRycyBhcyAkcm93KSB7DQoJCQkkZnR5cGUgPSBpc3NldCgkZmVh dGxpc3RbJHJvd1snSUQnXV1bJ2xhYmVsJ10pID8gJGZlYXRsaXN0WyRyb3dbJ0lEJ11dWyds YWJlbCddIDogJyc7DQoJCQkkb3V0W10gPSBhcnJheSgkcm93WydJRCddLCAkcm93WydUaXRs ZSddLCAkZnR5cGUpOw0KCQkJaWYgKCRzbWRfZmVhdF9pZCAmJiAkcm93WydJRCddID09ICRz bWRfZmVhdF9pZCkgew0KCQkJCSRlZGl0bmFtZSA9ICRyb3dbJ1RpdGxlJ107DQoJCQkJJGZl YXRfbGFiZWwgPSAkZmVhdGxpc3RbJHNtZF9mZWF0X2lkXVsnbGFiZWwnXTsNCgkJCQkkZmVh dF90aXRsZSA9ICRmZWF0bGlzdFskc21kX2ZlYXRfaWRdWyd0aXRsZSddOw0KCQkJCSRmZWF0 X2Rlc2MgPSBkb1N0cmlwKHN0cl9yZXBsYWNlKCdcclxuJywnDQonLCAkZmVhdGxpc3RbJHNt ZF9mZWF0X2lkXVsnZGVzY3JpcHRpb24nXSkpOw0KCQkJfQ0KCQl9DQoNCgkJJHNvcnRvcHRz ID0gYXJyYXkoDQoJCQknUG9zdGVkJyA9PiAnUG9zdGVkJywNCgkJCSdFeHBpcmVzJyA9PiAn RXhwaXJ5JywNCgkJCSdMYXN0TW9kJyA9PiAnTW9kaWZpZWQnLA0KCQkJJ1RpdGxlJyA9PiAn VGl0bGUnLA0KCQkJJ1NlY3Rpb24nID0+ICdTZWN0aW9uJywNCgkJCSdDYXRlZ29yeTEnID0+ ICdDYXRlZ29yeTEnLA0KCQkJJ0NhdGVnb3J5MicgPT4gJ0NhdGVnb3J5MicsDQoJCSk7DQoJ CSRzb3J0ZGlycyA9IGFycmF5KA0KCQkJJ2FzYycgPT4gJ0FzY2VuZGluZycsDQoJCQknZGVz YycgPT4gJ0Rlc2NlbmRpbmcnLA0KCQkpOw0KCQkkZGlzcGxheW9wdHMgPSBhcnJheSgNCgkJ CSdhbGwnID0+ICdBbGwnLA0KCQkJJ3BhZ2luYXRlZCcgPT4gJ1BhZ2luYXRlZCcsDQoJCSk7 DQoJCSR0ZXh0aWxlb25vZmYgPSBzbWRfZmVhdHVyZWRfcHJlZl9leHBsb2RlKCRzbWRfZmVh dHVyZWRfdGV4dGlsZV9vcHRzLCBnZXRfcHJlZignc21kX2ZlYXR1cmVkX3RleHRpbGUnLCAn MTEnLCAxKSk7DQoNCgkJJHNpemVzID0gZG9fbGlzdChnZXRfcHJlZignc21kX2ZlYXR1cmVk X2JveF9zaXplJywgJzE1MHg0MCcsIDEpLCAneCcpOw0KCQkkc2l6ZXNbMF0gPSAoaXNzZXQo JHNpemVzWzBdKSAmJiBpc19udW1lcmljKCRzaXplc1swXSkpID8gJHNpemVzWzBdIDogJzE1 MCc7DQoJCSRzaXplc1sxXSA9IChpc3NldCgkc2l6ZXNbMV0pICYmIGlzX251bWVyaWMoJHNp emVzWzFdKSkgPyAkc2l6ZXNbMV0gOiAnNDAnOw0KCQkkZGlzcGxheV9qcyA9ICgkZGlzcGxh eT09J2FsbCcpID8gMSA6IDA7DQoNCgkJZWNobyAnPGRpdiBpZD0ic21kX2xvYWRpbmciIHN0 eWxlPSJjb2xvcjojOTYzOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjIwMCU7IGZv bnQtc3R5bGU6aXRhbGljOyB3aWR0aDo1MDBweDsgaGVpZ2h0OjEwMHB4OyBtYXJnaW46MCBh dXRvOyBib3JkZXI6MXB4IHNvbGlkICM3Nzc7IGJhY2tncm91bmQ6I2ZmYztkaXNwbGF5OmJs b2NrIj48ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjMwcHg7Ij5Mb2FkaW5nLi4uPC9kaXY+PC9k aXY+JzsNCgkJZWNobyAnPGRpdiBpZD0ic21kX2NvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6 bm9uZTsiPic7DQoJCWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2ZlYXR1cmVkX2NvbnRyb2xf cGFuZWwiIGNsYXNzPSJ0eHAtY29udHJvbC1wYW5lbCI+PGxlZ2VuZCBjbGFzcz0icGxhaW4g bGV2ZXInLihnZXRfcHJlZigncGFuZV9zbWRfZmVhdHVyZWRfY3BhbmVsX3Zpc2libGUnKSA/ ICcgZXhwYW5kZWQnIDogJycpLiciPjxhIGhyZWY9IiNzbWRfZmVhdHVyZWRfY3BhbmVsIj4n LnNtZF9mZWF0dXJlZF9nVHh0KCdjb250cm9sX3BhbmVsJykuJzwvYT48L2xlZ2VuZD4nOw0K CQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdHVyZWRfY3BhbmVsIiBjbGFzcz0idG9nZ2xlIiBz dHlsZT0iZGlzcGxheTonLihnZXRfcHJlZigncGFuZV9zbWRfZmVhdHVyZWRfY3BhbmVsX3Zp c2libGUnKSA/ICdibG9jaycgOiAnbm9uZScpLiciPic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9 InNtZF9mZWF0X2ZpbHRmb3JtIiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0IiBv bnN1Ym1pdD0ic21kX2ZlYXR1cmVkX2VkaXRrZWVwKDApO3JldHVybiBmYWxzZTsiPic7DQoJ CWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2ZlYXR1cmVkX2ZpbHQiIGNsYXNzPSJzbWRfZmVh dHVyZWRfc3VicGFuZWwiPjxsZWdlbmQ+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgoKCRkaXNwbGF5 PT0nYWxsJykgPyAnc2VhcmNoX2xpdmUnIDogJ3NlYXJjaF9zdGFuZGFyZCcpKS4nPC9sZWdl bmQ+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfc2VhcmNoIj4nLnNtZF9mZWF0 dXJlZF9nVHh0KCdieV9uYW1lJykuJzwvbGFiZWw+Jy5mSW5wdXQoJ3RleHQnLCAnc21kX2Zl YXRfc2VhcmNoJywgJHNtZF9mZWF0X3NlYXJjaGtlZXAsICcnLCAnJywgJycsICcnLCAnJywg J3NtZF9mZWF0X3NlYXJjaCcpLg0KCQkJKCgkZnR5cGVzKSA/ICc8ZGl2IGlkPSJzbWRfZmVh dHVyZWRfYnlsYWJlbCI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgnYnlfbGFiZWwnKS5zZWxlY3RJ bnB1dCgnc21kX2ZlYXRfZmlsdCcsICRmdHlwZXMsICRzbWRfZmVhdF9maWx0a2VlcCwgMSwg JycsICdzbWRfZmVhdF9maWx0JykuJzwvZGl2PicgOiAnJyk7DQoJCWVjaG8gKCRkaXNwbGF5 PT0ncGFnaW5hdGVkJykgPyBmSW5wdXQoJ3N1Ym1pdCcsICcnLCBnVHh0KCdnbycpLCAnc21h bGxlcmJveCBzbWRfZmVhdHVyZWRfc2F2ZScsICcnLCAncmV0dXJuIHNtZF9mZWF0dXJlZF9l ZGl0a2VlcCgwKTsnKSA6ICcnOw0KCQllY2hvIGVJbnB1dCgkc21kX2ZlYXR1cmVkX2V2ZW50 KS5zSW5wdXQoJ3NtZF9mZWF0dXJlZF9saXN0Jyk7DQoJCWVjaG8gJzwvZmllbGRzZXQ+JzsN CgkJZWNobyAnPC9mb3JtPic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9InNtZF9mZWF0X3ByZWZz IiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0Ij4nOw0KCQllY2hvICc8ZmllbGRz ZXQgaWQ9InNtZF9mZWF0dXJlZF9wcmVmcyIgY2xhc3M9InNtZF9mZWF0dXJlZF9zdWJwYW5l bCI+PGxlZ2VuZD4nLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmcycpLic8L2xlZ2VuZD4nOw0K DQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9wcmVmIj4nOw0KCQllY2hvICc8 bGFiZWwgZm9yPSJzbWRfZmVhdF9kaXNwbGF5Ij4nLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVm X2Rpc3BsYXknKS4nPC9sYWJlbD4nLnNlbGVjdElucHV0KCdzbWRfZmVhdF9kaXNwbGF5Jywg JGRpc3BsYXlvcHRzLCAkZGlzcGxheSwgJycsICcnLCAnc21kX2ZlYXRfZGlzcGxheScpOw0K CQllY2hvICc8L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9w cmVmIj4nOw0KCQllY2hvICc8bGFiZWwgZm9yPSJzbWRfZmVhdF9zb3J0Ij4nLnNtZF9mZWF0 dXJlZF9nVHh0KCdwcmVmX3NvcnQnKS4nPC9sYWJlbD4nLnNlbGVjdElucHV0KCdzbWRfZmVh dF9zb3J0JywgJHNvcnRvcHRzLCAkY3Vyck9yZGVyWzBdLCAnJywgJycsICdzbWRfZmVhdF9z b3J0JykuDQoJCQlzZWxlY3RJbnB1dCgnc21kX2ZlYXRfc29ydGRpcicsICRzb3J0ZGlycywg JGN1cnJPcmRlclsxXSwgJycsICcnLCAnc21kX2ZlYXRfc29ydGRpcicpOw0KCQllY2hvICc8 L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9wcmVmIj4nOw0K CQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdF9kaXNwbGF5X2JveCI+JzsNCgkJZWNobyAnPGxh YmVsIGZvcj0ic21kX2ZlYXRfYm94c2l6ZSI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgncHJlZl9i b3hzaXplJykuJzwvbGFiZWw+Jy5mSW5wdXQoJ3RleHQnLCAnc21kX2ZlYXRfYm94X3gnLCAk c2l6ZXNbMF0sICcnLCAnJywgJycsICczJywgJycsICdzbWRfZmVhdF9ib3hzaXplJykuDQoJ CQlzbWRfZmVhdHVyZWRfZ1R4dCgncHJlZl9ib3hzaXplYnknKS5mSW5wdXQoJ3RleHQnLCAn c21kX2ZlYXRfYm94X3knLCAkc2l6ZXNbMV0sICcnLCAnJywgJycsICczJyk7DQoJCWVjaG8g JzwvZGl2Pic7DQoNCgkJZWNobyAnPGRpdiBjbGFzcz0ic21kX2ZlYXR1cmVkX3ByZWYgc21k X2ZlYXRfdGV4dGlsZSI+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfdGV4dGls ZSI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgndGV4dGlsZScpLic8L2xhYmVsPic7DQoJCWZvcmVh Y2ggKCR0ZXh0aWxlb25vZmYgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQllY2hvIGNoZWNrYm94 KCdzbWRfZmVhdF90ZXh0aWxlXycuJGtleSwgMSwgJHRleHRpbGVvbm9mZlska2V5XSwgJycs ICdzbWRfZmVhdF90ZXh0aWxlXycuJGtleSkuc3Auc21kX2ZlYXR1cmVkX2dUeHQoJ3RleHRp bGVfJy4ka2V5KTsNCgkJfQ0KCQllY2hvIGZJbnB1dCgnaGlkZGVuJywgJ3NtZF9mZWF0X3Rl eHRpbGUnLCBpbXBsb2RlKCR0ZXh0aWxlb25vZmYpLCcnLCcnLCcnLCcnLCcnLCdzbWRfZmVh dF90ZXh0aWxlJyk7DQoJCWVjaG8gJzwvZGl2Pic7DQoNCgkJZWNobyAnPC9kaXY+JzsNCg0K CQllY2hvIGVJbnB1dCgkc21kX2ZlYXR1cmVkX2V2ZW50KS5zSW5wdXQoJ3NtZF9mZWF0dXJl ZF9wcmVmc2F2ZScpOw0KCQllY2hvIGZJbnB1dCgnc3VibWl0JywgJycsIGdUeHQoJ3NhdmUn KSwgJ3NtYWxsZXJib3ggc21kX2ZlYXR1cmVkX3NhdmUnLCAnJywgJ3NtZF9mZWF0X3ByZXN1 YigpOycpOw0KCQllY2hvICc8L2ZpZWxkc2V0Pic7DQoJCWVjaG8gJzwvZm9ybT4nOw0KDQoJ CWVjaG8gJyZuYnNwOyc7IC8vIFdpdGhvdXQgdGhpcyAnY29udGVudCcgalF1ZXJ5IDEuMy4y IHdvbid0IC50b2dnbGUoKSBhbiBlbGVtZW50IHdpdGggZW50aXJlbHkgZmxvYXRlZCBpbm5l ciBlbGVtZW50cyA6LXMNCgkJZWNobyAnPC9kaXY+JzsNCgkJZWNobyAnPC9maWVsZHNldD4n Ow0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVhdF9lZGl0Zm9ybSIgYWN0aW9uPSJpbmRl eC5waHAiIG1ldGhvZD0icG9zdCI+JzsNCgkJZWNobyBoSW5wdXQoJ3NtZF9mZWF0X3NlYXJj aGtlZXAnLCAnJykuDQoJCQkJaElucHV0KCdzbWRfZmVhdF9maWx0a2VlcCcsICcnKS4NCgkJ CQloSW5wdXQoJ3NtZF9mZWF0X2lkJywgJycpLg0KCQkJCWVJbnB1dCgkc21kX2ZlYXR1cmVk X2V2ZW50KS4NCgkJCQlzSW5wdXQoJ3NtZF9mZWF0dXJlZF9saXN0Jyk7DQoJCWVjaG8gJzwv Zm9ybT4nOw0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVhdF9zYXZlZm9ybSIgYWN0aW9u PSJpbmRleC5waHAiIG1ldGhvZD0icG9zdCIgb25zdWJtaXQ9InJldHVybiBzbWRfZmVhdHVy ZWRfc2F2ZWtlZXAoKTsiPic7DQoJCWVjaG8gc3RhcnRUYWJsZSgnY29udHJvbCcsJycsJycs JzMnKTsNCgkJaWYgKCRzbWRfZmVhdF9pZCkgew0KCQkJZWNobyB0cigNCgkJCQl0ZCgnJm5i c3A7JykudGRjcyhnVHh0KCdlZGl0Jykuc3Auc3Ryb25nKCRlZGl0bmFtZSksIDIpDQoJCQkp Ow0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxsKGdUeHQoJ2xhYmVsJyksICcnLCAnc21k X2ZlYXRfbGFiZWwnKS4NCgkJCQl0ZCgNCgkJCQkJZklucHV0KCd0ZXh0JywgJ3NtZF9mZWF0 X2xhYmVsJywgJGZlYXRfbGFiZWwsICcnLCAnJywgJycsICcnLCAnJywgJ3NtZF9mZWF0X2xh YmVsJykuDQoJCQkJCXNlbGVjdElucHV0KCdzbWRfZmVhdF9sYWJlbGNob29zZScsICRldHlw ZXMsICRmZWF0X2xhYmVsLCAwLCAnJywgJ3NtZF9mZWF0X2xhYmVsY2hvb3NlJykNCgkJCQkp DQoJCQkpOw0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxsKGdUeHQoJ3RpdGxlJyksICcn LCAnc21kX2ZlYXRfdGl0bGUnKS4NCgkJCQl0ZCgNCgkJCQkJZklucHV0KCd0ZXh0JywgJ3Nt ZF9mZWF0X3RpdGxlJywgJGZlYXRfdGl0bGUsICcnLCAnJywgJycsICcnLCAnJywgJ3NtZF9m ZWF0X3RpdGxlJykNCgkJCQkpDQoJCQkpOw0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxs KGdUeHQoJ2Rlc2NyaXB0aW9uJyksICcnLCAnc21kX2ZlYXRfZGVzYycpLg0KCQkJCXRkKHRl eHRfYXJlYSgnc21kX2ZlYXRfZGVzYycsIDgwLCA0MDAsICRmZWF0X2Rlc2MsICdzbWRfZmVh dF9kZXNjJykpLg0KCQkJCXRkKGZJbnB1dCgnc3VibWl0JywgJycsIGdUeHQoJ3NhdmUnKSwg J3NtYWxsZXJib3gnKSkuDQoJCQkJaElucHV0KCdzbWRfZmVhdF9zZWFyY2hrZWVwJywgJycp Lg0KCQkJCWhJbnB1dCgnc21kX2ZlYXRfZmlsdGtlZXAnLCAnJykuDQoJCQkJaElucHV0KCdz bWRfZmVhdF9pZCcsICRzbWRfZmVhdF9pZCkuDQoJCQkJZUlucHV0KCRzbWRfZmVhdHVyZWRf ZXZlbnQpLg0KCQkJCXNJbnB1dCgnc21kX2ZlYXR1cmVkX3NhdmUnKQ0KCQkJKTsNCgkJfQ0K CQllY2hvIGVuZFRhYmxlKCk7DQoJCWVjaG8gJzwvZm9ybT4nOw0KDQoJCSRlZGJ0biA9IHNt YWxsKCdbJy5nVHh0KCdlZGl0JykuJ10nKTsNCg0KCQlpZiAoJG91dCkgew0KCQkJJHJvd3Mg PSBjb3VudCgkcnMpOw0KCQkJJHRibG91dCA9IGFycmF5KCk7DQoJCQkkYXR0cyA9ICcgY2xh c3M9InNtZF9mZWF0dXJlZF90YWJsZSBzbWRfY2xlYXIiIGlkPSJzbWRfJy4kZGlzcGxheS4n IiBhbGlnbj0iY2VudGVyIic7DQoNCgkJCSR0YmxvdXRbXSA9IGhlZChzbWRfZmVhdHVyZWRf Z1R4dCgnbWFuYWdlX2xibCcsIGFycmF5KCksICdyYXcnKSwgMywgJyBjbGFzcz0ic21kX2Ns ZWFyIicpOw0KCQkJZm9yICgkaWR4ID0gMDsgJGlkeCA8ICRyb3dzOyAkaWR4KyspIHsNCgkJ CQkkaXNmZWF0ID0gKGlzc2V0KCRvdXRbJGlkeF0pICYmIGFycmF5X2tleV9leGlzdHMoJG91 dFskaWR4XVswXSwgJGZlYXRsaXN0KSk7DQoJCQkJJGNlbGxjbGFzcyA9ICRpc2ZlYXQgPyAn IGNsYXNzPSJzbWRfZmVhdHVyZWQiJyA6ICcnOw0KCQkJCSRlZGxpbmsgPSAkaXNmZWF0ID8g JzxhIGNsYXNzPSJlZGxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9InJldHVybiBzbWRfZmVhdHVy ZWRfZWRpdGtlZXAoXCcnLiRvdXRbJGlkeF1bMF0uJ1wnKTsiPicuJGVkYnRuLic8L2E+Jy5z cCA6ICcnOw0KCQkJCSRyb3dkYXRhID0gKGlzc2V0KCRvdXRbJGlkeF0pKSA/ICc8c3BhbiBu YW1lPSJzbWRfZmVhdF9uYW1lIiBjbGFzcz0ic21kX2hpZGRlbiI+Jy4kb3V0WyRpZHhdWzFd Lic8L3NwYW4+JyA6ICcnOw0KCQkJCSRyb3dkYXRhIC49ICRpc2ZlYXQgPyAnPHNwYW4gbmFt ZT0ic21kX2ZlYXRfbGFiZWwiIGNsYXNzPSJleHRyYSBzbWRfaGlkZGVuIj4nLiRvdXRbJGlk eF1bMl0uJzwvc3Bhbj4nIDogJyc7DQoJCQkJJHRibG91dFtdID0gKGlzc2V0KCRvdXRbJGlk eF0pKSA/ICc8ZGl2Jy4kY2VsbGNsYXNzLic+Jy4kZWRsaW5rLic8YSBocmVmPSIjIiBvbmNs aWNrPSJyZXR1cm4gc21kX2ZlYXR1cmVkX3NlbGVjdCh0aGlzLCBcJycuJG91dFskaWR4XVsw XS4nXCcpIj4nLiRvdXRbJGlkeF1bMV0uJzwvYT4nLiRyb3dkYXRhLic8L2Rpdj4nIDogJzxk aXY+PC9kaXY+JzsNCgkJCX0NCgkJCWVjaG8gdGFnKGpvaW4oIiIsJHRibG91dCksICdkaXYn LCAkYXR0cyk7DQoJCQllY2hvICc8ZGl2IGNsYXNzPSJzbWRfY2xlYXIiPjwvZGl2Pic7DQoJ CQlpZiAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnICYmICRkb19wYWcpIHsNCgkJCQllY2hvIG4u JzxkaXYgaWQ9IicuJHNtZF9mZWF0dXJlZF9ldmVudC4nX25hdmlnYXRpb24iIGNsYXNzPSJ0 eHAtbmF2aWdhdGlvbiI+Jy4NCgkJCQkJbi5uYXZfZm9ybSgkc21kX2ZlYXR1cmVkX2V2ZW50 LCAkcGFnZSwgJG51bVBhZ2VzLCAnJywgJycsICcnLCAnJywgJHRvdGFsLCAkbGltaXQpLg0K CQkJCQluLnBhZ2VieV9mb3JtKCRzbWRfZmVhdHVyZWRfZXZlbnQsICRzbWRfZmVhdHVyZWRf bGlzdF9wYWdlYnkpOw0KCQkJCQluLic8L2Rpdj4nOw0KCQkJfQ0KCQl9DQoNCgkJJHFzID0g YXJyYXkoDQoJCQkiZXZlbnQiID0+ICRzbWRfZmVhdHVyZWRfZXZlbnQsDQoJCSk7DQoNCgkJ JHFzVmFycyA9ICJpbmRleC5waHAiLmpvaW5fcXMoJHFzKTsNCgkJJHZlcmlmeVR4dCA9IHNt ZF9mZWF0dXJlZF9nVHh0KCd1bmZlYXR1cmVfY29uZmlybScpOw0KDQoJCWVjaG8gPDw8RU9T DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQovLyBDb25jYXRlbmF0ZSBjaGVj a2JveCBvcHRpb25zIGZvciBzdG9yYWdlDQpmdW5jdGlvbiBzbWRfZmVhdF9wcmVzdWIoKSB7 DQoJdmFyIHNtZF9vdXQgPSAiIjsNCglqUXVlcnkoIi5zbWRfZmVhdF90ZXh0aWxlIDpjaGVj a2JveCIpLmVhY2goZnVuY3Rpb24oKSB7DQoJCXNtZF9vdXQgKz0gKHRoaXMuY2hlY2tlZCkg PyAxIDogMDsNCgl9KTsNCglqUXVlcnkoIiNzbWRfZmVhdF90ZXh0aWxlIikudmFsKHNtZF9v dXQpOw0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zZWxl Y3Qob2JqLCBpZCkgew0KCW9iaiA9IGpRdWVyeShvYmopLnBhcmVudCgpOw0KDQoJLy8gTi5C LiBOZWdhdGl2ZSBsb2dpYyB1c2VkIGhlcmUgYmVjYXVzZSB3ZSdyZSBjaGVja2luZyB0aGUg Y2xhc3MgX2JlZm9yZV8gaXQncyBiZWVuIHRvZ2dsZWQNCgl2YXIgYWN0aW9uID0gKChvYmop Lmhhc0NsYXNzKCJzbWRfZmVhdHVyZWQiKSkgPyAncmVtb3ZlJyA6ICdhZGQnOw0KCWlmIChh Y3Rpb24gPT0gJ3JlbW92ZScpIHsNCgkJdmFyIHJldCA9IGNvbmZpcm0oJ3skdmVyaWZ5VHh0 fScpOw0KCQlpZiAocmV0ID09IGZhbHNlKSB7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9 DQoJalF1ZXJ5LnBvc3QoJ3skcXNWYXJzfScsIHsgc3RlcDogInNtZF9mZWF0dXJlZF90YWdp dCIsIHNtZF9mZWF0X2lkOiBpZCwgc21kX2ZlYXRfYWN0aW9uOiBhY3Rpb24gfSwNCgkJZnVu Y3Rpb24oZGF0YSkgew0KCQkJb2JqLnRvZ2dsZUNsYXNzKCdzbWRfZmVhdHVyZWQnKTsNCgkJ CWlmIChhY3Rpb24gPT0gJ2FkZCcpIHsNCgkJCQlvYmoucHJlcGVuZCgnPGEgY2xhc3M9ImVk bGluayIgaHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHNtZF9mZWF0dXJlZF9lZGl0a2VlcChc JycraWQrJ1wnKSI+eyRlZGJ0bn08L2E+Jm5ic3A7Jyk7DQoJCQkJb2JqLmFwcGVuZCgnPHNw YW4gbmFtZT0ic21kX2ZlYXRfbGFiZWwiIGNsYXNzPSJleHRyYSBzbWRfaGlkZGVuIj48L3Nw YW4+Jyk7DQoJCQl9IGVsc2Ugew0KCQkJCW9iai5maW5kKCdhLmVkbGluaycpLnJlbW92ZSgp Ow0KCQkJCW9iai5maW5kKCdzcGFuLmV4dHJhJykucmVtb3ZlKCk7DQoJCQkJaWYgKGpRdWVy eSgiI3NtZF9mZWF0X3NlYXJjaCIpLnZhbCgpICE9ICcnKSBqUXVlcnkoIiNzbWRfZmVhdF9z ZWFyY2giKS5rZXl1cCgpOw0KCQkJCWlmIChqUXVlcnkoIiNzbWRfZmVhdF9maWx0IikudmFs KCkgIT0gJycpIGpRdWVyeSgiI3NtZF9mZWF0X2ZpbHQiKS5jaGFuZ2UoKTsNCgkJCX0NCgkJ fQ0KCSk7DQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfZWRp dGtlZXAoaWQpIHsNCglqUXVlcnkoIiNzbWRfZmVhdF9lZGl0Zm9ybSBbbmFtZT0nc21kX2Zl YXRfc2VhcmNoa2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9mZWF0X3NlYXJjaCIpLnZhbCgp KTsNCglqUXVlcnkoIiNzbWRfZmVhdF9lZGl0Zm9ybSBbbmFtZT0nc21kX2ZlYXRfZmlsdGtl ZXAnXSIpLnZhbChqUXVlcnkoIiNzbWRfZmVhdHVyZWRfYnlsYWJlbCAjc21kX2ZlYXRfZmls dCBvcHRpb246c2VsZWN0ZWQiKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZWRpdGZv cm0gW25hbWU9J3NtZF9mZWF0X2lkJ10iKS52YWwoaWQpOw0KCWpRdWVyeSgiI3NtZF9mZWF0 X2VkaXRmb3JtIikuc3VibWl0KCk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zYXZl a2VlcCgpIHsNCglqUXVlcnkoIiNzbWRfZmVhdF9zYXZlZm9ybSBbbmFtZT0nc21kX2ZlYXRf c2VhcmNoa2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9mZWF0X3NlYXJjaCIpLnZhbCgpKTsN CglqUXVlcnkoIiNzbWRfZmVhdF9zYXZlZm9ybSBbbmFtZT0nc21kX2ZlYXRfZmlsdGtlZXAn XSIpLnZhbChqUXVlcnkoIiNzbWRfZmVhdHVyZWRfYnlsYWJlbCAjc21kX2ZlYXRfZmlsdCBv cHRpb246c2VsZWN0ZWQiKS52YWwoKSk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0X2ZpbHRl cihzZWxlY3RvciwgcXVlcnksIG5hbSwgY3NlbnNlLCBleGFjdCkgew0KCWlmICh7JGRpc3Bs YXlfanN9ID09IDEpIHsNCgkJdmFyIHF1ZXJ5ID0galF1ZXJ5LnRyaW0ocXVlcnkpOw0KCQlj c2Vuc2UgPSAoY3NlbnNlKSA/ICIiIDogImkiOw0KCQlxdWVyeSA9IHF1ZXJ5LnJlcGxhY2Uo LyAvZ2ksICd8Jyk7IC8vIGFkZCBPUiBmb3IgcmVnZXggcXVlcnkNCgkJaWYgKGV4YWN0KSB7 DQoJCQl0bXAgPSBxdWVyeS5zcGxpdCgnfCcpOw0KCQkJZm9yICh2YXIgaWR4ID0gMDsgaWR4 IDwgdG1wLmxlbmd0aDsgaWR4KyspIHsNCgkJCQl0bXBbaWR4XSA9ICdeJyt0bXBbaWR4XSsn JCc7DQoJCQl9DQoJCQlxdWVyeSA9IHRtcC5qb2luKCd8Jyk7DQoJCX0NCgkJdmFyIHJlID0g bmV3IFJlZ0V4cChxdWVyeSwgY3NlbnNlKTsNCgkJalF1ZXJ5KHNlbGVjdG9yKS5lYWNoKGZ1 bmN0aW9uKCkgew0KCQkJc2VsID0gKHR5cGVvZiBuYW09PSJ1bmRlZmluZWQiIHx8IG5hbT09 JycpID8galF1ZXJ5KHRoaXMpIDogalF1ZXJ5KHRoaXMpLmZpbmQoInNwYW5bbmFtZT0nIitu YW0rIiddIik7DQoJCQlpZiAocXVlcnkgPT0gJycpIHsNCgkJCQlpZiAoc2VsLmxlbmd0aCA9 PSAxICYmIHNlbC50ZXh0KCkgPT0gJycpIHsNCgkJCQkJalF1ZXJ5KHRoaXMpLnNob3coKTsN CgkJCQl9IGVsc2Ugew0KCQkJCQlqUXVlcnkodGhpcykuaGlkZSgpOw0KCQkJCX0NCgkJCX0g ZWxzZSB7DQoJCQkJaWYgKHNlbC50ZXh0KCkuc2VhcmNoKHJlKSA8IDApIHsNCgkJCQkJalF1 ZXJ5KHRoaXMpLmhpZGUoKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlqUXVlcnkodGhpcykuc2hv dygpOw0KCQkJCX0NCgkJCX0NCgkJfSk7DQoJfQ0KfQ0KDQpqUXVlcnkoZnVuY3Rpb24oKSB7 DQoJalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikua2V5dXAoZnVuY3Rpb24oZXZlbnQpIHsN CgkJalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLnZhbCgnMCcpOyAvLyBDbGVhciB0aGUgZmls dGVyIGRyb3Bkb3duDQoJCS8vIGlmIGVzYyBpcyBwcmVzc2VkIG9yIG5vdGhpbmcgaXMgZW50 ZXJlZA0KCQlpZiAoZXZlbnQua2V5Q29kZSA9PSAyNyB8fCBqUXVlcnkodGhpcykudmFsKCkg PT0gJycpIHsNCgkJCWpRdWVyeSh0aGlzKS52YWwoJycpOw0KCQkJaWYgKHskZGlzcGxheV9q c30gPT0gMSkgew0KCQkJCWpRdWVyeSgiLnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50 YmxoZWFkKSIpLnNob3coKTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCXNtZF9mZWF0X2ZpbHRl cignLnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50YmxoZWFkKScsIGpRdWVyeSh0aGlz KS52YWwoKSwgJ3NtZF9mZWF0X25hbWUnLCAwLCAwKTsNCgkJfQ0KCX0pOw0KCWlmICgneyRz bWRfZmVhdF9zZWFyY2hrZWVwfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRfc2Vh cmNoIikua2V5dXAoKTsNCgl9DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLmNoYW5nZShm dW5jdGlvbihldmVudCkgew0KCQlqUXVlcnkoIiNzbWRfZmVhdF9zZWFyY2giKS52YWwoJycp OyAvLyBFbXB0eSB0aGUgc2VhcmNoIGJveA0KCQlpZiAoalF1ZXJ5KHRoaXMpLnZhbCgpID09 ICcnKSB7DQoJCQlpZiAoeyRkaXNwbGF5X2pzfSA9PSAxKSB7DQoJCQkJalF1ZXJ5KCcuc21k X2ZlYXR1cmVkX3RhYmxlIGRpdjpub3QoLnRibGhlYWQpJykuc2hvdygpOw0KCQkJfQ0KCQl9 IGVsc2UgaWYgKGpRdWVyeSh0aGlzKS52YWwoKSA9PSAnc21kX3VubGFiZWxsZWQnKSB7DQoJ CQlzbWRfZmVhdF9maWx0ZXIoJy5zbWRfZmVhdHVyZWRfdGFibGUgZGl2Om5vdCgudGJsaGVh ZCknLCAnJywgJ3NtZF9mZWF0X2xhYmVsJywgMCwgMCk7DQoJCX0gZWxzZSB7DQoJCQlzbWRf ZmVhdF9maWx0ZXIoJy5zbWRfZmVhdHVyZWRfdGFibGUgZGl2Om5vdCgudGJsaGVhZCknLCBq UXVlcnkodGhpcykudmFsKCksICdzbWRfZmVhdF9sYWJlbCcsIDEsIDEpOw0KCQl9DQoJfSk7 DQoJaWYgKCd7JHNtZF9mZWF0X2ZpbHRrZWVwfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21k X2ZlYXRfZmlsdCIpLmNoYW5nZSgpOw0KCX0NCglpZiAoJ3skc21kX2ZlYXRfaWR9JyAhPSAn Jykgew0KCQlqUXVlcnkoIiNzbWRfZmVhdF9sYWJlbCIpLmZvY3VzKCk7DQoJCWpRdWVyeSgi I3NtZF9mZWF0X2xhYmVsY2hvb3NlIikuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KSB7DQoJCQlq UXVlcnkoIiNzbWRfZmVhdF9sYWJlbCIpLnZhbChqUXVlcnkodGhpcykudmFsKCkpOw0KCQl9 KTsNCgl9DQoJalF1ZXJ5KCIjc21kX2xvYWRpbmciKS5oaWRlKCk7DQoJalF1ZXJ5KCIjc21k X2NvbnRhaW5lciIpLnNob3coKTsNCn0pOw0KDQo8L3NjcmlwdD4NCjxzdHlsZSB0eXBlPSJ0 ZXh0L2NzcyI+DQouc21kX2hpZGRlbiB7DQoJZGlzcGxheTpub25lOw0KfQ0KLnNtZF9mZWF0 dXJlZCB7DQoJYmFja2dyb3VuZDojZmZjOw0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQp9DQojc21k X2ZlYXR1cmVkX2NvbnRyb2xfcGFuZWwgew0KCWZvbnQtc2l6ZTo5MCU7DQoJbWFyZ2luOjAg YXV0byAyMHB4Ow0KCXBhZGRpbmc6N3B4IDhweDsNCgl3aWR0aDo0NTBweDsNCn0NCi5zbWRf ZmVhdHVyZWRfcHJlZiB7DQoJbWFyZ2luOjZweDsNCn0NCi5zbWRfZmVhdHVyZWRfc2F2ZSB7 DQoJZmxvYXQ6cmlnaHQ7DQp9DQouc21kX2ZlYXR1cmVkX3N1YnBhbmVsIHsNCglmbG9hdDps ZWZ0Ow0KCW1hcmdpbjowIDVweDsNCn0NCi5zbWRfZmVhdHVyZWRfdGFibGUgew0KCXdpZHRo OjgwMHB4Ow0KCW1hcmdpbjowIGF1dG8gODBweDsNCn0NCi5zbWRfY2xlYXIgew0KCWNsZWFy OmJvdGg7DQp9DQouc21kX2ZlYXR1cmVkX3RhYmxlIGRpdiB7DQoJZmxvYXQ6bGVmdDsNCgl3 aWR0aDp7JHNpemVzWzBdfXB4Ow0KCWhlaWdodDp7JHNpemVzWzFdfXB4Ow0KCWJvcmRlcjox cHggc29saWQgI2RkZDsNCglwYWRkaW5nOjRweDsNCglvdmVyZmxvdzpoaWRkZW47DQp9DQo8 L3N0eWxlPg0KRU9TOw0KCQllY2hvICc8L2Rpdj4nOw0KDQoJfSBlbHNlIHsNCgkJLy8gVGFi bGUgbm90IGluc3RhbGxlZA0KCQkkYnRuSW5zdGFsbCA9ICc8Zm9ybSBtZXRob2Q9InBvc3Qi IGFjdGlvbj0iP2V2ZW50PScuJHNtZF9mZWF0dXJlZF9ldmVudC5hLidzdGVwPXNtZF9mZWF0 dXJlZF90YWJsZV9pbnN0YWxsIiBzdHlsZT0iZGlzcGxheTppbmxpbmUiPicuZklucHV0KCdz dWJtaXQnLCAnc3VibWl0Jywgc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9pbnN0YWxsX2xibCcp LCAnc21hbGxlcmJveCcpLic8L2Zvcm0+JzsNCgkJJGJ0blN0eWxlID0gJyBzdHlsZT0iYm9y ZGVyOjA7aGVpZ2h0OjI1cHgiJzsNCgkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7DQoJCWVj aG8gdHIodGRhKHN0cm9uZyhzbWRfZmVhdHVyZWRfZ1R4dCgncHJlZnNfc29tZV90YmwnKSku YnIuYnINCgkJCQkuc21kX2ZlYXR1cmVkX2dUeHQoJ3ByZWZzX3NvbWVfZXhwbGFpbicpLmJy LmJyDQoJCQkJLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmc19zb21lX29wdHMnKSwgJyBjb2xz cGFuPSIyIicpDQoJCSk7DQoJCWVjaG8gdHIodGRhKCRidG5JbnN0YWxsLCAkYnRuU3R5bGUp KTsNCgkJZWNobyBlbmRUYWJsZSgpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24g c21kX2ZlYXR1cmVkX2NoYW5nZV9wYWdlYnkoKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRf ZXZlbnQ7DQoJDQoJZXZlbnRfY2hhbmdlX3BhZ2VieSgkc21kX2ZlYXR1cmVkX2V2ZW50KTsN CglzbWRfZmVhdHVyZWRfbGlzdCgpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCi8vIFVwZGF0ZSB0aGUgcGFzc2VkIHJlY29yZCBpbiB0aGUgZmVhdHVyZWQgdGFibGUN CmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zYXZlKCkgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVk X2V2ZW50LCAkc21kX2ZlYXR1cmVkX3RleHRpbGVfb3B0czsNCg0KCWV4dHJhY3QoZ3BzYShh cnJheSgnc21kX2ZlYXRfaWQnLCAnc21kX2ZlYXRfbGFiZWwnLCAnc21kX2ZlYXRfdGl0bGUn LCAnc21kX2ZlYXRfZGVzYycpKSk7DQoJYXNzZXJ0X2ludCgkc21kX2ZlYXRfaWQpOw0KDQoJ JHNtZF9mZWF0X3RpdGxldGlsZSA9ICRzbWRfZmVhdF90aXRsZTsNCgkkc21kX2ZlYXRfZGVz Y3RpbGUgPSAkc21kX2ZlYXRfZGVzYzsNCgkkc21kX2ZlYXRfbGFiZWwgPSBkb1NsYXNoKCRz bWRfZmVhdF9sYWJlbCk7DQoNCglpZiAoc21kX2ZlYXR1cmVkX3RhYmxlX2V4aXN0KCkpIHsN CgkJQGluY2x1ZGVfb25jZSB0eHBhdGguJy9saWIvY2xhc3NUZXh0aWxlLnBocCc7DQoJCUBp bmNsdWRlX29uY2UgdHhwYXRoLicvcHVibGlzaC5waHAnOw0KDQoJCSR0ZXh0aWxlb25vZmYg PSBzbWRfZmVhdHVyZWRfcHJlZl9leHBsb2RlKCRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRz LCBnZXRfcHJlZignc21kX2ZlYXR1cmVkX3RleHRpbGUnLCAnMTEnKSk7DQoNCgkJaWYgKGNs YXNzX2V4aXN0cygnVGV4dGlsZScpKSB7DQoJCQkkdGV4dGlsZSA9IG5ldyBUZXh0aWxlKCk7 DQoJCQlpZiAoJHRleHRpbGVvbm9mZlsndGl0bGUnXSA9PSAnMScpIHsNCgkJCQkkc21kX2Zl YXRfdGl0bGV0aWxlID0gZG9TbGFzaCgkdGV4dGlsZS0+VGV4dGlsZVRoaXMocGFyc2UoJHNt ZF9mZWF0X3RpdGxlKSkpOw0KCQkJfQ0KCQkJaWYgKCR0ZXh0aWxlb25vZmZbJ2Rlc2MnXSA9 PSAnMScpIHsNCgkJCQkkc21kX2ZlYXRfZGVzY3RpbGUgPSBkb1NsYXNoKCR0ZXh0aWxlLT5U ZXh0aWxlVGhpcyhwYXJzZSgkc21kX2ZlYXRfZGVzYykpKTsNCgkJCX0NCgkJfQ0KDQoJCSRz bWRfZmVhdF90aXRsZSA9IGRvU2xhc2goJHNtZF9mZWF0X3RpdGxlKTsNCgkJJHNtZF9mZWF0 X2Rlc2MgPSBkb1NsYXNoKCRzbWRfZmVhdF9kZXNjKTsNCgkJJHJldCA9IHNhZmVfdXBzZXJ0 KFNNRF9GRUFULCAibGFiZWw9JyRzbWRfZmVhdF9sYWJlbCcsIGZlYXRfdGl0bGU9JyRzbWRf ZmVhdF90aXRsZScsIGZlYXRfdGl0bGVfaHRtbD0nJHNtZF9mZWF0X3RpdGxldGlsZScsIGRl c2NyaXB0aW9uPSckc21kX2ZlYXRfZGVzYycsIGRlc2NfaHRtbD0nJHNtZF9mZWF0X2Rlc2N0 aWxlJyIsICJmZWF0X2lkPSckc21kX2ZlYXRfaWQnIik7DQoJCXVuc2V0KCRfUE9TVFsnc21k X2ZlYXRfaWQnXSk7DQoJfQ0KDQoJc21kX2ZlYXR1cmVkX2xpc3Qoc21kX2ZlYXR1cmVkX2dU eHQoJ3NhdmVkJykpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIENy ZWF0ZSBhbiBlbXB0eSBlbnRyeSBpbiB0aGUgZmVhdHVyZWQgdGFibGUgb3IgZGVzdHJveSBp dA0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3RhZ2l0KCkgew0KCWdsb2JhbCAkc21kX2ZlYXR1 cmVkX2V2ZW50Ow0KCWV4dHJhY3QoZG9TbGFzaChncHNhKGFycmF5KCdzbWRfZmVhdF9pZCcs ICdzbWRfZmVhdF9hY3Rpb24nKSkpKTsNCg0KCWFzc2VydF9pbnQoJHNtZF9mZWF0X2lkKTsN Cg0KCWlmICgkc21kX2ZlYXRfYWN0aW9uID09ICdhZGQnKSB7DQoJCSRyZXQgPSBzYWZlX3Vw c2VydChTTURfRkVBVCwgImxhYmVsPScnIiwgImZlYXRfaWQ9JyRzbWRfZmVhdF9pZCciKTsN Cgl9IGVsc2UgaWYgKCRzbWRfZmVhdF9hY3Rpb24gPT0gJ3JlbW92ZScpIHsNCgkJJHJldCA9 IHNhZmVfZGVsZXRlKFNNRF9GRUFULCAiZmVhdF9pZD0nJHNtZF9mZWF0X2lkJyIpOw0KCX0N Cn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3ByZWZzYXZlKCkgew0K CWV4dHJhY3QoZ3BzYShhcnJheSgnc21kX2ZlYXRfZGlzcGxheScsICdzbWRfZmVhdF9zb3J0 JywgJ3NtZF9mZWF0X3NvcnRkaXInLCAnc21kX2ZlYXRfYm94X3gnLCAnc21kX2ZlYXRfYm94 X3knLCAnc21kX2ZlYXRfdGV4dGlsZScpKSk7DQoJJG1zZyA9ICcnOw0KDQoJaWYgKCRzbWRf ZmVhdF9kaXNwbGF5KSB7DQoJCXNldF9wcmVmKCJzbWRfZmVhdHVyZWRfZGlzcGxheSIsICRz bWRfZmVhdF9kaXNwbGF5LCAnc21kX2ZlYXR1cmVkJywgUFJFRl9ISURERU4sICd0ZXh0X2lu cHV0JywgMCwgUFJFRl9QUklWQVRFKTsNCgkJJG1zZyA9IGdUeHQoJ3ByZWZlcmVuY2VzX3Nh dmVkJyk7DQoJfQ0KDQoJaWYgKCRzbWRfZmVhdF9zb3J0ICYmICRzbWRfZmVhdF9zb3J0ZGly KSB7DQoJCSRzb3J0X2NyaXQgPSAkc21kX2ZlYXRfc29ydC4nICcuICRzbWRfZmVhdF9zb3J0 ZGlyOw0KCQlzZXRfcHJlZigic21kX2ZlYXR1cmVkX3NvcnQiLCAkc29ydF9jcml0LCAnc21k X2ZlYXR1cmVkJywgUFJFRl9ISURERU4sICd0ZXh0X2lucHV0JywgMCwgUFJFRl9QUklWQVRF KTsNCgkJJG1zZyA9IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJyk7DQoJfQ0KDQoJaWYgKCRz bWRfZmVhdF9ib3hfeCAmJiAkc21kX2ZlYXRfYm94X3kpIHsNCgkJJGRpbXMgPSAkc21kX2Zl YXRfYm94X3guJ3gnLiRzbWRfZmVhdF9ib3hfeTsNCgkJc2V0X3ByZWYoInNtZF9mZWF0dXJl ZF9ib3hfc2l6ZSIsICRkaW1zLCAnc21kX2ZlYXR1cmVkJywgUFJFRl9ISURERU4sICd0ZXh0 X2lucHV0JywgMCwgUFJFRl9QUklWQVRFKTsNCgkJJG1zZyA9IGdUeHQoJ3ByZWZlcmVuY2Vz X3NhdmVkJyk7DQoJfQ0KDQoJaWYgKCRzbWRfZmVhdF90ZXh0aWxlKSB7DQoJCXNldF9wcmVm KCJzbWRfZmVhdHVyZWRfdGV4dGlsZSIsICRzbWRfZmVhdF90ZXh0aWxlLCAnc21kX2ZlYXR1 cmVkJywgUFJFRl9ISURERU4sICd0ZXh0X2lucHV0JywgMCwgUFJFRl9QUklWQVRFKTsNCgkJ JG1zZyA9IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJyk7DQoJfQ0KDQoJc21kX2ZlYXR1cmVk X2xpc3QoJG1zZyk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gU3Bs aXQgYSBtdWx0aS1jaGFyIHByZWZlcmVuY2UgdmFsdWUgaW50byBhbiBhcnJheSBvZiBrZXlz L3ZhbHVlcy4NCi8vIE5vdGU6IHZhbHVlIGlzIHBhc3NlZCBpbiBhbmQgbm90IHJlYWQgZGly ZWN0bHkgZnJvbSB0aGUgcHJlZnMgYXJyYXkgaW4gdGhpcyBmdW5jdGlvbiAtIGludGVudGlv bmFsbHkNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9wcmVmX2V4cGxvZGUoJGl0ZW1zLCAkb3B0 dmFsKSB7DQoJJG9ub2ZmID0gYXJyYXlfdmFsdWVzKHByZWdfc3BsaXQoJy8vJywgJG9wdHZh bCwgLTEsIFBSRUdfU1BMSVRfTk9fRU1QVFkpKTsNCgkkb3V0ID0gYXJyYXkoKTsNCglmb3Jl YWNoKCRpdGVtcyBhcyAka2V5ID0+ICR2YWx1ZSkgew0KCQkkb3V0WyhzdHJpbmcpJHZhbHVl XSA9ICRvbm9mZlska2V5XTsNCgl9DQoJcmV0dXJuICRvdXQ7DQp9DQoNCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zYXZlX3BhbmVfc3RhdGUoKSB7DQoJJHBhbmVzID0g YXJyYXkoJ3NtZF9mZWF0dXJlZF9jcGFuZWwnKTsNCgkkcGFuZSA9IGdwcygncGFuZScpOw0K CWlmIChpbl9hcnJheSgkcGFuZSwgJHBhbmVzKSkNCgl7DQoJCXNldF9wcmVmKCJwYW5lX3sk cGFuZX1fdmlzaWJsZSIsIChncHMoJ3Zpc2libGUnKSA9PSAndHJ1ZScgPyAnMScgOiAnMCcp LCAnc21kX2ZlYXR1cmVkJywgUFJFRl9ISURERU4sICd5ZXNub3JhZGlvJywgMCwgUFJFRl9Q UklWQVRFKTsNCgkJc2VuZF94bWxfcmVzcG9uc2UoKTsNCgl9IGVsc2Ugew0KCQlzZW5kX3ht bF9yZXNwb25zZShhcnJheSgnaHR0cC1zdGF0dXMnID0+ICc0MDAgQmFkIFJlcXVlc3QnKSk7 DQoJfQ0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIEFkZCBmZWF0dXJl ZCB0YWJsZSBpZiBub3QgYWxyZWFkeSBpbnN0YWxsZWQNCmZ1bmN0aW9uIHNtZF9mZWF0dXJl ZF90YWJsZV9pbnN0YWxsKCRzaG93cGFuZT0nMScpIHsNCgkkR0xPQkFMU1sndHhwX2Vycl9j b3VudCddID0gMDsNCgkkcmV0ID0gJyc7DQoJJHNxbCA9IGFycmF5KCk7DQoJJHNxbFtdID0g IkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGAiLlBGWC5TTURfRkVBVC4iYCAoDQoJCWBm ZWF0X2lkYCBpbnQoOCkgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQoJCWBsYWJlbGAgdmFyY2hh cigzMikgTlVMTCBkZWZhdWx0ICcnLA0KCQlgZmVhdF90aXRsZWAgdmFyY2hhcigyNTUpIE5V TEwgZGVmYXVsdCAnJywNCgkJYGZlYXRfdGl0bGVfaHRtbGAgdmFyY2hhcigyNTUpIE5VTEwg ZGVmYXVsdCAnJywNCgkJYGRlc2NyaXB0aW9uYCB0ZXh0IE5VTEwgZGVmYXVsdCAnJywNCgkJ YGRlc2NfaHRtbGAgdGV4dCBOVUxMIGRlZmF1bHQgJycsDQoJCVBSSU1BUlkgS0VZIChgZmVh dF9pZGApDQoJKSBFTkdJTkU9TXlJU0FNIjsNCg0KCWlmKGdwcygnZGVidWcnKSkgew0KCQlk bXAoJHNxbCk7DQoJfQ0KCWZvcmVhY2ggKCRzcWwgYXMgJHFyeSkgew0KCQkkcmV0ID0gc2Fm ZV9xdWVyeSgkcXJ5KTsNCgkJaWYgKCRyZXQ9PT1mYWxzZSkgew0KCQkJJEdMT0JBTFNbJ3R4 cF9lcnJfY291bnQnXSsrOw0KCQkJZWNobyAiPGI+Ii4kR0xPQkFMU1sndHhwX2Vycl9jb3Vu dCddLiIuPC9iPiAiLm15c3FsX2Vycm9yKCkuIjxiciAvPlxuIjsNCgkJCWVjaG8gIjwhLS1c biAkcXJ5IFxuLS0+XG4iOw0KCQl9DQoJfQ0KDQoJLy8gSGFuZGxlIHVwZ3JhZGVzIGZyb20g cHJldmlvdXMgdmVyc2lvbnMNCgkkY29scyA9IGdldFRoaW5ncygnZGVzY3JpYmUgYCcuUEZY LlNNRF9GRUFULidgJyk7DQoJaWYgKCFpbl9hcnJheSgnZmVhdF9pZCcsICRjb2xzKSkgew0K CQlzYWZlX2FsdGVyKFNNRF9GRUFULCAiQ0hBTkdFIGBpZGAgYGZlYXRfaWRgIGludCggOCAp IE5PVCBOVUxMIERFRkFVTFQgJzAnIik7DQoJfQ0KCWlmICghaW5fYXJyYXkoJ2ZlYXRfdGl0 bGUnLCAkY29scykpIHsNCgkJc2FmZV9hbHRlcihTTURfRkVBVCwgIkFERCBgZmVhdF90aXRs ZWAgdmFyY2hhciggMjU1ICkgTlVMTCBERUZBVUxUICcnIEFGVEVSIGBsYWJlbGAiKTsNCgl9 DQoJaWYgKCFpbl9hcnJheSgnZmVhdF90aXRsZV9odG1sJywgJGNvbHMpKSB7DQoJCXNhZmVf YWx0ZXIoU01EX0ZFQVQsICJBREQgYGZlYXRfdGl0bGVfaHRtbGAgdmFyY2hhciggMjU1ICkg TlVMTCBERUZBVUxUICcnIEFGVEVSIGBmZWF0X3RpdGxlYCIpOw0KCX0NCg0KCS8vIFNwaXQg b3V0IHJlc3VsdHMNCglpZiAoJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSA9PSAwKSB7DQoJ CWlmICgkc2hvd3BhbmUpIHsNCgkJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dUeHQoJ3Ri bF9pbnN0YWxsZWQnKTsNCgkJCXNtZF9mZWF0dXJlZF9saXN0KCRtZXNzYWdlKTsNCgkJfQ0K CX0gZWxzZSB7DQoJCWlmICgkc2hvd3BhbmUpIHsNCgkJCSRtZXNzYWdlID0gc21kX2ZlYXR1 cmVkX2dUeHQoJ3RibF9ub3RfaW5zdGFsbGVkJyk7DQoJCQlzbWRfZmVhdHVyZWRfbGlzdCgk bWVzc2FnZSk7DQoJCX0NCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K Ly8gRHJvcCB0YWJsZSBpZiBpbiBkYXRhYmFzZQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3Rh YmxlX3JlbW92ZSgpIHsNCgkkcmV0ID0gJyc7DQoJJHNxbCA9IGFycmF5KCk7DQoJJEdMT0JB TFNbJ3R4cF9lcnJfY291bnQnXSA9IDA7DQoJaWYgKHNtZF9mZWF0dXJlZF90YWJsZV9leGlz dCgpKSB7DQoJCSRzcWxbXSA9ICJEUk9QIFRBQkxFIElGIEVYSVNUUyAiIC5QRlguU01EX0ZF QVQuICI7ICI7DQoJCWlmKGdwcygnZGVidWcnKSkgew0KCQkJZG1wKCRzcWwpOw0KCQl9DQoJ CWZvcmVhY2ggKCRzcWwgYXMgJHFyeSkgew0KCQkJJHJldCA9IHNhZmVfcXVlcnkoJHFyeSk7 DQoJCQlpZiAoJHJldD09PWZhbHNlKSB7DQoJCQkJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQn XSsrOw0KCQkJCWVjaG8gIjxiPiIuJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXS4iLjwvYj4g Ii5teXNxbF9lcnJvcigpLiI8YnIgLz5cbiI7DQoJCQkJZWNobyAiPCEtLVxuICRxcnkgXG4t LT5cbiI7DQoJCQl9DQoJCX0NCgl9DQoJaWYgKCRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10g PT0gMCkgew0KCQkkbWVzc2FnZSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd0YmxfcmVtb3ZlZCcp Ow0KCX0gZWxzZSB7DQoJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9ub3Rf cmVtb3ZlZCcpOw0KCQlzbWRfZmVhdHVyZWRfbGlzdCgkbWVzc2FnZSk7DQoJfQ0KfQ0KDQov LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWJs ZV9leGlzdCgkYWxsPScnKSB7DQoJaWYgKCRhbGwpIHsNCgkJJHRibHMgPSBhcnJheShTTURf RkVBVCA9PiA2KTsNCgkJJG91dCA9IGNvdW50KCR0YmxzKTsNCgkJZm9yZWFjaCAoJHRibHMg YXMgJHRibCA9PiAkY29scykgew0KCQkJaWYgKGdwcygnZGVidWcnKSkgew0KCQkJCWVjaG8g IisrIFRBQkxFICIuJHRibC4iIEhBUyAiLmNvdW50KEBzYWZlX3Nob3coJ2NvbHVtbnMnLCAk dGJsKSkuIiBDT0xVTU5TOyBSRVFVSVJFUyAiLiRjb2xzLiIgKysiLmJyOw0KCQkJfQ0KCQkJ aWYgKGNvdW50KEBzYWZlX3Nob3coJ2NvbHVtbnMnLCAkdGJsKSkgPT0gJGNvbHMpIHsNCgkJ CQkkb3V0LS07DQoJCQl9DQoJCX0NCgkJcmV0dXJuICgkb3V0PT09MCkgPyAxIDogMDsNCgl9 IGVsc2Ugew0KCQlpZiAoZ3BzKCdkZWJ1ZycpKSB7DQoJCQllY2hvICIrKyBUQUJMRSAiLlNN RF9GRUFULiIgSEFTICIuY291bnQoQHNhZmVfc2hvdygnY29sdW1ucycsIFNNRF9GRUFUKSku IiBDT0xVTU5TOyI7DQoJCX0NCgkJcmV0dXJuKEBzYWZlX3Nob3coJ2NvbHVtbnMnLCBTTURf RkVBVCkpOw0KCX0NCn0NCg0KLy8gKioqKioqKioqKioqKioqKg0KLy8gUFVCTElDIFNJREUg VEFHUw0KLy8gKioqKioqKioqKioqKioqKg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpmdW5jdGlvbiBzbWRfZmVhdHVyZWQoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21k X2ZlYXR1cmVkX2luZm8sICRzbWRfcHJpb3JfZmVhdHVyZWQsICRwcmVmczsNCg0KCWV4dHJh Y3QobEF0dHMoYXJyYXkoDQoJCSdsYWJlbCcgICAgPT4gJycsDQoJCSd1bmxhYmVsJyAgPT4g J0ZlYXR1cmVkJywNCgkJJ2xhYmVsdGFnJyA9PiAnJywNCgkJJ3RpbWUnICAgICA9PiAncGFz dCcsDQoJCSdzdGF0dXMnICAgPT4gJzQsNScsDQoJCSdzZWN0aW9uJyAgPT4gJycsDQoJCSds aW1pdCcgICAgPT4gJycsDQoJCSdzb3J0JyAgICAgPT4gJycsDQoJCSdmb3JtJyAgICAgPT4g JycsDQoJCSd3cmFwdGFnJyAgPT4gJycsDQoJCSdicmVhaycgICAgPT4gJycsDQoJCSdjbGFz cycgICAgPT4gJycsDQoJCSdodG1sX2lkJyAgPT4gJycsDQoJKSwkYXR0cykpOw0KDQoJaWYg KGlzc2V0KCRhdHRzWydsYWJlbCddKSkgew0KCQlpZiAoJGxhYmVsKSB7DQoJCQkkd2hlcmUg PSAiQklOQVJZIGxhYmVsIFJFR0VYUCAnIi4kYXR0c1snbGFiZWwnXS4iJyI7DQoJCX0gZWxz ZSB7DQoJCQkkd2hlcmUgPSAibGFiZWw9JyciOw0KCQl9DQoJCXVuc2V0KCRhdHRzWydsYWJl bCddKTsNCgl9IGVsc2Ugew0KCQkvLyBJZiBubyBsYWJlbCBhdHRyaWJ1dGUgaGFzIGJlZW4g Z2l2ZW4sIHRyZWF0IHRoaXMgYXMgJ2FsbCBmZWF0dXJlZCBpdGVtcycNCgkJJGlkcyA9IHNh ZmVfY29sdW1uKCdmZWF0X2lkJywgU01EX0ZFQVQsICcxPTEnKTsNCgkJJGlkcyA9IGpvaW4o IicsJyIsIGRvU2xhc2goJGlkcykpOw0KCQkkd2hlcmUgPSAic21kZmVhdC5mZWF0X2lkIElO ICgnJGlkcycpIjsNCgl9DQoNCgkvLyBFeGNsdWRlIHByZXZpb3VzbHkgc2VlbiBhcnRpY2xl cw0KCWlmICghZW1wdHkoJHNtZF9wcmlvcl9mZWF0dXJlZCkpIHsNCgkJJHdoZXJlIC49ICcg QU5EIHNtZGZlYXQuZmVhdF9pZCBOT1QgSU4oJyAuIGpvaW4oJywnLCAkc21kX3ByaW9yX2Zl YXR1cmVkKSAuICcpJzsNCgl9DQoNCglpZiAoJHRpbWUpIHsNCgkJc3dpdGNoICgkdGltZSkg ew0KCQkJY2FzZSAnYW55JzoNCgkJCQlicmVhazsNCgkJCWNhc2UgJ2Z1dHVyZSc6DQoJCQkJ JHdoZXJlIC49ICIgQU5EIFBvc3RlZCA+IG5vdygpIjsNCgkJCQlicmVhazsNCgkJCWRlZmF1 bHQ6DQoJCQkJJHdoZXJlIC49ICIgQU5EIFBvc3RlZCA8PSBub3coKSI7DQoJCX0NCgkJaWYg KCEkcHJlZnNbJ3B1Ymxpc2hfZXhwaXJlZF9hcnRpY2xlcyddKSB7DQoJCQkkd2hlcmUgLj0g IiBBTkQgKG5vdygpIDw9IEV4cGlyZXMgT1IgRXhwaXJlcyA9ICIuTlVMTERBVEVUSU1FLiIp IjsNCgkJfQ0KCQl1bnNldCgkYXR0c1sndGltZSddKTsNCgl9DQoNCglpZiAoJHN0YXR1cykg ew0KCQkkd2hlcmUgLj0gJyBBTkQgU3RhdHVzIGluICgnLmpvaW4oJywnLCBkb19saXN0KCRz dGF0dXMpKS4nKSc7DQoJCXVuc2V0KCRhdHRzWydzdGF0dXMnXSk7DQoJfQ0KDQoJaWYgKCRz ZWN0aW9uKSB7DQoJCSR3aGVyZSAuPSAiIEFORCBTZWN0aW9uIGluICgnIi5qb2luKCInLCci LCBkb19saXN0KCRzZWN0aW9uKSkuIicpIjsNCgkJdW5zZXQoJGF0dHNbJ3NlY3Rpb24nXSk7 DQoJfQ0KDQoJaWYgKCRzb3J0KSB7DQoJCSR3aGVyZSAuPScgT1JERVIgQlkgJy4kc29ydDsN CgkJdW5zZXQoJGF0dHNbJ3NvcnQnXSk7DQoJfQ0KDQoJaWYgKCRsaW1pdCkgew0KCQkkd2hl cmUgLj0nIExJTUlUICcuJGxpbWl0Ow0KCQl1bnNldCgkYXR0c1snbGltaXQnXSk7DQoJfQ0K DQoJLy8gRG9uJ3QgcGFzcyB0aGUgcmVtYWluaW5nIGF0dHJpYnV0ZXMgd2UndmUgYWxyZWFk eSBoYW5kbGVkIG9udG8gdGhlIGFydGljbGUgdGFnDQoJdW5zZXQoDQoJCSRhdHRzWydsYWJl bCddLA0KCQkkYXR0c1sndW5sYWJlbCddLA0KCQkkYXR0c1snbGFiZWx0YWcnXSwNCgkJJGF0 dHNbJ3dyYXB0YWcnXSwNCgkJJGF0dHNbJ2JyZWFrJ10sDQoJCSRhdHRzWydjbGFzcyddLA0K CQkkYXR0c1snaHRtbF9pZCddDQoJKTsNCg0KCSRycyA9IGdldFJvd3MoJ1NFTEVDVCAqLCB1 bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHVQb3N0ZWQsIHVuaXhfdGltZXN0YW1wKEV4cGly ZXMpIGFzIHVFeHBpcmVzLCB1bml4X3RpbWVzdGFtcChMYXN0TW9kKSBhcyB1TGFzdE1vZCBG Uk9NICcuUEZYLid0ZXh0cGF0dGVybiBBUyB0eHAgTEVGVCBKT0lOICcuUEZYLlNNRF9GRUFU LicgQVMgc21kZmVhdCBPTiB0eHAuSUQ9c21kZmVhdC5mZWF0X2lkIFdIRVJFICcuJHdoZXJl KTsNCg0KCSRvdXQgPSBhcnJheSgpOw0KCWlmICgkcnMpIHsNCgkJZm9yZWFjaCAoJHJzIGFz ICRyb3cpIHsNCgkJCSRzbWRfZmVhdHVyZWRfaW5mb1snbGFiZWwnXSA9ICRyb3dbJ2xhYmVs J107DQoJCQkkc21kX2ZlYXR1cmVkX2luZm9bJ3RpdGxlJ10gPSAkcm93WydmZWF0X3RpdGxl X2h0bWwnXTsNCgkJCSRzbWRfZmVhdHVyZWRfaW5mb1snZGVzY3JpcHRpb24nXSA9ICRyb3db J2Rlc2NfaHRtbCddOw0KCQkJJGF0dHNbJ2lkJ10gPSAkcm93WydJRCddOw0KCQkJJGFydG91 dCA9IGFydGljbGUoJGF0dHMsICR0aGluZyk7DQoNCgkJCWlmICgkYXJ0b3V0KSB7DQoJCQkJ JHNtZF9wcmlvcl9mZWF0dXJlZFtdID0gJHJvd1snSUQnXTsNCgkJCQkkb3V0W10gPSAkYXJ0 b3V0Ow0KCQkJfQ0KCQl9DQoJfQ0KCWlmICgkb3V0KSB7DQoJCXJldHVybiAoKCRsYWJlbHRh ZykgPyBkb0xhYmVsKCAoICgkbGFiZWwgPT0gJycpID8gJHVubGFiZWwgOiAkbGFiZWwpLCAk bGFiZWx0YWcgKSA6ICcnKQ0KCQkJLmRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAk Y2xhc3MsICcnLCAnJywgJycsICRodG1sX2lkKTsNCgl9DQoJcmV0dXJuICcnOw0KfQ0KDQov LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF91bmZlYXR1cmVkKCRh dHRzLCAkdGhpbmcpIHsNCglnbG9iYWwgJHNtZF9wcmlvcl9mZWF0dXJlZDsNCg0KCSR3aGVy ZSA9ICIxPTEiOw0KDQoJLy8gRXhjbHVkZSBwcmV2aW91c2x5IHNlZW4gYXJ0aWNsZXMNCglp ZiAoIWVtcHR5KCRzbWRfcHJpb3JfZmVhdHVyZWQpKSB7DQoJCSR3aGVyZSAuPSAnIEFORCBp ZCBOT1QgSU4oJyAuIGpvaW4oJywnLCAkc21kX3ByaW9yX2ZlYXR1cmVkKSAuICcpJzsNCgl9 DQoNCgkkcnMgPSBzYWZlX2NvbHVtbignSUQnLCAndGV4dHBhdHRlcm4nLCAkd2hlcmUpOw0K CSRhdHRzWydpZCddID0gam9pbignLCcsICRycyk7DQoJJG91dCA9IGFydGljbGUoJGF0dHMs ICR0aGluZyk7DQoNCglyZXR1cm4gJG91dDsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfaW5mbygkYXR0cykgew0KCWdsb2JhbCAk c21kX2ZlYXR1cmVkX2luZm87DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknaXRlbScg PT4gJycsDQoJKSwkYXR0cykpOw0KDQoJcmV0dXJuIChpc3NldCgkc21kX2ZlYXR1cmVkX2lu Zm9bJGl0ZW1dKSA/ICRzbWRfZmVhdHVyZWRfaW5mb1skaXRlbV0gOiAnJyk7DQp9DQoNCi8v IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX2lmX2ZlYXR1cmVkKCRh dHRzLCAkdGhpbmcpIHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9pbmZvLCAkdGhpc2FydGlj bGU7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknaWQnID0+ICcnLA0KCQknbGFiZWwn ID0+ICcnLA0KCSksJGF0dHMpKTsNCg0KCWlmICgkaWQpIHsNCgkJJGlkID0gam9pbigiJywn IiwgZG9fbGlzdChkb1NsYXNoKCRpZCkpKTsNCgl9DQoNCglpZiAoISRpZCAmJiAkdGhpc2Fy dGljbGUpIHsNCgkJJGlkID0gJHRoaXNhcnRpY2xlWyd0aGlzaWQnXTsNCgl9DQoNCgkkd2hl cmVbXSA9ICJmZWF0X2lkIElOICgnIi4kaWQuIicpIjsNCg0KCWlmIChpc3NldCgkYXR0c1sn bGFiZWwnXSkpIHsNCgkJJGxhYmVsID0gZXhwbG9kZSgnLCcsIGRvU2xhc2goJGxhYmVsKSk7 DQoJCSRsYmx3aGVyZSA9IGFycmF5KCk7DQoJCWZvcmVhY2ggKCRsYWJlbCBhcyAkbGJsKSB7 DQoJCQkkbGJsd2hlcmVbXSA9ICInIi50cmltKCRsYmwpLiInIjsNCgkJfQ0KCQlpZiAoJGxi bHdoZXJlKSB7DQoJCQkkd2hlcmVbXSA9ICcoIEJJTkFSWSBsYWJlbCBJTiAoJyAuIGpvaW4o JywnLCAkbGJsd2hlcmUpIC4gJykgKSc7DQoJCX0NCgl9DQoNCgkkcmV0ID0gc2FmZV9yb3co J2ZlYXRfaWQnLCBTTURfRkVBVCwgam9pbignIEFORCcsICR3aGVyZSkpOw0KDQoJcmV0dXJu IHBhcnNlKEV2YWxFbHNlKCR0aGluZywgJHJldCkpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCi8vIFBsdWdpbi1zcGVjaWZpYyByZXBsYWNlbWVudCBzdHJpbmdzIC0g bG9jYWxpc2UgYXMgcmVxdWlyZWQNCi8vIFRPRE86IG1ha2UgdGhlc2UgaW50byBhIHRleHRw YWNrIHdoZW4gcGx1Z2luIGNvbXBvc2VyIHN1cHBvcnRzIHRoZW0NCmZ1bmN0aW9uIHNtZF9m ZWF0dXJlZF9nVHh0KCR3aGF0LCAkYXR0cyA9IGFycmF5KCkpIHsNCgkkbGFuZyA9IGFycmF5 KA0KCQknYnlfbGFiZWwnID0+ICdCeSBsYWJlbDogJywNCgkJJ2J5X25hbWUnID0+ICdCeSBu YW1lOiAnLA0KCQknY29udHJvbF9wYW5lbCcgPT4gJ0NvbnRyb2wgcGFuZWwnLA0KCQknbWFu YWdlX2xibCcgPT4gJ0NsaWNrIHRvIHNlbGVjdCBmZWF0dXJlZCBhcnRpY2xlcywgd2hpY2gg d2lsbCBiZSBzaG93biA8c3BhbiBjbGFzcz0ic21kX2ZlYXR1cmVkIj48YSBocmVmPSIjIj5o aWdobGlnaHRlZDwvYT48L3NwYW4+LicsDQoJCSdwcmVmcycgPT4gJ1ByZWZlcmVuY2VzJywN CgkJJ3ByZWZfYm94c2l6ZScgPT4gJ0JveCBzaXplOiAnLA0KCQkncHJlZl9ib3hzaXplYnkn ID0+ICd4JywNCgkJJ3ByZWZfZGlzcGxheScgPT4gJ0Rpc3BsYXk6ICcsDQoJCSdwcmVmX3Nv cnQnID0+ICdTb3J0IGJ5OiAnLA0KCQkncHJlZnNfc29tZV9leHBsYWluJyA9PiAnVGhpcyBp cyBlaXRoZXIgYSBuZXcgaW5zdGFsbGF0aW9uIG9yIGEgZGlmZmVyZW50IHZlcnNpb24nLmJy LidvZiB0aGUgcGx1Z2luIHRvIG9uZSB5b3UgaGFkIGJlZm9yZS4nLA0KCQkncHJlZnNfc29t ZV9vcHRzJyA9PiAnQ2xpY2sgIkluc3RhbGwgdGFibGUiIHRvIGFkZCBvciB1cGRhdGUgdGhl IHRhYmxlJy5ici4nbGVhdmluZyBhbGwgZXhpc3RpbmcgZGF0YSB1bnRvdWNoZWQuJywNCgkJ J3ByZWZzX3NvbWVfdGJsJyA9PiAnTm90IGFsbCB0YWJsZSBpbmZvIGF2YWlsYWJsZS4nLA0K CQknc2F2ZWQnID0+ICdBcnRpY2xlIGluZm8gdXBkYXRlZCcsDQoJCSdzZWFyY2hfbGl2ZScg PT4gJ0FydGljbGUgbGl2ZSBzZWFyY2gnLA0KCQknc2VhcmNoX3N0YW5kYXJkJyA9PiAnQXJ0 aWNsZSBzZWFyY2gnLA0KCQkndGFiX25hbWUnID0+ICdGZWF0dXJlZCBhcnRpY2xlcycsDQoJ CSd0YmxfaW5zdGFsbF9sYmwnID0+ICdJbnN0YWxsIHRhYmxlJywNCgkJJ3RibF9pbnN0YWxs ZWQnID0+ICdUYWJsZSBpbnN0YWxsZWQnLA0KCQkndGJsX25vdF9pbnN0YWxsZWQnID0+ICdU YWJsZSBub3QgaW5zdGFsbGVkJywNCgkJJ3RibF9yZW1vdmVkJyA9PiAnVGFibGUgcmVtb3Zl ZCcsDQoJCSd0Ymxfbm90X3JlbW92ZWQnID0+ICdUYWJsZSBub3QgcmVtb3ZlZCcsDQoJCSd0 ZXh0aWxlJyA9PiAnVGV4dGlsZTogJywNCgkJJ3RleHRpbGVfZGVzYycgPT4gJ0Rlc2NyaXB0 aW9uJywNCgkJJ3RleHRpbGVfdGl0bGUnID0+ICdUaXRsZScsDQoJCSd1bmZlYXR1cmVfY29u ZmlybScgPT4gJ1N1cmUgdG8gdW5mZWF0dXJlIHRoaXMgYXJ0aWNsZT8nLA0KCQkndW5sYWJl bGxlZCcgPT4gJ1t1bmxhYmVsbGVkXScsDQoJKTsNCglyZXR1cm4gc3RydHIoJGxhbmdbJHdo YXRdLCAkYXR0cyk7DQp9IjtzOjQ6InR5cGUiO3M6MToiMSI7czo1OiJvcmRlciI7czoxOiI1 IjtzOjU6ImZsYWdzIjtzOjE6IjIiO3M6NDoiaGVscCI7czoxODk5MToiPGRpdiBpZD0ic21k X2hlbHAiPgoKCTxoMT5zbWRfZmVhdHVyZWQ8L2gxPgoKCTxwPlB1bGwgb25lIG9yIG1vcmUg YXJ0aWNsZXMgb3V0IG9mIHRoZSByZWd1bGFyIGFydGljbGUgZmxvdyBhbmQgcGltcCB0aGVt ICYjODIxMjsgcGVyaGFwcyBvbiBhIHNlY3Rpb24gbGFuZGluZyBwYWdlIG9yIHlvdXIgaG9t ZSBwYWdlLjwvcD4KCgk8aDI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+T25lLWNsaWNr IHNlbGVjdGlvbiBvZiBhcnRpY2xlcyB0byBmZWF0dXJlPC9saT4KCQk8bGk+TGFiZWwgeW91 ciBmZWF0dXJlZCBhcnRpY2xlcywgYWxsb3dpbmcgeW91IHRvIGdyb3VwIHRoZW0gaW50byBh cmVhcyBsaWtlIEZlYXR1cmVkLCBUZWFzZXJzLCBldGM8L2xpPgoJCTxsaT5BZGQgYW4gb3B0 aW9uYWwgdGl0bGUvZGVzY3JpcHRpb24gdG8gZWFjaCBhcnRpY2xlIHNvIHlvdSBjYW4gdXNl IHRoYXQgYXMgY29weSwgaW5zdGVhZCBvZiBzb21ldGhpbmcgZnJvbSB0aGUgYXJ0aWNsZSBp dHNlbGYgKHN1cHBvcnRzIFRleHRpbGUgYW5kIHNvbWUgPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gdGFncyk8L2xpPgoJCTxsaT5TZWFyY2ggeW91ciBmZWF0dXJlZCBhcnRpY2xl cyBieSBuYW1lIG9yIGxhYmVsOyBmaWx0ZXJpbmcgaW4gcmVhbC10aW1lIGlmIHlvdSB3aXNo PC9saT4KCQk8bGk+SGlkZGVuIHByZWYgYWxsb3dzIHByZS1maWx0ZXJpbmcgYnkgYW4gYWRt aW5pc3RyYXRvciBzbyBvbmx5IGFydGljbGVzIGZyb20gY2VydGFpbiBzZWN0aW9ucyBhcmUg YXZhaWxhYmxlIGZvciBwaW1wYWdlPC9saT4KCQk8bGk+RGlzcGxheSBpbmZvcm1hdGlvbiBm cm9tIHRoZSBmZWF0dXJlZCBhcnRpY2xlcyB1c2luZyByZWd1bGFyIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IGFydGljbGUgdGFnczwvbGk+CgkJPGxpPktlZXBzIHRyYWNrIG9m IHdoaWNoIGFydGljbGVzIGhhdmUgYmVlbiBzZWVuIGFscmVhZHkgb24gdGhlIHBhZ2Ugc28g bGF0ZXIgZmVhdHVyZWQgKG9yIHVuZmVhdHVyZWQpIGFydGljbGVzIGFyZW4mIzgyMTc7dCBk dXBsaWNhdGVkPC9saT4KCTwvdWw+CgoJPGgyPkF1dGhvciAvIENyZWRpdHM8L2gyPgoKCTxw PjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb250YWN0Ij5TdGVmIERhd3Nvbjwv YT48L3A+CgoJPGgyPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBj bGFzcz0icmVxdWlyZWQiPlJlcXVpcmVzIFRleHRwYXR0ZXJuIDQuMi4wKzwvcD4KCgk8cD5E b3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0 dGVybi5vcmcvcGx1Z2lucy8xMTc0L3NtZF9mZWF0dXJlZCI+dGV4dHBhdHRlcm4ub3JnPC9h Piwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUg cGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxl IHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRl cm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MzM5MzgiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1v cmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRo ZSBwbHVnaW4uPC9wPgoKCTxwPldoZW4geW91IGluc3RhbGwgdGhlIHBsdWdpbiwgdGhlIG5l Y2Vzc2FyeSB0YWJsZSBpcyBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZCBmb3IgeW91LiBUaGVy ZSYjODIxNztzIGN1cnJlbnRseSBubyBmYWNpbGl0eSBmb3IgcmVtb3ZpbmcgaXQgZHVyaW5n IHBsdWdpbiBvcGVyYXRpb24sIGJ1dCBpdCB3aWxsIGJlIGRlbGV0ZWQgaWYgdGhlIHBsdWdp biBpcyBkZWxldGVkIGZyb20geW91ciBzeXN0ZW0uPC9wPgoKCTxwPlRvIHVuaW5zdGFsbCwg c2ltcGx5IGRlbGV0ZSB0aGUgcGx1Z2luIGZyb20gdGhlIDxlbT5BZG1pbi0mZ3Q7UGx1Z2lu czwvZW0+IHBhZ2UuPC9wPgoKCTxoMj5Db25maWd1cmluZyBmZWF0dXJlZCBhcnRpY2xlczwv aDI+CgoJPHA+VmlzaXQgdGhlIDxlbT5Db250ZW50LSZndDtGZWF0dXJlZCBhcnRpY2xlczwv ZW0+IHRhYi4gQSBsaXN0IG9mIGFsbCBhcnRpY2xlcyAoZnJvbSB0aGUgYWRtaW4tc2VsZWN0 ZWQgc2VjdGlvbnMpIGFyZSBwcmVzZW50ZWQgaW4gYSBncmlkLjwvcD4KCgk8aDM+VG8gZmVh dHVyZSBhbiBhcnRpY2xlPC9oMz4KCgk8cD5DbGljayBpdHMgbmFtZS4gSXQgd2lsbCBiZSBo aWdobGlnaHRlZCBhbmQgYW4gPGNvZGU+W0VkaXRdPC9jb2RlPiBidXR0b24gYXBwZWFycyBi ZXNpZGUgaXQuIElmIHlvdSBjaG9vc2Ugbm90IHRvIGVkaXQgdGhlIGFydGljbGUgaW5mb3Jt YXRpb24sIGl0IHdpbGwgYmUgZmVhdHVyZWQgYnV0IHVubGFiZWxsZWQuPC9wPgoKCTxwPkNs aWNraW5nIDxjb2RlPltFZGl0XTwvY29kZT4gd2lsbCBkaXNwbGF5IHRocmVlIGlucHV0IGJv eGVzOjwvcD4KCgk8dWw+CgkJPGxpPjxzdHJvbmc+TGFiZWw8L3N0cm9uZz4gOiBhbGxvd3Mg eW91IHRvIGxhYmVsIChncm91cCkgdGhlIGFydGljbGUgd2l0aCBvdGhlcnMgb2YgYSBzaW1p bGFyIGZlYXR1cmVkIHN0YXR1cy4gRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBsYWJlbCBzb21l IGFydGljbGVzIHRvIGdvIGluIGEgJiM4MjE2O3RlYXNlcnMmIzgyMTc7IGJsb2NrIG9uIHlv dXIgaG9tZSBwYWdlIGJ5IGxhYmVsbGluZyBlYWNoIHBvdGVudGlhbCBhcnRpY2xlIHdpdGgg PGNvZGU+VGVhc2VyPC9jb2RlPi4gQmUgY2FyZWZ1bDogPHN0cm9uZz5sYWJlbHMgYXJlIGNh c2Ugc2Vuc2l0aXZlPC9zdHJvbmc+LiBUbyBoZWxwLCB5b3UgbWF5IGNob29zZSBhIGxhYmVs IGZyb20gdGhlIGRyb3Bkb3duIGxpc3Qgb2YgYWxsIGN1cnJlbnRseSBkZWZpbmVkIGxhYmVs czwvbGk+CgkJPGxpPjxzdHJvbmc+VGl0bGU8L3N0cm9uZz4gOiBhbGxvd3MgeW91IHRvIHN0 b3JlIHNvbWUgVGV4dGlsZS1hd2FyZSB0aXRsZSByZWxhdGVkIHRvIHRoZSBhcnRpY2xlLiBU aGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhcnRpY2xlJiM4MjE3O3MgYWN0dWFsIFRpdGxl IGFuZCBjYW4gYmUgdXNlZCBmb3IgYW55IHB1cnBvc2UgeW91IHNlZSBmaXQ8L2xpPgoJCTxs aT48c3Ryb25nPkRlc2NyaXB0aW9uPC9zdHJvbmc+IDogYWxsb3dzIHlvdSB0byBzdG9yZSBz b21lIFRleHRpbGUtYXdhcmUgc3VwcG9ydGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXJ0 aWNsZS4gVGhpcyBjb3VsZCBzaW1wbHkgYmUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3Ig eW91ciBvd24gdXNlLCBvciBzb21lIGNvcHkgdGhhdCB5b3UgbWF5IHdpc2ggdG8gZGlzcGxh eSBpbiB5b3VyIHRlYXNlcnMgYmxvY2sgdG8gZW50aWNlIHBlb3BsZSB0byByZWFkIHRoZSBh cnRpY2xlLiBJdCBjYW4gYmUgYXMgc2ltcGxlIG9yIGFzIGNvbXBsZXggYXMgeW91IGxpa2Ug YW5kIGNhbiBjb250YWluIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MgKGlm IHRoZXkgbWFrZSBzZW5zZSB0byB1c2UgYXQgdGhhdCBwb2ludCAmIzgyMTI7IGFydGljbGUg dGFncyBjYW5ub3QgYmUgdXNlZCwgZm9yIGV4YW1wbGUsIGJ1dCA8Y29kZT4mbHQ7dHhwOnNp dGVfdXJsIC8mZ3Q7PC9jb2RlPiBjYW4pPC9saT4KCTwvdWw+CgoJPHA+V2hlbiB5b3UmIzgy MTc7cmUgaGFwcHkgd2l0aCB5b3VyIGNhdGVnb3Jpc2F0aW9uIGFuZC9vciBkZXNjcmlwdGlv biB0ZXh0LCBoaXQgU2F2ZSB0byBzdG9yZSBpdC4gWW91IGNhbiBlZGl0IHRoZSBpbmZvcm1h dGlvbiBhdCBhbnkgdGltZSBieSBjbGlja2luZyB0aGUgYXBwcm9wcmlhdGUgPGNvZGU+W0Vk aXRdPC9jb2RlPiBidXR0b24gZnJvbSB0aGUgZmVhdHVyZWQgYXJ0aWNsZSBsaXN0LjwvcD4K Cgk8aDM+VG8gdW5mZWF0dXJlIGFuIGFydGljbGU8L2gzPgoKCTxwPkNsaWNrIGl0cyBuYW1l IGFnYWluLiBXaGVuIHlvdSBjb25maXJtIHRoYXQgeW91IGFyZSBzdXJlLCB0aGUgYXJ0aWNs ZSYjODIxNztzIGxhYmVsIGFuZCBkZXNjcmlwdGlvbiBhcmUgZGVsZXRlZCwgc28gYmUgc3Vy ZSB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoZW0sIG9yIGhhdmUgYmFja2VkIHRoZSBp bmZvcm1hdGlvbiB1cCBzb21ld2hlcmUuPC9wPgoKCTxoMz5GaW5kaW5nIGFydGljbGVzIHRv IGZlYXR1cmU8L2gzPgoKCTxwPldpdGggbGFyZ2UgYXJ0aWNsZSBsaXN0cyBpdCBjYW4gYmVj b21lIGRpZmZpY3VsdCB0byBmaW5kIHRoZSBvbmUgeW91IHdhbnQuIEFib3ZlIHRoZSBncmlk IGlzIGEgY29udHJvbCBwYW5lbC4gQ2xpY2sgaXQgdG8gcmV2ZWFsIHRoZSBwbHVnaW4gb3B0 aW9ucy4gIE9uIHRoZSBsZWZ0IGlzIHRoZSBBcnRpY2xlIHNlYXJjaCBhcmVhIGFuZCBvbiB0 aGUgcmlnaHQgYXJlIHRoZSBwbHVnaW4gcHJlZmVyZW5jZXMuIElmIHlvdSBhcmUgaW4gPGVt PkRpc3BsYXk6IEFsbDwvZW0+IG1vZGUsIHNpbXBseSBzdGFydCB0eXBpbmcgaW4gdGhlIDxl bT5CeSBuYW1lPC9lbT4gYm94IGFuZCB5b3VyIGFydGljbGUgbGlzdCB3aWxsIGJlIHJlZHVj ZWQgYXMgeW91IHR5cGUgdG8gb25seSB0aG9zZSB0aGF0IG1hdGNoLiBUeXBlIG11bHRpcGxl IHdvcmRzIHRvIGZpbmQgYXJ0aWNsZXMgdGhhdCBjb250YWluIGFueSBvZiB0aGUgZ2l2ZW4g d29yZHMuIFRvIHF1aWNrbHkgY2xlYXIgdGhlIGJveCwgaGl0IHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+RVNDPC9zcGFuPmFwZSBrZXkuPC9wPgoKCTxwPkFsdGVybmF0aXZlbHksIHlvdSBj YW4gdXNlIHRoZSBzZWxlY3QgbGlzdCB0byBjaG9vc2UgYWxsIGFydGljbGVzIHdpdGggYSBw YXJ0aWN1bGFyIGxhYmVsLiBUaGUgZW1wdHkgZW50cnkgYXQgdGhlIHRvcCBvZiB0aGUgbGlz dCBtZWFucyAmIzgyMjA7YWxsIGFydGljbGVzJiM4MjIxOy4gSWYgeW91IGhhdmUgZmVhdHVy ZWQgYW4gYXJ0aWNsZSBidXQgZG9uJiM4MjE3O3Qgc3VwcGx5IGEgbGFiZWwgeW91IGNhbiBm aWx0ZXIgaXQgYnkgY2hvb3NpbmcgdGhlIDxjb2RlPlt1bmxhYmVsbGVkXTwvY29kZT4gaXRl bSBmcm9tIHRoZSBsaXN0LiBJZiB5b3UgaGF2ZSBsYWJlbGxlZCBhbnkgYXJ0aWNsZXMsIGVh Y2ggbGFiZWwgeW91IGhhdmUgc3VwcGxpZWQgd2lsbCBhbHNvIGJlIGFuIG9wdGlvbiBpbiB0 aGUgbGlzdC4gUmVtZW1iZXIgdGhhdCBsYWJlbHMgYXJlIGNhc2Ugc2Vuc2l0aXZlLjwvcD4K Cgk8cD5Ob3RlIHRoYXQgZmlsdGVyaW5nIGJ5IG5hbWUgb3IgYnkgbGFiZWwgYXJlIG11dHVh bGx5IGV4Y2x1c2l2ZSBhY3Rpb25zOiBzZWxlY3Rpbmcgc29tZXRoaW5nIGZyb20gdGhlIGRy b3Bkb3duIHdpbGwgY2xlYXIgdGhlIHRleHQgYm94LCBhbmQgdHlwaW5nIHNvbWV0aGluZyBp biB0aGUgdGV4dCBib3ggd2lsbCByZXNldCB0aGUgZHJvcGRvd24uPC9wPgoKCTxwPllvdXIg c2VhcmNoIGNyaXRlcmlhIGFyZSByZW1lbWJlcmVkIGJldHdlZW4gZWRpdC9saXN0IHZpZXdz IHNvIHlvdSB3b24mIzgyMTc7dCBsb3NlIHlvdXIgcGxhY2UuIElmIHlvdSBhcmUgaW4gPGVt PkRpc3BsYXk6IFBhZ2luYXRlZDwvZW0+IG1vZGUsIHRoZSBzZWFyY2ggd29ya3MgaW4gZXhh Y3RseSB0aGUgc2FtZSB3YXkgYnV0IHlvdSBoYXZlIHRvIGhpdCBFbnRlciBvciBjbGljayA8 ZW0+R288L2VtPiB0byBzdWJtaXQgdGhlIHNlYXJjaCBjcml0ZXJpYS48L3A+CgoJPGgzPlBs dWdpbiBwcmVmZXJlbmNlczwvaDM+CgoJPHA+VXNlcnMgb2YgdGhlIDxlbT5GZWF0dXJlZCBh cnRpY2xlczwvZW0+IHRhYiBhbHNvIGhhdmUgYSBmZXcgcHJlZmVyZW5jZXMgYXQgdGhlaXIg ZGlzcG9zYWwgd2hpY2ggY2FuIGJlIGFsdGVyZWQgYXQgd2lsbDo8L3A+CgoJPG9sPgoJCTxs aT48c3Ryb25nPkRpc3BsYXk8L3N0cm9uZz4gOiBjaG9vc2Ugd2hldGhlciB5b3Ugd2lzaCB0 byBkaXNwbGF5IGFsbCBhcnRpY2xlcyBvbiBvbmUgcGFnZSAoYW5kIHVzZSB0aGUgbGl2ZSBz ZWFyY2ggdG8gZmlsdGVyIHRoZW0pIG9yIGNob29zZSBhIHBhZ2luYXRlZCB2aWV3IChhbmQg dXNlIHRoZSB0cmFkaXRpb25hbCBzZWFyY2gpLiBUaGUgdHJhZGl0aW9uYWwgc2VhcmNoIG1p Z2h0IGJlIHVzZWZ1bCBpZiB5b3UgaGF2ZSBhIGxvdCBvZiBhcnRpY2xlcyAob3ZlciAxMDAw KSBiZWNhdXNlIHRoZSBsaXZlIHNlYXJjaCBtaWdodCBzbG93IGRvd24gc2lnbmlmaWNhbnRs eS4gTm90ZSB0aGF0IHdoZW4geW91IHNlYXJjaCBmb3Igc29tZXRoaW5nIGluIHBhZ2luYXRl ZCBtb2RlLCB0aGUgcmVzdWx0cyB0aGVtc2VsdmVzIGFyZW4mIzgyMTc7dCBwYWdpbmF0ZWQ8 L2xpPgoJCTxsaT48c3Ryb25nPlNvcnQgYnk8L3N0cm9uZz4gOiBkZWZpbmUgdGhlIHNvcnQg b3JkZXIgb2YgdGhlIGFydGljbGUgbGlzdDwvbGk+CgkJPGxpPjxzdHJvbmc+Qm94IHNpemU8 L3N0cm9uZz4gOiBzcGVjaWZ5IHRoZSA8Y29kZT53aWR0aDwvY29kZT4gYW5kIDxjb2RlPmhl aWdodDwvY29kZT4gdmFsdWVzIGluIHBpeGVscyBvZiBlYWNoIGNlbGwgaW4gdGhlIGdyaWQu IERlZmF1bHQgaXMgPGNvZGU+MTUweDQwPC9jb2RlPjwvbGk+CgkJPGxpPjxzdHJvbmc+VGV4 dGlsZTwvc3Ryb25nPjogY2hvb3NlIHRoZSBpdGVtcyB0byB3aGljaCB5b3Ugd2lzaCB0byBh cHBseSBUZXh0aWxlIHdoZW4geW91IEVkaXQgYSBmZWF0dXJlZCBhcnRpY2xlPC9saT4KCTwv b2w+CgoJPHA+WW91IChhcyBhZG1pbmlzdHJhdG9yKSBjYW4gYWxzbyBhbHRlciB0aGUgYmVo YXZpb3VyIG9mIHRoZSBwbHVnaW4gYnkgY3JlYXRpbmcgc29tZSBoaWRkZW4gcHJlZmVyZW5j ZXMgKHRoZSBzbWRfcHJlZmFsaXplciBwbHVnaW4gY2FuIGhlbHAgaGVyZSkuIFRoZXJlIGFy ZSB0d28gcHJlZnMgeW91IG1heSBkZWZpbmU6PC9wPgoKCTxvbD4KCQk8bGk+PHN0cm9uZz5z bWRfZmVhdHVyZWRfcHJpdnM8L3N0cm9uZz4gOiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m IHByaXYgbGV2ZWwgbnVtYmVycyB0aGF0IGNhbiBhY2Nlc3MgdGhlIDxlbT5GZWF0dXJlZCBh cnRpY2xlczwvZW0+IHRhYi4gRGVmYXVsdDogPGNvZGU+MSwyPC9jb2RlPjwvbGk+CgkJPGxp PjxzdHJvbmc+c21kX2ZlYXR1cmVkX3NlY3Rpb25fbGlzdDwvc3Ryb25nPjogZGVmaW5lIGEg Y29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc2VjdGlvbiBuYW1lcy4gVGhlc2Ugd2lsbCBiZSB0 aGUgb25seSBzZWN0aW9ucyBmcm9tIHdoaWNoIGFydGljbGVzIGFyZSBhbGxvd2VkIHRvIGJl IGZlYXR1cmVkPC9saT4KCTwvb2w+CgoJPHA+SWYgdXNpbmcgc21kX3ByZWZhbGl6ZXIgdG8g Y3JlYXRlIHRoZSBwcmVmcywgc2V0IHRoZSBuYW1lIGFuZCB2YWx1ZSBhcyBhYm92ZSBhbmQg dGhlbiBzZXQgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIHBhcmFtZXRlcnM6PC9wPgoKCTx1 bD4KCQk8bGk+PHN0cm9uZz50eXBlPC9zdHJvbmc+IDogaGlkZGVuPC9saT4KCQk8bGk+PHN0 cm9uZz5ldmVudDwvc3Ryb25nPiA6IHNtZF9mZWF0dXJlZDwvbGk+CgkJPGxpPjxzdHJvbmc+ aW5wdXQgY29udHJvbDwvc3Ryb25nPiA6IHRleHRfaW5wdXQ8L2xpPgoJCTxsaT48c3Ryb25n PnVzZXI8L3N0cm9uZz4gOiAvIGVtcHR5IC88L2xpPgoJCTxsaT48c3Ryb25nPnBvc2l0aW9u PC9zdHJvbmc+OiAwPC9saT4KCTwvdWw+CgoJPGgyPkRpc3BsYXlpbmcgZmVhdHVyZWQgYXJ0 aWNsZXM8L2gyPgoKCTxwPk9uY2UgeW91IGhhdmUgY2hvc2VuIHlvdXIgZmVhdHVyZWQgYXJ0 aWNsZXMsIHlvdSBuZWVkIGEgd2F5IHRvIGRpc3BsYXkgdGhlbTo8L3A+CgoJPGgzPjxjb2Rl PiZsdDt0eHA6c21kX2ZlYXR1cmVkIC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+QWN0cyBhIGJp dCBsaWtlIHRoZSBzdGFuZGFyZCA8Y29kZT4mbHQ7dHhwOmFydGljbGUgLyZndDs8L2NvZGU+ IHRhZyB0byBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzLiBBdHRyaWJ1dGVzOjwvcD4KCgk8 dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYWJlbDwvc3Bhbj4gOiBkaXNwbGF5IGZl YXR1cmVkIGFydGljbGVzIHdpdGggdGhpcyBsYWJlbC4gU3BlY2lmeSA8Y29kZT5sYWJlbD0m cXVvdDsmcXVvdDs8L2NvZGU+IHRvIGRpc3BsYXkgdW5sYWJlbGxlZCBhcnRpY2xlcyAod2hp Y2ggYXJlIDxzdHJvbmc+bm90PC9zdHJvbmc+IHRoZSBzYW1lIGFzIHVuZmVhdHVyZWQgYXJ0 aWNsZXMpLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBvbWl0dGVkLCBhbGwgZmVhdHVyZWQgYXJ0 aWNsZXMgJiM4MjEyOyBpcnJlc3BlY3RpdmUgb2YgbGFiZWwgJiM4MjEyOyB3aWxsIGJlIGRp c3BsYXllZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYWJlbHRhZzwvc3Bhbj4g OiB0aGUgKFgpSFRNTCB0YWcgJiM4MjEyOyB3aXRob3V0IGJyYWNrZXRzICYjODIxMjsgdG8g YXBwbHkgdG8gdGhlIGxhYmVsIGF0dHJpYnV0ZS4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3Bl Y2lmaWVkIHRoZSBsYWJlbCBpdHNlbGYgaXMgZGlzcGxheWVkIGF0IHRoZSBoZWFkIG9mIHlv dXIgZmVhdHVyZWQgYXJ0aWNsZSBsaXN0LiBJZiB5b3Ugd2lzaCB0byBkaXNwbGF5IHVubGFi ZWxsZWQgYXJ0aWNsZXMgeW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgPGNvZGU+dW5sYWJlbDwv Y29kZT4gYXR0cmlidXRlIG9yIHlvdSYjODIxNztsbCBzZWUgbm8gbGFiZWwuIE5vdGUgdGhh dCB0aGlzIHRhZyBkaWZmZXJzIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IGNvbnZlbnRpb246IHlvdSB3aWxsIDxlbT5vbmx5PC9lbT4gc2VlIHRoZSBsYWJlbCBp ZiB5b3Ugc3BlY2lmeSB0aGUgPGNvZGU+bGFiZWx0YWc8L2NvZGU+LiBZb3UgY2FuIGRpc3Bs YXkgdGhlIGxhYmVsIGluc2lkZSB5b3VyIGFydGljbGVzIHVzaW5nIHRoZSA8Y29kZT4mbHQ7 dHhwOmZlYXR1cmVkX2luZm8gLyZndDs8L2NvZGU+IHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj51bmxhYmVsPC9zcGFuPiA6IHdoZW4gdXNpbmcgPGNvZGU+bGFiZWw9JnF1 b3Q7JnF1b3Q7PC9jb2RlPiAodG8gc2hvdyB1bmxhYmVsbGVkIGFydGljbGVzKSB0aGlzIGF0 dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIGxhYmVsIHRvIHVzZSBpbnNpZGUgdGhlIDxjb2RlPmxh YmVsdGFnPC9jb2RlPi4gRGVmYXVsdDogJiM4MjIwO0ZlYXR1cmVkJiM4MjIxOzwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aW1lPC9zcGFuPiA6IGxpbWl0IHRoZSBhcnRpY2xl cyB0byB0aG9zZSBpbiB0aGUgPGNvZGU+cGFzdDwvY29kZT4sIHRoZSA8Y29kZT5mdXR1cmU8 L2NvZGU+IG9yIDxjb2RlPmFueTwvY29kZT4uIERlZmF1bHQ6IDxjb2RlPnBhc3Q8L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN0YXR1czwvc3Bhbj4gOiBvbmx5IGRp c3BsYXkgYXJ0aWNsZXMgb2YgdGhlIGdpdmVuIHN0YXR1cyBudW1iZXIocykuIERlZmF1bHQ6 IDxjb2RlPjQsNTwvY29kZT4gKGEuay5hLiBsaXZlIGFuZCBzdGlja3kpPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnNlY3Rpb248L3NwYW4+IDogb25seSBkaXNwbGF5IGFydGlj bGVzIGZyb20gdGhlIGdpdmVuIHNlY3Rpb24ocykuIElmIHRoZSBzZWN0aW9uIGxpc3QgaXMg cmVzdHJpY3RlZCB1c2luZyB0aGUgcGx1Z2luIHByZWZlcmVuY2VzLCB0aGUgc2VjdGlvbnMg dXNlZCBoZXJlIG11c3QgYWxzbyBiZSBpbiB0aGF0IGxpc3Q8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiB1c2UgdGhpcyA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBmb3JtIHRvIGRpc3BsYXkgZWFjaCBhcnRpY2xlLCBpbnN0ZWFkIG9mIHVz aW5nIHRoZSBjb250YWluZXIgY29udGVudHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+bGltaXQ8L3NwYW4+IDogbWF4aW11bSBudW1iZXIgb2YgZmVhdHVyZWQgYXJ0aWNsZXMg dG8gZGlzcGxheTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zb3J0PC9zcGFuPiA6 IG9yZGVyIHRoZSBmZWF0dXJlZCBhcnRpY2xlcyBieSA8Y29kZT5pZDwvY29kZT4sIDxjb2Rl PmxhYmVsPC9jb2RlPiwgPGNvZGU+VGl0bGU8L2NvZGU+LCA8Y29kZT5Qb3N0ZWQ8L2NvZGU+ LCBhbmQgc28gb24uIFRoZSBzYW1lIGxpc3QgYXZhaWxhYmxlIGZvciB0aGUgPGNvZGU+Jmx0 O3R4cDphcnRpY2xlIC8mZ3Q7PC9jb2RlPiB0YWcgYXJlIHVzYWJsZSBoZXJlLiBBZGQgPGNv ZGU+YXNjPC9jb2RlPiBvciA8Y29kZT5kZXNjPC9jb2RlPiB0byB0aGUgYXR0cmlidXRlIHRv IGFsdGVyIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNvcnQuIFlvdSBtYXkgYWxzbyB1c2UgPGNv ZGU+cmFuZCgpPC9jb2RlPiB0byBzb3J0IHRoZSBhcnRpY2xlcyByYW5kb21seTwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRh ZyAmIzgyMTI7IHdpdGhvdXQgYnJhY2tldHMgJiM4MjEyOyB0byB3cmFwIGFyb3VuZCB0aGUg bGlzdCBvZiBmZWF0dXJlZCBhcnRpY2xlczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgJiM4MjEyOyB3aXRob3V0IGJyYWNr ZXRzICYjODIxMjsgb3IgdGV4dCB0byBwdXQgYmV0d2VlbiBlYWNoIGFydGljbGU8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWc8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aHRtbF9pZDwvc3Bhbj4gOiBhIDxzcGFu IGNsYXNzPSJjYXBzIj5ET008L3NwYW4+IElEIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnPC9s aT4KCTwvdWw+CgoJPHA+WW91IG1heSB1c2UgdGhlIHRhZyBhcyBhIGNvbnRhaW5lciBhbmQg YW55IHRhZ3MgeW91IHNwZWNpZnkgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBmZWF0dXJl ZCBhcnRpY2xlLiBZb3UgY2FuIHVzZSBzdGFuZGFyZCBhcnRpY2xlIHRhZ3Mgc3VjaCBhcyA8 Y29kZT4mbHQ7dHhwOnRpdGxlIC8mZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O3R4cDpleGNlcnB0 IC8mZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O3R4cDpwZXJtbGluayAvJmd0OzwvY29kZT4sIGV0 YzwvcD4KCgk8cCBjbGFzcz0iaW1wb3J0YW50Ij5Ob3RlIHRoYXQgeW91IGNhbiYjODIxNzt0 IHVzZSA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCZndDs8L2NvZGU+IGluc2lkZSBhbiBh cnRpY2xlIG9yIGFuIEFydGljbGUgRm9ybS4gRG9pbmcgc28gd2lsbCB0cmlnZ2VyIGEgd2Fy bmluZyBiZWNhdXNlIGl0JiM4MjE3O3MgdGhlIHNhbWUgYXMgcHV0dGluZyBhbm90aGVyIGFy dGljbGUgdGFnIGluc2lkZSBhbiBhcnRpY2xlLiBVc2UgdGhlIHRhZyBvbmx5IGluIFBhZ2Vz LCBvciBpbiBhIEZvcm0gdGhhdCBpcyBuZXZlciBkaXJlY3RseSB1c2VkIHRvIGRpc3BsYXkg YXJ0aWNsZSBjb250ZW50LjwvcD4KCgk8cD5FYWNoIHRpbWUgeW91IHVzZSA8Y29kZT4mbHQ7 dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4gaXQgbWFrZXMgYSBub3RlIG9mIHRoZSBh cnRpY2xlcyBpdCBoYXMgZGlzcGxheWVkIGFuZCB3aWxsIG5vdCBkdXBsaWNhdGUgYXJ0aWNs ZXMgaW4gbGF0ZXIgdGFncy48L3A+CgoJPGgzPjxjb2RlPiZsdDt0eHA6c21kX2ZlYXR1cmVk X2luZm8gLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5BbGxvd3MgeW91IHRvIGRpc3BsYXkgdGhl IGxhYmVsIG9yIHRoZSBkZXNjcmlwdGlvbiB3aXRoaW4geW91ciA8Y29kZT4mbHQ7dHhwOnNt ZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4gIGZvcm0vY29udGFpbmVyLjwvcD4KCgk8cD5IYXMg b25lIGF0dHJpYnV0ZTo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aXRl bTwvc3Bhbj4gOiB0aGUgdGhpbmcgeW91IHdhbnQgdG8gZGlzcGxheS4gQ2hvb3NlIGZyb206 Cgk8dWw+CgkJPGxpPjxzdHJvbmc+bGFiZWw8L3N0cm9uZz46IHRoZSBsYWJlbDwvbGk+CgkJ PGxpPjxzdHJvbmc+dGl0bGU8L3N0cm9uZz46IHRoZSAocG9zc2libHkgVGV4dGlsZS1wcm9j ZXNzZWQpIHRpdGxlPC9saT4KCQk8bGk+PHN0cm9uZz5kZXNjcmlwdGlvbjwvc3Ryb25nPjog dGhlIChwb3NzaWJseSBUZXh0aWxlLXByb2Nlc3NlZCkgZGVzY3JpcHRpb248L2xpPgoJPC91 bD48L2xpPgoJPC91bD4KCgk8aDM+PGNvZGU+Jmx0O3R4cDpzbWRfdW5mZWF0dXJlZCAvJmd0 OzwvY29kZT48L2gzPgoKCTxwPlVzZSB0aGlzIHRhZyBpZiB5b3Ugd2lzaCB0byBzaG93IHRo ZSAmIzgyMTY7cmVtYWluaW5nJiM4MjE3OyBhcnRpY2xlcyAmIzgyMTI7IGkuZS4gb25lcyBu b3QgYWxyZWFkeSBkaXNwbGF5ZWQgYnkgYW55IHByZWNlZGluZyA8Y29kZT4mbHQ7dHhwOnNt ZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4gdGFncy4gSXQgYWN0cyB2ZXJ5IG11Y2ggbGlrZSB0 aGUgYnVpbHQtaW4gYXJ0aWNsZSB0YWcgJiM4MjEyOyBhbmQgdGFrZXMgYWxsIHRoZSBzYW1l IGF0dHJpYnV0ZXMgJiM4MjEyOyBidXQgaXRzIGNvbnRleHQgaXMgJiM4MjIwO2FueSBhcnRp Y2xlcyBmcm9tIGFueSBzZWN0aW9uIGRlZmluZWQgaW4gdGhlIHNtZF9mZWF0dXJlZCBwbHVn aW4gdGhhdCBoYXZlIG5vdCBiZWVuIGRpc3BsYXllZCBhbHJlYWR5JiM4MjIxOy48L3A+CgoJ PGgzPjxjb2RlPiZsdDt0eHA6c21kX2lmX2ZlYXR1cmVkJmd0OzwvY29kZT48L2gzPgoKCTxw PlRoaXMgdGFnIGFsbG93cyB5b3UgdG8gZGV0ZWN0IGlmIHRoZSBjdXJyZW50IChpbmRpdmlk dWFsKSBhcnRpY2xlIGlzIGZlYXR1cmVkIGFuZC9vciBoYXMgYSBwYXJ0aWN1bGFyIGxhYmVs LiBZb3UgbWF5IGFsc28gdXNlIHRoaXMgb3V0c2lkZSBhbiBhcnRpY2xlIGNvbnRleHQgYnkg c3VwcGx5aW5nIGEgbGlzdCBvZiBhcnRpY2xlIElEcy48L3A+CgoJPHA+SGFzIHR3byBhdHRy aWJ1dGVzOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pZDwvc3Bhbj4g OiBsaXN0IG9mIGFydGljbGUgSURzIG9mIHdoaWNoIHlvdSB3aXNoIHRvIGNoZWNrIHRoZSBm ZWF0dXJlZCBzdGF0dXMuIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGFy dGljbGUgKGlmIHVzZWQgaW5zaWRlIGEgPGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9j b2RlPiBjb250YWluZXIvZm9ybSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFi ZWw8L3NwYW4+IDogbGlzdCBvZiBsYWJlbHMgdG8gY29tcGFyZSB0aGUgZ2l2ZW4gSUQocykg d2l0aC4gU3BlY2lmeSA8Y29kZT5sYWJlbD0mcXVvdDsmcXVvdDs8L2NvZGU+IHRvIGNoZWNr IGZvciB1bmxhYmVsbGVkIGFydGljbGVzLCBvciB1c2UgYW4gZW1wdHkgaXRlbSBpZiBzcGVj aWZ5aW5nIGEgbGlzdCwgZS5nLiA8Y29kZT5sYWJlbD0mcXVvdDssIEZlYXR1cmVkLCBUZWFz ZXImcXVvdDs8L2NvZGU+LiBSZW1lbWJlciB0aGF0IGxhYmVscyBhcmUgY2FzZSBzZW5zaXRp dmU8L2xpPgoJPC91bD4KCgk8cD5JZiB0aGUgYXJ0aWNsZSBtYXRjaGVzIG9uZSBvZiB0aGUg Z2l2ZW4gbGFiZWxzIHRoZSBjb250YWluZWQgY29udGVudCB3aWxsIGJlIGV4ZWN1dGVkLiBJ ZiBubyBsYWJlbCBpcyBnaXZlbiB0aGUgYXJ0aWNsZShzKSB3aWxsIGJlIGNoZWNrZWQgaWYg dGhleSBhcmUgZmVhdHVyZWQsIGlycmVzcGVjdGl2ZSBvZiBsYWJlbC48L3A+CgoJPGgyPkV4 YW1wbGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxOiBDb21wbGV0ZSBkaXJlY3Rv cnkgb2YgZmVhdHVyZWQgYXJ0aWNsZXM8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZmVhdHVyZWQgbGFiZWx0YWc9JnF1b3Q7aDIm cXVvdDsgbGltaXQ9JnF1b3Q7MjAmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O2RsJnF1b3Q7 IHNvcnQ9JnF1b3Q7bGFiZWwmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0 OwogICAgICAmbHQ7aDImZ3Q7Jmx0O3R4cDpzbWRfZmVhdHVyZWRfaW5mbyBpdGVtPSZxdW90 O2xhYmVsJnF1b3Q7IC8mZ3Q7Jmx0Oy9oMiZndDsKICAgJmx0Oy90eHA6aWZfZGlmZmVyZW50 Jmd0OwogICAmbHQ7ZHQmZ3Q7CiAgICAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0 aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7L2R0Jmd0OwogICAmbHQ7 ZGQmZ3Q7CiAgICAgICZsdDt0eHA6ZXhjZXJwdCAvJmd0OwogICAmbHQ7L2RkJmd0OwombHQ7 L3R4cDpzbWRfZmVhdHVyZWQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMiI+RXhh bXBsZSAyOiBPbmUgZmVhdHVyZWQgYXJ0aWNsZSBhbmQgc2l4IHRlYXNlcnMgb24gdGhlIGhv bWUgcGFnZTwvaDM+CgoJPHA+U2VsZWN0IGFuIGFydGljbGUgYW5kIGxhYmVsIGl0IDxjb2Rl PmZlYXR1cmU8L2NvZGU+LiBTZWxlY3Qgc2l4IG90aGVycyBhbmQgbGFiZWwgdGhlbSA8Y29k ZT50ZWFzZXJzPC9jb2RlPi4gQWRkIHNvbWUgZGVzY3JpcHRpb24gdGV4dCB0byB5b3VyIHRl YWFzZXIgYXJ0aWNsZXMuPC9wPgoKCTxwPkluIHlvdXIgZGVmYXVsdCBQYWdlLCBwdXQgdGhp czo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9mZWF0dXJlZCBsYWJlbD0mcXVvdDtmZWF0dXJlJnF1b3Q7CiAgICAgd3JhcHRhZz0m cXVvdDtkaXYmcXVvdDsgaHRtbF9pZD0mcXVvdDttYWluX2ZlYXR1cmUmcXVvdDsmZ3Q7CiAg ICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1s aW5rJmd0OwogICAmbHQ7dHhwOmFydGljbGVfaW1hZ2UgY2xhc3M9JnF1b3Q7ZmVhdF9pbWFn ZSZxdW90OyAvJmd0OwogICAmbHQ7cCBjbGFzcz0mcXVvdDtsZWFkaW4mcXVvdDsmZ3Q7Jmx0 O3R4cDpleGNlcnB0IC8mZ3Q7Jmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfZmVhdHVyZWQmZ3Q7 CjwvY29kZT48L3ByZT4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDt0eHA6c21kX2ZlYXR1cmVkIGxhYmVsPSZxdW90O3RlYXNlcnMmcXVvdDsKICAgICB3 cmFwdGFnPSZxdW90O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xpJnF1b3Q7IGh0bWxfaWQ9JnF1 b3Q7dGVhc2VyX2Jsb2NrJnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0 eHA6dGl0bGUgLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAgJmx0O3AgY2xhc3M9JnF1 b3Q7bGVhZGluJnF1b3Q7Jmd0OyZsdDt0eHA6ZXhjZXJwdCAvJmd0OyZsdDsvcCZndDsKJmx0 Oy90eHA6c21kX2ZlYXR1cmVkJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+SWYgeW91IHdhbnRl ZCB0byBoYXZlIHNvbWUgb3RoZXIgYXJ0aWNsZXMgYmVuZWF0aCB0aG9zZSwgYnV0IGRpZG4m IzgyMTc7dCB3YW50IGFueSBkdXBsaWNhdGVzIHRvIGFwcGVhciB5b3UgY291bGQgdXNlOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X3VuZmVhdHVyZWQgZm9ybT0mcXVvdDtteV9saXN0JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3By ZT4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzOiBQZXItc2VjdGlvbiBsYW5kaW5nIHBhZ2Ug ZmVhdHVyZWQgYXJ0aWNsZXM8L2gzPgoKCTxwPklmIHlvdSBoYWQgYSB6b28gc2l0ZSB3aXRo IGEgc2VjaXRvbiBmb3IgcHJpbWF0ZXMsIGEgc2VjdGlvbiBmb3IgbWFtbWFscyBhbmQgYSBz ZWN0aW9uIGZvciByZXB0aWxlcywgd2hlbiB5b3Ugc2V0IHVwIHlvdXIgZmVhdHVyZWQgYXJ0 aWNsZSBsaXN0IGRlZmluZSB0aGVpciBuYW1lcyBsaWtlIHRoaXM6PC9wPgoKCTx1bD4KCQk8 bGk+RmVhdHVyZWQgcHJpbWF0ZXM8L2xpPgoJCTxsaT5GZWF0dXJlZCBtYW1tYWxzPC9saT4K CQk8bGk+RmVhdHVyZWQgcmVwdGlsZXM8L2xpPgoJPC91bD4KCgk8cD5PbiB5b3VyIHNlY3Rp b24gbGFuZGluZyBwYWdlIHRlbXBsYXRlIHlvdSBjYW4gdGhlbiBkbyB0aGlzIHRvIGRpc3Bs YXkgZm91ciBhcnRpY2xlcyBmcm9tIHRoZSByZWxldmFudCAoY3VycmVudCkgc2VjdGlvbjo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aDImZ3Q7 TG9vayB3aG8mIzM5O3MgaGVyZTombHQ7L2gyJmd0OwombHQ7dHhwOnNtZF9mZWF0dXJlZCBs YWJlbD0mIzM5O0ZlYXR1cmVkICZsdDt0eHA6c2VjdGlvbiAvJmd0OyYjMzk7CiAgICAgc2Vj dGlvbj0mIzM5OyZsdDt0eHA6c2VjdGlvbiAvJmd0OyYjMzk7IGxpbWl0PSZxdW90OzQmcXVv dDsKICAgICB3cmFwdGFnPSZxdW90O2RpdiZxdW90OyBodG1sX2lkPSZxdW90O2ZlYXRfYmxv Y2smcXVvdDsmZ3Q7CiAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7cGltcGVkX2FydGljbGUmcXVv dDsmZ3Q7CiAgICAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZs dDsvdHhwOnBlcm1saW5rJmd0OwogICAgICAmbHQ7dHhwOnNtZF9mZWF0dXJlZF9pbmZvIGl0 ZW09JnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDsgLyZndDsKICAgJmx0Oy9kaXYmZ3Q7CiZsdDsv dHhwOnNtZF9mZWF0dXJlZCZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWc0Ij5FeGFt cGxlIDQ6IENvbmRpdGlvbmFsIGNoZWNrIGZvciBmZWF0dXJlZC1uZXNzPC9oMz4KCgk8cD5J ZiBhIHNpdGUgdmlzaXRvciBoYXMgbmF2aWdhdGVkIGF3YXkgZnJvbSB5b3VyIGZyb250IHBh Z2UgYW5kIGlzIHZpZXdpbmcgYW4gYXJ0aWNsZSwgeW91IG1heSB3aXNoIHRvIGhpZ2hsaWdo dCB0aGUgZmFjdCB0aGUgY3VycmVudCBhcnRpY2xlIGlzIGEgZmVhdHVyZWQgcHJvZHVjdC4g U28sIHNvbWV3aGVyZSBpbnNpZGUgeW91IGFydGljbGUgZm9ybSBhZGQ6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWZfZmVhdHVy ZWQmZ3Q7CiAgICZsdDtwIGNsYXNzPSZxdW90O2hpbGlnaHQmcXVvdDsmZ3Q7RkVBVFVSRUQg UFJPRFVDVCZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmX2ZlYXR1cmVkJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+T3IgaWYgeW91IHdhbnRlZCB0byBvbmx5IGhpZ2hsaWdodCB0aGUgYXJ0 aWNsZSBpZiBpdCB3YXMgYSBmZWF0dXJlZCBvciBvbiBzcGVjaWFsIG9mZmVyOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmX2Zl YXR1cmVkIGxhYmVsPSZxdW90O0ZlYXR1cmVkLCBTcGVjaWFsJnF1b3Q7Jmd0OwogICAmbHQ7 cCBjbGFzcz0mcXVvdDtoaWxpZ2h0JnF1b3Q7Jmd0O0FzIGZlYXR1cmVkIG9uIHRoZSBmcm9u dCBwYWdlISZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmX2ZlYXR1cmVkJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPGgyIGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHVsPgoJCTxs aT4xOCBKdW4gMTAgfCAwLjEwIHwgSW5pdGlhbCByZWxlYXNlPC9saT4KCQk8bGk+MDcgU2Vw IDEwIHwgMC4yMCB8IFJlbmFtZWQgaWQgY29sdW1uIHRvIGZlYXRfaWQgOyBmaXhlZCA8Y29k ZT5sYWJlbDwvY29kZT4gYXR0cmlidXRlIGJ1ZyAoYm90aCB0aGFua3MgcGllbWFuKSA7IGxh YmVsIHNlYXJjaGVzIGFyZSBub3cgZXhhY3QgbWF0Y2hlcyA7IGFkZGVkIHByZWZzIGFuZCBw YWdpbmF0aW9uIHN1cHBvcnQgZm9yIGFkbWluIHNpZGUgOyBhZGRlZCA8Y29kZT4mbHQ7dHhw OnNtZF9pZl9mZWF0dXJlZCZndDs8L2NvZGU+IDsgYWRkZWQgbGFiZWwgc2VsZWN0aW9uIGZy b20gZHJvcGRvd24gZHVyaW5nIGVkaXRpbmcgKHRoYW5rcyB0eWUpPC9saT4KCQk8bGk+MTMg U2VwIDEwIHwgMC4yMSB8IEFkZGVkICYjODIxNjt0aXRsZSYjODIxNzsgYW5kIFRleHRpbGUg b3B0aW9ucyAoYm90aCB0aGFua3MgYmcpPC9saT4KCTwvdWw+Cgo8L2Rpdj4KPCEtLSAqKiog QkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRf aGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0 OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3Bh Y2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7 IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3Vu ZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4 OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIw cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7 IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRk aW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNl cmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMjc1Njg1OyBmb250OiBib2xkIDEycHgg QXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAw IDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu ZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsg bGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06 IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBjb2xv cjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFw eCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGln bjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxw IHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxw IHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLmltcG9ydGFudCB7 Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9 CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoq KiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czozOiJtZDUiO3M6MzI6IjA2NTYzYzgzNGVi OGZhZjI3ZGEwN2RiNzIxNWNlNjY5Ijt9