# Name: smd_calendar v0.34 # Type: Client side plugin # Calendar / event / schedule system with events as TXP articles # 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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjEyOiJzbWRfY2FsZW5kYXIiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMzQiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjYyOiJDYWxlbmRhciAvIGV2ZW50IC8gc2NoZWR1bGUgc3lzdGVtIHdpdGggZXZlbnRzIGFz IFRYUCBhcnRpY2xlcyI7czo0OiJjb2RlIjtzOjU1MTkxOiIvLyBCYXNlZCBoZWF2aWx5IG9u IG1kcF9jYWxlbmRhciAtIHRoYW5rcyENCi8vVE9ETzogSW52ZXN0aWdhdGUNCi8qDQokZCA9 IG5ldyBEYXRlVGltZSgnMjAwOC0xMi0yMiAxMjo1MicpOw0KZWNobyAkZC0+Z2V0VGltZXpv bmUoKS0+Z2V0TmFtZSgpOw0KKi8NCg0KaWYoICRkYXRlID0gZ3BzKCdkYXRlJykgKSB7DQoJ JF9HRVRbJ21vbnRoJ10gPSAkZGF0ZTsNCn0NCg0KZnVuY3Rpb24gc21kX2NhbGVuZGFyKCRh dHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR2YXJpYWJsZSwgJHByZWZz LCAkc21kX2NhbF9mbGFnLCAkc21kX2NhbF91Y2xzLCAkc21kX2NhbF9pZCwgJHNtZF95ZWFy LCAkc21kX2lzb3llYXIsICRzbWRfbW9udGgsICRzbWRfd2VlaywgJHNtZF9kYXk7DQoNCgll eHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndGltZScgPT4gJ2FueScsIC8vIHBhc3QsIGZ1dHVy ZSwgYW55DQoJCSdzaXplJyA9PiAnbGFyZ2UnLCAvLyBzbWFsbCBvciBsYXJnZSAoY2FsZW5k YXIpDQoJCSdleHBpcmVkJyA9PiAnJywgLy8gMD1ubywgMT15ZXMgcHVibGlzaCBleHBpcmVk IGV2ZW50cywgZW1wdHk9dXNlIHByZWZzDQoJCSdjYXRlZ29yeScgPT4gJycsDQoJCSdzZWN0 aW9uJyA9PiAnJywNCgkJJ2F1dGhvcicgPT4gJycsDQoJCSdzdGF0dXMnID0+ICdsaXZlJywN CgkJJ3N0YXRpYycgPT4gJycsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ3NwYW5mb3JtJyA9PiAn U01EX1NBTUUnLA0KCQkncmVjdXJmb3JtJyA9PiAnU01EX1NBTUUnLA0KCQknY2VsbGZvcm0n ID0+ICcnLA0KCQknc3RlcGZpZWxkJyA9PiAnJywNCgkJJ3NraXBmaWVsZCcgPT4gJycsDQoJ CSdvbWl0ZmllbGQnID0+ICcnLA0KCQknc2hvd3NraXBwZWQnID0+ICcwJywNCgkJJ3Nob3dz cGFubmVkJyA9PiAnMScsDQoJCSdob2xpZGF5cycgPT4gJycsDQoJCSdob2xpZGF5ZmxhZ3Mn ID0+ICdzdGFuZGFyZCcsIC8vIHBlcm1pdCB0aGVzZSBldmVudHMgdG8gImxhbmQiIG9uIGEg aG9saWRheSAoc3RhbmRhcmQsIHJlY3VyLCBtdWx0aSkNCgkJJ2NsYXNzbGV2ZWxzJyA9PiAn Y2VsbCwgZXZlbnQnLCAvLyBjZWxsLCBldmVudCwgY2VsbHBsdXMgKGNvbWJpbmVzIGV2ZW50 IGFuZCBjZWxsIGludG8gY2VsbCBsZXZlbCBjbGFzc2VzKQ0KCQknbGlua3Bvc3RlZCcgPT4g J3JlY3VyLCBtdWx0aSwgbXVsdGlwcmV2LCBtdWx0aWxhc3QnLCAvLyB3aGljaCBldmVudHMg Y2F1c2UgdGhlIG1pbmljYWwgdG8gbGluayB0byBwb3N0ZWQgZGF0ZQ0KCQknY2xhc3NwcmVm aXhlcycgPT4gJ3NtZF9jYWxfLCBzbWRfY2FsX2V2XycsIC8vIDFzdD1jZWxsLWxldmVsIHBm eCwgMm5kPWV2ZW50LWxldmVsIHBmeCAob3B0aW9uYWwpDQoJCSdjbGFzcycgPT4gJycsIC8v IFRhYmxlIGNsYXNzDQoJCSdyb3djbGFzcycgPT4gJycsDQoJCSdjZWxsY2xhc3MnID0+ICcn LA0KCQknZW1wdHljbGFzcycgPT4gJ2VtcHR5JywNCgkJJ2lzb3dlZWtjbGFzcycgPT4gJ3dl ZWsnLA0KCQknbmF2Y2xhc3MnID0+ICduYXZwcmV2LCBuYXZuZXh0JywNCgkJJ25hdmFycm93 JyA9PiAnJiM2MDssICYjNjI7JywNCgkJJ25hdmlkJyA9PiAnJywNCgkJJ2V2ZW50Y2xhc3Nl cycgPT4gJ2NhdGVnb3J5JywNCgkJJ2V2ZW50d3JhcHRhZycgPT4gJ3NwYW4nLA0KCQknc2Vs ZWN0JyA9PiAnJywgLy8gd2VlaywgbW9udGggYW5kL29yIHllYXIgKHRvIGRpc3BsYXkgZHJv cGRvd25zKQ0KCQknc2VsZWN0YnRuJyA9PiAnJywgLy8gZW1wdHkgPSBhdXRvc2VsZWN0IChv bmNoYW5nZSksIG9yIHRleHQgdG8gZ28gb24gdGhlIHN1Ym1pdCBidXR0b24NCgkJJ215Y2xh c3MnID0+ICcnLCAvLyBtb250aC15ZWFyIGhlYWRlciBjbGFzcw0KCQknbXl3cmFwdGFnJyA9 PiAnJywgLy8gbW9udGgteWVhciBoZWFkZXIgd3JhcHRhZw0KCQknaWQnID0+ICcnLCAvLyBU YWJsZSBJRCAoPWNhbGlkKQ0KCQknd2VlaycgPT4gJycsDQoJCSdtb250aCcgPT4gJycsDQoJ CSd5ZWFyJyA9PiAnJywNCgkJJ3llYXJ3aWR0aCcgPT4gJzAnLCAvLyBudW1iZXIgb2YgeWVh cnMgZWl0aGVyIHNpZGUgb2YgdGhlIGZpcnN0L2xhc3QgYXJ0aWNsZSB0byBwZXJtaXQNCgkJ J2lzb3dlZWtzJyA9PiAnJywgLy8gZW1wdHkgPSBkb24ndCBzaG93IElTTyB3ZWVrczsgb3Ig dGV4dCBvZiBjb2x1bW4gaGVhZGluZywgdGV4dCBvZiBjZWxsIHByZWZpeA0KCQknZGF5Zm9y bWF0JyA9PiAnQUJCUicsIC8vIEFCQlIgPSAlYSwgRlVMTCA9ICVBLCBvciBjdXN0b20gc3Ry ZnRpbWUgc3RyaW5nDQoJCSdtb250aGZvcm1hdCcgPT4gJ0ZVTEwnLCAvLyBBQkJSID0gJWIs IEZVTEwgPSAlQiwgb3IgY3VzdG9tIHN0cmZ0aW1lIHN0cmluZw0KCQknZmlyc3RkYXknID0+ IDAsIC8vIDFzdCBkYXkgb2Ygd2VlayAwPVN1bmRheSwgNj1TYXR1cmRheSAoZm9yY2VkIHRv IE1vbmRheSBpZiBpc293ZWVrcz0xKQ0KCQknbWFpbnRhaW4nID0+ICdjYWxpZCcsIC8vIHdo ZW4gbmF2aWdhdGluZywga2VlcCB0aGVzZSBpdGVtcyBpbiB0aGUgVVJMDQoJCSdnbXQnID0+ IDAsDQoJCSdsYW5nJyA9PiAnJywNCgkJJ2RlYnVnJyA9PiAwLA0KCSksICRhdHRzKSk7DQoN CgkkZnV0dXJlID0gKCAkdGltZSAhPSAncGFzdCcgKSA/IHRydWUgOiBmYWxzZTsgLy8gRGV0 ZXJtaW5lIGhlYWRpbmcgc3R5bGUNCgkkc3RhdHVzID0gKCRzdGF0dXMpID8gJHN0YXR1cyA6 ICdsaXZlJzsgLy8gaW4gY2FzZSBzdGF0dXMgaGFzIGJlZW4gZW1wdGllZA0KCSRmaXJzdGRh eSA9ICgkaXNvd2Vla3MgPT0gJycpID8gJGZpcnN0ZGF5IDogMTsNCgkkc3BhbmZvcm0gPSAo JHNwYW5mb3JtID09ICdTTURfU0FNRScpID8gJGZvcm0gOiAkc3BhbmZvcm07DQoJJHJlY3Vy Zm9ybSA9ICgkcmVjdXJmb3JtID09ICdTTURfU0FNRScpID8gJGZvcm0gOiAkcmVjdXJmb3Jt Ow0KCSRjZWxsZm9ybSA9IChlbXB0eSgkY2VsbGZvcm0pKSA/ICcnIDogZmV0Y2hfZm9ybSgk Y2VsbGZvcm0pOw0KDQoJLy8gU2V0IHVwIHRoZSBjbGFzcyBwcmVmaXhlcw0KCSRjbGV2cyA9 IGRvX2xpc3QoJGNsYXNzbGV2ZWxzKTsNCgkkY2xzID0gZG9fbGlzdCgkY2xhc3NwcmVmaXhl cyk7DQoJJGNsYXNzcHJlZml4ID0gJGV2Y2xhc3NwcmVmaXggPSAkY2xzWzBdOw0KCWlmIChj b3VudCgkY2xzKSA+IDEpew0KCQkkZXZjbGFzc3ByZWZpeCA9ICRjbHNbMV07DQoJfQ0KDQoJ Ly8gU2V0IHVwIHRoZSBuYXYgY2xhc3MoZXMpDQoJJG1haW50YWluID0gZG9fbGlzdCgkbWFp bnRhaW4pOw0KCSRuYXZhcnJvdyA9IGRvX2xpc3QoJG5hdmFycm93KTsNCgkkbmF2cGFyciA9 ICRuYXZhcnJvd1swXTsNCgkkbmF2bmFyciA9IChjb3VudCgkbmF2YXJyb3cpID4gMSkgPyAk bmF2YXJyb3dbMV0gOiAkbmF2YXJyb3dbMF07DQoJJG5hdmNsYXNzID0gZG9fbGlzdCgkbmF2 Y2xhc3MpOw0KCSRuYXZwY2xhc3MgPSAkbmF2Y2xhc3NbMF07DQoJJG5hdm5jbGFzcyA9IChj b3VudCgkbmF2Y2xhc3MpID4gMSkgPyAkbmF2Y2xhc3NbMV0gOiAkbmF2Y2xhc3NbMF07DQoN CgkvLyBGaWx0ZXJzDQoJJGZvcHRzID0gYXJyYXkoKTsNCgkkY2F0U1FMID0gJHNlY1NRTCA9 ICRhdXRoU1FMID0gJyc7DQoJaWYoJGNhdGVnb3J5KSB7DQoJCSRmb3B0c1snYyddID0gJGNh dGVnb3J5Ow0KCQkkY2F0U1FMID0gZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKGRvX2xp c3QoJGNhdGVnb3J5KSkpKTsNCgkJJGNhdFNRTCA9ICIgQU5EICggQ2F0ZWdvcnkxIElOICgi LiRjYXRTUUwuIikgT1IgQ2F0ZWdvcnkyIElOICgiLiRjYXRTUUwuIikgKSAiOw0KCX0NCglp Zigkc2VjdGlvbikgew0KCQkkZm9wdHNbJ3MnXSA9ICRzZWN0aW9uOw0KCQkkc2VjU1FMID0g ZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJHNlY3Rpb24pKSkpOw0KCQkk c2VjU1FMID0gIiBBTkQgU2VjdGlvbiBJTiAoIi4kc2VjU1FMLiIpICI7DQoJfQ0KCWlmKCRh dXRob3IpIHsNCgkJJGZvcHRzWydhdXRob3InXSA9IGh0bWxlbnRpdGllcyhncHMoJ2F1dGhv cicpKTsNCgkJJGF1dGhTUUwgPSBkb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlz dCgkYXV0aG9yKSkpKTsNCgkJJGF1dGhTUUwgPSAiIEFORCBBdXRob3JJRCBJTiAoIi4kYXV0 aFNRTC4iKSAiOw0KCX0NCgkkc3RhdHVzID0gZG9fbGlzdCgkc3RhdHVzKTsNCgkkc3RhdGkg PSBhcnJheSgpOw0KCWZvcmVhY2ggKCRzdGF0dXMgYXMgJHN0YXQpIHsNCgkJaWYgKGVtcHR5 KCRzdGF0KSkgew0KCQkJY29udGludWU7DQoJCX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkc3Rh dCkpIHsNCgkJCSRzdGF0aVtdID0gJHN0YXQ7DQoJCX0gZWxzZSB7DQoJCQkkc3RhdGlbXSA9 IGdldFN0YXR1c051bSgkc3RhdCk7DQoJCX0NCgl9DQoJJHN0YXRpID0gIiBTdGF0dXMgSU4g KCIuam9pbignLCcsICRzdGF0aSkuIikiOw0KDQoJJGV4cGlyZWQgPSAoJGV4cGlyZWQpID8g JGV4cGlyZWQgOiAkcHJlZnNbJ3B1Ymxpc2hfZXhwaXJlZF9hcnRpY2xlcyddOw0KCSRleHBp cmVkID0gKCgkZXhwaXJlZCkgPyAnJyA6ICcgQU5EIChub3coKSA8PSBFeHBpcmVzIE9SIEV4 cGlyZXMgPSAnLk5VTExEQVRFVElNRS4nKScpOw0KCSRldmVudGNsYXNzZXMgPSBkb19saXN0 KCRldmVudGNsYXNzZXMpOw0KCSRob2xpZGF5ZmxhZ3MgPSBkb19saXN0KCRob2xpZGF5Zmxh Z3MpOw0KCSRsaW5rcG9zdGVkID0gZG9fbGlzdCgkbGlua3Bvc3RlZCk7DQoNCgkvLyBXb3Jr IG91dCB0aGUgZmlyc3QgYW5kIGxhc3QgcG9zdHMgdG8gZGV0ZXJtaW5lIHRoZSB5ZWFyIHJh bmdlIC0gcHJvYmFibHkgYSBiZXR0ZXIgd2F5IG9mIGRvaW5nIHRoaXMgdGhhbiAzIHF1ZXJp ZXMNCgkkZWFybGllc3QgPSBzYWZlX2ZpZWxkKCd1bml4X3RpbWVzdGFtcChQb3N0ZWQpIEFT IHVQb3N0ZWQnLCAndGV4dHBhdHRlcm4nLCAkc3RhdGkuKCgkY2F0ZWdvcnkpID8gJGNhdFNR TCA6ICcnKS4oKCRzZWN0aW9uKSA/ICRzZWNTUUwgOiAnJykuKCgkYXV0aG9yKSA/ICRhdXRo U1FMIDogJycpLicgT1JERVIgQlkgUG9zdGVkIEFTQyBMSU1JVCAwLCAxJywgJGRlYnVnKTsN CgkkbHAgPSBzYWZlX2ZpZWxkKCd1bml4X3RpbWVzdGFtcChQb3N0ZWQpIEFTIHVQb3N0ZWQn LCAndGV4dHBhdHRlcm4nLCAkc3RhdGkuKCgkY2F0ZWdvcnkpID8gJGNhdFNRTCA6ICcnKS4o KCRzZWN0aW9uKSA/ICRzZWNTUUwgOiAnJykuKCgkYXV0aG9yKSA/ICRhdXRoU1FMIDogJycp LicgT1JERVIgQlkgUG9zdGVkIERFU0MgTElNSVQgMCwgMScsICRkZWJ1Zyk7DQoJJGxtID0g c2FmZV9maWVsZCgndW5peF90aW1lc3RhbXAoTGFzdE1vZCkgQVMgdUxhc3RNb2QnLCAndGV4 dHBhdHRlcm4nLCAkc3RhdGkuKCgkY2F0ZWdvcnkpID8gJGNhdFNRTCA6ICcnKS4oKCRzZWN0 aW9uKSA/ICRzZWNTUUwgOiAnJykuKCgkYXV0aG9yKSA/ICRhdXRoU1FMIDogJycpLicgT1JE RVIgQlkgTGFzdE1vZCBERVNDIExJTUlUIDAsIDEnLCAkZGVidWcpOw0KCSRsYXRlc3QgPSAo JHRpbWU9PSJwYXN0IikgPyB0aW1lKCkgOiAoKCRscCA+ICRsbSkgPyAkbHAgOiAkbG0pOw0K DQoJJHllYXJ3aWR0aCA9IGRvX2xpc3QoJHllYXJ3aWR0aCk7DQoJJHllYXJ3aWR0aFswXSA9 IChlbXB0eSgkeWVhcndpZHRoWzBdKSkgPyAwIDogJHllYXJ3aWR0aFswXTsNCglpZiAoY291 bnQoJHllYXJ3aWR0aCkgPT0gMSkgew0KCQkkeWVhcndpZHRoWzFdID0gJHllYXJ3aWR0aFsw XTsNCgl9DQoJJHVzZW5vdyA9IGFycmF5KGZhbHNlLGZhbHNlKTsNCglmb3JlYWNoICgkeWVh cndpZHRoIGFzICR5cmlkeCA9PiAkeXJpdGVtKSB7DQoJCWlmIChzdHJwb3MoJHlyaXRlbSwi YyIpICE9PSBmYWxzZSkgew0KCQkJJHllYXJ3aWR0aFskeXJpZHhdID0gaW50dmFsKCR5cml0 ZW0pOw0KCQkJJHVzZW5vd1skeXJpZHhdID0gdHJ1ZTsNCgkJfQ0KCX0NCg0KCSRlYXJsaWVz dCA9IGRhdGUoIlkiLCBzdHJ0b3RpbWUoIi0iLiR5ZWFyd2lkdGhbMF0uIiB5ZWFyIiwgKCAo ZW1wdHkoJGVhcmxpZXN0KSB8fCAkdXNlbm93WzBdPT10cnVlKSA/IHRpbWUoKSA6ICRlYXJs aWVzdCkgKSApOw0KCSRsYXRlc3QgPSBkYXRlKCJZIiwgc3RydG90aW1lKCIrIi4keWVhcndp ZHRoWzFdLiIgeWVhciIsICggKGVtcHR5KCRsYXRlc3QpIHx8ICR1c2Vub3dbMV09PXRydWUp ID8gdGltZSgpIDogJGxhdGVzdCkgKSApOw0KDQoJLy8gQ2hlY2sgdGhlIFVSTCBmb3IgY3Vy cmVudCBkYXRlIGFuZCBjYWxlbmRhciB0YXJnZXQgaW5mbw0KCSRpbmNvbWluZ19jYWxpZCA9 IGdwcygnY2FsaWQnKTsNCgkkaW5jb21pbmdfeWVhciA9IChncHMoJ3knKSBhbmQgaXNfbnVt ZXJpYyhncHMoJ3knKSkpID8gKGludClncHMoJ3knKSA6ICcnOw0KCSRpbmNvbWluZ19tb250 aCA9IChncHMoJ20nKSBhbmQgaXNfbnVtZXJpYyhncHMoJ20nKSkpID8gKGludClncHMoJ20n KSA6ICcnOw0KCSRpbmNvbWluZ193ZWVrID0gKGdwcygndycpIGFuZCBpc19udW1lcmljKGdw cygndycpKSkgPyAoaW50KWdwcygndycpIDogJyc7DQoNCglpZigkc3RhdGljKSB7IC8vIGlm IHdlJ3JlIHN0YXRpYyB3L28gYW55IHN1cHBsaWVkIHZhcnMsIHVzZSB0aGUgY3VycmVudCBk YXRlDQoJCWlmKCEkeWVhcikgeyAkeWVhciA9IHNhZmVfc3RyZnRpbWUoJyVZJyk7IH0NCgkJ aWYoISRtb250aCkgeyAkbW9udGggPSBzYWZlX3N0cmZ0aW1lKCclbScpOyB9DQoJfSBlbHNl IHsgLy8gb3RoZXJ3aXNlIHVzZSBjdXJyZW50IGRhdGUgb25seSBpZiB0aGVyZSdzIG5vdGhp bmcgZWxzZQ0KCQlpZiggJGlkID09ICRpbmNvbWluZ19jYWxpZCApIHsgLy8gdXNlIGluY29t aW5nDQoJCQkkeWVhciA9ICgkaW5jb21pbmdfeWVhcikgPyAkaW5jb21pbmdfeWVhciA6ICgo JHllYXIpID8gJHllYXIgOiBzYWZlX3N0cmZ0aW1lKCclWScpKTsNCgkJCSRtb250aCA9ICgk aW5jb21pbmdfbW9udGgpID8gJGluY29taW5nX21vbnRoIDogKCgkbW9udGgpID8gJG1vbnRo IDogc2FmZV9zdHJmdGltZSgnJW0nKSk7DQoJCQkvLyBJZiB3ZWVrIGlzIHVzZWQsIGFkanVz dCBtb250aCBzbyBpdCBlbmNvbXBhc3NlcyB0aGUgZ2l2ZW4gd2Vlaw0KCQkJJHdlZWsgPSAk aW5jb21pbmdfd2VlazsNCgkJCWlmICgkd2Vlaykgew0KCQkJCSRtb250aCA9IHNhZmVfc3Ry ZnRpbWUoIiVtIiwgc3RydG90aW1lKCR5ZWFyLiJXIi4kd2VlaykpOyAvLyBHZXQgdGhlIG1v bnRoIGZyb20gdGhlIHdlZWsNCgkJCX0NCgkJfSBlbHNlIHsgLy8gdXNlIGN1cnJlbnQNCgkJ CWlmKCEkeWVhcikgeyAkeWVhciA9IHNhZmVfc3RyZnRpbWUoJyVZJyk7IH0NCgkJCWlmKCEk bW9udGgpIHsgJG1vbnRoID0gc2FmZV9zdHJmdGltZSgnJW0nKTsgfQ0KCQkJaWYoJHdlZWsp IHsgJG1vbnRoID0gc2FmZV9zdHJmdGltZSgiJW0iLCBzdHJ0b3RpbWUoJHllYXIuIlciLiR3 ZWVrKSk7IH0NCgkJfQ0KCX0NCgkkc21kX2NhbF9pZCA9ICgkaW5jb21pbmdfY2FsaWQpID8g JGluY29taW5nX2NhbGlkIDogJGlkOw0KCSRzbWRfeWVhciA9ICR5ZWFyOyAkc21kX21vbnRo ID0gJG1vbnRoOyAvLyAkc21kX3dlZWsvZGF5L2lzb3llYXIgYXJlIHNldCBwZXIgZXZlbnQg bGF0ZXINCg0KCS8vIFRoZSB0aW1lcyBpbiB0aGUgREIgYXJlIHN0b3JlZCB1c2luZyB0aGUg c2VydmVyJ3MgbG9jYWwgdGltZSwgc28gd2UgZG9uJ3QNCgkvLyB3YW50IHRvIGFkanVzdCBh bnl0aGluZyAoc2luY2UgbWt0aW1lIHVzZXMgdGhlIHNlcnZlcidzIGxvY2FsIHRpbWUpLg0K CS8vVE9ETzogV29ycnkgYWJvdXQgZ210IC8gZHN0DQoJJHRzX2ZpcnN0ID0gbWt0aW1lKDAs IDAsIDAsICRtb250aCwgMSwgJHllYXIpOw0KCSR0c19sYXN0ID0gbWt0aW1lKDIzLCA1OSwg NTksICRtb250aCwgZGF0ZSgndCcsJHRzX2ZpcnN0KSwgJHllYXIpOw0KDQoJJGV4dHJhc3Fs ID0gJGNhdFNRTCAuICRzZWNTUUwgLiAkYXV0aFNRTDsNCglzd2l0Y2goJHRpbWUpIHsNCgkJ Y2FzZSAiYW55IiA6IGJyZWFrOw0KCQljYXNlICJmdXR1cmUiIDogJGV4dHJhc3FsIC49ICIg QU5EIFBvc3RlZCA+IENVUkRBVEUoKSI7IGJyZWFrOw0KCQlkZWZhdWx0IDogJGV4dHJhc3Fs IC49ICIgQU5EIFBvc3RlZCA8IENVUkRBVEUoKSI7IGJyZWFrOyAvLyBUaGUgcGFzdA0KCX0N Cg0KCS8vIEhvbGlkYXlzIGFyZSBnbG9iYWwgJ2V4Y2x1c2lvbnMnLCBlaXRoZXIgZGVmaW5l ZCBkaXJlY3RseSBvciBpbiBhIDx0eHA6dmFyaWFibGUgLz4NCgkkaG9saWRheXMgPSBkb19s aXN0KCRob2xpZGF5cyk7DQoJJHR4cGhvbHMgPSBkb19saXN0KCRob2xpZGF5c1swXSwgIjoi KTsNCglpZiAoJHR4cGhvbHNbMF0gPT0gInR4cHZhciIpIHsNCgkJJGhvbGlkYXlzID0gZG9f bGlzdCgkdmFyaWFibGVbJHR4cGhvbHNbMV1dKTsNCgl9DQoJLy8gRm9yY2UgZWFjaCBob2xp ZGF5IHRvIGEga25vd24gZm9ybWF0LiBIb2xpZGF5cyB3aXRob3V0IHllYXJzIHVzZSBjdXJy ZW50IHllYXINCglmb3JlYWNoICgkaG9saWRheXMgYXMgJGtleSA9PiAkdmFsKSB7DQoJCWlm IChlbXB0eSgkdmFsKSkgY29udGludWU7DQoJCSRudW1wYXJ0cyA9IHByZWdfbWF0Y2goJy9e KFtcZFx3XSspLj8oW1xkXHddKykuPyhbXGRcd10rKT8kLycsICR2YWwsICRwYXJ0cyk7DQoN CgkJaWYgKCRudW1wYXJ0cykgew0KCQkJaWYgKGNvdW50KCRwYXJ0cykgPT0gMykgew0KCQkJ CSRwYXJ0c1szXSA9ICR5ZWFyOw0KICAgICAgICAgfQ0KCQkJJHZhbCA9IHN0cl9wYWQoJHBh cnRzWzFdLCAyLCAnMCcsIFNUUl9QQURfTEVGVCkuJy0nLnN0cl9wYWQoJHBhcnRzWzJdLCAy LCAnMCcsIFNUUl9QQURfTEVGVCkuJy0nLiRwYXJ0c1szXTsNCgkJfQ0KCQkkaG9saWRheXNb JGtleV0gPSBkYXRlKCJkLU0tWSIsIHN0cnRvdGltZSgkdmFsKSk7DQoJfQ0KDQoJaWYgKCRk ZWJ1ZyA+IDAgJiYgIWVtcHR5KCRob2xpZGF5cykgJiYgJGhvbGlkYXlzWzBdICE9ICcnKSB7 DQoJCWVjaG8gIisrIEhPTElEQVlTICsrICI7DQoJCWRtcCgkaG9saWRheXMpOw0KCX0NCg0K CS8vIEdldCBhbGwgbWF0Y2hpbmcgYXJ0aWNsZXMgaW4gKGFuZCBiZWZvcmUpIHRoaXMgbW9u dGgNCgkkZXZlbnRzID0gYXJyYXkoKTsNCgkkc3FsMiA9ICRzdGF0aSAuICIgSEFWSU5HIHVQ b3N0ZWQgPD0gIi4kdHNfbGFzdCAuICRleHBpcmVkIC4gJGV4dHJhc3FsIC4iIE9SREVSIEJZ IFBvc3RlZCBBU0MiOw0KCSRncmFiQ29scyA9ICcqLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQp IGFzIHVQb3N0ZWQsIHVuaXhfdGltZXN0YW1wKExhc3RNb2QpIGFzIHVMYXN0TW9kLCB1bml4 X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcyc7DQoJJGV2bGlzdCA9IHNhZmVfcm93 cygkZ3JhYkNvbHMsICd0ZXh0cGF0dGVybicsICRzcWwyLCAkZGVidWcpOw0KCWFydGljbGVf cHVzaCgpOw0KDQoJLy8gSWYgYW55IGV2ZW50cyByZWN1ciBhbmQgZmFsbCB3aXRoaW4gdGhl IGN1cnJlbnQgbW9udGgsIGFkZCB0aG9zZSBhcyB3ZWxsDQoJLy8gSWYgYW55IGRhdGVzIGFy ZSB0byBiZSBleGNsdWRlZCwgdGhlIGVudHJ5IGlzIHNraXBwZWQgVU5MRVNTIHNob3dza2lw cGVkIGluZGljYXRlcyBvdGhlcndpc2UNCglmb3JlYWNoICgkZXZsaXN0IGFzICRyb3cpIHsN CgkJJGlkeCA9IDA7IC8vIEluIGNhc2UgdGhlIDFzdCBkYXkgb2YgdGhlIG1vbnRoIGlzIGEg Y29udGludWF0aW9uIG9mIGFuIGV2ZW50IGZyb20gdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMg bW9udGgNCgkJJHN0YXJ0ID0gJHJvd1sndVBvc3RlZCddOw0KCQkkc3RhcnRfZGF0ZSA9IGRh dGUoIlktbS1kIiwgJHN0YXJ0KTsgLy8gRm9yIHJlY3VycmluZy9zcGFubmVkIGV2ZW50cyBv biBhIG1pbmljYWwsIHRoaXMgaXMgdGhlIGV2ZW50IHRoZSBjZWxsIGxpbmtzIHRvDQoJCSRy ZWFsX2VuZCA9ICRyb3dbJ3VFeHBpcmVzJ107DQoJCSRlbmQgPSAoJHJlYWxfZW5kICE9IDAg JiYgJHJlYWxfZW5kIDwgJHRzX2xhc3QpID8gJHJlYWxfZW5kIDogJHRzX2xhc3Q7DQoJCSRz bWRfY2FsX2ZsYWcgPSAkc21kX2NhbF91Y2xzID0gYXJyYXkoKTsNCg0KCQlpZiAoJGRlYnVn ID4gMSkgew0KCQkJZWNobyAnKysgRVZFTlQgU1RBUlQgLy8gRU5EIC8vIFJFQUwgRU5EICsr JzsNCgkJCWRtcCgkcm93WydUaXRsZSddKTsNCgkJCWRtcChkYXRlKCdkLU0tWSBIOmk6cycs ICRzdGFydCkgLicgLy8gJy4gZGF0ZSgnZC1NLVkgSDppOnMnLCAkZW5kKSAuJyAvLyAnLiBk YXRlKCdkLU0tWSBIOmk6cycsICRyZWFsX2VuZCkpOw0KCQkJaWYgKCRkZWJ1ZyA+IDIpIHsN CgkJCQlkbXAoJHJvdyk7DQoJCQl9DQoJCX0NCg0KCQkkbXVsdGkgPSAoJHJvd1sndUV4cGly ZXMnXSA+ICRyb3dbJ3VQb3N0ZWQnXSAmJiAkcm93Wyd1RXhwaXJlcyddID4gJHRzX2ZpcnN0 ICYmIChkYXRlKCJkLW0tWSIsICRyb3dbJ3VFeHBpcmVzJ10pICE9IGRhdGUoImQtbS1ZIiwg JHJvd1sndVBvc3RlZCddKSkpID8gdHJ1ZSA6IGZhbHNlOw0KCQkkcmVjdXIgPSAoZW1wdHko JHJvd1skc3RlcGZpZWxkXSkpID8gZmFsc2UgOiB0cnVlOw0KCQkkaG9sX2hpdCA9IGluX2Fy cmF5KGRhdGUoImQtTS1ZIiwgJHN0YXJ0KSwgJGhvbGlkYXlzKTsNCgkJJGV2Y2xhc3NlcyA9 IGFycmF5KCk7DQoJCWZvcmVhY2ggKCRldmVudGNsYXNzZXMgYXMgJGV2Y2xzKSB7DQoJCQlz d2l0Y2ggKCRldmNscykgew0KCQkJCWNhc2UgIiI6DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2Ug ImdjYXQiOg0KCQkJCQlpZiAoaXNzZXQoJHByZXRleHRbJ2MnXSkgJiYgIWVtcHR5KCRwcmV0 ZXh0WydjJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3ByZWZpeC4kcHJl dGV4dFsnYyddOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImNhdGVnb3J5IjoN CgkJCQkJaWYgKGlzc2V0KCRyb3dbJ0NhdGVnb3J5MSddKSAmJiAhZW1wdHkoJHJvd1snQ2F0 ZWdvcnkxJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3ByZWZpeC4kcm93 WydDYXRlZ29yeTEnXTsNCgkJCQkJfQ0KCQkJCQlpZiAoaXNzZXQoJHJvd1snQ2F0ZWdvcnky J10pICYmICFlbXB0eSgkcm93WydDYXRlZ29yeTInXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNb XSA9ICRldmNsYXNzcHJlZml4LiRyb3dbJ0NhdGVnb3J5MiddOw0KCQkJCQl9DQoJCQkJCWJy ZWFrOw0KCQkJCWNhc2UgInNlY3Rpb24iOg0KCQkJCQlpZiAoaXNzZXQoJHByZXRleHRbJ3Mn XSkgJiYgIWVtcHR5KCRwcmV0ZXh0WydzJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAk ZXZjbGFzc3ByZWZpeC4kcHJldGV4dFsncyddOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJ CWNhc2UgImF1dGhvciI6DQoJCQkJCWlmIChpc3NldCgkcHJldGV4dFsnYXV0aG9yJ10pICYm ICFlbXB0eSgkcHJldGV4dFsnYXV0aG9yJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAk ZXZjbGFzc3ByZWZpeC4kcHJldGV4dFsnYXV0aG9yJ107DQoJCQkJCX0NCgkJCQkJYnJlYWs7 DQoJCQkJZGVmYXVsdDoNCgkJCQkJaWYgKGlzc2V0KCRyb3dbJGV2Y2xzXSkgJiYgIWVtcHR5 KCRyb3dbJGV2Y2xzXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9ICRldmNsYXNzcHJlZml4 LiRyb3dbJGV2Y2xzXTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCQkkZXZj bGFzc2VzID0gKCRldmNsYXNzZXMpID8gJyAnLiBqb2luKCcgJywgJGV2Y2xhc3NlcykgOiAn JzsNCgkJJGlnbm9yZSA9ICRvbWl0ID0gJGNmbGFnID0gYXJyYXkoKTsNCg0KCQlpZiAoJGRl YnVnID4gMSAmJiAkZXZjbGFzc2VzKSB7DQoJCQllY2hvICcrKyBFVkVOVCBDTEFTU0VTICsr JzsNCgkJCWRtcCgkZXZjbGFzc2VzKTsNCgkJfQ0KDQoJCS8vIEV2ZW50cyB0aGF0IHN0YXJ0 IHRoaXMgbW9udGgNCgkJaWYgKCRzdGFydCA8ICRlbmQgJiYgJHN0YXJ0ID4gJHRzX2ZpcnN0 KSB7DQoJCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJLy8gYSBzdGFuZGFyZCBl dmVudCBvciBzdGFydCBvZiBhIG11bHRpDQoJCQlpZiAoJHNob3dzcGFubmVkICYmICRtdWx0 aSAmJiAhJHJlY3VyKSB7DQoJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ211bHRpZmlyc3QnOw0K CQkJfQ0KCQkJaWYgKCRyZWN1cikgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdyZWN1cmZp cnN0JzsNCgkJCX0NCgkJCWlmICghJHNtZF9jYWxfZmxhZykgew0KCQkJCSRzbWRfY2FsX2Zs YWdbXSA9ICdzdGFuZGFyZCc7DQoJCQl9DQoJCQlpZiAoICggJGhvbF9oaXQgJiYgIWluX2Fy cmF5KCdtdWx0aScsJGhvbGlkYXlmbGFncykgJiYgaW5fYXJyYXkoJ211bHRpZmlyc3QnLCRz bWRfY2FsX2ZsYWcpICkgfHwgKCAkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ3N0YW5kYXJkJywk aG9saWRheWZsYWdzKSAmJiBpbl9hcnJheSgnc3RhbmRhcmQnLCRzbWRfY2FsX2ZsYWcpICkg KSB7DQoJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJCQl9DQoJCQlmb3JlYWNo ICgkc21kX2NhbF9mbGFnIGFzICRpdGVtKSB7DQoJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVm aXguJGl0ZW07DQoJCQl9DQoNCgkJCSRpZHggPSAkc21kX2RheSA9IChpbnQpc3RyZnRpbWUo JyVkJywgJHN0YXJ0KTsNCgkJCSRzbWRfd2VlayA9IHN0cmZ0aW1lKCclVicsICRzdGFydCk7 DQoJCQkkc21kX2lzb3llYXIgPSBzdHJmdGltZSgnJUcnLCAkc3RhcnQpOw0KCQkJJG9wID0g KCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDogKCgkZm9ybSkgPyBwYXJzZV9mb3JtKCRmb3Jt KSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBocmVmKCRyb3dbJ1RpdGxlJ10sIHBlcm1s aW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1RpdGxlJ10uJyInKSkgKTsNCgkJCSRl dmVudHNbJGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9wLCAnZmxhZycgPT4gJHNtZF9jYWxf ZmxhZywgJ2NsYXNzZXMnID0+ICgoJGNmbGFnKSA/IGpvaW4oJyAnLGFycmF5X21lcmdlKCRj ZmxhZywgJHNtZF9jYWxfdWNscykpIDogJycpLiRldmNsYXNzZXMsICdwb3N0ZWQnID0+ICRz dGFydF9kYXRlKTsNCgkJCSRzbWRfY2FsX2ZsYWcgPSAkY2ZsYWcgPSAkc21kX2NhbF91Y2xz ID0gYXJyYXkoKTsNCgkJfQ0KDQoJCS8vIEdlbmVyYXRlIGEgc2tpcCBhcnJheSBmb3IgdGhp cyBldmVudA0KCQlpZiAoJHNraXBmaWVsZCAmJiAkcm93WyRza2lwZmllbGRdICE9ICcnKSB7 DQoJCQkkaWdub3JlID0gZG9fbGlzdCgkcm93WyRza2lwZmllbGRdKTsNCgkJCWZvcmVhY2gg KCRpZ25vcmUgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJJGlnbm9yZVska2V5XSA9IGRhdGUo ImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsgLy8gRm9yY2UgZWFjaCBkYXRlIHRvIGEga25v d24gZm9ybWF0DQoJCQl9DQoJCX0NCgkJLy8gR2VuZXJhdGUgYW4gb21pdCBhcnJheSBmb3Ig dGhpcyBldmVudA0KCQlpZiAoJG9taXRmaWVsZCAmJiAkcm93WyRvbWl0ZmllbGRdICE9ICcn KSB7DQoJCQkkb21pdCA9IGRvX2xpc3QoJHJvd1skb21pdGZpZWxkXSk7DQoJCQlmb3JlYWNo ICgkb21pdCBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCQkkb21pdFska2V5XSA9IGRhdGUoImQt TS1ZIiwgc3RydG90aW1lKCR2YWwpKTsNCgkJCX0NCgkJfQ0KCQlpZiAoJGRlYnVnID4gMSAm JiAoJGlnbm9yZSB8fCAkb21pdCkpIHsNCgkJCWVjaG8gJysrIE9NSVRURUQgREFURVMgKysn Ow0KCQkJZG1wKCRvbWl0KTsNCgkJCWVjaG8gJysrIENBTkNFTExFRCBEQVRFUyArKyc7DQoJ CQlkbXAoJGlnbm9yZSk7DQoJCX0NCgkJLy8gQ2FsY3VsYXRlIHRoZSBkYXRlIG9mZnNldHMg YW5kIGNoZWNrIHJlY3VycmluZyBldmVudHMgdGhhdCBmYWxsIHdpdGhpbiB0aGUgbW9udGgg b2YgaW50ZXJlc3QNCgkJaWYgKCRzdGVwZmllbGQgJiYgJHJvd1skc3RlcGZpZWxkXSAhPSAn Jykgew0KCQkJJGZyZXEgPSBkb19saXN0KCRyb3dbJHN0ZXBmaWVsZF0pOw0KCQkJZm9yZWFj aCAoJGZyZXEgYXMgJGludGVydmFsKSB7DQoJCQkJJG1heF9sb29wID0gOTk5OTk7IC8vIFl1 aywgYnV0IHByYWN0aWNhbGx5IGxpbWl0bGVzcw0KCQkJCSRpbnRlcnZhbCA9IHN0cl9yZXBs YWNlKCI/bW9udGgiLCBkYXRlKCdGJywgZ21ta3RpbWUoMCwwLDAsJG1vbnRoLDEpKSwgJGlu dGVydmFsKTsNCgkJCQkkaW50ZXJ2YWwgPSBzdHJfcmVwbGFjZSgiP3llYXIiLCAkeWVhciwg JGludGVydmFsKTsNCgkJCQlpZiAoc3RycG9zKCRpbnRlcnZhbCwgImxhc3QiKSA9PT0gMCkg ew0KCQkJCQkkaW50ZXJ2YWwgPSBkYXRlKCJsLCBGIGpTIFkiLCBzdHJ0b3RpbWUoJGludGVy dmFsLCBta3RpbWUoMTIsIDAsIDAsIGRhdGUoIm4iLG1rdGltZSgwLDAsMCwkbW9udGgsMSwk eWVhcikpKzEsIDEsICR5ZWFyKSkpOw0KCQkJCQkkbWF4X2xvb3AgPSAxOw0KCQkJCX0gZWxz ZSBpZiAoc3RycG9zKCRpbnRlcnZhbCwgImZpcnN0IikgPT09IDApIHsNCgkJCQkJJGludGVy dmFsID0gZGF0ZSgibCwgRiBqUyBZIiwgc3RydG90aW1lKCRpbnRlcnZhbCwgbWt0aW1lKDEy LCAwLCAwLCAoKCRtb250aD4xKSA/ICRtb250aC0xIDogMTIpLCBkYXRlKCJ0Iixta3RpbWUo MCwwLDAsJG1vbnRoLTEsMSwoKCRtb250aD09MSkgPyAkeWVhci0xOiAkeWVhcikpKSwgKCgk bW9udGg9PTEpID8gJHllYXItMTogJHllYXIpKSkpOw0KCQkJCQkkbWF4X2xvb3AgPSAxOw0K CQkJCX0NCgkJCQkkdHNfbG9vcCA9IDA7DQoJCQkJJHRzX2N1cnIgPSAkc3RhcnQ7DQoJCQkJ d2hpbGUgKCR0c19jdXJyIDwgJGVuZCAmJiAkdHNfbG9vcCA8ICRtYXhfbG9vcCkgew0KCQkJ CQlpZiAoJG1heF9sb29wID09IDEpIHsNCgkJCQkJCSR0c19jdXJyID0gc3RydG90aW1lKCRp bnRlcnZhbCk7DQoJCQkJCQkkdHNfY3VyciA9ICgkdHNfY3VyciA8ICRzdGFydCB8fCAkdHNf Y3VyciA+ICRlbmQpID8gJHN0YXJ0IDogJHRzX2N1cnI7DQoJCQkJCX0gZWxzZSB7DQoJCQkJ CQkkdHNfY3VyciA9IHN0cnRvdGltZSgkaW50ZXJ2YWwsICR0c19jdXJyKTsNCgkJCQkJfQ0K CQkJCQlpZiAoJHRzX2N1cnIgPT09IGZhbHNlKSB7DQoJCQkJCQkkdHNfbG9vcCsrOw0KCQkJ CQkJYnJlYWs7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJ CQkJCWRtcCgiSU5URVJWQUw6ICIuIGRhdGUoJ2QtTS1ZIEg6aTpzJywgJHRzX2N1cnIpKTsN CgkJCQkJCX0NCgkJCQkJCWlmICgkdHNfY3VyciA8ICRlbmQgJiYgJHRzX2N1cnIgPj0gJHRz X2ZpcnN0ICYmICR0c19jdXJyICE9ICRzdGFydCkgew0KCQkJCQkJCS8vIEEgcmVjdXJyaW5n IGV2ZW50LiBDaGVjayBpdCBpc24ndCBhIGhvbGlkYXkgb3IgdG8gYmUgaWdub3JlZA0KCQkJ CQkJCXBvcHVsYXRlQXJ0aWNsZURhdGEoJHJvdyk7DQoJCQkJCQkJJG9wID0gJyc7DQoJCQkJ CQkJJGlkeCA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHRzX2N1cnIpOw0KCQkJCQkJCSRzbWRf Y2FsX2ZsYWdbXSA9ICdyZWN1cic7DQoJCQkJCQkJJHRoaXNkYXRlID0gZGF0ZSgiZC1NLVki LCAkdHNfY3Vycik7DQoJCQkJCQkJJG9taXRfbWUgPSBpbl9hcnJheSgkdGhpc2RhdGUsICRv bWl0KTsNCgkJCQkJCQkkc2hvd19tZSA9ICFpbl9hcnJheSgkdGhpc2RhdGUsICRpZ25vcmUp Ow0KCQkJCQkJCSRob2xfaGl0ID0gaW5fYXJyYXkoJHRoaXNkYXRlLCAkaG9saWRheXMpOw0K CQkJCQkJCSRzaG93X2hvbCA9ICgkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ3JlY3VyJywkaG9s aWRheWZsYWdzKSApID8gZmFsc2UgOiB0cnVlOw0KCQkJCQkJCWlmICggJG9taXRfbWUgKSB7 DQoJCQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdvbWl0JzsNCgkJCQkJCQl9DQoJCQkJCQkJ aWYgKCAoISRzaG93X21lIHx8ICEkc2hvd19ob2wpICYmICEkb21pdF9tZSApIHsNCgkJCQkJ CQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJCQkJCQkJfQ0KCQkJCQkJCWZvcmVh Y2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCQkJCQkJJGNmbGFnW10gPSAkY2xh c3NwcmVmaXguJGl0ZW07DQoJCQkJCQkJfQ0KDQoJCQkJCQkJLy8gQ3JlYXRlIHRoZSBldmVu dHMgdGhhdCBhcHBlYXIgaW4gdGhlIGNlbGwgYnV0IG9ubHkgaWYgdGhleSd2ZSBub3QgYXBw ZWFyZWQgYmVmb3JlLCBvciBhcmUgdG8gYmUgaWdub3JlZC9vbWl0dGVkDQoJCQkJCQkJaWYg KCEkb21pdF9tZSkgew0KCQkJCQkJCQlpZiAoKCRzaG93X21lICYmICRzaG93X2hvbCkgfHwg JHNob3dza2lwcGVkKSB7DQoJCQkJCQkJCQkkc21kX2RheSA9ICRpZHg7DQoJCQkJCQkJCQkk c21kX3dlZWsgPSBzdHJmdGltZSgnJVYnLCAkdHNfY3Vycik7DQoJCQkJCQkJCQkkc21kX2lz b3llYXIgPSBzdHJmdGltZSgnJUcnLCAkdHNfY3Vycik7DQoJCQkJCQkJCQkkb3AgPSAoJHJl Y3VyZm9ybSkgPyBwYXJzZV9mb3JtKCRyZWN1cmZvcm0pIDogKCgkdGhpbmcpID8gcGFyc2Uo JHRoaW5nKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBocmVmKCRyb3dbJ1RpdGxlJ10s IHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1RpdGxlJ10uJyInKSkgKTsN CgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCQkkdXNlZCA9IGFycmF5KCk7DQoJCQkJCQkJ aWYgKGlzc2V0KCRldmVudHNbJGlkeF0pICYmICRldmVudHNbJGlkeF0gIT0gTlVMTCkgew0K CQkJCQkJCQlmb3JlYWNoICgkZXZlbnRzWyRpZHhdIGFzICRldikgew0KCQkJCQkJCQkJJHVz ZWRbXSA9ICRldlsnZXYnXTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCQlpZiAoaXNz ZXQoJGV2ZW50c1skaWR4XSkgJiYgJGV2ZW50c1skaWR4XSA9PSBOVUxMIHx8ICFpbl9hcnJh eSgkb3AsICR1c2VkKSkgew0KCQkJCQkJCQkkZXZlbnRzWyRpZHhdW10gPSBhcnJheSgnZXYn ID0+ICRvcCwgJ2ZsYWcnID0+ICRzbWRfY2FsX2ZsYWcsICdjbGFzc2VzJyA9PiAoKCRjZmxh ZykgPyBqb2luKCcgJyxhcnJheV9tZXJnZSgkY2ZsYWcsICRzbWRfY2FsX3VjbHMpKSA6ICcn KS4kZXZjbGFzc2VzLCAncG9zdGVkJyA9PiAkc3RhcnRfZGF0ZSk7DQoJCQkJCQkJfQ0KCQkJ CQkJCSRzbWRfY2FsX2ZsYWcgPSAkY2ZsYWcgPSAkc21kX2NhbF91Y2xzID0gYXJyYXkoKTsN CgkJCQkJCX0NCgkJCQkJCSR0c19sb29wKys7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0g ZWxzZSBpZiAoJHNob3dzcGFubmVkICYmICRtdWx0aSkgew0KCQkJLy8gTm9uLXJlY3Vycmlu ZyBldmVudHMgbWF5IHNwYW4gbW9yZSB0aGFuIG9uZSBkYXRlIGJ1dCB0aGV5IG11c3Qgc3Rp bGwgcmVzcGVjdCBpZ25vcmVkIGRhdGVzIGFuZCBob2xpZGF5cw0KCQkJcG9wdWxhdGVBcnRp Y2xlRGF0YSgkcm93KTsNCgkJCSRsYXN0ZGF5ID0gKGludClzdHJmdGltZSgnJWQnLCAkZW5k KTsNCgkJCSRyZWFsX2xhc3RkYXkgPSAoaW50KXN0cmZ0aW1lKCclZCcsICRyZWFsX2VuZCk7 DQoJCQl3aGlsZSAoKyskaWR4IDw9ICRsYXN0ZGF5KSB7DQoJCQkJJG9wID0gJyc7DQoJCQkJ JG11bHRpZmxhZyA9ICgkaWR4PT0kcmVhbF9sYXN0ZGF5KSA/ICdtdWx0aWxhc3QnIDogKCgk aWR4PT0xKSA/ICdtdWx0aXByZXYnIDogJ211bHRpJyk7DQoJCQkJJHNtZF9jYWxfZmxhZ1td ID0gJG11bHRpZmxhZzsNCgkJCQkkdGhpc3RpbWUgPSBnbW1rdGltZSgwLCAwLCAwLCAkbW9u dGgsICRpZHgsICR5ZWFyKTsNCgkJCQkkdGhpc2RhdGUgPSBkYXRlKCJkLU0tWSIsICR0aGlz dGltZSk7DQoJCQkJJG9taXRfbWUgPSBpbl9hcnJheSgkdGhpc2RhdGUsICRvbWl0KTsNCgkJ CQkkc2hvd19tZSA9ICFpbl9hcnJheSgkdGhpc2RhdGUsICRpZ25vcmUpOw0KCQkJCSRob2xf aGl0ID0gaW5fYXJyYXkoJHRoaXNkYXRlLCAkaG9saWRheXMpOw0KCQkJCSRzaG93X2hvbCA9 ICgkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ211bHRpJywkaG9saWRheWZsYWdzKSApID8gZmFs c2UgOiB0cnVlOw0KCQkJCWlmICggJG9taXRfbWUgKSB7DQoJCQkJCSRzbWRfY2FsX2ZsYWdb XSA9ICdvbWl0JzsNCgkJCQl9DQoJCQkJaWYgKCAoISRzaG93X21lIHx8ICEkc2hvd19ob2wp ICYmICEkb21pdF9tZSApIHsNCgkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJ CQkJfQ0KCQkJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCQkJJGNm bGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07DQoJCQkJfQ0KCQkJCS8vIENyZWF0ZSB0aGUg c3Bhbm5lZCBldmVudCB0aGF0IGFwcGVhcnMgaW4gdGhlIGNlbGwNCgkJCQlpZiAoISRvbWl0 X21lKSB7DQoJCQkJCWlmICggKCRzaG93X21lICYmICRzaG93X2hvbCkgfHwgJHNob3dza2lw cGVkKSB7DQoJCQkJCQkkc21kX2RheSA9ICRpZHg7DQoJCQkJCQkkc21kX3dlZWsgPSBzdHJm dGltZSgnJVYnLCAkdGhpc3RpbWUpOw0KCQkJCQkJJHNtZF9pc295ZWFyID0gc3RyZnRpbWUo JyVHJywgJHRoaXN0aW1lKTsNCgkJCQkJCSRvcCA9ICgkc3BhbmZvcm0pID8gcGFyc2VfZm9y bSgkc3BhbmZvcm0pIDogKCgkdGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJHNpemU9PSJz bWFsbCIpID8gJycgOiBocmVmKCcmcmFycjsnLCBwZXJtbGlua3VybCgkcm93KSwgJyB0aXRs ZT0iJy4kcm93WydUaXRsZSddLiciJykpICk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJGV2ZW50 c1skaWR4XVtdID0gYXJyYXkoJ2V2JyA9PiAkb3AsICdmbGFnJyA9PiAkc21kX2NhbF9mbGFn LCAnY2xhc3NlcycgPT4gKCgkY2ZsYWcpID8gam9pbignICcsYXJyYXlfbWVyZ2UoJGNmbGFn LCAkc21kX2NhbF91Y2xzKSkgOiAnJykuJGV2Y2xhc3NlcywgJ3Bvc3RlZCcgPT4gJHN0YXJ0 X2RhdGUpOw0KCQkJCSRzbWRfY2FsX2ZsYWcgPSAkY2ZsYWcgPSAkc21kX2NhbF91Y2xzID0g YXJyYXkoKTsNCgkJCX0NCgkJfQ0KCX0NCglhcnRpY2xlX3BvcCgpOw0KDQoJLy8gR2VuZXJh dGUgdGhlIGNhbGVuZGFyDQoJaWYoICRzaXplID09ICJzbWFsbCIgKSB7DQoJCSRjYWxlbmRh ciA9IG5ldyBTTURfU21hbGxfQ2FsZW5kYXIoJHllYXIsICRtb250aCwgJGV2ZW50cywgJHNl Y3Rpb24sICRjYXRlZ29yeSk7DQoJfSBlbHNlIHsNCgkJJGNhbGVuZGFyID0gbmV3IFNNRF9D YWxlbmRhcigkeWVhciwgJG1vbnRoLCAkZXZlbnRzKTsNCgl9DQoJJGNhbGVuZGFyLT5zZXRX ZWVrKCR3ZWVrKTsNCgkkY2FsZW5kYXItPnNldEdNVCgkZ210KTsNCgkkY2FsZW5kYXItPnNl dExhbmcoJGxhbmcpOw0KCSRjYWxlbmRhci0+c2V0Q2xhc3NMZXZlbHMoJGNsZXZzKTsNCgkk Y2FsZW5kYXItPnNldENsYXNzUHJlZml4KCRjbGFzc3ByZWZpeCk7DQoJJGNhbGVuZGFyLT5z ZXRFdmVudFByZWZpeCgkZXZjbGFzc3ByZWZpeCk7DQoJJGNhbGVuZGFyLT5zZXRFdmVudFdy YXB0YWcoJGV2ZW50d3JhcHRhZyk7DQoJJGNhbGVuZGFyLT5zZXRDZWxsRm9ybSgkY2VsbGZv cm0pOw0KCSRjYWxlbmRhci0+c2V0TVlXcmFwdGFnKCRteXdyYXB0YWcpOw0KCSRjYWxlbmRh ci0+c2V0VGFibGVJRCgkaWQpOw0KCSRjYWxlbmRhci0+c2V0VGFibGVDbGFzcygkY2xhc3Mp Ow0KCSRjYWxlbmRhci0+c2V0Um93Q2xhc3MoJHJvd2NsYXNzKTsNCgkkY2FsZW5kYXItPnNl dENlbGxDbGFzcygkY2VsbGNsYXNzKTsNCgkkY2FsZW5kYXItPnNldEVtcHR5Q2xhc3MoJGVt cHR5Y2xhc3MpOw0KCSRjYWxlbmRhci0+c2V0SVNPV2Vla0NsYXNzKCRpc293ZWVrY2xhc3Mp Ow0KCSRjYWxlbmRhci0+c2V0TmF2SW5mbygkbmF2cGNsYXNzLCRuYXZuY2xhc3MsJG5hdnBh cnIsJG5hdm5hcnIsJG5hdmlkKTsNCgkkY2FsZW5kYXItPnNldE5hdktlZXAoJG1haW50YWlu KTsNCgkkY2FsZW5kYXItPnNldE1ZQ2xhc3MoJG15Y2xhc3MpOw0KCSRjYWxlbmRhci0+c2V0 TmFtZUZvcm1hdCgkZGF5Zm9ybWF0LCAiZCIpOw0KCSRjYWxlbmRhci0+c2V0TmFtZUZvcm1h dCgkbW9udGhmb3JtYXQsICJtIik7DQoJJGNhbGVuZGFyLT5zZXRTaG93SVNPV2VlaygkaXNv d2Vla3MpOw0KCSRjYWxlbmRhci0+c2V0RVllYXIoJGVhcmxpZXN0KTsNCgkkY2FsZW5kYXIt PnNldExZZWFyKCRsYXRlc3QpOw0KCSRjYWxlbmRhci0+c2V0RmlsdGVyT3B0cygkZm9wdHMp Ow0KCSRjYWxlbmRhci0+c2V0SG9saWRheXMoJGhvbGlkYXlzKTsNCgkkY2FsZW5kYXItPnNl dFNlbGVjdG9ycyhkb19saXN0KCRzZWxlY3QpLCAkc2VsZWN0YnRuKTsNCgkkY2FsZW5kYXIt PnNldEZpcnN0RGF5T2ZXZWVrKCRmaXJzdGRheSk7DQoJJGNhbGVuZGFyLT5zZXRMaW5rUG9z dGVkKCRsaW5rcG9zdGVkKTsNCg0KCXJldHVybiAkY2FsZW5kYXItPmRpc3BsYXkoJHN0YXRp YywgJGZ1dHVyZSk7DQp9DQoNCmNsYXNzIFNNRF9DYWxlbmRhciBleHRlbmRzIFNNRF9SYXdf Q2FsZW5kYXIgew0KCS8vIE92ZXJyaWRlIENvbnN0cnVjdG9yDQoJLy8gUGVybWl0cyBtdWx0 aXBsZSBldmVudHMgdG8gc2hvdyBwZXIgZGF5DQoJZnVuY3Rpb24gU01EX0NhbGVuZGFyKCR5 ZWFyLCRtb250aCwkZXZlbnRzKSB7DQoJCSR0aGlzLT5ldmVudHMgPSAkZXZlbnRzOw0KCQkk dGhpcy0+U01EX1Jhd19DYWxlbmRhcigkeWVhciwkbW9udGgpOw0KCX0NCg0KCS8vIE92ZXJy aWRlIGRzcERheUNlbGwgdG8gZGlzcGxheSBzdHVmZiByaWdodA0KCWZ1bmN0aW9uIGRzcERh eUNlbGwoJHRoZWRheSkgew0KCQlnbG9iYWwgJHNtZF9jYWxfZmxhZywgJHNtZF9jYWxfaWQs ICRzbWRfY2FsX3VjbHMsICRzbWRfaXNveWVhciwgJHNtZF95ZWFyLCAkc21kX21vbnRoLCAk c21kX3dlZWssICRzbWRfZGF5Ow0KDQoJCSRzbWRfY2FsX2ZsYWcgPSAkc21kX2NhbF91Y2xz ID0gYXJyYXkoKTsNCgkJJGhhc2FydGljbGUgPSBpc3NldCgkdGhpcy0+ZXZlbnRzWyR0aGVk YXldKTsNCgkJJHRoZWRhdGUgPSBnbW1rdGltZSgwLCAwLCAwLCAkdGhpcy0+bW9udGgsICR0 aGVkYXksICR0aGlzLT55ZWFyKTsNCgkJJGhvbF9oaXQgPSBpbl9hcnJheShkYXRlKCJkLU0t WSIsICR0aGVkYXRlKSwgJHRoaXMtPmhvbGlkYXlzKTsNCgkJaWYgKCRoYXNhcnRpY2xlKSB7 DQoJCQkkc21kX2NhbF9mbGFnW10gPSAnZXZlbnQnOw0KCQl9DQoJCWlmICgkaG9sX2hpdCkg ew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2hvbHMnOw0KCQl9DQoJCSRjZmxhZyA9IGFycmF5 KCk7DQoJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCSRjZmxhZ1td ID0gJHRoaXMtPmNsYXNzcHJlZml4LiRpdGVtOw0KCQl9DQoJCSR0ZGNsYXNzID0gJHRoaXMt PmNlbGxjbGFzcyAuICgoJGNmbGFnKSA/ICcgJy5qb2luKCcgJywgJGNmbGFnKSA6ICcnKTsN CgkJJHJ1bm5pbmdjbGFzcyA9IChpbl9hcnJheSgiY2VsbCIsICR0aGlzLT5jbGFzc2xldmVs cykgfHwgaW5fYXJyYXkoImNlbGxwbHVzIiwgJHRoaXMtPmNsYXNzbGV2ZWxzKSkgPyBleHBs b2RlKCcgJywgJHRkY2xhc3MpIDogYXJyYXkoKTsNCgkJaWYoJHRoaXMtPnllYXIgPT0gZGF0 ZSgnWScsdGltZSgpK3R6X29mZnNldCgpICkgYW5kICR0aGlzLT5tb250aCA9PSBkYXRlKCdu Jyx0aW1lKCkrdHpfb2Zmc2V0KCkgKSBhbmQgJHRoZWRheSA9PSBkYXRlKCdqJyx0aW1lKCkr dHpfb2Zmc2V0KCkpICkgew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ3RvZGF5JzsNCgkJCSRy dW5uaW5nY2xhc3NbXSA9ICR0aGlzLT5jbGFzc3ByZWZpeC4ndG9kYXknOw0KCQl9DQoNCgkJ JG91dCA9ICRmbGFncyA9IGFycmF5KCk7DQoJCWlmIChlbXB0eSgkdGhpcy0+Y2VsbGZvcm0p KSB7DQoJCQkkb3V0W10gPSBoZWQoJHRoZWRheSw0KTsNCgkJfQ0KCQlpZiggaXNzZXQoJHRo aXMtPmV2ZW50c1skdGhlZGF5XSkgKSB7DQoJCQkkZGF5c19ldmVudHMgPSAkdGhpcy0+ZXZl bnRzWyR0aGVkYXldOw0KCQkJZm9yZWFjaCgkZGF5c19ldmVudHMgYXMgJGV2KSB7DQoJCQkJ JGV2Y2xhc3MgPSB0cmltKCRldlsnY2xhc3NlcyddKTsNCgkJCQkkZmxhZ3MgPSBhcnJheV9t ZXJnZSgkZmxhZ3MsICRldlsnZmxhZyddKTsNCgkJCQlpZiAoaW5fYXJyYXkoImNlbGxwbHVz IiwgJHRoaXMtPmNsYXNzbGV2ZWxzKSkgew0KCQkJCQlmb3JlYWNoIChleHBsb2RlKCcgJywg JGV2Y2xhc3MpIGFzICRldmMpIHsNCgkJCQkJCSRydW5uaW5nY2xhc3NbXT0gJGV2YzsNCgkJ CQkJfQ0KCQkJCX0NCgkJCQkkb3V0W10gPSAoJHRoaXMtPmV2d3JhcHRhZykgPyB0YWcoJGV2 WydldiddLCAkdGhpcy0+ZXZ3cmFwdGFnLCAoKCRldmNsYXNzICYmIGluX2FycmF5KCJldmVu dCIsICR0aGlzLT5jbGFzc2xldmVscykpID8gJyBjbGFzcz0iJy4kZXZjbGFzcy4nIicgOiAn JykpIDogJGV2WydldiddOw0KCQkJfQ0KCQl9DQoJCSRydW5uaW5nY2xhc3MgPSBhcnJheV91 bmlxdWUoJHJ1bm5pbmdjbGFzcyk7DQoJCWlmIChpbl9hcnJheSgiY2VsbHBsdXMiLCAkdGhp cy0+Y2xhc3NsZXZlbHMpKSB7DQoJCQkkc21kX2NhbF9mbGFnID0gYXJyYXlfbWVyZ2UoJHNt ZF9jYWxfZmxhZywgJGZsYWdzKTsNCgkJfQ0KDQoJCWlmICgkdGhpcy0+Y2VsbGZvcm0pIHsN CgkJCSR0aGlzdGltZSA9IGdtbWt0aW1lKDAsIDAsIDAsICR0aGlzLT5tb250aCwgJHRoZWRh eSwgJHRoaXMtPnllYXIpOw0KCQkJJHNtZF9jYWxfaWQgPSAkdGhpcy0+dGFibGVJRDsNCgkJ CSRzbWRfeWVhciA9ICR0aGlzLT55ZWFyOw0KCQkJJHNtZF9tb250aCA9ICR0aGlzLT5tb250 aDsNCgkJCSRzbWRfd2VlayA9IHN0cmZ0aW1lKCIlViIsICR0aGlzdGltZSk7DQoJCQkkc21k X2lzb3llYXIgPSBzdHJmdGltZSgiJUciLCAkdGhpc3RpbWUpOw0KCQkJJHNtZF9kYXkgPSAk dGhlZGF5Ow0KCQkJJHJlcHMgPSBhcnJheSgNCgkJCQkne2V2ZW50c30nID0+IGpvaW4oJycs JG91dCksDQoJCQkJJ3tkYXl9JyA9PiAkdGhlZGF5LA0KCQkJCSd7d2Vla2RheX0nID0+ICgo aXNfYXJyYXkoJHRoaXMtPmRheU5hbWVGbXQpKSA/ICR0aGlzLT5kYXlOYW1lc1tkYXRlKCd3 JywkdGhpc3RpbWUpXSA6IHN0cmZ0aW1lKCR0aGlzLT5kYXlOYW1lRm10LCAkdGhpc3RpbWUp KSwNCgkJCQkne3dlZWt9JyA9PiAkc21kX3dlZWssDQoJCQkJJ3ttb250aH0nID0+ICR0aGlz LT5tb250aCwNCgkJCQkne21vbnRobmFtZX0nID0+IHN0cmZ0aW1lKCR0aGlzLT5tdGhOYW1l Rm10LCAkdGhpc3RpbWUpLA0KCQkJCSd7eWVhcn0nID0+ICR0aGlzLT55ZWFyLA0KCQkJCSd7 c2hvcnR5ZWFyfScgPT4gc3RyZnRpbWUoIiV5IiwgJHRoaXN0aW1lKSwNCgkJCQkne2lzb3ll YXJ9JyA9PiAkc21kX2lzb3llYXIsDQoJCQkJJ3tzaG9ydGlzb3llYXJ9JyA9PiBzdHJmdGlt ZSgiJWciLCAkdGhpc3RpbWUpLA0KCQkJKTsNCgkJCSRjZWxsb3V0ID0gcGFyc2Uoc3RydHIo JHRoaXMtPmNlbGxmb3JtLCAkcmVwcykpOw0KCQkJJGNhcnJheSA9IGFycmF5X21lcmdlKCRy dW5uaW5nY2xhc3MsICRzbWRfY2FsX3VjbHMpOw0KCQkJJHNtZF9jYWxfdWNscyA9IGFycmF5 KCk7DQoNCgkJCXJldHVybiBkb1RhZygkY2VsbG91dCwndGQnLGpvaW4oJyAnLCRjYXJyYXkp KTsNCgkJfSBlbHNlIHsNCgkJCS8vIEFtYWxnYW1hdGUgdGhlIGV2ZW50LWxldmVsIGNsYXNz ZXMgYW5kIGNlbGwtbGV2ZWwgY2xhc3NlcywgaWYgcmVxdWlyZWQNCgkJCXJldHVybiBkb1Rh Zyhqb2luKCcnLCRvdXQpLCd0ZCcsam9pbignICcsJHJ1bm5pbmdjbGFzcykpOw0KCQl9DQoJ fQ0KDQoJZnVuY3Rpb24gZGlzcGxheSgkc3RhdGljPWZhbHNlLCAkZnV0dXJlPWZhbHNlKSB7 DQoJCSRpZCA9ICgkdGhpcy0+dGFibGVJRCkgPyAnIGlkPSInLiR0aGlzLT50YWJsZUlELici JyA6ICcnOw0KCQkkY1tdID0gJHRoaXMtPmRzcEhlYWRlcigkc3RhdGljLCAkZnV0dXJlKTsN CgkJJGNbXSA9ICR0aGlzLT5kc3BEYXlOYW1lcygpOw0KCQkkY1tdID0gJHRoaXMtPmRzcERh eUNlbGxzKCk7DQoNCgkJcmV0dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0YWJsZScsJHRoaXMt PnRhYmxlY2xhc3MsJGlkKTsNCgl9DQoNCglmdW5jdGlvbiBkc3BIZWFkZXIoJHN0YXRpYywg JGZ1dHVyZSkgew0KCQlnbG9iYWwgJHByZXRleHQ7DQoNCgkJJGN1cnJtbyA9ICR0aGlzLT5t b250aDsNCgkJJGN1cnJ5ciA9ICR0aGlzLT55ZWFyOw0KCQkkbmF2cGNsYXNzID0gJHRoaXMt PmdldE5hdkluZm8oInBjIik7DQoJCSRuYXZuY2xhc3MgPSAkdGhpcy0+Z2V0TmF2SW5mbygi bmMiKTsNCgkJJG5hdnBhcnJvdyA9ICR0aGlzLT5nZXROYXZJbmZvKCJwYSIpOw0KCQkkbmF2 bmFycm93ID0gJHRoaXMtPmdldE5hdkluZm8oIm5hIik7DQoJCSRuYXZpZCA9ICR0aGlzLT5n ZXROYXZJbmZvKCJpZCIpOw0KCQkkbmF2cGNsYXNzID0gKCRuYXZwY2xhc3MpID8gJyBjbGFz cz0iJy4kbmF2cGNsYXNzLiciJyA6ICcnOw0KCQkkbmF2bmNsYXNzID0gKCRuYXZuY2xhc3Mp ID8gJyBjbGFzcz0iJy4kbmF2bmNsYXNzLiciJyA6ICcnOw0KCQkkZm9wdHMgPSAkdGhpcy0+ Zm9wdHM7DQoJCWZvcmVhY2ggKCR0aGlzLT5tYWludGFpbiBhcyAkY29sKSB7DQoJCQlzd2l0 Y2ggKCRjb2wpIHsNCgkJCQljYXNlICJzZWN0aW9uIjoNCgkJCQkJaWYgKCRwcmV0ZXh0Wydz J10pIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5KCdzJyA9PiAkcHJldGV4dFsncyddKSArICRm b3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJhcnRpY2xlIjoNCgkJCQkJ aWYgKCRwcmV0ZXh0WydpZCddKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgnaWQnID0+ICRw cmV0ZXh0WydpZCddKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNl ICJjYXRlZ29yeSI6DQoJCQkJCWlmICgkcHJldGV4dFsnYyddKSB7DQoJCQkJCQkkZm9wdHMg PSBhcnJheSgnYycgPT4gJHByZXRleHRbJ2MnXSkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJ YnJlYWs7DQoJCQkJY2FzZSAiYXV0aG9yIjoNCgkJCQkJaWYgKGdwcygnYXV0aG9yJykpIHsN CgkJCQkJCSRmb3B0cyA9IGFycmF5KCdhdXRob3InID0+IGdwcygnYXV0aG9yJykpICsgJGZv cHRzOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgInBnIjoNCgkJCQkJaWYgKCRw cmV0ZXh0WydwZyddKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgncGcnID0+ICRwcmV0ZXh0 WydwZyddKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJjYWxp ZCI6DQoJCQkJCWlmICgkdGhpcy0+dGFibGVJRCkgew0KCQkJCQkJJGZvcHRzID0gYXJyYXko J2NhbGlkJyA9PiAkdGhpcy0+dGFibGVJRCkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJYnJl YWs7DQoJCQkJZGVmYXVsdDoNCgkJCQkJaWYgKGdwcygkY29sKSkgew0KCQkJCQkJJGZvcHRz ID0gYXJyYXkoJGNvbCA9PiBncHMoJGNvbCkpICsgJGZvcHRzOw0KCQkJCQl9DQoJCQkJCWJy ZWFrOw0KCQkJfQ0KCQl9DQoJCSRmb3B0cyA9IGFycmF5X3VuaXF1ZSgkZm9wdHMpOw0KCQkk ZmlsdGVycyA9IGFycmF5KCk7DQoJCSRmaWx0ZXJIaWQgPSBhcnJheSgpOw0KCQlpZiAoISRz dGF0aWMpIHsNCgkJCWZvcmVhY2goJGZvcHRzIGFzICRrZXkgPT4gJHZhbCkgew0KCQkJCSRm aWx0ZXJzW10gPSAka2V5Lic9Jy4kdmFsOw0KCQkJCSRmaWx0ZXJIaWRbXSA9IGhJbnB1dCgk a2V5LCAkdmFsKTsNCgkJCX0NCgkJfQ0KCQkkZmlsdGVyVVJMID0gam9pbihhLCAkZmlsdGVy cyk7DQoNCgkJLy8gV2VlayBzZWxlY3QgbGlzdA0KCQlpZiAoJHRoaXMtPnVzZVNlbGVjdG9y KCd3ZWVrJykgJiYgISRzdGF0aWMpIHsNCgkJCSRjdXJyd2sgPSAoJHRoaXMtPndlZWspID8g JHRoaXMtPndlZWsgOiBkYXRlKCdXJywgc3RydG90aW1lKCAkY3VycnlyLiItIi4kY3Vycm1v LiItMSAxMjowMCIgKSk7DQoJCQlmb3IgKCAkaWR4ID0gMTsgJGlkeCA8PSA1MjsgJGlkeCsr ICkgew0KCQkJCSR0YWdhdHRzID0gJyB2YWx1ZT0iJy4kaWR4LiciJzsNCgkJCQlpZiAoICRp ZHggPT0gJGN1cnJ3ayApICR0YWdhdHRzIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7DQoJ CQkJJG9wdGlvbnRhZ3NbXSA9IGRvVGFnKHN0cl9wYWQoJGlkeCwgMiwgJzAnLCBTVFJfUEFE X0xFRlQpLCAnb3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCX0NCgkJCSRzZWxlY3Rvcltd ID0gZG9UYWcoam9pbihuLCAkb3B0aW9udGFncyksICdzZWxlY3QnLCAoKCR0aGlzLT5teXdy YXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcyksICcgbmFtZT0idyInLigoJHRoaXMtPnNl bGJ0bikgPyAnJyA6ICcgb25jaGFuZ2U9InN1Ym1pdCgpIicpLCAnJykNCiAgIAkJCQkuICgo JHRoaXMtPnVzZVNlbGVjdG9yKCd5ZWFyJykpID8gJycgOiBoSW5wdXQoJ3knLCAkY3Vycnly KSk7DQoJCQkkb3B0aW9udGFncyA9IGFycmF5KCk7IC8vIEJsYW5rIG91dA0KCQl9DQoNCgkJ Ly8gTW9udGggc2VsZWN0IGxpc3QgLSBub3RlIG1rdGltZSBoYXMgdGhlIGRheSBmb3JjZWQg dG8gMS4gSWYgbm90IHlvdSBnZXQNCgkJLy8gYml6YXJyZSByZXBlYXRlZCBtb250aCBuYW1l cyBvbiB0aGUgMzFzdCBvZiBzb21lIG1vbnRocyA6LVwNCgkJaWYgKCEkdGhpcy0+dXNlU2Vs ZWN0b3IoJ3dlZWsnKSkgew0KCQkJaWYgKCR0aGlzLT51c2VTZWxlY3RvcignbW9udGgnKSAm JiAhJHN0YXRpYykgew0KCQkJCWZvciAoICRpZHggPSAxOyAkaWR4IDw9IDEyOyAkaWR4Kysg KSB7DQoJCQkJCSR0YWdhdHRzID0gJyB2YWx1ZT0iJy4kaWR4LiciJzsNCgkJCQkJaWYgKCAk aWR4ID09ICRjdXJybW8gKSAkdGFnYXR0cyAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOw0K CQkJCQkkb3B0aW9udGFnc1tdID0gZG9UYWcoc3RyZnRpbWUoJHRoaXMtPm10aE5hbWVGbXQs IGdtbWt0aW1lKDEyLDAsMCwkaWR4LDEpKSwgJ29wdGlvbicsICcnLCAkdGFnYXR0cyk7DQoJ CQkJfQ0KCQkJCSRzZWxlY3RvcltdID0gZG9UYWcoam9pbihuLCAkb3B0aW9udGFncyksICdz ZWxlY3QnLCAoKCR0aGlzLT5teXdyYXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcyksICcg bmFtZT0ibSInLigoJHRoaXMtPnNlbGJ0bikgPyAnJyA6ICcgb25jaGFuZ2U9InN1Ym1pdCgp IicpLCAnJykNCgkgICAJCQkJLiAoKCR0aGlzLT51c2VTZWxlY3RvcigneWVhcicpKSA/ICcn IDogaElucHV0KCd5JywgJGN1cnJ5cikpOw0KCQkJCSRvcHRpb250YWdzID0gYXJyYXkoKTsg Ly8gQmxhbmsgb3V0DQoJCQl9IGVsc2Ugew0KCQkJCSRzZWxlY3RvcltdID0gZG9UYWcoJHRo aXMtPmdldE1vbnRoTmFtZSgpLCAnc3BhbicsICgoJHRoaXMtPm15d3JhcHRhZykgPyAnJyA6 ICR0aGlzLT5teWNsYXNzKSk7DQoJCQl9DQoJCX0NCg0KCQkvLyBZZWFyIHNlbGVjdCBsaXN0 DQoJCSR5MCA9ICR0aGlzLT5leXI7DQoJCSR5MSA9ICR0aGlzLT5seXI7DQoJCWlmICgkdGhp cy0+dXNlU2VsZWN0b3IoJ3llYXInKSAmJiAoJHkwICE9ICR5MSkgJiYgISRzdGF0aWMpIHsN CgkJCWZvciAoICRpZHggPSAkeTA7ICRpZHggPD0gJHkxOyAkaWR4KysgKSB7DQoJCQkJJHRh Z2F0dHMgPSAnIHZhbHVlPSInLiRpZHguJyInOw0KCQkJCWlmICggJGlkeCA9PSAkY3Vycnly ICkgJHRhZ2F0dHMgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsNCgkJCQkkb3B0aW9udGFn c1tdID0gZG9UYWcoJGlkeCwgJ29wdGlvbicsICcnLCAkdGFnYXR0cyk7DQoJCQl9DQoJCQkk c2VsZWN0b3JbXSA9IGRvVGFnKGpvaW4obiwgJG9wdGlvbnRhZ3MpLCAnc2VsZWN0JywgKCgk dGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMtPm15Y2xhc3MpLCAnIG5hbWU9InkiJy4o KCR0aGlzLT5zZWxidG4pID8gJycgOiAnIG9uY2hhbmdlPSJzdWJtaXQoKSInKSwgJycpDQoJ CQkJCS4gKCgkdGhpcy0+dXNlU2VsZWN0b3IoJ21vbnRoJykpID8gJycgOiBoSW5wdXQoJ20n LCAkY3Vycm1vKSk7DQoJCX0gZWxzZSB7DQoJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKCRjdXJy eXIsICdzcGFuJywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMtPm15Y2xhc3Mp KTsNCgkJfQ0KDQoJCSRleHRyYXMgPSAnJzsNCgkJaWYgKCEkc3RhdGljICYmICggJHRoaXMt PnVzZVNlbGVjdG9yKCdtb250aCcpIHx8ICR0aGlzLT51c2VTZWxlY3RvcigneWVhcicpICkp IHsNCgkJCWlmICgkdGhpcy0+c2VsYnRuKSB7DQoJCQkJJGV4dHJhcyAuPSBkb1RhZygnJywg J2lucHV0JywgJ3NtZF9jYWxfaW5wdXQnLCAnIHR5cGU9InN1Ym1pdCIgdmFsdWU9IicuJHRo aXMtPnNlbGJ0bi4nIicpOw0KCQkJfQ0KCQkJJGV4dHJhcyAuPSBqb2luKCcnLCAkZmlsdGVy SGlkKTsNCgkJfQ0KDQoJCSR1cmxwID0gcGFyc2VfdXJsKCRwcmV0ZXh0WydyZXF1ZXN0X3Vy aSddKTsNCgkJJHNlbGVjdG9yID0gJzxmb3JtIGFjdGlvbj0iJy4kdXJscFsncGF0aCddLici IG1ldGhvZD0iZ2V0IicuKCgkbmF2aWQpID8gJyBpZD0iJy4kbmF2aWQuJyInIDogJycpLic+ Jy5kb1RhZyhqb2luKHNwLCAkc2VsZWN0b3IpLiRleHRyYXMsICR0aGlzLT5teXdyYXB0YWcs ICR0aGlzLT5teWNsYXNzKS4nPC9mb3JtPic7DQoNCgkJJG5hdl9iYWNrX2xpbmsgPSAkdGhp cy0+bmF2aWdhdGlvbigkY3VycnlyLCAkY3Vycm1vLCAnLScsICRmaWx0ZXJVUkwpOw0KCQkk bmF2X2Z3ZF9saW5rICA9ICR0aGlzLT5uYXZpZ2F0aW9uKCRjdXJyeXIsICRjdXJybW8sICcr JywgJGZpbHRlclVSTCk7DQoNCgkJJG5hdl9iYWNrID0gKCEkc3RhdGljICYmICRuYXZfYmFj a19saW5rKSA/ICc8YSBocmVmPSInLiRuYXZfYmFja19saW5rLiciJy4kbmF2cGNsYXNzLic+ Jy4kbmF2cGFycm93Lic8L2E+JyA6ICcmbmJzcDsnOw0KCQkkbmF2X2Z3ZCAgPSAoISRzdGF0 aWMgJiYgJGZ1dHVyZSAmJiAkbmF2X2Z3ZF9saW5rKSA/ICc8YSBocmVmPSInLiRuYXZfZndk X2xpbmsuJyInLiRuYXZuY2xhc3MuJz4nLiRuYXZuYXJyb3cuJzwvYT4nIDogJyZuYnNwOyc7 DQoNCgkJJGNbXSA9IGRvVGFnKCRuYXZfYmFjaywndGgnKTsNCgkJJGNbXSA9ICc8dGggY29s c3Bhbj0iJy4oKCR0aGlzLT5zaG93SVNPV2VlaykgPyA2IDogNSkuJyI+Jy4kc2VsZWN0b3Iu JzwvdGg+JzsNCgkJJGNbXSA9IGRvVGFnKCRuYXZfZndkLCd0aCcpOw0KDQoJCXJldHVybiBk b1RhZyhqb2luKCcnLCRjKSwndHInLCAnc21kX2NhbF9uYXZyb3cnKTsNCgl9DQoNCglmdW5j dGlvbiBuYXZpZ2F0aW9uKCR5ZWFyLCRtb250aCwkZGlyZWN0aW9uLCRmbHQpIHsNCgkJZ2xv YmFsICRwZXJtbGlua19tb2RlOw0KDQoJCWlmKCRkaXJlY3Rpb24gPT0gJy0nKSB7DQoJCQlp ZigkbW9udGggLSAxIDwgMSkgew0KCQkJCSRtb250aCA9IDEyOw0KCQkJCSR5ZWFyIC09IDE7 DQoJCQl9IGVsc2Ugew0KCQkJCSRtb250aCAtPSAxOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJ aWYoJG1vbnRoICsgMSA+IDEyKSB7DQoJCQkJJG1vbnRoID0gMTsNCgkJCQkkeWVhciArPSAx Ow0KCQkJfSBlbHNlIHsNCgkJCQkkbW9udGggKz0gMTsNCgkJCX0NCgkJfQ0KDQoJCS8vIEFi b3J0IGlmIHdlJ3JlIGFib3V0IHRvIGdvIG91dCBvZiByYW5nZQ0KCQlpZiAoJHllYXIgPCAk dGhpcy0+ZXlyIHx8ICR5ZWFyID4gJHRoaXMtPmx5cikgew0KCQkJcmV0dXJuICcnOw0KCQl9 DQoNCgkJaWYoJHBlcm1saW5rX21vZGUgIT0gJ21lc3N5Jykgew0KCQkJcmV0dXJuICI/bT0k bW9udGgiLmEuInk9JHllYXIiLmEuJGZsdDsNCgkJfSBlbHNlIHsgLy8gZm9yIG1lc3N5IFVS TCdzIHdlIG5lZWQgdG8gYnVpbGQgdGhlIGVudGlyZSByZXF1ZXN0IHN0cmluZyBmaXJzdCwg dGhlbiB0YWNrIG9uIHRoZSByZXN0DQoJCQkkb3V0ID0gbWFrZU91dCgnaWQnLCdzJywnYycs J3EnLCdwZycsJ3AnLCdtb250aCcpOw0KCQkJJHIgPSAnPyc7DQoJCQlmb3JlYWNoKCRvdXQg YXMgJGtleSA9PiAkdmFsICkgew0KCQkJCSRyIC49ICgkdmFsKSA/ICIka2V5PSR2YWwiLmEg OiAnJzsNCgkJCX0NCgkJCXJldHVybiAkci4ibT0kbW9udGgiLmEuInk9JHllYXIiLmEuJGZs dDsNCgkJfQ0KCX0NCn0NCg0KY2xhc3MgU01EX1NtYWxsX0NhbGVuZGFyIGV4dGVuZHMgU01E X0NhbGVuZGFyIHsNCgl2YXIgJHNlY3Rpb24gPSAnJzsNCgl2YXIgJGNhdGVnb3J5ID0gJyc7 DQoJZnVuY3Rpb24gU01EX1NtYWxsX0NhbGVuZGFyKCR5ZWFyLCRtb250aCwkZXZlbnRzLCRz ZWN0aW9uLCRjYXRlZ29yeSkgew0KCQkkdGhpcy0+c2VjdGlvbiA9ICRzZWN0aW9uOw0KCQkk dGhpcy0+Y2F0ZWdvcnkgPSAkY2F0ZWdvcnk7DQoJCSR0aGlzLT5TTURfQ2FsZW5kYXIoJHll YXIsJG1vbnRoLCRldmVudHMpOw0KCX0NCg0KCWZ1bmN0aW9uIGRzcERheUNlbGwoJHRoZWRh eSkgew0KCQlnbG9iYWwgJHBlcm1saW5rX21vZGU7DQoNCgkJJGhhc2FydGljbGUgPSBpc3Nl dCgkdGhpcy0+ZXZlbnRzWyR0aGVkYXldKTsNCgkJJGNsYXNzW10gPSAkdGhpcy0+Y2VsbGNs YXNzLicgJyAuICgoJGhhc2FydGljbGUpID8gJHRoaXMtPmNsYXNzcHJlZml4LidldmVudCcg OiAnJyk7DQoJCWlmICgoaW5fYXJyYXkoIGRhdGUoJ2QtTS1ZJywgZ21ta3RpbWUoIDAsIDAs IDAsICR0aGlzLT5tb250aCwgJHRoZWRheSwgJHRoaXMtPnllYXIpICksICR0aGlzLT5ob2xp ZGF5cykpICkgew0KCQkJJGNsYXNzW10gPSAkdGhpcy0+Y2xhc3NwcmVmaXguJ2hvbHMnOw0K CQl9DQoJCWlmKCR0aGlzLT55ZWFyID09IGRhdGUoJ1knLHRpbWUoKSt0el9vZmZzZXQoKSAp IGFuZCAkdGhpcy0+bW9udGggPT0gZGF0ZSgnbicsdGltZSgpK3R6X29mZnNldCgpICkgYW5k ICR0aGVkYXkgPT0gZGF0ZSgnaicsdGltZSgpK3R6X29mZnNldCgpKSApIHsNCgkJCSRjbGFz c1tdID0gJHRoaXMtPmNsYXNzcHJlZml4Lid0b2RheSc7DQoJCX0NCg0KCQlpZiggaXNzZXQo JHRoaXMtPmV2ZW50c1skdGhlZGF5XSkgKSB7DQoJCQkkZGF5c19ldmVudHMgPSAkdGhpcy0+ ZXZlbnRzWyR0aGVkYXldOw0KCQkJZm9yZWFjaCgkZGF5c19ldmVudHMgYXMgJGV2KSB7DQoJ CQkJJGV2Y2xhc3MgPSB0cmltKCRldlsnY2xhc3NlcyddKTsNCgkJCQlmb3JlYWNoIChleHBs b2RlKCcgJywgJGV2Y2xhc3MpIGFzICRldmMpIHsNCgkJCQkJJGNsYXNzW109ICRldmM7DQoJ CQkJfQ0KDQoJCQkJJG91dFtdID0gKCR0aGlzLT5ldndyYXB0YWcpID8gdGFnKCRldlsnZXYn XSwgJHRoaXMtPmV2d3JhcHRhZywgKCgkZXZjbGFzcykgPyAnIGNsYXNzPSInLiRldmNsYXNz LiciJyA6ICcnKSkgOiAkZXZbJ2V2J107DQoJCQl9DQoJCQkkdXNlX3Bvc3RlZCA9IGZhbHNl Ow0KCQkJZm9yZWFjaCAoJHRoaXMtPmxpbmtwb3N0ZWQgYXMgJGRsaW5rcykgew0KCQkJCWlm IChpbl9hcnJheSgkZGxpbmtzLCAkY2xhc3MpKSB7DQoJCQkJCSR1c2VfcG9zdGVkID0gdHJ1 ZTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYoICRwZXJtbGlua19tb2RlICE9 ICd5ZWFyX21vbnRoX2RheV90aXRsZScgKSB7DQoJCQkJJGxpbmtkYXRlID0gKCR1c2VfcG9z dGVkKSA/ICRldlsncG9zdGVkJ10gOiAkdGhpcy0+eWVhci4nLScuJHRoaXMtPmRvdWJsZWRp Z2l0KCR0aGlzLT5tb250aCkuJy0nLiR0aGlzLT5kb3VibGVkaWdpdCgkdGhlZGF5KTsNCgkJ CQkkaHJlZiA9ICcgaHJlZj0iJy5odS4nP2RhdGU9Jy4kbGlua2RhdGU7DQoJCQkJaWYoJHRo aXMtPnNlY3Rpb24pIHsgJGhyZWYgPSAkaHJlZi5hLidzPScuJHRoaXMtPnNlY3Rpb247IH0N CgkJCQlpZigkdGhpcy0+Y2F0ZWdvcnkpIHsgJGhyZWYgPSAkaHJlZi5hLidjPScuJHRoaXMt PmNhdGVnb3J5OyB9DQoJCQkJJGhyZWYgLj0gJyInOw0KCQkJfSBlbHNlIHsNCgkJCQkkc2Vj dGlvbiA9ICgkdGhpcy0+c2VjdGlvbikgPyAkdGhpcy0+c2VjdGlvbi4nLycgOiAnJzsNCgkJ CQkkbGlua2RhdGUgPSAoJHVzZV9wb3N0ZWQpID8gcHJlZ19yZXBsYWNlKCItIiwgIi8iLCAk ZXZbJ3Bvc3RlZCddKSA6ICR0aGlzLT55ZWFyLicvJy4kdGhpcy0+ZG91YmxlZGlnaXQoJHRo aXMtPm1vbnRoKS4nLycuJHRoaXMtPmRvdWJsZWRpZ2l0KCR0aGVkYXkpOw0KCQkJCSRocmVm ID0gJyBocmVmPSInLmh1LiRzZWN0aW9uLiRsaW5rZGF0ZS4nIic7DQoJCQl9DQoNCgkJCSRj W10gPSBkb1RhZygkdGhlZGF5LmpvaW4oJycsJG91dCksJ2EnLCcnLCRocmVmKTsNCgkJfSBl bHNlIHsNCgkJCSRjW10gPSAkdGhlZGF5Ow0KCQl9DQoNCgkJcmV0dXJuIGRvVGFnKGpvaW4o JycsJGMpLCd0ZCcsam9pbignICcsJGNsYXNzKSk7DQoJfQ0KDQoJZnVuY3Rpb24gZG91Ymxl ZGlnaXQoJG4pIHsNCgkJaWYoJG4gPCAxMCkgeyAkbiA9ICcwJy4oaW50KSRuOyB9DQoJCXJl dHVybiAkbjsNCgl9DQoNCn0NCg0KLyoqDQoqIEJhc2ljIENhbGVuZGFyIGRhdGEgYW5kIGRp c3BsYXkNCiogaHR0cDovL3d3dy5vc2Nhcm0ub3JnL3N0YXRpYy9wZy9jYWxlbmRhckNsYXNz Lw0KKiBAYXV0aG9yIE9zY2FyIE1lcmlkYQ0KKiBAY3JlYXRlZCBKYW4gMTggMjAwNA0KKiBA cGFja2FnZSAgZ29Db3JlTGliDQoqLw0KY2xhc3MgU01EX1Jhd19DYWxlbmRhciB7DQp2YXIg JGdtdCA9IDE7DQp2YXIgJGxhbmc7DQp2YXIgJHllYXI7DQp2YXIgJGV5cjsNCnZhciAkbHly Ow0KdmFyICRtb250aDsNCnZhciAkd2VlazsNCnZhciAkZGF5TmFtZUZtdDsNCnZhciAkbXRo TmFtZUZtdDsNCnZhciAkZGF5TmFtZXM7DQp2YXIgJHN0YXJ0RGF5Ow0KdmFyICRzZWxlY3Rv cnM7DQp2YXIgJHNlbGJ0bjsNCnZhciAkc2hvd0lTT1dlZWs7DQp2YXIgJElTT1dlZWtIZWFk Ow0KdmFyICRJU09XZWVrQ2VsbDsNCnZhciAkZW5kRGF5Ow0KdmFyICRmaXJzdERheU9mV2Vl ayA9IDA7DQp2YXIgJHN0YXJ0T2Zmc2V0ID0gMDsNCnZhciAkY2xhc3NsZXZlbHM7DQp2YXIg JGNsYXNzcHJlZml4Ow0KdmFyICRldmNsYXNzcHJlZml4Ow0KdmFyICRldndyYXB0YWc7DQp2 YXIgJG15d3JhcHRhZzsNCnZhciAkcm93Y2xhc3M7DQp2YXIgJGNlbGxjbGFzczsNCnZhciAk ZW1wdHljbGFzczsNCnZhciAkaXNvY2xhc3M7DQp2YXIgJG5hdnBjbGFzczsNCnZhciAkbmF2 bmNsYXNzOw0KdmFyICRuYXZwYXJyb3c7DQp2YXIgJG5hdm5hcnJvdzsNCnZhciAkbmF2aWQ7 DQp2YXIgJG15Y2xhc3M7DQp2YXIgJGZvcHRzOw0KdmFyICRob2xpZGF5czsNCnZhciAkbGlu a3Bvc3RlZDsNCnZhciAkY2VsbGZvcm07DQp2YXIgJHRhYmxlSUQ7DQp2YXIgJG1haW50YWlu Ow0KLyoqDQoqIENvbnN0cnVjdG9yDQoqDQoqIEBwYXJhbSBpbnRlZ2VyLCB5ZWFyDQoqIEBw YXJhbSBpbnRlZ2VyLCBtb250aA0KKiBAcmV0dXJuIG9iamVjdA0KKiBAcHVibGljDQoqLw0K ZnVuY3Rpb24gU01EX1Jhd19DYWxlbmRhciAoICR5ciwgJG1vICkgew0KCSR0aGlzLT5zZXRZ ZWFyKCR5cik7DQoJJHRoaXMtPnNldE1vbnRoKCRtbyk7DQoJJHRoaXMtPnNldENsYXNzUHJl Zml4KCdzbWRfY2FsXycpOw0KDQoJJHRoaXMtPnN0YXJ0VGltZSA9IHN0cnRvdGltZSggIiR5 ci0kbW8tMDEgMDA6MDAiICk7DQoJJHRoaXMtPnN0YXJ0RGF5CT0gZGF0ZSggJ0QnLCAkdGhp cy0+c3RhcnRUaW1lICk7DQoJJHRoaXMtPmVuZERheSA9IGRhdGUoICd0JywgJHRoaXMtPnN0 YXJ0VGltZSApOw0KCSR0aGlzLT5lbmRUaW1lICAgPSBzdHJ0b3RpbWUoICIkeXItJG1vLSIu JHRoaXMtPmVuZERheS4iIDIzOjU5IiApOw0KDQoJJHRoaXMtPnNldE5hbWVGb3JtYXQoJyVh JywgJ2QnKTsNCgkkdGhpcy0+c2V0TmFtZUZvcm1hdCgnJUInLCAnbScpOw0KCSR0aGlzLT5z ZXRGaXJzdERheU9mV2VlaygwKTsNCgkkdGhpcy0+c2V0U2hvd0lTT1dlZWsoJycpOw0KCSR0 aGlzLT5zZXRUYWJsZUlEKCcnKTsNCgkkdGhpcy0+c2V0VGFibGVDbGFzcygnJyk7DQp9DQov LyA9PT09IGVuZCBDYWxlbmRhciA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCi8vIEdldHRlcnMNCmZ1bmN0aW9uIHVzZVNlbGVjdG9yKCR2YWwp IHsgcmV0dXJuIGluX2FycmF5KCR2YWwsICR0aGlzLT5zZWxlY3RvcnMpOyB9DQpmdW5jdGlv biBnZXREYXlOYW1lKCRkYXkpIHsgcmV0dXJuICgkdGhpcy0+ZGF5TmFtZXNbJGRheSU3XSk7 IH0NCmZ1bmN0aW9uIGdldE1vbnRoTmFtZSgpIHsgcmV0dXJuIHN0cmZ0aW1lKCAkdGhpcy0+ bXRoTmFtZUZtdCwgJHRoaXMtPnN0YXJ0VGltZSApOyB9DQpmdW5jdGlvbiBnZXROYXZJbmZv KCR0eXBlKSB7DQoJJHIgPSAnJzsNCglzd2l0Y2ggKCR0eXBlKSB7DQoJCWNhc2UgImlkIjog JHIgPSAkdGhpcy0+bmF2aWQ7IGJyZWFrOw0KCQljYXNlICJwYyI6ICRyID0gJHRoaXMtPm5h dnBjbGFzczsgYnJlYWs7DQoJCWNhc2UgIm5jIjogJHIgPSAkdGhpcy0+bmF2bmNsYXNzOyBi cmVhazsNCgkJY2FzZSAicGEiOiAkciA9ICR0aGlzLT5uYXZwYXJyb3c7IGJyZWFrOw0KCQlj YXNlICJuYSI6ICRyID0gJHRoaXMtPm5hdm5hcnJvdzsgYnJlYWs7DQoJfQ0KCXJldHVybiAk cjsNCn0NCi8vIFNldHRlcnMNCmZ1bmN0aW9uIHNldEdNVCgkYil7ICR0aGlzLT5nbXQgPSAk YjsgfQ0KZnVuY3Rpb24gc2V0TGFuZygkY29kZSl7ICR0aGlzLT5sYW5nID0gJGNvZGU7IH0N CmZ1bmN0aW9uIHNldENlbGxGb3JtKCRmcm0peyAkdGhpcy0+Y2VsbGZvcm0gPSAkZnJtOyB9 DQpmdW5jdGlvbiBzZXRUYWJsZUlEKCRpZCl7ICR0aGlzLT50YWJsZUlEID0gJGlkOyB9DQpm dW5jdGlvbiBzZXRZZWFyKCR5cil7ICR0aGlzLT55ZWFyID0gJHlyOyB9DQpmdW5jdGlvbiBz ZXRFWWVhcigkeXIpeyAkdGhpcy0+ZXlyID0gJHlyOyB9DQpmdW5jdGlvbiBzZXRMWWVhcigk eXIpeyAkdGhpcy0+bHlyID0gJHlyOyB9DQpmdW5jdGlvbiBzZXRNb250aCgkbXRoKXsgJHRo aXMtPm1vbnRoID0gKGludCkkbXRoOyB9DQpmdW5jdGlvbiBzZXRXZWVrKCR3ayl7DQoJaWYg KCR3aykgew0KCQkkdGhpcy0+d2VlayA9IChpbnQpJHdrOw0KCQkkdGhpcy0+bW9udGggPSBz YWZlX3N0cmZ0aW1lKCIlbSIsIHN0cnRvdGltZSgkdGhpcy0+eWVhci4iVyIuJHdrKSk7DQoJ fQ0KfQ0KZnVuY3Rpb24gc2V0TmF2S2VlcCgkYXIpeyAkdGhpcy0+bWFpbnRhaW4gPSAkYXI7 IH0NCmZ1bmN0aW9uIHNldFNob3dJU09XZWVrKCR2YWwpIHsNCgkkdGhpcy0+c2hvd0lTT1dl ZWsgPSAoJHZhbCkgPyB0cnVlIDogZmFsc2U7DQoJaWYgKCR2YWwpIHsNCgkJJHZhbCA9IGRv X2xpc3QoJHZhbCk7DQoJCSR0aGlzLT5JU09XZWVrSGVhZCA9ICR2YWxbMF07DQoJCSR0aGlz LT5JU09XZWVrQ2VsbCA9IChpc3NldCgkdmFsWzFdKSkgPyAkdmFsWzFdIDogJ3t3ZWVrfSc7 DQoJfQ0KfQ0KZnVuY3Rpb24gc2V0Q2xhc3NMZXZlbHMoJGNscyl7ICR0aGlzLT5jbGFzc2xl dmVscyA9ICRjbHM7IH0NCmZ1bmN0aW9uIHNldENsYXNzUHJlZml4KCRjbHMpeyAkdGhpcy0+ Y2xhc3NwcmVmaXggPSAkY2xzOyB9DQpmdW5jdGlvbiBzZXRFdmVudFByZWZpeCgkY2xzKXsg JHRoaXMtPmV2Y2xhc3NwcmVmaXggPSAkY2xzOyB9DQpmdW5jdGlvbiBzZXRFdmVudFdyYXB0 YWcoJHdyYXApeyAkdGhpcy0+ZXZ3cmFwdGFnID0gJHdyYXA7IH0NCmZ1bmN0aW9uIHNldE1Z V3JhcHRhZygkd3JhcCl7ICR0aGlzLT5teXdyYXB0YWcgPSAkd3JhcDsgfQ0KZnVuY3Rpb24g c2V0VGFibGVDbGFzcygkY2xzKSB7ICR0aGlzLT50YWJsZWNsYXNzID0gKCRjbHMpID8gJHRo aXMtPmNsYXNzcHJlZml4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0Um93Q2xhc3MoJGNs cyl7ICR0aGlzLT5yb3djbGFzcyA9ICgkY2xzKSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kY2xz IDogJyc7IH0NCmZ1bmN0aW9uIHNldENlbGxDbGFzcygkY2xzKXsgJHRoaXMtPmNlbGxjbGFz cyA9ICgkY2xzKSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kY2xzIDogJyc7IH0NCmZ1bmN0aW9u IHNldEVtcHR5Q2xhc3MoJGNscyl7ICR0aGlzLT5lbXB0eWNsYXNzID0gKCRjbHMpID8gJHRo aXMtPmNsYXNzcHJlZml4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0SVNPV2Vla0NsYXNz KCRjbHMpeyAkdGhpcy0+aXNvY2xhc3MgPSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXgu JGNscyA6ICcnOyB9DQpmdW5jdGlvbiBzZXROYXZJbmZvKCRjbHNwLCAkY2xzbiwgJGFycnAs ICRhcnJuLCAkbmlkKXsNCgkkdGhpcy0+bmF2cGNsYXNzID0gKCRjbHNwKSA/ICR0aGlzLT5j bGFzc3ByZWZpeC4kY2xzcCA6ICcnOw0KCSR0aGlzLT5uYXZuY2xhc3MgPSAoJGNsc24pID8g JHRoaXMtPmNsYXNzcHJlZml4LiRjbHNuIDogJyc7DQoJJHRoaXMtPm5hdnBhcnJvdyA9ICgk YXJycCkgPyAkYXJycCA6ICcnOw0KCSR0aGlzLT5uYXZuYXJyb3cgPSAoJGFycm4pID8gJGFy cm4gOiAnJzsNCgkkdGhpcy0+bmF2aWQgPSAoJG5pZCkgPyAkdGhpcy0+Y2xhc3NwcmVmaXgu JG5pZCA6ICcnOw0KfQ0KZnVuY3Rpb24gc2V0TVlDbGFzcygkY2xzKXsgJHRoaXMtPm15Y2xh c3MgPSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNscyA6ICcnOyB9DQpmdW5jdGlv biBzZXRGaWx0ZXJPcHRzKCRmKSB7ICR0aGlzLT5mb3B0cyA9ICRmOyB9DQpmdW5jdGlvbiBz ZXRMaW5rUG9zdGVkKCRkbCkgew0KCWZvcmVhY2ggKCRkbCBhcyAkZHZhbCkgew0KCQkkdGhp cy0+bGlua3Bvc3RlZFtdID0gJHRoaXMtPmNsYXNzcHJlZml4LiRkdmFsOw0KCX0NCn0NCmZ1 bmN0aW9uIHNldEhvbGlkYXlzKCRob2xzKSB7ICR0aGlzLT5ob2xpZGF5cyA9ICRob2xzOyB9 DQpmdW5jdGlvbiBzZXRTZWxlY3RvcnMoJHNlbCwgJGJ0bikgeyAkdGhpcy0+c2VsZWN0b3Jz ID0gJHNlbDsgJHRoaXMtPnNlbGJ0biA9ICRidG47IH0NCmZ1bmN0aW9uIHNldEZpcnN0RGF5 T2ZXZWVrKCRkKSB7DQoJJHRoaXMtPmZpcnN0RGF5T2ZXZWVrID0gKChpbnQpJGQgPD0gNiBh bmQgKGludCkkZCA+PSAwKSA/IChpbnQpJGQgOiAwOw0KDQoJJHRoaXMtPnN0YXJ0T2Zmc2V0 ID0gZGF0ZSggJ3cnLCAkdGhpcy0+c3RhcnRUaW1lICktJHRoaXMtPmZpcnN0RGF5T2ZXZWVr Ow0KCWlmICggJHRoaXMtPnN0YXJ0T2Zmc2V0IDwgMCApIHsNCgkJJHRoaXMtPnN0YXJ0T2Zm c2V0ID0gNyAtIGFicygkdGhpcy0+c3RhcnRPZmZzZXQpOw0KCX0NCn0NCi8qKg0KKiBmcm06 IGFueSB2YWxpZCBQSFAgc3RyZnRpbWUoKSBzdHJpbmcgb3IgQUJCUi9GVUxMDQoqIHR5cDog ZCB0byBzZXQgZGF5LCBtIHRvIHNldCBtb250aCBmb3JtYXQNCiovDQpmdW5jdGlvbiBzZXRO YW1lRm9ybWF0KCRmcm0sICR0eXA9ImQiKSB7DQoJc3dpdGNoICgkZnJtKSB7DQoJCWNhc2Ug IkZVTEwiOg0KCQkJJGZtdCA9ICgkdHlwID09ICdkJykgPyAiJUEiIDogIiVCIjsNCgkJCWJy ZWFrOw0KCQljYXNlICJBQkJSIjoNCgkJCSRmbXQgPSAoJHR5cCA9PSAnZCcpID8gIiVhIiA6 ICIlYiI7DQoJCQlicmVhazsNCgkJZGVmYXVsdDoNCgkJCWlmICgkdHlwID09ICdkJykgew0K CQkJCWlmIChzdHJwb3MoJGZybSwgJyUnKSA9PT0gMCkgew0KCQkJCQkkZm10ID0gJGZybTsN CgkJCQl9IGVsc2Ugew0KCQkJCQkkZnJtID0gdHJpbSgkZnJtLCAne30nKTsNCgkJCQkJJGZy bSA9IGRvX2xpc3QoJGZybSk7DQoJCQkJCSRmbXQgPSAkZnJtOw0KCQkJCX0NCgkJCX0gZWxz ZSB7DQoJCQkJJGZtdCA9ICRmcm07DQoJCQl9DQoJCQlicmVhazsNCgl9DQoNCglpZiAoJHR5 cCA9PSAiZCIpIHsNCgkJJHRoaXMtPmRheU5hbWVGbXQgPSAkZm10Ow0KCQkkdGhpcy0+ZGF5 TmFtZXMgPSBhcnJheSgpOw0KDQoJCS8vIFRoaXMgaXMgZG9uZSB0byBtYWtlIHN1cmUgU3Vu ZGF5IGlzIGFsd2F5cyB0aGUgZmlyc3QgZGF5IG9mIG91ciBhcnJheQ0KCQkvLyBVbml4IHRp bWUgZ2V0cyBhIGxpdHRsZSBmdW5reSBhdCB0aGUgYmVnaW5uaW5nIGRlcGVuZGluZyB1cG9u IHlvdXIgdGltZXpvbmUuDQoJCSRzZXJ2ZXJvZmZzZXQgPSBnbW1rdGltZSgwLDAsMCkgLSBt a3RpbWUoMCwwLDApOw0KCQkkc3RhcnQgPSAoJHNlcnZlcm9mZnNldCA8IDApID8gNCA6IDM7 DQoJCSRlbmQgPSAkc3RhcnQgKyA3Ow0KCQlmb3IoJGk9JHN0YXJ0OyAkaTwkZW5kOyAkaSsr KSB7DQoJCQlpZiAoaXNfYXJyYXkoJGZtdCkpIHsNCgkJCQkkdGhpcy0+ZGF5TmFtZXNbXSA9 ICRmbXRbJGktJHN0YXJ0XTsNCgkJCX0gZWxzZSB7DQoJCQkJJHRoaXMtPmRheU5hbWVzW10g PSB1Y2ZpcnN0KHNhZmVfc3RyZnRpbWUoJGZtdCwgODY0MDAqJGkgLSB0el9vZmZzZXQoKSwg JHRoaXMtPmdtdCwgJHRoaXMtPmxhbmcgKSk7DQoJCQl9DQoJCX0NCgl9IGVsc2Ugew0KCQkk dGhpcy0+bXRoTmFtZUZtdCA9ICRmbXQ7DQoJfQ0KfQ0KLyoqDQoqIFJldHVybnMgbWFya3Vw IGZvciBkaXNwbGF5aW5nIHRoZSBjYWxlbmRhci4NCiogQHJldHVybg0KKiBAcHVibGljDQoq Lw0KZnVuY3Rpb24gZGlzcGxheSAoICkgew0KCSRpZCA9ICgkdGhpcy0+dGFibGVJRCkgPyAn IGlkPSInLiR0aGlzLT50YWJsZUlELiciJyA6ICcnOw0KCSRjW10gPSAnPHRhYmxlJy4kaWQu Jz4nOw0KCSRjW10gPSAkdGhpcy0+ZHNwRGF5TmFtZXMoKTsNCgkkY1tdID0gJHRoaXMtPmRz cERheUNlbGxzKCk7DQoJJGNbXSA9ICc8L3RhYmxlPic7DQoNCglyZXR1cm4gam9pbignJywk Yyk7DQp9DQovLyA9PT09IGVuZCBkaXNwbGF5ID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KLyoqDQoqIERpc3BsYXlzIHRoZSByb3cgb2YgZGF5 IG5hbWVzLg0KKiBAcmV0dXJuIHN0cmluZw0KKiBAcHJpdmF0ZQ0KKi8NCmZ1bmN0aW9uIGRz cERheU5hbWVzICggKSB7DQoJJGNbXSA9ICc8dHIgY2xhc3M9InNtZF9jYWxfZGF5bmFtZXMi Pic7DQoNCgkkaSA9ICR0aGlzLT5maXJzdERheU9mV2VlazsNCgkkaiA9IDA7IC8vIGNvdW50 IG51bWJlciBvZiBkYXlzIGRpc3BsYXllZA0KCSRlbmQgPSBmYWxzZTsNCg0KCWlmICgkdGhp cy0+c2hvd0lTT1dlZWspIHsNCgkJJGNbXSA9ICI8dGg+Ii4kdGhpcy0+SVNPV2Vla0hlYWQu IjwvdGg+IjsNCgl9DQoJZm9yKCRqID0gMDsgJGo8PTY7ICRqKyssICRpKyspIHsNCgkJaWYo JGkgPT0gNykgeyAkaSA9IDA7IH0NCgkJJGNbXSA9ICc8dGg+Jy4kdGhpcy0+Z2V0RGF5TmFt ZSgkaSkuIjwvdGg+IjsNCgl9DQoNCgkkY1tdID0gJzwvdHI+JzsNCglyZXR1cm4gam9pbign JywkYyk7DQp9DQovLyA9PT09IGVuZCBkc3BEYXlOYW1lcyA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi8qKg0KKiBEaXNwbGF5cyBhbGwgZGF5 IGNlbGxzIGZvciB0aGUgbW9udGgNCioNCiogQHJldHVybiBzdHJpbmcNCiogQHByaXZhdGUN CiovDQpmdW5jdGlvbiBkc3BEYXlDZWxscyAoICkgew0KCSRpID0gMDsgLy8gY2VsbCBjb3Vu dGVyDQoJJGVtcHR5Q2xhc3MgPSAkdGhpcy0+ZW1wdHljbGFzczsNCgkkaXNvQ2xhc3MgPSAk dGhpcy0+aXNvY2xhc3M7DQoJJHJvd0NsYXNzID0gJHRoaXMtPnJvd2NsYXNzOw0KCSRyb3dD bGFzcyA9ICgkcm93Q2xhc3MpID8gJyBjbGFzcz0iJy4kcm93Q2xhc3MuJyInIDogJyc7DQoN CgkkY1tdID0gJzx0cicuJHJvd0NsYXNzLic+JzsNCg0KCWlmICgkdGhpcy0+c2hvd0lTT1dl ZWspIHsNCgkJJHdrY2VsbCA9IHN0cnRyKCR0aGlzLT5JU09XZWVrQ2VsbCwgYXJyYXkoJ3t3 ZWVrfScgPT4gZGF0ZSggJ1cnLCAkdGhpcy0+c3RhcnRUaW1lICkgKSk7DQoJCSRjW10gPSAn PHRkIGNsYXNzPSInLiRpc29DbGFzcy4nIj4nLiR3a2NlbGwuJzwvdGQ+JzsNCgl9DQoJLy8g Zmlyc3QgZGlzcGxheSBlbXB0eSBjZWxscyBiYXNlZCBvbiB3aGF0IHdlZWtkYXkgdGhlIG1v bnRoIHN0YXJ0cyBpbg0KCWZvciggJGo9MDsgJGo8JHRoaXMtPnN0YXJ0T2Zmc2V0OyAkaisr ICkJew0KCQkkaSsrOw0KCQkkY1tdID0gJzx0ZCBjbGFzcz0iJy4kZW1wdHlDbGFzcy4nIj4m bmJzcDs8L3RkPic7DQoJfSAvLyBlbmQgb2Zmc2V0IGNlbGxzDQoNCgkvLyB3cml0ZSBvdXQg dGhlIHJlc3Qgb2YgdGhlIGRheXMsIGF0IGVhY2ggc3VuZGF5LCBzdGFydCBhIG5ldyByb3cu DQoJZm9yKCAkZD0xOyAkZDw9JHRoaXMtPmVuZERheTsgJGQrKyApIHsNCgkJJGkrKzsNCgkJ JGNbXSA9ICR0aGlzLT5kc3BEYXlDZWxsKCAkZCApOw0KCQlpZiAoICRpJTcgPT0gMCApIHsg JGNbXSA9ICc8L3RyPic7IH0NCgkJaWYgKCAkZDwkdGhpcy0+ZW5kRGF5ICYmICRpJTcgPT0g MCApIHsNCgkJCSRjW10gPSAnPHRyJy4kcm93Q2xhc3MuJz4nOw0KCQkJaWYgKCR0aGlzLT5z aG93SVNPV2Vlaykgew0KCQkJCSR3a2NlbGwgPSBzdHJ0cigkdGhpcy0+SVNPV2Vla0NlbGws IGFycmF5KCd7d2Vla30nID0+IGRhdGUoICdXJywgc3RydG90aW1lKCAkdGhpcy0+eWVhci4i LSIuJHRoaXMtPm1vbnRoLiItIi4oaW50KSgkZCArIDEpIC4iIDAwOjAwIiApKSApKTsNCgkJ CQkkY1tdID0gJzx0ZCBjbGFzcz0iJy4kaXNvQ2xhc3MuJyI+Jy4kd2tjZWxsLic8L3RkPic7 DQoJCQl9DQoJCX0NCgl9DQoJLy8gZmlsbCBpbiB0aGUgZmluYWwgcm93DQoJJGxlZnQgPSA3 IC0gKCAkaSU3ICk7DQoJaWYgKCAkbGVmdCA8IDcpCXsNCgkJZm9yICggJGo9MDsgJGo8JGxl ZnQ7ICRqKysgKQl7DQoJCSAgJGNbXSA9ICc8dGQgY2xhc3M9IicuJGVtcHR5Q2xhc3MuJyI+ Jm5ic3A7PC90ZD4nOw0KCQl9DQoJCSRjW10gPSAiXG5cdDwvdHI+IjsNCgl9DQoJcmV0dXJu IGpvaW4oJycsJGMpOw0KfQ0KLy8gPT09PSBlbmQgZHNwRGF5Q2VsbHMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQovKioNCiogb3V0cHV0cyB0 aGUgY29udGVudHMgZm9yIGEgZ2l2ZW4gZGF5DQoqDQoqIEBwYXJhbSBpbnRlZ2VyLCBkYXkN CiogQGFic3RyYWN0DQoqLw0KZnVuY3Rpb24gZHNwRGF5Q2VsbCAoICRkYXkgKSB7DQoJcmV0 dXJuICc8dGQ+Jy4kZGF5Lic8L3RkPic7DQp9DQovLyA9PT09IGVuZCBkYXlDZWxsID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KfSAvLyBlbmQg Y2xhc3MNCg0KLy8gUGVyZm9ybSBvbmUgb2YgMiB0eXBlcyBvZiB0ZXN0OiBhIGZsYWctYmFz ZWQgdGVzdCwgb3IgYW4gaW5mby1iYXNlZCB0ZXN0DQpmdW5jdGlvbiBzbWRfaWZfY2FsKCRh dHRzLCAkdGhpbmcpIHsNCglnbG9iYWwgJHNtZF9jYWxfZmxhZywgJHNtZF9jYWxfaWQsICRz bWRfeWVhciwgJHNtZF9pc295ZWFyLCAkc21kX21vbnRoLCAkc21kX3dlZWssICRzbWRfZGF5 Ow0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdmbGFnJyA9PiAnJywgLy8gZXZlbnQsIHN0 YW5kYXJkLCByZWN1cihmaXJzdCksIG11bHRpKGZpcnN0LGxhc3QscHJldiksIGNhbmNlbCwg b21pdCwgaG9scywgdG9kYXksIFNNRF9BTlkNCgkJJ2NhbGlkJyA9PiAnJywNCgkJJ2lzb3ll YXInID0+ICcnLA0KCQkneWVhcicgPT4gJycsDQoJCSdtb250aCcgPT4gJycsDQoJCSd3ZWVr JyA9PiAnJywNCgkJJ2RheScgPT4gJycsDQoJCSdsb2dpYycgPT4gJ29yJywNCgkJJ2RlYnVn JyA9PiAnMCcsDQoJKSwgJGF0dHMpKTsNCg0KCSRmbGFnID0gZG9fbGlzdCgkZmxhZyk7DQoJ JGN0ciA9ICRudW0gPSAwOw0KDQoJaWYgKCRkZWJ1Zykgew0KCQlkbXAoJGF0dHMpOw0KCX0N Cg0KCWlmICgkZmxhZyAmJiAkZmxhZ1swXSAhPSAnJykgew0KCQkkbnVtICs9IGNvdW50KCRm bGFnKTsNCgkJZm9yZWFjaCAoJGZsYWcgYXMgJHdoYXRub3QpIHsNCgkJCWlmIChlbXB0eSgk d2hhdG5vdCkpIGNvbnRpbnVlOw0KCQkJJGN0ciArPSAoaW5fYXJyYXkoJHdoYXRub3QsICRz bWRfY2FsX2ZsYWcpIHx8ICgkd2hhdG5vdCA9PSAnU01EX0FOWScgJiYgIWVtcHR5KCRzbWRf Y2FsX2ZsYWcpKSkgPyAxIDogMDsNCgkJfQ0KCX0NCglpZiAoJGNhbGlkKSB7DQoJCSRudW0r KzsNCgkJJGN0ciArPSAoJHNtZF9jYWxfaWQgPT09ICRjYWxpZCkgPyAxIDogMDsNCgl9DQoJ Zm9yZWFjaCAoYXJyYXkoImlzb3llYXIiLCAieWVhciIsICJtb250aCIsICJ3ZWVrIiwgImRh eSIpIGFzICR0ZXN0KSB7DQoJCSR0ZXN0ZXIgPSAkJHRlc3Q7DQoJCSRnYmwgPSAnc21kXycu JHRlc3Q7DQoJCSRjb21wYXJlID0gJCRnYmw7DQoNCgkJaWYgKCR0ZXN0ZXIpIHsNCgkJCSRu dW0rKzsNCgkJCXByZWdfbWF0Y2goJy8oWyE9PD5dKyk/KFtcZF0rKS8nLCAkdGVzdGVyLCAk bWF0Y2hlcyk7DQoJCQlpZiAoJGRlYnVnKSB7DQoJCQkJZG1wKCJURVNUIElGOiAiLiAkY29t cGFyZS4gKCgkbWF0Y2hlc1sxXSkgPyAkbWF0Y2hlc1sxXSA6ICc9JykgLiAkbWF0Y2hlc1sy XSApOw0KCQkJfQ0KCQkJc3dpdGNoICgkbWF0Y2hlc1sxXSkgew0KCQkJCWNhc2UgIiEiOg0K CQkJCQkkY3RyICs9ICgkY29tcGFyZSE9JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJy ZWFrOw0KCQkJCWNhc2UgIj4iOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZT4kbWF0Y2hlc1sy XSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiPj0iOg0KCQkJCQkkY3RyICs9 ICgkY29tcGFyZT49JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNh c2UgIjwiOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZTwkbWF0Y2hlc1syXSkgPyAxIDogMDsN CgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiPD0iOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZTw9 JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJ CSRjdHIgKz0gKCRjb21wYXJlPT0kbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7 DQoJCQl9DQoJCX0NCgl9DQoJJHJlc3VsdCA9ICgoJGN0ciA9PT0gJG51bSAmJiAkbG9naWMg PT0gImFuZCIpIHx8ICRjdHIgPiAwICYmICRsb2dpYyA9PSAib3IiKSA/IHRydWUgOiBmYWxz ZTsNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkcmVzdWx0KSk7DQp9DQoNCmZ1 bmN0aW9uIHNtZF9jYWxfaW5mbygkYXR0cykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNh cnRpY2xlLCAkc21kX2NhbF9mbGFnLCAkc21kX2NhbF9pZCwgJHNtZF9pc295ZWFyLCAkc21k X3llYXIsICRzbWRfbW9udGgsICRzbWRfd2VlaywgJHNtZF9kYXk7DQoNCglleHRyYWN0KGxB dHRzKGFycmF5KA0KCQkndHlwZScgPT4gJ2ZsYWcnLCAvLyBmbGFnLCAoaXNvKXllYXIsIG1v bnRoLCB3ZWVrLCBkYXksIGNhbGlkLCBzZWN0aW9uLCBjYXRlZ29yeSwgYXV0aG9yDQoJCSdq b2luJyA9PiAnICcsDQoJCSdqb2luX3ByZWZpeCcgPT4gJ1NNRF9BVVRPJywNCgkJJ2h0bWwn ID0+IDAsDQoJCSdlc2NhcGUnID0+ICdodG1sJywNCgkpLCAkYXR0cykpOw0KDQoJJGpvaW4g PSAoJGh0bWwpID8gYSA6ICRqb2luOyAvLyBodG1sIG1vZGUgZm9yY2VzIGFtcGVyc2FuZCBq b2luDQoJJHR5cGUgPSBkb19saXN0KCR0eXBlKTsNCgkkcmV0ID0gYXJyYXkoKTsNCglmb3Jl YWNoICgkdHlwZSBhcyAkaXRlbSkgew0KCQlzd2l0Y2ggKCRpdGVtKSB7DQoJCQljYXNlICJm bGFnIjoNCgkJCQkkcmV0W10gPSAoKCRqb2luX3ByZWZpeD09IlNNRF9BVVRPIikgPyAkam9p biA6ICcnKS5qb2luKCRqb2luLCAkc21kX2NhbF9mbGFnKTsNCgkJCQlicmVhazsNCgkJCWNh c2UgImlzb3llYXIiOg0KCQkJCWlmICgkc21kX2lzb3llYXIpIHsNCgkJCQkJJHJldFtdID0g KCgkaHRtbCkgPyAneT0nIDogJycpIC4gJHNtZF9pc295ZWFyOw0KCQkJCX0NCgkJCQlicmVh azsNCgkJCWNhc2UgInllYXIiOg0KCQkJCWlmICgkc21kX3llYXIpIHsNCgkJCQkJJHJldFtd ID0gKCgkaHRtbCkgPyAneT0nIDogJycpIC4gJHNtZF95ZWFyOw0KCQkJCX0NCgkJCQlicmVh azsNCgkJCWNhc2UgIm1vbnRoIjoNCgkJCQlpZiAoJHNtZF9tb250aCkgew0KCQkJCQkkcmV0 W10gPSAoKCRodG1sKSA/ICdtPScgOiAnJykgLiAkc21kX21vbnRoOw0KCQkJCX0NCgkJCQli cmVhazsNCgkJCWNhc2UgIndlZWsiOg0KCQkJCWlmICgkc21kX3dlZWspIHsNCgkJCQkJJHJl dFtdID0gKCgkaHRtbCkgPyAndz0nIDogJycpIC4gJHNtZF93ZWVrOw0KCQkJCX0NCgkJCQli cmVhazsNCgkJCWNhc2UgImRheSI6DQoJCQkJaWYgKCRzbWRfZGF5KSB7DQoJCQkJCSRyZXRb XSA9ICgoJGh0bWwpID8gJ2Q9JyA6ICcnKSAuICRzbWRfZGF5Ow0KCQkJCX0NCgkJCQlicmVh azsNCgkJCWNhc2UgInNlY3Rpb24iOg0KCQkJCWlmICgkcHJldGV4dFsncyddKSB7DQoJCQkJ CSRyZXRbXSA9ICgoJGh0bWwpID8gJ3M9JyA6ICcnKSAuICRwcmV0ZXh0WydzJ107DQoJCQkJ fQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiY2F0ZWdvcnkiOg0KCQkJCWlmICgkcHJldGV4dFsn YyddKSB7DQoJCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJ2M9JyA6ICcnKSAuICRwcmV0ZXh0 WydjJ107DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiYXV0aG9yIjoNCgkJCQlpZiAo JHRoaXNhcnRpY2xlID09IE5VTEwpIHsNCgkJCQkJJGN1cnJhdXRob3IgPSAnJzsNCgkJCQl9 IGVsc2Ugew0KCQkJCQkkY3VycmF1dGhvciA9IGF1dGhvcihhcnJheSgpKTsNCgkJCQl9DQoJ CQkJaWYgKCRjdXJyYXV0aG9yKSB7DQoJCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJ2F1dGhv cj0nIDogJycpIC4gJGN1cnJhdXRob3I7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAi Y2FsaWQiOg0KCQkJCWlmICgkc21kX2NhbF9pZCkgew0KCQkJCQkkcmV0W10gPSAoKCRodG1s KSA/ICdjYWxpZD0nIDogJycpIC4gJHNtZF9jYWxfaWQ7DQoJCQkJfQ0KCQkJCWJyZWFrOw0K CQl9DQoJfQ0KCSRvdXQgPSAoKCRqb2luX3ByZWZpeD09IlNNRF9BVVRPIikgPyAoKCRodG1s KSA/ICc/JyA6ICcnKSA6ICRqb2luX3ByZWZpeCkuam9pbigkam9pbiwgJHJldCk7DQoJcmV0 dXJuICgkZXNjYXBlPT0naHRtbCcpID8gaHRtbHNwZWNpYWxjaGFycygkb3V0KSA6ICRvdXQ7 DQp9DQoNCmZ1bmN0aW9uIHNtZF9jYWxfbm93KCRhdHRzKSB7DQoJZ2xvYmFsICRkYXRlZm9y bWF0Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2Zvcm1hdCcgPT4gJGRhdGVmb3Jt YXQsDQoJCSdub3cnID0+ICcnLA0KCQknb2Zmc2V0JyA9PiAnJywNCgkJJ2dtdCcgPT4gJycs DQoJCSdsYW5nJyA9PiAnJywNCgkpLCAkYXR0cykpOw0KDQoJJHRoZURheSA9IChncHMoJ2Qn KSAmJiBpc19udW1lcmljKGdwcygnZCcpKSkgPyAoaW50KWdwcygnZCcpIDogc2FmZV9zdHJm dGltZSgnJWQnKTsNCgkkdGhlTW9udGggPSAoZ3BzKCdtJykgJiYgaXNfbnVtZXJpYyhncHMo J20nKSkpID8gKGludClncHMoJ20nKSA6IHNhZmVfc3RyZnRpbWUoJyVtJyk7DQoJJHRoZVll YXIgPSAoZ3BzKCd5JykgJiYgaXNfbnVtZXJpYyhncHMoJ3knKSkpID8gKGludClncHMoJ3kn KSA6IHNhZmVfc3RyZnRpbWUoJyVZJyk7DQoJaWYgKCRub3cpIHsNCgkJJG5vdyA9IHN0cl9y ZXBsYWNlKCI/bW9udGgiLCBkYXRlKCdGJywgZ21ta3RpbWUoMTIsMCwwLCR0aGVNb250aCwk dGhlRGF5LCR0aGVZZWFyKSksICRub3cpOw0KCQkkbm93ID0gc3RyX3JlcGxhY2UoIj95ZWFy IiwgJHRoZVllYXIsICRub3cpOw0KCQkkbm93ID0gc3RyX3JlcGxhY2UoIj9kYXkiLCAkdGhl RGF5LCAkbm93KTsNCgkJJG5vdyA9IHN0cnRvdGltZSgkbm93KTsNCgl9IGVsc2Ugew0KCQkk bm93ID0gdGltZSgpOw0KCX0NCg0KCWlmICgkb2Zmc2V0KSB7DQoJCSRub3cgPSBzdHJ0b3Rp bWUoJG9mZnNldCwgJG5vdyk7DQoJfQ0KDQoJcmV0dXJuIHNhZmVfc3RyZnRpbWUoJGZvcm1h dCwgJG5vdywgJGdtdCwgJGxhbmcpOw0KfQ0KDQovLyBTZXQgdXNlci1kZWZpbmVkIGNsYXNz ZXMgZm9yIGEgY2VsbA0KZnVuY3Rpb24gc21kX2NhbF9jbGFzcygkYXR0cykgew0KCWdsb2Jh bCAkc21kX2NhbF91Y2xzOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ25hbWUnID0+ ICcnLA0KCSksICRhdHRzKSk7DQoNCgkkbmFtZSA9IGRvX2xpc3QoJG5hbWUpOw0KCSRzbWRf Y2FsX3VjbHMgPSBhcnJheV9tZXJnZSgkc21kX2NhbF91Y2xzLCAkbmFtZSk7DQp9DQoNCi8v IDx0eHA6YXJ0aWNsZV9jdXN0b20gLz4gcmVwbGFjZW1lbnQoaXNoKSB0YWcgdGhhdCB1bmRl cnN0YW5kcyBob3cgdG8gaGFuZGxlIHJlY3VycmluZyBldmVudHMNCmZ1bmN0aW9uIHNtZF9h cnRpY2xlX2V2ZW50KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZWZzLCAkcHJl dGV4dCwgJHRoaXNwYWdlOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ3RpbWUnID0+ ICdhbnknLA0KCQkndHlwZScgPT4gJ3N0YW5kYXJkLHJlY3VyLG11bHRpJywgLy8gdHlwZSBv ZiBldmVudCB0byBzaG93DQoJCSdleHBpcmVkJyA9PiAnJywgLy8gMD1ubywgMT15ZXMgcHVi bGlzaCBleHBpcmVkIGV2ZW50cywgZW1wdHk9dXNlIHByZWZzDQoJCSdpZCcgPT4gJycsDQoJ CSdjYXRlZ29yeScgPT4gJycsDQoJCSdzZWN0aW9uJyA9PiAnJywNCgkJJ2F1dGhvcicgPT4g JycsDQoJCSdzdGF0dXMnID0+ICdsaXZlJywNCgkJJ3NvcnQnID0+ICcnLA0KCQknZm9ybScg PT4gJycsDQoJCSdzdGVwZmllbGQnID0+ICcnLA0KCQknc2tpcGZpZWxkJyA9PiAnJywNCgkJ J29taXRmaWVsZCcgPT4gJycsDQoJCSdtb250aCcgPT4gJycsDQoJCSdmcm9tJyA9PiAnJywg Ly8gc3RhcnQgZGF0ZQ0KCQkndG8nID0+ICcnLCAvLyBlbmQgZGF0ZQ0KCQknb2Zmc2V0JyA9 PiAwLA0KCQknbGltaXQnID0+ICcxMCcsDQoJCSdldmVudGxpbWl0JyA9PiAnMTAnLCAvLyBt YXggbnVtYmVyIG9mIHJlY3VycmluZyBldmVudHMgdG8gY3JlYXRlIHBlciByZWFsIGV2ZW50 DQoJCSdwYWdlYnknID0+ICcnLA0KCQkncGdvbmx5JyA9PiAnJywNCgkJJ3dyYXB0YWcnID0+ ICcnLA0KCQknYnJlYWsnID0+ICcnLA0KCQknY2xhc3MnID0+ICcnLA0KCQknZGVidWcnID0+ IDAsDQoJKSwgJGF0dHMpKTsNCg0KCS8vIFBoYXNlIDEgZmlsdGVycw0KCSRmaWx0U1FMID0g JHN1YlNRTCA9IGFycmF5KCk7DQoJaWYoJGNhdGVnb3J5KSB7DQoJCSR0bXAgPSBkb1F1b3Rl KGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkY2F0ZWdvcnkpKSkpOw0KCQkkZmlsdFNR TFtdID0gJyggQ2F0ZWdvcnkxIElOICgnLiR0bXAuJykgT1IgQ2F0ZWdvcnkyIElOICgnLiR0 bXAuJykgKSc7DQoJfQ0KCWlmKCRzZWN0aW9uKSB7DQoJCSRmaWx0U1FMW10gPSAnU2VjdGlv biBJTiAoJy5kb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkc2VjdGlvbikp KSkuJyknOw0KCX0NCglpZigkYXV0aG9yKSB7DQoJCSRmaWx0U1FMW10gPSAnQXV0aG9ySUQg SU4gKCcuZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGF1dGhvcikpKSku JyknOw0KCX0NCglpZigkaWQpIHsNCgkJJGZpbHRTUUxbXSA9ICdJRCBJTiAoJy5qb2luKCcs JywgYXJyYXlfbWFwKCdpbnR2YWwnLCBkb19saXN0KCRpZCkpKS4nKSc7DQoJfQ0KCSR0eXBl ID0gZG9fbGlzdCgkdHlwZSk7DQoJJHBhZ2VieSA9IChlbXB0eSgkcGFnZWJ5KSA/ICRsaW1p dCA6ICRwYWdlYnkpOw0KDQoJZm9yZWFjaCAoJHR5cGUgYXMgJGV2dHlwKSB7DQoJCXN3aXRj aCgkZXZ0eXApIHsNCgkJCWNhc2UgJ3N0YW5kYXJkJzoNCgkJCQlpZiAoJHN0ZXBmaWVsZCkg ew0KCQkJCQkkc3ViU1FMW10gPSAiKCIuJHN0ZXBmaWVsZC4iID0gJycgQU5EIEV4cGlyZXMg PSAiLk5VTExEQVRFVElNRS4iKSI7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAncmVj dXInOg0KCQkJCWlmICgkc3RlcGZpZWxkKSB7DQoJCQkJCSRzdWJTUUxbXSA9ICIoIi4kc3Rl cGZpZWxkLiIgIT0gJycpIjsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICdtdWx0aSc6 DQoJCQkJaWYgKCRzdGVwZmllbGQpIHsNCgkJCQkJJHN1YlNRTFtdID0gIigiLiRzdGVwZmll bGQuIiA9ICcnIEFORCBFeHBpcmVzICE9ICIuTlVMTERBVEVUSU1FLiIpIjsNCgkJCQl9DQoJ CQkJYnJlYWs7DQoJCX0NCgl9DQoJaWYgKCRzdWJTUUwpIHsNCgkJJGZpbHRTUUxbXSA9ICco Jy5qb2luKCcgT1IgJywgJHN1YlNRTCkuJyknOw0KCX0NCg0KCSRzdGF0dXMgPSAoJHN0YXR1 cykgPyAkc3RhdHVzIDogJ2xpdmUnOyAvLyBpbiBjYXNlIHN0YXR1cyBoYXMgYmVlbiBlbXB0 aWVkDQoJJHN0YXR1cyA9IGRvX2xpc3QoJHN0YXR1cyk7DQoJJHN0YXRpID0gYXJyYXkoKTsN Cglmb3JlYWNoICgkc3RhdHVzIGFzICRzdGF0KSB7DQoJCWlmIChlbXB0eSgkc3RhdCkpIHsN CgkJCWNvbnRpbnVlOw0KCQl9IGVsc2UgaWYgKGlzX251bWVyaWMoJHN0YXQpKSB7DQoJCQkk c3RhdGlbXSA9ICRzdGF0Ow0KCQl9IGVsc2Ugew0KCQkJJHN0YXRpW10gPSBnZXRTdGF0dXNO dW0oJHN0YXQpOw0KCQl9DQoJfQ0KCSRmaWx0U1FMW10gPSAnU3RhdHVzIElOICgnLmRvUXVv dGUoam9pbigiJywnIiwgJHN0YXRpKSkuJyknOw0KDQoJJGV4cGlyZWQgPSAoJGV4cGlyZWQp ID8gJGV4cGlyZWQgOiAkcHJlZnNbJ3B1Ymxpc2hfZXhwaXJlZF9hcnRpY2xlcyddOw0KCWlm ICghJGV4cGlyZWQpIHsNCgkJJGZpbHRTUUxbXSA9ICcobm93KCkgPD0gRXhwaXJlcyBPUiBF eHBpcmVzID0gJy5OVUxMREFURVRJTUUuJyknOw0KCX0NCg0KCS8vIFNvcnRpbmcgcnVsZXM6 IGRhdGEgaXMgc29ydGVkIG9uY2UgYXMgaXQgaXMgZXh0cmFjdGVkIHZpYSBTUUwgYW5kIHRo ZW4gYWdhaW4gYWZ0ZXIgdGhlIGZha2UgZGF0ZXMgaGF2ZSBiZWVuIGluc2VydGVkDQoJJHNv cnQgPSAoZW1wdHkoJHNvcnQpKSA/ICdQb3N0ZWQgYXNjJyA6ICRzb3J0Ow0KCSRzb3J0ID0g ZG9fbGlzdCgkc29ydCk7DQoJJHNvcnRQcmVmaXggPSAiU09SVF8iOw0KCSRzb3J0T3JkZXIg PSBhcnJheSgpOw0KCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkc29ydCk7ICRpZHgr Kykgew0KCQkkc29ydGllcyA9IGV4cGxvZGUoJyAnLCAkc29ydFskaWR4XSk7DQoJCWlmIChj b3VudCgkc29ydGllcykgPD0gMSkgew0KCQkJJHNvcnRpZXNbMV0gPSAiYXNjIjsNCgkJfQ0K CQkkc29ydGllc1sxXSA9ICRzb3J0UHJlZml4LigoJHNvcnRpZXNbMV0gPT0gImRlc2MiKSA/ ICdERVNDJyA6ICdBU0MnKTsNCgkJJHNvcnRPcmRlcltdID0gYXJyYXkoImJ5IiA9PiAkc29y dGllc1swXSwgImRpciIgPT4gJHNvcnRpZXNbMV0pOw0KCX0NCg0KCSRmaWx0U1FMID0gam9p bignIEFORCAnLCAkZmlsdFNRTCk7DQoJJGZpbHRTUUwgLj0gJyBPUkRFUiBCWSAnLmpvaW4o JywnLGRvU2xhc2goJHNvcnQpKTsNCg0KCSRncmFiQ29scyA9ICcqLCB1bml4X3RpbWVzdGFt cChQb3N0ZWQpIGFzIHVQb3N0ZWQsIHVuaXhfdGltZXN0YW1wKExhc3RNb2QpIGFzIHVMYXN0 TW9kLCB1bml4X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcyc7DQoJJGV2bGlzdCA9 IHNhZmVfcm93cygkZ3JhYkNvbHMsICd0ZXh0cGF0dGVybicsICRmaWx0U1FMLCAkZGVidWcp Ow0KDQoJaWYgKCRkZWJ1Zz4yKSB7DQoJCWVjaG8gIisrIFJFQ09SRCBTRVQgKysiOw0KCQlk bXAoJGV2bGlzdCk7DQoJfQ0KCSRhbGxfZXZzID0gJGV2X3RhbGx5ID0gYXJyYXkoKTsNCgkk bm93ID0gdGltZSgpOw0KDQoJLy8gUGhhc2UgMjogZXhwYW5kIGFueSByZWN1cnJpbmcgZGF0 ZXMgYW5kIGNvbGxhdGUgYWxsIGV2ZW50cyB0aGF0IGZhbGwgd2l0aGluIHRoZSBhbGxvdGVk IHJhbmdlcw0KCWZvcmVhY2ggKCRldmxpc3QgYXMgJHJvdykgew0KCQkkZXZfcG9zdGVkID0g JHJvd1sndVBvc3RlZCddOw0KCQkkZXZfZXhwaXJlcyA9ICRyb3dbJ3VFeHBpcmVzJ107DQoJ CSRldl9kYXkgPSBkYXRlKCdqJywgJGV2X3Bvc3RlZCk7DQoJCSRldl9tb250aCA9IGRhdGUo J20nLCAkZXZfcG9zdGVkKTsNCgkJJGV2X3llYXIgPSBkYXRlKCdZJywgJGV2X3Bvc3RlZCk7 DQoJCSRldl9ociA9IGRhdGUoJ0gnLCAkZXZfcG9zdGVkKTsNCgkJJGV2X21pbiA9IGRhdGUo J2knLCAkZXZfcG9zdGVkKTsNCgkJJGV2X3NlYyA9IGRhdGUoJ3MnLCAkZXZfcG9zdGVkKTsN CgkJJGlnbm9yZSA9IGFycmF5KCk7DQoNCgkJLy8gR2VuZXJhdGUgYSBza2lwIGFycmF5IGZv ciB0aGlzIGV2ZW50DQoJCWlmICgkc2tpcGZpZWxkICYmICRyb3dbJHNraXBmaWVsZF0gIT0g JycpIHsNCgkJCSRpZ25vcmUgPSBkb19saXN0KCRyb3dbJHNraXBmaWVsZF0pOw0KCQkJZm9y ZWFjaCAoJGlnbm9yZSBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCQkkaWdub3JlWyRrZXldID0g ZGF0ZSgiZC1NLVkiLCBzdHJ0b3RpbWUoJHZhbCkpOyAvLyBGb3JjZSBlYWNoIGRhdGUgdG8g YSBrbm93biBmb3JtYXQNCgkJCX0NCgkJfQ0KCQkvLyBBcHBlbmQgYW55IG9taXR0ZWQgZXZl bnRzDQoJCWlmICgkb21pdGZpZWxkICYmICRyb3dbJG9taXRmaWVsZF0gIT0gJycpIHsNCgkJ CSRvbWl0ID0gZG9fbGlzdCgkcm93WyRvbWl0ZmllbGRdKTsNCgkJCWZvcmVhY2ggKCRvbWl0 IGFzICRrZXkgPT4gJHZhbCkgew0KCQkJCSRpZ25vcmVbJGtleV0gPSBkYXRlKCJkLU0tWSIs IHN0cnRvdGltZSgkdmFsKSk7DQoJCQl9DQoJCX0NCgkJaWYgKCRkZWJ1ZyA+IDEgJiYgJGln bm9yZSkgew0KCQkJZWNobyAnKysgSUdOT1JFRCBEQVRFUyArKyc7DQoJCQlkbXAoJGlnbm9y ZSk7DQoJCX0NCg0KCQkvLyBEb2VzIHRoZSBldmVudCBkZXNlcnZlIHRvIGJlIGluIHRoZSBy ZXN1bHRzPw0KCQlpZiAoc21kX2luY2x1ZGVfZXZlbnQoJGV2X3Bvc3RlZCwgJG5vdywgJGln bm9yZSwgJHRpbWUsICRmcm9tLCAkdG8sICRtb250aCkpIHsNCgkJCSRhbGxfZXZzW10gPSAk cm93Ow0KCQkJJGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCddXSA9IChpc3NldCgkZXZfdGFsbHlb JHJvd1snUG9zdGVkJ11dKSkgPyAkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dKzEgOiAxOw0K CQl9DQoNCgkJaWYgKCRzdGVwZmllbGQgJiYgJHJvd1skc3RlcGZpZWxkXSAhPSAnJykgew0K CQkJJGZyZXEgPSBkb19saXN0KCRyb3dbJHN0ZXBmaWVsZF0pOw0KCQkJJG1vbnRobHkgPSBm YWxzZTsNCgkJCSRjdXJyc3RhbXAgPSAkZXZfcG9zdGVkOw0KCQkJJGN1cnJtb250aCA9ICRl dl9tb250aDsNCgkJCSRjdXJyeWVhciA9ICRldl95ZWFyOw0KCQkJZm9yZWFjaCAoJGZyZXEg YXMgJGludGVydmFsKSB7DQoJCQkJJGZha2Vyb3cgPSAkcm93Ow0KCQkJCSRzdGFtcG9mZiA9 IDA7DQoJCQkJZm9yKCRpZHggPSAwOyAkaWR4IDwgOTk5OTk7ICRpZHgrKykgew0KCQkJCQkk bGFzdGFtcCA9ICRjdXJyc3RhbXA7DQoJCQkJCWlmICgoaXNzZXQoJGV2X3RhbGx5WyRyb3db J1Bvc3RlZCddXSkgJiYgKCRldl90YWxseVskcm93WydQb3N0ZWQnXV0gPj0gJGV2ZW50bGlt aXQpKSB8fCAoJHRvICYmICRjdXJyc3RhbXAgPiBzdHJ0b3RpbWUoJHRvKSkpIHsNCgkJCQkJ CWJyZWFrOw0KCQkJCQl9DQoJCQkJCSRpdmFsID0gc3RyX3JlcGxhY2UoIj9tb250aCIsIGRh dGUoJ0YnLCBnbW1rdGltZSgwLDAsMCwkY3Vycm1vbnRoLDEpKSwgJGludGVydmFsKTsNCgkJ CQkJJGl2YWwgPSBzdHJfcmVwbGFjZSgiP3llYXIiLCAkY3VycnllYXIsICRpbnRlcnZhbCk7 DQoNCgkJCQkJaWYgKHN0cnBvcygkaXZhbCwgImxhc3QiKSA9PT0gMCkgew0KCQkJCQkJJGl2 YWwgPSBkYXRlKCJsLCBGIGpTIFkiLCBzdHJ0b3RpbWUoJGl2YWwsIG1rdGltZSgxMiwgMCwg MCwgZGF0ZSgibiIsbWt0aW1lKDAsMCwwLCRjdXJybW9udGgsMSwkY3VycnllYXIpKSsxLCAx LCAkY3VycnllYXIpKSk7DQoJCQkJCQkkbW9udGhseSA9IHRydWU7DQoJCQkJCX0gZWxzZSBp ZiAoc3RycG9zKCRpdmFsLCAiZmlyc3QiKSA9PT0gMCkgew0KCQkJCQkJJGl2YWwgPSBkYXRl KCJsLCBGIGpTIFkiLCBzdHJ0b3RpbWUoJGl2YWwsIG1rdGltZSgxMiwgMCwgMCwgKCgkY3Vy cm1vbnRoPjEpID8gJGN1cnJtb250aC0xIDogMTIpLCBkYXRlKCJ0Iixta3RpbWUoMCwwLDAs JGN1cnJtb250aC0xLDEsKCgkY3Vycm1vbnRoPT0xKSA/ICRjdXJyeWVhci0xOiAkY3Vycnll YXIpKSksICgoJGN1cnJtb250aD09MSkgPyAkY3VycnllYXItMTogJGN1cnJ5ZWFyKSkpKTsN CgkJCQkJCSRtb250aGx5ID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCQlpZiAoJG1vbnRobHkpIHsN CgkJCQkJCSRjdXJyc3RhbXAgPSBzdHJ0b3RpbWUoJGl2YWwpOw0KCQkJCQkJJHN0YW1wb2Zm ID0gKCRzdGFtcG9mZj09MCkgPyAoaW50KSgzNjAwKiRldl9ocikgKyAoaW50KSg2MCokZXZf bWluKSArIChpbnQpJGV2X3NlYyA6ICRzdGFtcG9mZjsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJ CSRjdXJyc3RhbXAgPSBzdHJ0b3RpbWUoJGl2YWwsICRjdXJyc3RhbXApOw0KCQkJCQl9DQoJ CQkJCS8vIFRoaXMga2x1ZGdlIGlzIHRvIHRha2UgYWNjb3VudCBvZiB0aW1lc3RhbXBzIGxp a2UgImxhc3QgVGh1cnNkYXkiIChvZiB0aGUgbW9udGgpLiBUaGUgbGFzdCAnd2hhdGV2ZXIg ZGF5JyBvZg0KCQkJCQkvLyBhIG1vbnRoIGNhbiBvbmx5IGJlIGEgbWF4aW11bSBvZiAzMSBk YXlzIGJlZm9yZSB0aGUgbGFzdCB0aW1lc3RhbXAgd2Ugc2F3LCBzbyBjaGVjayBmb3IgdGhh dCAoZ2l2ZSBvciB0YWtlIDEwIG1pbnMpDQoJCQkJCSRkaWZmc3RhbXAgPSAkY3VycnN0YW1w IC0gJGxhc3RhbXA7DQoJCQkJCWlmICgkZGlmZnN0YW1wIDwgMCkgew0KCQkJCQkJaWYgKCRk aWZmc3RhbXAgPiAtKDYwKjYwKjI0KjMxKSs2MDApIHsNCgkJCQkJCQkkY3VycnN0YW1wID0g ZmFsc2U7IC8vIEp1c3Qgc29tZSAnbGFzdCB3ZWVrZGF5JyBvZiB0aGUgcHJldmlvdXMgbW9u dGgNCgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJYnJlYWs7IC8vIFBIUF9JTlRfTUFYIGV4Y2Vl ZGVkDQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJaWYgKCRjdXJyc3RhbXAgIT09IGZhbHNlKSB7 DQoJCQkJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCQkJCWRtcCgiSU5URVJWQUw6ICIuICRj dXJyc3RhbXAgLiAnIC8vICcgLmRhdGUoJ2QtTS1ZIEg6aTpzJywgJGN1cnJzdGFtcCkpOw0K CQkJCQkJfQ0KDQoJCQkJCQlpZiAoKCRjdXJyc3RhbXAgPCAkZXZfZXhwaXJlcyB8fCAkZXZf ZXhwaXJlcyA9PSAnMCcpICYmICgkY3VycnN0YW1wICE9ICRldl9wb3N0ZWQpKSB7DQoJCQkJ CQkJJHNob3dfbWUgPSBzbWRfaW5jbHVkZV9ldmVudCgkY3VycnN0YW1wLCAkbm93LCAkaWdu b3JlLCAkdGltZSwgJGZyb20sICR0bywgJG1vbnRoKTsNCgkJCQkJCQlpZiAoJHNob3dfbWUp IHsNCgkJCQkJCQkJJGZha2Vyb3dbJ1Bvc3RlZCddID0gZGF0ZSgiWS1tLWQgSDppOnMiLCAk Y3VycnN0YW1wKyRzdGFtcG9mZik7DQoJCQkJCQkJCSRmYWtlcm93Wyd1UG9zdGVkJ10gPSAk Y3VycnN0YW1wKyRzdGFtcG9mZjsNCgkJCQkJCQkJJGFsbF9ldnNbXSA9ICRmYWtlcm93Ow0K CQkJCQkJCQkkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dID0gKGlzc2V0KCRldl90YWxseVsk cm93WydQb3N0ZWQnXV0pKSA/ICRldl90YWxseVskcm93WydQb3N0ZWQnXV0rMSA6IDE7DQoJ CQkJCQkJfQ0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQlicmVhazsNCgkJCQkJCX0NCgkJCQkJ fQ0KCQkJCQkvLyBJbmNyZW1lbnQgdGhlIG1vbnRoL3llYXIgcmVhZHkgZm9yIHRoZSBuZXh0 IGludGVydmFsDQoJCQkJCWlmICgkbW9udGhseSkgew0KCQkJCQkJJGN1cnJ5ZWFyID0gKCRj dXJybW9udGg9PTEyKSA/ICRjdXJyeWVhcisxIDogJGN1cnJ5ZWFyOw0KCQkJCQkJJGN1cnJt b250aCA9ICgkY3Vycm1vbnRoPT0xMikgPyAxIDogJGN1cnJtb250aCsxOw0KCQkJCQl9DQoJ CQkJfQ0KCQkJCWlmICgkZGVidWc+MSkgew0KCQkJCQlpZiAoaXNzZXQoJGV2X3RhbGx5WyRy b3dbJ1Bvc3RlZCddXSkpIHsNCgkJCQkJCWRtcCgiVEFMTFk6ICIuICRldl90YWxseVskcm93 WydQb3N0ZWQnXV0pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJaWYgKCRk ZWJ1Zz4yKSB7DQoJCWVjaG8gIisrIFBSRS1TT1JURUQgKysiOw0KCQlkbXAoJGFsbF9ldnMp Ow0KCX0NCg0KCS8vIE1ha2UgdXAgYW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBl eGVjdXRlIGl0DQoJZm9yZWFjaCgkYWxsX2V2cyBhcyAka2V5ID0+ICRyb3cpIHsNCgkJZm9y ZWFjaCAoJHJvdyBhcyAkaWRlbnRpZmllciA9PiAkaXRlbSkgew0KCQkJJHZhcm5hbWUgPSAi Y29sXyIuJGlkZW50aWZpZXI7DQoJCQkkeyR2YXJuYW1lfVska2V5XSA9ICRpdGVtOw0KCQl9 DQoJfQ0KCWlmKGNvdW50KCRhbGxfZXZzKSA+IDApIHsNCgkJZm9yICgkaWR4ID0gMDsgJGlk eCA8IGNvdW50KCRzb3J0T3JkZXIpOyAkaWR4KyspIHsNCgkJCSRzb3J0YXJnc1tdID0gJyRj b2xfJy4kc29ydE9yZGVyWyRpZHhdWydieSddOw0KCQkJJHNvcnRhcmdzW10gPSAkc29ydE9y ZGVyWyRpZHhdWydkaXInXTsNCgkJfQ0KCQkkc29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgn LmltcGxvZGUoIiwgIiwkc29ydGFyZ3MpLicsICRhbGxfZXZzKTsnOw0KCQlldmFsKCRzb3J0 aXQpOw0KCX0NCg0KCWlmICgkZGVidWc+Mikgew0KCQllY2hvICIrKyBQT1NULVNPUlRFRCAr KyI7DQoJCWRtcCgkYWxsX2V2cyk7DQoJfQ0KDQoJLy8gSGFuZGxlIHBhZ2luZw0KCSRncmFu ZF90b3RhbCA9IGNvdW50KCRhbGxfZXZzKTsNCgkkdG90YWwgPSAkZ3JhbmRfdG90YWwgLSAk b2Zmc2V0Ow0KCSRudW1QYWdlcyA9IGNlaWwoJHRvdGFsLyRwYWdlYnkpOw0KCSRwZyA9ICgh JHByZXRleHRbJ3BnJ10pID8gMSA6ICRwcmV0ZXh0WydwZyddOw0KCSRwZ29mZnNldCA9ICRv ZmZzZXQgKyAoKCRwZyAtIDEpICogJHBhZ2VieSk7DQoJLy8gc2VuZCBwYWdpbmcgaW5mbyB0 byB0eHA6bmV3ZXIgYW5kIHR4cDpvbGRlcg0KCSRwYWdlb3V0WydwZyddID0gJHBnOw0KCSRw YWdlb3V0WydudW1QYWdlcyddID0gJG51bVBhZ2VzOw0KCSRwYWdlb3V0WydzJ10gPSAkcHJl dGV4dFsncyddOw0KCSRwYWdlb3V0WydjJ10gPSAkcHJldGV4dFsnYyddOw0KCSRwYWdlb3V0 WydncmFuZF90b3RhbCddID0gJGdyYW5kX3RvdGFsOw0KCSRwYWdlb3V0Wyd0b3RhbCddID0g JHRvdGFsOw0KDQoJaWYgKGVtcHR5KCR0aGlzcGFnZSkpDQoJCSR0aGlzcGFnZSA9ICRwYWdl b3V0Ow0KCWlmICgkcGdvbmx5KQ0KCQlyZXR1cm47DQoNCgkvLyBQaGFzZSAzOiBpdGVyYXRl IG92ZXIgdGhlIG5ldyBhcnJheSBvYmV5aW5nIGFueSBvZmZzZXQvbGltaXQuIEFueXRoaW5n IGluIHRoZSByYW5nZSBnZXRzIHBvcHVsYXRlZCBhbmQgcGFyc2VkDQoJJG91dCA9IGFycmF5 KCk7DQoJJGN0ciA9IDA7DQoJYXJ0aWNsZV9wdXNoKCk7DQoJZm9yZWFjaCAoJGFsbF9ldnMg YXMgJGlkeCA9PiAkcm93KSB7DQoJCWlmICgkaWR4ID49ICRwZ29mZnNldCAmJiAkY3RyIDwg JGxpbWl0KSB7DQoJCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJJG91dFtdID0g KCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDogKCgkZm9ybSkgPyBwYXJzZV9mb3JtKCRmb3Jt KSA6IGhyZWYoJHJvd1snUG9zdGVkJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSIn LiRyb3dbJ1RpdGxlJ10uJyInKSApOw0KCQkJJGN0cisrOw0KCQl9DQoJfQ0KCWFydGljbGVf cG9wKCk7DQoJcmV0dXJuIGRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3Mp Ow0KfQ0KDQovLyBDaGVjayB0aGUgcGFzc2VkIHRpbWVzdGFtcCBhZ2FpbnN0IGV2ZXJ5IHRp bWUgcmVzdHJpY3Rpb24gYW5kIHJldHVybiB0cnVlIGlmIGl0IHBhc3NlcyB0aGVtIGFsbA0K ZnVuY3Rpb24gc21kX2luY2x1ZGVfZXZlbnQoJHRzLCAkbm93LCAkaWduLCAkdGltZSwgJGZy b20sICR0bywgJG1vbnRoKSB7DQoJJHNob3cgPSBhcnJheSgpOw0KCSRzaG93W10gPSAhaW5f YXJyYXkoZGF0ZSgiZC1NLVkiLCAkdHMpLCAkaWduKTsNCglzd2l0Y2goJHRpbWUpIHsNCgkJ Y2FzZSAiYW55IjogYnJlYWs7DQoJCWNhc2UgImZ1dHVyZSI6ICRzaG93W10gPSAoJHRzID4g JG5vdykgPyB0cnVlIDogZmFsc2U7IGJyZWFrOw0KCQlkZWZhdWx0IDogJHNob3dbXSA9ICgk dHMgPCAkbm93KSA/IHRydWUgOiBmYWxzZTsgYnJlYWs7IC8vIFRoZSBwYXN0DQoJfQ0KCWlm ICgkZnJvbSkgeyAkc2hvd1tdID0gKCR0cyA+PSBzdHJ0b3RpbWUoJGZyb20pKSA/IHRydWUg OiBmYWxzZTsgfQ0KCWlmICgkdG8pIHsgJHNob3dbXSA9ICgkdHMgPD0gc3RydG90aW1lKCR0 bykpID8gdHJ1ZSA6IGZhbHNlOyB9DQoJaWYgKCRtb250aCkgeyAkc2hvd1tdID0gKGRhdGUo IlktbSIsICR0cykgPT0gJG1vbnRoKSA/IHRydWUgOiBmYWxzZTsgfQ0KDQoJcmV0dXJuICgh aW5fYXJyYXkoMCwgJHNob3cpKSA/IHRydWUgOiBmYWxzZTsNCn0iO3M6NDoidHlwZSI7czox OiIwIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NDoiaGVscCI7czo2NTQzMzoiCTxwPjxkaXYg aWQ9InNtZF9oZWxwIj48L3A+CgoJPGgxIGlkPSJ0b3AiPnNtZF9jYWxlbmRhcjwvaDE+CgoJ PHA+UmVuZGVyIGEgY2FsZW5kYXIgd2l0aCBvbmUgb3IgbW9yZSBhcnRpY2xlcyBhcyBldmVu dHMgb24gZWFjaCBkYXkuIFVzZWZ1bCBmb3IgZ2lnIGd1aWRlcywgJiM4MjIwO3doYXQmIzgy MTc7cyBvbiYjODIyMTsgb3Igc2NoZWR1bGluZy48L3A+CgoJPGgyIGlkPSJmZWF0dXJlcyI+ RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+RnVsbC1zaXplIG9yIG1pbmkgPGEgaHJlZj0i I3NtZGNhbCI+Y2FsZW5kYXI8L2E+IGJ5IG1vbnRoLCB3aXRoIG9wdGlvbmFsIDxzcGFuIGNs YXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsgZGlzcGxheTwvbGk+CgkJPGxpPk5hdmlnYXRp b246IG5leHQvcHJldiBtb250aCBvciBvcHRpb25hbCBkcm9wZG93biBvZiBtb250aCAvIHll YXIuIFBlcm1pdHRlZCB5ZWFyIHJhbmdlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGZpcnN0L2xh c3QgYXJ0aWNsZSBvciBleHRlbmRlZCBieSArLy0gTiB5ZWFycyBpbiBlaXRoZXIgZGlyZWN0 aW9uPC9saT4KCQk8bGk+T25lIGFydGljbGUgPSBvbmUgZXZlbnQsIG5hdGl2ZSB0byA8c3Bh biBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB3aXRoIHRoZSBQb3N0ZWQgZGF0ZSBiZWluZyB0 aGUgZGF0ZSBpdCBhcHBlYXJzIGluIHRoZSBjYWxlbmRhcjwvbGk+CgkJPGxpPkZpbHRlciBl dmVudHMgYnkgY2F0ZWdvcnkgLyBzZWN0aW9uIC8gYXV0aG9yIC8gc3RhdHVzIC8gdGltZSBv ciBleHBpcnk8L2xpPgoJCTxsaT5Ob21pbmF0ZSBhIGN1c3RvbSBmaWVsZCB0byBzcGVjaWZ5 IGV2ZW50IGZyZXF1ZW5jeSAoMSB3ZWVrIG9yIDEwIGRheXMgb3IgMyBtb250aHMsIGV0Yyku IE11bHRpcGxlIGZyZXF1ZW5jaWVzIGNhbiBiZSBnaXZlbjwvbGk+CgkJPGxpPk5vbWluYXRl IGN1c3RvbSBmaWVsZHMgZm9yIGV4Y2x1c2lvbnMgKGEgbGlzdCBvZiBkYXRlcyBvbiB3aGlj aCB0aGF0IGV2ZW50IGlzIGNhbmNlbGxlZC9vbWl0dGVkKS4gT3B0aW9uIHRvIGVpdGhlciBz aG93IGNhbmNlbGxlZCBldmVudHMgb24gdGhhdCBkYXkgc28geW91IGNhbiBzdHlsZSB0aGVt IGRpZmZlcmVudGx5LCBvciByZW1vdmUgdGhlbSBjb21wbGV0ZWx5PC9saT4KCQk8bGk+U2hv dyBzcGFubmVkIGV2ZW50cyAob25lcyB0aGF0IGxhc3QgbW9yZSB0aGFuIGEgZGF5KSBiYXNl ZCBvbiB0aGUgYXJ0aWNsZeKAmXMgZXhwaXJ5LiBBbnkgZXZlbnQgdGhhdCBkb2VzIDxzcGFu IGNsYXNzPSJjYXBzIj5OT1Q8L3NwYW4+IHJlY3VyIGFuZCBoYXMgYSBmdXR1cmUgZXhwaXJ5 IGNhbiBiZSB0cmVhdGVkIHRoaXMgd2F5PC9saT4KCQk8bGk+RnV0dXJlLCBleHBpcmVkIG9y IHN0aWNreSBldmVudHMgbWF5IGJlIGRpc3BsYXllZCBpZiB5b3Ugd2lzaDwvbGk+CgkJPGxp PlNwZWNpZnkgaG9saWRheXMgb24gYSBwZXIgY2FsZW5kYXIgYmFzaXMgKGVpdGhlciByZWN1 cnJpbmcgZXZlbnRzICYjODIxMjsgd2l0aG91dCB5ZWFyICYjODIxMjsgb3Igc3BlY2lmaWMg aG9saWRheXMpLiBEZWZpbmUgdGhlIGxpc3QgZWl0aGVyIGRpcmVjdGx5IGluIHRoZSBwbHVn aW4gYXR0cmlidXRlIG9yIGluIGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29k ZT4gb2YgeW91ciBjaG9pY2UgYW5kIGRlY2lkZSB3aGljaCB0eXBlcyBvZiBldmVudCBhcmUg dG8gYmUgY2FuY2VsbGVkIGR1ZSB0byBob2xpZGF5czwvbGk+CgkJPGxpPkVhY2ggZXZlbnQg Y2FuIGJlIHBhc3NlZCB0byBhIGZvcm0vY29udGFpbmVyIHNvIHlvdSBjYW4gYnVpbGQgaXQg eW91ciB3YXksIG9yIHVzZSB0aGUgYnVpbHQtaW4gaHlwZXJsaW5rZWQgdGl0bGUuIFNwYW5u ZWQgYW5kL29yIHJlY3VycmluZyBldmVudHMgY2FuIGJlIHNlbnQgdG8gYSBzZXBhcmF0ZSBm b3JtIGlmIHlvdSB3aXNoLiBBbHRlcm5hdGl2ZWx5LCBzZW5kIHRoZSBlbnRpcmUgY2VsbCB0 byBhIGZvcm0gYW5kIHN0eWxlIGl0IHlvdXIgd2F5PC9saT4KCQk8bGk+PGEgaHJlZj0iI2lm Y2FsIj5Db25kaXRpb25hbDwvYT4gdGVzdHMgZm9yIGZsYWdzIChzdGFuZGFyZCwgcmVjdXJy aW5nLCBzcGFubmVkLCBjYW5jZWxsZWQsIGhvbGlkYXlzKSBhbmQgZGF0ZXMgc28geW91IGNh biBidWlsZCB5b3VyIG93biBsb2dpYyBpbiB5b3VyIGZvcm1zL2NvbnRhaW5lcjwvbGk+CgkJ PGxpPkNsYXNzIHNvdXA6IHRhYmxlLSwgcm93LSwgY2VsbC0sIGFuZCBldmVudC1sZXZlbCBj bGFzc2VzIGZvciBpbmRpY2F0aW5nIGRpZmZlcmVudCBzY2VuYXJpb3MgKHNwYW5uZWQgZXZl bnQsIHJlY3VycmluZyBldmVudCwgY2FuY2VsbGVkIGV2ZW50LCBldGMpOyBjdXN0b20gY2xh c3NlcyBjYW4gYmUgc3BlY2lmaWVkIGJhc2VkIG9uIGFuIGV2ZW50PC9saT4KCQk8bGk+VGFn IHRvIDxhIGhyZWY9IiNhcnRldiI+ZGlzcGxheSByZWN1cnJpbmcgZXZlbnRzPC9hPjwvbGk+ CgkJPGxpPlRhZyB0byBvdXRwdXQgdmFyaW91cyBldmVudCBvciBjYWxlbmRhciA8YSBocmVm PSIjY2FsaW5mbyI+Y2hhcmFjdGVyaXN0aWNzPC9hPiAoZS5nLiB0aGUgbW9udGgsIHllYXIs IGNhbGVuZGFyIGlkLCBzZWN0aW9uIGFuZCBzbyBvbik8L2xpPgoJCTxsaT5UYWcgdG8gb3V0 cHV0IHRoZSA8YSBocmVmPSIjY2Fsbm93Ij5jdXJyZW50IGRhdGUvdGltZTwvYT4gKGZvcm1h dHRlZCBob3cgeW91IGxpa2UpPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJhdXRob3IiPkF1dGhv ciAvIGNyZWRpdHM8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9j b21tZW50Rm9ybSI+U3RlZiBEYXdzb248L2E+LiBKb2ludGx5IGZ1bmRlZCBieSBnZW5lcm91 cyBkb25hdG9yczogbXJkYWxlLCB3b29mLCBqYWtvYiwgcmVub2JpcmQgYW5kIGpvZWJhaWNo LiBCYXNlZCBoZWF2aWx5IG9uIG1kcF9jYWxlbmRhci4gQWxsIHByb3BzIHRvIHRoZSBvcmln aW5hbCBhdXRob3Igb2YgdGhlIHBsdWdpbiwgYW5kIG9mIGNvdXJzZSB0aGUgY2xhc3MgdXBv biB3aGljaCB0aGUgY2FsZW5kYXIgaXMgYmFzZWQuIEFuZCBub3QgZm9yZ2V0dGluZyBvdXIg YXdlc29tZSBUZXh0cGF0dGVybiBkZXZzIHdobyBjb250aW51ZSB0byBwdXNoIHRoaXMgbGl0 dGxlIDxzcGFuIGNsYXNzPSJjYXBzIj5DTVM8L3NwYW4+IHRvIHRoZSBzdGFycy48L3A+CgoJ PGgyIGlkPSJpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJ PHAgY2xhc3M9InJlcXVpcmVkIj5SZXF1aXJlcyBUZXh0cGF0dGVybiA0LjAuNys8L3A+CgoJ PHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4 dHBhdHRlcm4ub3JnL3BsdWdpbnMvMTA1Mi9zbWRfY2FsZW5kYXIiPnRleHRwYXR0ZXJuLm9y ZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3 YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVu YWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRw YXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTI5MjAwIj5mb3J1bSB0aHJlYWQ8L2E+IGZv ciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBv ZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyB1bmluc3RhbGwsIHNpbXBseSBkZWxldGUgZnJv bSB0aGUgQWRtaW4gLSZndDsgUGx1Z2lucyBwYWdlLjwvcD4KCgk8aDIgaWQ9Im5hbWluZyI+ TmFtaW5nIGNvbnZlbnRpb248L2gyPgoKCTxwPlRoZSBjb3JlIG9mIHRoZSBwbHVnaW4gaXMg dGhlIDxhIGhyZWY9IiNzbWRjYWwiPnNtZF9jYWxlbmRhcjwvYT4gdGFnLCB3aGljaCByZW5k ZXJzIGEgc3RhbmRhcmQgY2FsZW5kYXIgd2l0aCBlYWNoIGNlbGwgY29udGFpbmluZyBvbmUg b3IgbW9yZSBldmVudHMuIEJlZm9yZSBkaXZpbmcgaW50byB0aGUgdGFncyB0aGVyZSYjODIx NztzIGEgbGl0dGxlIGJpdCBvZiBub21lbmNsYXR1cmUgdG8gZ2V0IG91dCBvZiB0aGUgd2F5 OjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jYWxpZDwvc3Bhbj4gOiB5 b3UgbWF5IHB1dCBtb3JlIHRoYW4gb25lIGNhbGVuZGFyIG9uIGEgcGFnZS4gSWYgc28sIGVh Y2ggb25lIG11c3QgYmUgdW5pcXVlbHkgcmVmZXJlbmNlZCB3aXRoIGEgY2FsZW5kYXIgSUQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2VsbDwvc3Bhbj4gOiBhIHNwZWNpZmlj IGRheSBvbiB0aGUgY2FsZW5kYXIgaW4gYSBwYXJ0aWN1bGFyIG1vbnRoL3llYXI8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZlbnQ8L3NwYW4+IDogYW4gYXJ0aWNsZS4gSXQm IzgyMTc7cyBiZXN0IHRvIHVzZSBhIGRlZGljYXRlZCBzZWN0aW9uIGZvciBldmVudHMgc28g aXQga2VlcHMgdGhpbmdzIG5lYXRlciBvbiB5b3VyIGNhbGVuZGFyLCBidXQgeW91IGNhbiBk aXNwbGF5IGV2ZW50cyBmcm9tIG1vcmUgdGhhbiBvbmUgc2VjdGlvbiBpZiB5b3Ugd2lzaC4g QW55IGFydGljbGUgd3JpdHRlbiBpbiB0aGUgZ2l2ZW4gc2VjdGlvbihzKSB3aWxsIGFwcGVh ciBvbiB0aGUgY2FsZW5kYXIgYXMgbG9uZyBhcyBpdHMgZXhwaXJ5IGhhc24mIzgyMTc7dCBi ZWVuIG1ldC4gTW9yZSB0aGFuIG9uZSBldmVudCBtYXkgYXBwZWFyIGluIGVhY2ggY2VsbDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jZWxsIGZsYWc8L3NwYW4+IDogYSBzZXJp ZXMgb2YgZmxhZ3MgYXJlIHVzZWQgdG8gbGFiZWwgZWFjaCBjZWxsIGFjY29yZGluZyB0byB3 aGF0IGl0IGNvbnRhaW5zLiBDZWxscyBjYW4gZWl0aGVyIGJlIDxjb2RlPmVtcHR5PC9jb2Rl PiAoaS5lLiBubyBkYXRlOiB0aGUgZmlsbGVyIGNlbGxzIGF0IHRoZSBzdGFydC9lbmQgb2Yg dGhlIG1vbnRoKSwgdGhleSBjYW4gYmUgYSByZWd1bGFyIGRheSAobm8gZmxhZyksIHRoZXkg Y2FuIGNvbnRhaW4gYW4gPGNvZGU+ZXZlbnQ8L2NvZGU+LCBvciBtYXkgYmUgYSBob2xpZGF5 ICg8YSBocmVmPSIjaG9saWRheXMiPmhvbHM8L2E+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5ldmVudCBmbGFnPC9zcGFuPiA6IGVhY2ggY2VsbCBjYW4gY29udGFpbiBvbmUg b3IgbW9yZSBldmVudHMuIEV2ZW50cyBjYW4gZWl0aGVyIGJlIDxhIGhyZWY9IiNldmVudHMi PnN0YW5kYXJkPC9hPiwgdGhleSBjYW4gPGEgaHJlZj0iI3JlY3VyIj5yZWN1cjwvYT4sIHRo ZXkgY2FuIHNwYW4gbW9yZSB0aGFuIG9uZSBkYXkgKDxhIGhyZWY9IiNtdWx0aSI+bXVsdGk8 L2E+KSwgb3IgZGF0ZXMgY2FuIGJlIHVuc2NoZWR1bGVkIG9yIG9taXR0ZWQgKDxhIGhyZWY9 IiNjYW5jZWwiPmNhbmNlbCAvIG9taXQ8L2E+KSBmcm9tIHRoZSBjYWxlbmRhcjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzcyBsZXZlbDwvc3Bhbj4gOiAoZXhwbG9yZWQg aW4gdGhlIDxhIGhyZWY9IiNhdHRzdHlsZXMiPmNsYXNzbGV2ZWxzPC9hPiBhdHRyaWJ1dGUp LiBFYWNoIGZsYWdnZWQgY2VsbCBjYW4gYmUgZ2l2ZW4gYSA8c3BhbiBjbGFzcz0iY2FwcyI+ Q1NTPC9zcGFuPiBjbGFzcyBiYXNlZCBvbiBpdHMgZmxhZyBuYW1lKHMpLiBUaGUgY2xhc3Mg bmFtZXMgYXJlIHNpbXBseSBlYWNoIGZsYWcgbmFtZSBwcmVmaXhlZCB3aXRoIHRoZSB2YWx1 ZSBnaXZlbiBpbiB0aGUgPGNvZGU+Y2xhc3NwcmVmaXhlczwvY29kZT4gYXR0cmlidXRlLiBT dWNoIGNsYXNzZXM6Cgk8dWw+CgkJPGxpPmFwcGVhciBpbiBhIGNlbGwsIHNvIHlvdSBjYW4g c3R5bGUgdGhlIHdob2xlIGNlbGw8L2xpPgoJCTxsaT5hcHBlYXIgb24gZWFjaCBldmVudCwg c28geW91IGNhbiBzdHlsZSBwYXJ0aWN1bGFyIHR5cGVzIG9mIGV2ZW50PC9saT4KCQk8bGk+ bWF5IGJlICYjODIxNjtjb3BpZWQmIzgyMTc7IGZyb20gZXZlcnkgZXZlbnQgdG8gdGhlIGNl bGwgaXRzZWxmLCBzbyB5b3UgY2FuIHN0eWxlIHRoZSB3aG9sZSBjZWxsIGJhc2VkIG9uIHRo ZSBldmVudHMgaXQgY29udGFpbnM8L2xpPgoJPC91bD48L2xpPgoJPC91bD4KCgk8cD5DcnVj aWFsbHksIGZsYWdzIHByb3ZpZGUgaW5mb3JtYXRpb24gPGVtPmFib3V0PC9lbT4gdGhlIGNl bGwgLyBldmVudCAgJiM4MjEyOyBhbmQgY2FuIGJlIHRlc3RlZCB3aXRoIHRoZSA8YSBocmVm PSIjaWZjYWwiPmNvbmRpdGlvbmFsIHRhZzwvYT4gJiM4MjEyOyB3aGlsZSB0aGUgY29ycmVz cG9uZGluZyBjbGFzcyBuYW1lcyBhcmUganVzdCB0aGVyZSBmb3IgeW91ciA8c3BhbiBjbGFz cz0iY2FwcyI+Q1NTPC9zcGFuPiB1c2UuPC9wPgoKCTxwPldoZW4gYXNzaWduZWQgYXMgY2xh c3NlcywgZmxhZ3MgPHN0cm9uZz5hbHdheXM8L3N0cm9uZz4gdGFrZSB0aGUgJiM4MjE2O2Ns YXNzJiM4MjE3OyBwcmVmaXggKGkuZS4gdGhlIDFzdCBpdGVtIGdpdmVuIGluIHNtZF9jYWxl bmRhciYjODIxNztzIDxjb2RlPmNsYXNzcHJlZml4ZXM8L2NvZGU+IGF0dHJpYnV0ZSkgJiM4 MjEyOyB3aGV0aGVyIHRoZXkgYXBwZWFyIGF0IHRoZSA8ZW0+ZXZlbnQ8L2VtPiBvciA8ZW0+ Y2VsbDwvZW0+IGxldmVscy4gVGhlIG9ubHkgY2xhc3NlcyB0aGF0IHRha2UgdGhlIG9wdGlv bmFsIDJuZCAmIzgyMTY7ZXZlbnQmIzgyMTc7IHByZWZpeCBhcmUgdGhlIGZpZWxkcyB5b3Ug c3BlY2lmeSBpbiB0aGUgPGNvZGU+ZXZlbnRjbGFzc2VzPC9jb2RlPiBhdHRyaWJ1dGUuPC9w PgoKCTxwPkl0JiM4MjE3O3MgYWxzbyB3b3J0aCBiZWFyaW5nIGluIG1pbmQgdGhlIDxhIGhy ZWY9IiNkYXRlcyI+ZGF0ZSBjYXZlYXRzPC9hPiB0aGF0IG1heSB3ZWxsIGJpdGUgeW91Ljwv cD4KCgk8aDIgaWQ9ImV2ZW50cyI+U3RhbmRhcmQgY2VsbHMgYW5kIGV2ZW50czwvaDI+CgoJ PHA+VGhlc2UgYXJlIHRoZSBzdGFuZGFyZCBjbGFzcyAvIGZsYWcgbmFtaW5nIHJ1bGVzLCBh bmQgdGhleSBhcmUgY3VtdWxhdGl2ZTo8L3A+CgoJPHVsPgoJCTxsaT5Ob3JtYWwgKGRheSkg Y2VsbHMgZG9uJiM4MjE3O3QgaGF2ZSBhIGNsYXNzIGFzc2lnbmVkIHRvIHRoZW0gdW5sZXNz IHlvdSBzcGVjaWZ5IG9uZSB3aXRoIDxjb2RlPmNlbGxjbGFzczwvY29kZT48L2xpPgoJCTxs aT5BbnkgY2VsbCB0aGF0IGNvbnRhaW5zIGFuIGV2ZW50IChvZiBhbnkgdHlwZSkgaXMgZmxh Z2dlZCBhcyBhbiA8Y29kZT5ldmVudDwvY29kZT48L2xpPgoJCTxsaT5BbnkgY2VsbCB0aGF0 IGZhbGxzIG9uIGEgaG9saWRheSBpcyBnaXZlbiB0aGUgZmxhZyA8Y29kZT5ob2xzPC9jb2Rl PjwvbGk+CgkJPGxpPlRoZSBjdXJyZW50IGRheSBpcyBnaXZlbiB0aGUgZmxhZyA8Y29kZT50 b2RheTwvY29kZT48L2xpPgoJCTxsaT5JZiB0aGUgY2VsbCBjb250YWlucyBhIHN0YW5kYXJk IChvbmUtb2ZmLCBub24tcmVjdXJyaW5nLCBub24tc3Bhbm5pbmcpIGV2ZW50LCB0aGUgPGVt PmV2ZW50PC9lbT4gd2lsbCBiZSBmbGFnZ2VkIDxjb2RlPnN0YW5kYXJkPC9jb2RlPjwvbGk+ Cgk8L3VsPgoKCTxoMiBpZD0icmVjdXIiPlJlY3VycmluZyBldmVudHM8L2gyPgoKCTxwPklm IHlvdSBoYXZlIG5vbWluYXRlZCBhbiBhcnRpY2xlIGZpZWxkIGFzIHlvdXIgPGNvZGU+c3Rl cGZpZWxkPC9jb2RlPiB5b3UgbWF5IGVudGVyIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Yg ZnJlcXVlbmNpZXMgYXQgd2hpY2ggdGhpcyBldmVudCBpcyB0byBiZSByZXBlYXRlZC4gVGhl IGZvcm1hdCBvZiB0aGUgcmVwZXRpdGlvbiBpcyAmIzgyMjA7bnVtYmVyIGludGVydmFsJiM4 MjIxOywgZS5nLiA8Y29kZT40IHdlZWtzPC9jb2RlPiBvciA8Y29kZT4xMCBkYXlzPC9jb2Rl PiBvciA8Y29kZT42IG1vbnRoczwvY29kZT4uIFRoZSBwbHVnaW4gd2lsbCBkbyBpdHMgYmVz dCB0byBmaWd1cmUgb3V0IHdoYXQgeW91IG1lYW4uIENvbnN1bHQgPGEgaHJlZj0iaHR0cDov L3d3dy5nbnUub3JnL3NvZnR3YXJlL3Rhci9tYW51YWwvaHRtbF9ub2RlL0RhdGUtaW5wdXQt Zm9ybWF0cy5odG1sIj5kYXRlIGlucHV0IGZvcm1hdHM8L2E+IGZvciBzb21lIG1vcmUgZXhh bXBsZXMgKGxpa2UgPGNvZGU+dGhpcmQgbW9uZGF5PC9jb2RlPiBhbmQgc28gb24pLiBUaGlu Z3MgbGlrZSA8Y29kZT5maXJzdCB0aHVyc2RheTwvY29kZT4gb3IgPGNvZGU+bGFzdCBmcmlk YXk8L2NvZGU+IHdpbGwgb25seSBzaG93IHRoZSBldmVudCBvbiB0aGUgZ2l2ZW4gZmlyc3Qv bGFzdCBkYXkgb2YgdGhlIG1vbnRoLiBOb3RlIHRoYXQgPGNvZGU+Zmlyc3Q8L2NvZGU+IGFu ZCA8Y29kZT5sYXN0PC9jb2RlPiBjYW4gPGVtPm9ubHk8L2VtPiBiZSB1c2VkIHdpdGggd2Vl a2RheSBuYW1lcy48L3A+CgoJPHA+SWYgeW91IGNhbiBmaW5kIGEgdXNlIGZvciBpdCwgeW91 IG1heSBzcGVjaWZ5IG11bHRpcGxlIGZyZXF1ZW5jaWVzLCBmb3IgZXhhbXBsZSA8Y29kZT4z IGRheXMsIDEgd2VlazwvY29kZT4uIFRoYXQgbWVhbnMgeW91IHdvdWxkIHNlZSB0aGF0IGV2 ZW50IG9uIHRoZSBmaXJzdCBkYXksIHRoZW4gdGhlIDNyZCwgNnRoLCA3dGgsIDl0aCwgMTJ0 aCwgMTR0aCwgMTV0aCwgMTh0aCwgMjFzdCwgMjR0aCYjODIzMDsgZGF5cyB0aGVyZWFmdGVy LiBOb3RlIHRoYXQgdGhlIGV2ZW50IG9ubHkgb2NjdXJzIG9uY2Ugb24gdGhlIDIxc3QgZGF5 IGV2ZW4gdGhvdWdoIHRoZSB0d28gZnJlcXVlbmNpZXMgY2xhc2guPC9wPgoKCTxwPlJlY3Vy IHJ1bGVzOjwvcD4KCgk8dWw+CgkJPGxpPlRoZSByZXBldGl0aW9uIHdpbGwgY29udGludWUg Zm9yZXZlcjxzdXAgY2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm44NzU1ODYwOTU0OTY0 ZDNjMTFjN2JmIj4xPC9hPjwvc3VwPiB1bmxlc3MgeW91IHNwZWNpZnkgdGhhdCB0aGUgZXZl bnQgZXhwaXJlcyBieSBzZXR0aW5nIGFuIGV4cGlyeSB0aW1lIHVuZGVyIHRoZSBhcnRpY2xl JiM4MjE3O3MgPGVtPk1vcmU8L2VtPiBhcmVhPC9saT4KCQk8bGk+VGhlIHZlcnkgZmlyc3Qg ZXZlbnQgb2YgYSByZWN1cnJpbmcgc2V0IHdpbGwgYmUgZmxhZ2dlZCB3aXRoIDxjb2RlPnJl Y3VyZmlyc3Q8L2NvZGU+PC9saT4KCQk8bGk+RWFjaCBmb2xsb3dpbmcgY2VsbCB0aGF0IGNv bnRhaW5zIGEgcmVjdXJyaW5nIGV2ZW50IHdpbGwgYmUgZmxhZ2dlZCB3aXRoIDxjb2RlPnJl Y3VyPC9jb2RlPjwvbGk+CgkJPGxpPkJvdGggZmxhZ3MgYXJlIGFwcGxpZWQgdG8gdGhlIGV2 ZW50IGFzIGNsYXNzZXMgdXNpbmcgdGhlIGNsYXNzIHByZWZpeDwvbGk+CgkJPGxpPlJlcGVh dGVkIGV2ZW50cyBtYXkgYmUgPGEgaHJlZj0iI2NhbmNlbCI+Y2FuY2VsbGVkIG9yIG9taXR0 ZWQ8L2E+IG9uIGEgcGVyLWRhdGUgYmFzaXM8L2xpPgoJPC91bD4KCgk8cCBjbGFzcz0ic21h bGwiIGlkPSJmbjg3NTU4NjA5NTQ5NjRkM2MxMWM3YmYiPjxzdXA+MTwvc3VwPiAmIzgyMTY7 Zm9yZXZlciYjODIxNzsgaXMgbGltaXRlZCB0byA5OTk5OSByZWN1cnJlbmNlcyBwZXIgZXZl bnQsIG9yIDI3NCB5ZWFycyYjODIxNzsgd29ydGggb2YgZGFpbHkgZXZlbnRzLiBFaXRoZXIg PHNwYW4gY2xhc3M9ImNhcHMiPlVOSVg8L3NwYW4+IHdpbGwgcnVuIG91dCBvZiBkYXRlcyBv ciA8c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiB3aWxsIHJ1biBvdXQgb2YgbWVtb3J5 IGxvbmcgYmVmb3JlIHlvdSByZWFjaCB0aGlzIGxpbWl0IDotKTwvcD4KCgk8aDIgaWQ9Im11 bHRpIj5NdWx0aXBsZSAoc3Bhbm5lZCkgZXZlbnRzPC9oMj4KCgk8cD5BbnkgZXZlbnQgdGhh dCBoYXM6PC9wPgoKCTx1bD4KCQk8bGk+YSBzdGFydCBkYXRlPC9saT4KCQk8bGk+YW4gZXhw aXJ5IGRhdGUgdGhhdCBpcyBhIGRheSBvciBtb3JlIGxhdGVyIHRoYW4gdGhlIHN0YXJ0IGRh dGUsIGFuZDwvbGk+CgkJPGxpPjxlbT5kb2VzIG5vdDwvZW0+IGhhdmUgYW55IHJlcGV0aXRp b24gaW4gaXRzIDxjb2RlPnN0ZXBmaWVsZDwvY29kZT48L2xpPgoJPC91bD4KCgk8cD5pcyBm bGFnZ2VkIGFzIGEgPGNvZGU+bXVsdGk8L2NvZGU+LiBCeSBkZWZhdWx0IHRoZSBmaXJzdCBl dmVudCBpcyBkaXNwbGF5ZWQgaW4gZnVsbCBhbmQgZWFjaCAmIzgyMTY7Y29udGludWF0aW9u JiM4MjE3OyBldmVudCBpcyBzaG93biBvbmx5IGFzIGEgcmlnaHQgYXJyb3cgaW4gc3Vic2Vx dWVudCBjZWxscyAodGhlIGV2ZW50IHRpdGxlIGlzIGRpc3BsYXllZCBvbiBtb3VzZSBob3Zl cikuIEV2ZW50cyBtYXkgc3BhbiBtb250aHMgb3IgeWVhcnMgYW5kIHRoZSBwbHVnaW4gZmln dXJlcyBldmVyeXRoaW5nIG91dCB1c2luZyB0aGUgZmxhZyBydWxlczo8L3A+CgoJPHVsPgoJ CTxsaT5UaGUgZmlyc3QgY2VsbCBvZiBhIHNwYW5uZWQgc2V0IGlzIGEgPGNvZGU+bXVsdGlm aXJzdDwvY29kZT48L2xpPgoJCTxsaT5UaGUgbGFzdCBjZWxsIGlzIGEgPGNvZGU+bXVsdGls YXN0PC9jb2RlPjwvbGk+CgkJPGxpPkV2ZXJ5IG90aGVyIGNlbGwgaXMgYSA8Y29kZT5tdWx0 aTwvY29kZT4gPGVtPmV4Y2VwdDwvZW0+IGlmIHRoZSBldmVudCByb2xscyBvdmVyIGludG8g dGhlIG5leHQgbW9udGguIEluIHRoYXQgY2FzZSwgdGhlIGVudHJ5IG9uIHRoZSAxc3Qgb2Yg dGhlIG1vbnRoIGlzIGEgPGNvZGU+bXVsdGlwcmV2PC9jb2RlPiB0byBpbmRpY2F0ZSBpdCBi ZWxvbmdzIHRvIGEgcHJldmlvdXMgZXZlbnQ8L2xpPgoJCTxsaT5JZiB0aGUgMXN0IGRheSBv ZiB0aGUgbW9udGggaXMgdGhlIGxhc3QgZGF5IG9mIHRoZSBldmVudCwgdGhlIDxjb2RlPm11 bHRpcHJldjwvY29kZT4gaXMgZHJvcHBlZCBpbiBmYXZvdXIgb2YgPGNvZGU+bXVsdGlsYXN0 PC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxwPlN3aXRjaCBvZmYgc3Bhbm5pbmcgY29tcGxldGVs eSB3aXRoIHRoZSA8Y29kZT5zaG93c3Bhbm5lZD0mcXVvdDswJnF1b3Q7PC9jb2RlPiBhdHRy aWJ1dGUuIEV2ZW50cyB0aGF0IGhhdmUgYW4gZXhwaXJ5IGFyZSB0aGVuIGp1c3Qgc3RhbmRh cmQgZXZlbnRzLjwvcD4KCgk8cD4mIzgyMTY7Q29udGludWF0aW9uJiM4MjE3OyBjZWxscyBt YXkgYmUgcHJvY2Vzc2VkIHdpdGggYSBzZXBhcmF0ZSBmb3JtIChjYWxsZWQgYSA8Y29kZT5z cGFuZm9ybTwvY29kZT4gYmVjYXVzZSAmIzgyMTY7Y29udGZvcm0mIzgyMTc7IGRpZG4mIzgy MTc7dCBzb3VuZCB2ZXJ5IG5pY2UhKS4gSWYgeW91IGNob29zZSBub3QgdG8gdXNlIGEgPGNv ZGU+c3BhbmZvcm08L2NvZGU+LCB0aGUgc3RhbmRhcmQgPGNvZGU+Zm9ybTwvY29kZT4gb3Ig Y29udGFpbmVyIHdpbGwgYmUgdXNlZCBhbmQgeW91IHdpbGwgaGF2ZSB0byBkaXN0aW5ndWlz aCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgbXVsdGkgZmxhZ3MgeW91cnNlbGYgdXNpbmcgdGhl IDxhIGhyZWY9IiNpZmNhbCI+Y29uZGl0aW9uYWwgdGFnPC9hPi48L3A+CgoJPHA+WW91IGNh biBhbHNvIDxhIGhyZWY9IiNjYW5jZWwiPmNhbmNlbCBvciBvbWl0PC9hPiBkYXlzIG9mIGEg c3Bhbm5lZCBldmVudCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgeW91IGRvIHdpdGggPGEgaHJl Zj0iI3JlY3VyIj5yZWN1cnJpbmcgZXZlbnRzPC9hPiwgZXhjZXB0IHlvdSBjYW5ub3QgY2Fu Y2VsIHRoZSBmaXJzdCBkYXk7IHlvdSBzaG91bGQgbW92ZSB0aGUgZXZlbnQgc3RhcnQgZGF0 ZSBhbmQgYXBvbG9naXNlITwvcD4KCgk8aDIgaWQ9ImNhbmNlbCI+Q2FuY2VsbGluZyBhbmQg b21pdHRpbmcgZXZlbnRzPC9oMj4KCgk8cD5QbGFucyBjaGFuZ2UgYW5kIHlvdSBtYXkgZmlu ZCB0aGF0IGEgZ2lnIGhhcyB0byBiZSBjYW5jZWxsZWQgZm9yIHdoYXRldmVyIHJlYXNvbi4g UGVyaGFwcyB5b3UgYWR2ZXJ0aXNlIGEgd2Vla2x5IGJvb3QgZmFpciBidXQgdGhlIGZpZWxk IGlzIHdhdGVybG9nZ2VkIG9uZSB3ZWVrLiBObyBwcm9ibGVtLiBOb21pbmF0ZSBhIDxjb2Rl PnNraXBmaWVsZDwvY29kZT4gaW4geW91ciA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxlbmRhciAv Jmd0OzwvY29kZT4gdGFnIGFuZCBlbnRlciB0aGUgZGF0ZSBvZiB0aGUgY2FuY2VsbGVkIGV2 ZW50LjwvcD4KCgk8cD5TaW1pbGFybHkgeW91IG1pZ2h0IHJ1biBhIHRoZWF0cmUgd2ViIHNp dGUgdGhhdCBoYXMgYSB0aHJlZS13ZWVrIHByb2R1Y3Rpb24gcGVyZm9ybWFuY2Ugb24gd2Vl a25pZ2h0cyBvbmx5LiBJbnN0ZWFkIG9mIHNldHRpbmcgdXAgdGhyZWUgc2VwYXJhdGUgZXZl bnRzICYjODIxMjsgb25lIGZvciBlYWNoIHdlZWsgJiM4MjEyOyBub21pbmF0ZSBhbiA8Y29k ZT5vbWl0ZmllbGQ8L2NvZGU+IGFuZCBsaXN0IHRoZSBkYXRlcyBvbiB3aGljaCB0aGUgcGVy Zm9ybWFuY2UgZG9lcyBub3QgYWlyLiBPbWl0dGVkIGRhdGVzIHdpbGwgbm90LCB1bmRlciBh bnkgY2lyY3Vtc3RhbmNlcywgYXBwZWFyIG9uIHRoZSBjYWxlbmRhciBhbmQgdGhleSBvdmVy cmlkZSBjYW5jZWxsZWQgZGF0ZXMvaG9saWRheXMuIElmIDxjb2RlPmNlbGxwbHVzPC9jb2Rl PiBtb2RlIGlzIHVzZWQsIHlvdSB3aWxsIGhvd2V2ZXIgc2VlIGEgY2VsbCBmbGFnIGxhYmVs bGVkIDxjb2RlPm9taXQ8L2NvZGU+IChwbHVzIGNsYXNzIHByZWZpeCkgaW4gY2FzZSB5b3Ug ZG8gd2lzaCB0byBzdHlsZSBzdWNoIGNlbGxzLjwvcD4KCgk8cD5UbyBzcGVjaWZ5IHRoZSBk YXRlcyBpbiBlaXRoZXIgZmllbGQsIHVzZSBhbnkgYWNjZXB0YWJsZSBkYXRlIGZvcm1hdCwg YnV0IGRlcml2YXRpdmVzIG9mIGRkLW1vbnRobmFtZS15eXl5IG9yIG1vbnRobmFtZS1kZC15 eXl5IGFyZSB0aGUgbW9zdCB1bmFtYmlndW91cyB0byBhdm9pZCBwcm9ibGVtcyBvZiBob3cg dGhlIHBsdWdpbiBtaWdodCBpbnRlcnByZXQgPGNvZGU+MS81PC9jb2RlPiBhcyBKYW4gNXRo IG9yIE1heSAxc3QuIFlvdSBjYW4gc3BlY2lmeSBhcyBtYW55IGNhbmNlbGxhdGlvbnMgb3Ig b21pc3Npb25zIGFzIHlvdSBsaWtlOyBjb21tYS1zZXBhcmF0ZSBlYWNoIG9uZS48L3A+CgoJ PHA+QnkgZGVmYXVsdCwgY2FuY2VsbGVkIGV2ZW50cyB3aWxsIG5vdCBhcHBlYXIgb24gdGhl IGNhbGVuZGFyIGFuZCB0aGVyZSB3aWxsIGJlIGEgY29uc3BpY3VvdXMgaG9sZSBpbiB0aGUg cmVwZXRpdGlvbi4gSWYgeW91IHN3aXRjaCA8Y29kZT5zaG93c2tpcHBlZD0mcXVvdDsxJnF1 b3Q7PC9jb2RlPiB0aGUgZXZlbnQgd2lsbCBhcHBlYXIgaW4gdGhlIGNlbGwgYXMgbm9ybWFs IGFuZCB0aGUgPGNvZGU+Y2FuY2VsPC9jb2RlPiBmbGFnIHdpbGwgYXBwbHkgdG8gdGhlIGV2 ZW50IChhbmQgY2VsbCBpZiB5b3UgY2hvb3NlKSBzbyB5b3UgbWF5IGRldGVjdC9zdHlsZSBp dC48L3A+CgoJPGgyIGlkPSJob2xpZGF5cyI+SG9saWRheXM8L2gyPgoKCTxwPlB1YmxpYyBo b2xpZGF5cyBuZWVkIG5vdCBiZSBhIG51aXNhbmNlIHRvIHlvdXIgZXZlbnRzLiBHaXZlIHRo ZSBwbHVnaW4gYSBob2xpZGF5IGxpc3QgYW5kIGl0JiM4MjE3O2xsIG1ha2Ugc3VyZSB0aGF0 IGFueSByZWN1cnJpbmcgb3IgbXVsdGkgZXZlbnRzIGFyZSBub3Qgc2NoZWR1bGVkIG9uIHRo b3NlIGRheXMuIDxhIGhyZWY9IiNldmVudHMiPlN0YW5kYXJkPC9hPiBvbmUtb2ZmIGV2ZW50 cyBhcmUgcGVybWl0dGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSB5b3UgbWlnaHQgd2FudCB0byBv cmdhbmlzZSBhIHNwZWNpYWwgZXZlbnQgb24gdGhhdCBkYXksIHRob3VnaCB5b3UgY2FuIGZv cmJpZCB0aG9zZSB0b28gaWYgeW91IHdpc2guPC9wPgoKCTxwPlRoZSBsaXN0IG9mIGRhdGVz IHlvdSBzcGVjaWZ5IGNhbiBiZSBlbnRlcmVkIGRpcmVjdGx5IGluIGEgc3RyaW5nIGluIHRo ZSA8Y29kZT5ob2xpZGF5czwvY29kZT4gYXR0cmlidXRlIG9yIGluIGEgPGNvZGU+Jmx0O3R4 cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4uIFRoZSBsYXR0ZXIgaXMgbW9yZSBmdW4gc28gbGV0 JiM4MjE3O3MgdHJ5IHRoYXQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDp2YXJpYWJsZSBuYW1lPSZxdW90O25hdF9ob2xzJnF1b3Q7CiAg ICAgdmFsdWU9JnF1b3Q7RGVjIDI1LCAyNiBEZWMsIDMxL0RlYywgSmFuLTEsCiAgICAgICAg TWF5IDQgMjAwOSwgMjAwOS0wOC0zMSZxdW90OyAvJmd0OwombHQ7dHhwOnNtZF9jYWxlbmRh ciBob2xpZGF5cz0mcXVvdDt0eHB2YXI6bmF0X2hvbHMmcXVvdDsgLyZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPlRoZXJlIHlvdSBnbywgYWxsIGRvbmUuIFRoZSBsaXN0IHRoZXJlIHNob3dz IHNvbWUgb2YgdGhlIHZhcmlldHkgYW5kIGJyZWFkdGggb2YgZm9ybWF0cyB0aGF0IHRoZSBw bHVnaW4gYWxsb3dzLiBUaGVyZSBhcmUgbW9yZS4gTm90ZSB0aGF0IHNvbWUgZXZlbnRzIGhh dmUgYSB5ZWFyIGFuZCBvdGhlcnMgZG9uJiM4MjE3O3QuIFRoZSBvbmVzIHdpdGhvdXQgYSB5 ZWFyIG9jY3VyIG9uIHRoZSBzYW1lIGRhdGUgZXZlcnkgeWVhciB3aGVyZWFzIHRoZSBvbmVz IHdpdGggYSB5ZWFyIHdpbGwgb25seSBvY2N1ciBvbiB0aGF0IHNwZWNpZmljIGRhdGUuPC9w PgoKCTxwPk9uY2UgeW91ciBkYXRlcyBhcmUgZGVmaW5lZCB5b3UgY2FuIGNvbnRyb2wgd2hp Y2ggZXZlbnRzIGFyZSBhbGxvd2VkIHRvIGZhbGwgb24gdGhvc2UgZGF0ZXMgdmlhIDxjb2Rl PmhvbGlkYXlmbGFnczwvY29kZT4uIEp1ZGljaWFsIHVzZSBvZiB0aGF0IGF0dHJpYnV0ZSwg PGNvZGU+c2hvd3NwYW5uZWQ8L2NvZGU+LCA8Y29kZT5zaG93c2tpcHBlZDwvY29kZT4gYW5k IHRoZSB2YXJpb3VzIGZvcm1zICYjODIxMjsgYWxvbmcgd2l0aCB0aGUgPGEgaHJlZj0iI2lm Y2FsIj5jb25kaXRpb25hbCB0YWc8L2E+ICYjODIxMjsgY2FuIGdpdmUgeW91IGEgd2lkZSB2 YXJpZXR5IG9mIHdheXMgdG8gZGlzcGxheSBldmVudHMgYW5kIGNlbGxzLjwvcD4KCgk8cD5I b2xpZGF5IGNlbGxzIGFyZSBnaXZlbiB0aGUgZmxhZyA8Y29kZT5ob2xzPC9jb2RlPiwgYW5k IGFueSBldmVudCB0aGF0IGlzIG5vdCBzcGVjaWZpY2FsbHkgcGVybWl0dGVkIGJ5IHRoZSA8 Y29kZT5ob2xpZGF5ZmxhZ3M8L2NvZGU+IGlzIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgYSA8 Y29kZT5jYW5jZWw8L2NvZGU+IGZsYWcgaWYgaXQgZmFsbHMgb24gb25lIG9mIHRoZSBkYXlz LiBPbWl0dGVkIGRhdGVzIHdpbGwsIGhvd2V2ZXIsIGNhdXNlIHRoZSA8Y29kZT5jYW5jZWw8 L2NvZGU+IGZsYWcgdG8gYmUgcmVtb3ZlZC48L3A+CgoJPGgyIGlkPSJzbWRjYWwiPjxjb2Rl PiZsdDt0eHA6c21kX2NhbGVuZGFyIC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+UHV0IHRoZSA8 Y29kZT4mbHQ7dHhwOnNtZF9jYWxlbmRhciAvJmd0OzwvY29kZT4gdGFnIHdoZXJldmVyIHlv dSB3YW50IHlvdXIgY2FsZW5kYXIgdG8gYXBwZWFyLiBVc2UgYW55IG9mIHRoZSBmb2xsb3dp bmcgYXR0cmlidXRlcyB0byBjb250cm9sIGl0cyBvdXRwdXQgZGlzcGxheSBhbmQgdXNlIHRo ZSA8YSBocmVmPSIjYXR0c3R5bGVzIj5zdHlsZSBhdHRyaWJ1dGVzPC9hPiB0byBkZXRlcm1p bmUgaG93IHRvIGFwcGx5IHN0eWxlcyB0byB0aGUgdmFyaW91cyBldmVudHMgYW5kIGNlbGxz LjwvcD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0cmlidXRlcyI+TWFpbiBhdHRyaWJ1 dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zaXplPC9zcGFuPiA6 IGNhbGVuZGFyIHNpemUsIDxjb2RlPmxhcmdlPC9jb2RlPiBvciA8Y29kZT5zbWFsbDwvY29k ZT4uIFRoZSBzbWFsbCBpcyBtb3JlIGdlYXJlZCB0b3dhcmRzIGEgbWluaWNhbCwgYWx0aG91 Z2ggZnVuY3Rpb25hbGx5IHRoZXJlIDxhIGhyZWY9IiNzaXplZGlmZiI+aXNuJiM4MjE3O3Qg bXVjaCBiZXR3ZWVuIHRoZW08L2E+LiBEZWZhdWx0OiA8Y29kZT5sYXJnZTwvY29kZT48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGltZTwvc3Bhbj4gOiBzaG93IDxjb2RlPnBh c3Q8L2NvZGU+LCA8Y29kZT5mdXR1cmU8L2NvZGU+LCBvciA8Y29kZT5hbnk8L2NvZGU+IGV2 ZW50LiBEZWZhdWx0OiA8Y29kZT5hbnk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmV4cGlyZWQ8L3NwYW4+IDogZGVmaW5pdGl2ZWx5IGhpZGUgKDxjb2RlPjA8L2Nv ZGU+KSBvciBzaG93ICg8Y29kZT4xPC9jb2RlPikgZXhwaXJlZCBldmVudHMuIExlYXZlIGJs YW5rIHRvIHVzZSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWR2YW5jZWQg UHJlZmVyZW5jZSA8Y29kZT5QdWJsaXNoIGV4cGlyZWQgYXJ0aWNsZXM8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZpcnN0ZGF5PC9zcGFuPiA6IHRoZSAxc3QgZGF5 IG9mIHRoZSB3ZWVrIHRvIHNob3cgaW4gdGhlIGNhbGVuZGFyLiAwPVN1bmRheSwgMT1Nb25k YXkgYW5kIHNvIG9uIGRvd24gdG8gNj1TYXR1cmRheS4gRGVmYXVsdDogPGNvZGU+MDwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGF5Zm9ybWF0PC9zcGFuPiA6IHRo ZSB3YXkgaW4gd2hpY2ggdGhlIGRheSBuYW1lcyBhcmUgcmVuZGVyZWQuIENob29zZSBmcm9t IGVpdGhlciA8Y29kZT5BQkJSPC9jb2RlPiAodGhlIGRlZmF1bHQpIHRvIHNob3cgdGhlIGRh eXMgYXMgTW9uLCBUdWUsIFdlZCwgZXRjIG9yIDxjb2RlPkZVTEw8L2NvZGU+IHRvIHJlbmRl ciB0aGVpciBmdWxsIG5hbWVzLiBBbHRlcm5hdGl2ZWx5LCBzdXBwbHkgYW55IHZhbGlkIDxh IGhyZWY9Imh0dHA6Ly91azIucGhwLm5ldC9zdHJmdGltZSI+c3RyZnRpbWUoKTwvYT4gY29k ZXMgdG8gdXNlIHRoYXQgaW5zdGVhZC4gTG9jYWxlLXNwZWNpZmljIG5hbWVzIGFyZSByZXR1 cm5lZC48ZGl2IGNsYXNzPSJicmVhayI+RmluYWxseSwgaWYgeW91IHJlYWxseSBkb24mIzgy MTc7dCBsaWtlIGFueSBvZiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gZGlz cGxheSBtZXRob2RzIHlvdSBjYW4gaGFyZC1jb2RlIHlvdXIgb3duLiBXcml0ZSBlYWNoIGVu dHJ5IGFzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgc3Vycm91bmRlZCBieSA8Y29kZT57fTwv Y29kZT4gYnJhY2tldHMuIFNvLCBpZiB5b3Ugd2FudGVkIHR3by1sZXR0ZXIgR2VybWFuIHdl ZWsgZGF5cyB5b3UgY291bGQgdXNlOiA8Y29kZT5kYXlmb3JtYXQ9JnF1b3Q7e1NvLE1vLERp LE1pLERvLEZyLFNhfSZxdW90OzwvY29kZT4uIFRoZSBmaXJzdCBkYXkgaW4gdGhlIGxpc3Qg PHN0cm9uZz5tdXN0PC9zdHJvbmc+IGJlIGEgU3VuZGF5IG9yIHRoaW5ncyB3aWxsIGdldCBt aWdodHkgYml6YXJyZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tb250 aGZvcm1hdDwvc3Bhbj4gOiB0aGUgd2F5IGluIHdoaWNoIHRoZSBtb250aCBuYW1lcyBhcmUg cmVuZGVyZWQuIENob29zZSBmcm9tIGVpdGhlciA8Y29kZT5GVUxMPC9jb2RlPiAodGhlIGRl ZmF1bHQpIHRvIHNob3cgdGhlIGZ1bGwgbW9udGggbmFtZXMgb3IgPGNvZGU+QUJCUjwvY29k ZT4gdG8gcmVuZGVyIHRoZWlyIGFiYnJldmlhdGVkIG5hbWVzLiBBbHRlcm5hdGl2ZWx5LCBz dXBwbHkgYW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly91azIucGhwLm5ldC9zdHJmdGltZSI+ c3RyZnRpbWUoKTwvYT4gY29kZXMgdG8gdXNlIHRoYXQgaW5zdGVhZC4gTG9jYWxlLXNwZWNp ZmljIG5hbWVzIGFyZSByZXR1cm5lZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5z ZWxlY3Q8L3NwYW4+IDogdXNlIGEgc2VsZWN0IGRyb3Bkb3duIGZvciByYXBpZCBhY2Nlc3Mg dG8gd2Vla3MsIG1vbnRocyBvciB5ZWFycyBpbnN0ZWFkIG9mIHJlbmRlcmluZyBqdXN0IHRo ZSBuYW1lcy4gRGVmYXVsdDogdW5zZXQsIGJ1dCB5b3UgbWF5IG1ha2UgYSAoY29tbWEtc2Vw YXJhdGVkKSBsaXN0IGZyb20gZWl0aGVyIDxjb2RlPndlZWs8L2NvZGU+IC8gPGNvZGU+bW9u dGg8L2NvZGU+IG9yIDxjb2RlPnllYXI8L2NvZGU+LiAod2VlayBhbmQgbW9udGggYXJlIG11 dHVhbGx5IGV4Y2x1c2l2ZSkuIE5vdGUgdGhhdCB3aGVuIHVzaW5nIDxjb2RlPndlZWs8L2Nv ZGU+LCB0aGUgcGx1Z2luIG1ha2VzIGFuIGVkdWNhdGVkIGd1ZXNzIGF0IHRoZSBtb250aCBh bmQgbWF5IG5vdCBnZXQgaXQgcmlnaHQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ c2VsZWN0YnRuPC9zcGFuPiA6IGJ5IGRlZmF1bHQsIHRoZSBzZWxlY3QgZHJvcGRvd25zIHdp bGwgYXV0by1zdWJtaXQgd2hlbiB0aGV5IGFyZSBjaGFuZ2VkLiBJZiB5b3UgcHJlZmVyIGEg ZGVkaWNhdGVkIHN1Ym1pdCBidXR0b24sIGdpdmUgdGhlIHRleHQgeW91IHdpc2ggdG8gYXBw ZWFyIG9uIHRoZSBidXR0b24gaGVyZS4gVGhlIGJ1dHRvbiBoYXMgYSBmaXhlZCBjbGFzcyBv ZiA8Y29kZT5zbWRfY2FsX2lucHV0PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5pc293ZWVrczwvc3Bhbj4gOiBzaG93IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SVNP PC9zcGFuPiB3ZWVrIG51bWJlcnMgYXMgYSBjb2x1bW4gYXQgdGhlIHN0YXJ0IG9mIHRoZSBj YWxlbmRhci4gQW55IHRleHQgaW4gdGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB0aGUgZmVhdHVy ZSwgYW5kIHlvdXIgdGV4dCBiZWNvbWVzIHRoZSBoZWFkaW5nIG9mIHRoZSA8c3BhbiBjbGFz cz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIGNvbHVtbi4gWW91IG1heSBvcHRpb25hbGx5IG92 ZXJyaWRlIHRoZSBkZWZhdWx0IHdlZWsgbnVtYmVyIGRpc3BsYXllZCBpbiBlYWNoIGNlbGwg YnkgYWRkaW5nIGEgY29tbWEgYW5kIHNvbWUgdGV4dDsgd2hhdGV2ZXIgeW91IGVudGVyIHdp bGwgYmUgcHV0IGluIGVhY2ggPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2VlayBj ZWxsLiBVc2UgdGhlIHJlcGxhY2VtZW50IGNvZGUgPGNvZGU+e3dlZWt9PC9jb2RlPiBpbiB5 b3VyIG1hcmt1cCB0byBpbnNlcnQgdGhlIGN1cnJlbnQgd2VlayBudW1iZXIuIDxkaXYgY2xh c3M9ImJyZWFrIj5FeGFtcGxlOiA8Y29kZT5pc293ZWVrcz0mcXVvdDt3aywgI3t3ZWVrfSZx dW90OzwvY29kZT4gd2lsbCByZW5kZXIgJiM4MjE2O3drJiM4MjE3OyBhdCB0aGUgdG9wIG9m IHRoZSBjb2x1bW4gYW5kIHNvbWV0aGluZyBsaWtlIDxjb2RlPiMyNDwvY29kZT4sIDxjb2Rl PiMyNTwvY29kZT4sIDxjb2RlPiMyNjwvY29kZT4mIzgyMzA7IGF0IHRoZSBzdGFydCBvZiBl YWNoIHdlZWsgcm93LiBJZiB0aGUgYXR0cmlidXRlIGJlZ2lucyB3aXRoIGEgY29tbWEgKGku ZSB0aGUgZmlyc3QgaXRlbSBpcyBvbWl0dGVkKSwgdGhlcmUgd2lsbCBiZSBubyBjb2x1bW4g aGVhZGluZy48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+Tm90ZSB0aGF0IGlmIHRoZSBpc293 ZWVrcyBmZWF0dXJlIGlzIGVuYWJsZWQsIDxjb2RlPmZpcnN0ZGF5PC9jb2RlPiB3aWxsIGJl IGZvcmNlZCB0byBzdGFydCBvbiBhIE1vbmRheSBhcyBnb3Zlcm5lZCBieSB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gc3BlY2lmaWNhdGlvbi4gRGVmYXVsdDogdW5zZXQ8 L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RhdHVzPC9zcGFuPiA6IGV2 ZW50cyBpbiB0aGlzIGxpc3Qgb2Ygc3RhdHVzIGFyZSBwdWJsaXNoZWQuIERlZmF1bHQ6IDxj b2RlPmxpdmU8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNhdGVnb3J5 PC9zcGFuPiA6IGZpbHRlciBldmVudHMgYnkgdGhpcyBsaXN0IG9mIGNhdGVnb3JpZXMuIERl ZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNlY3Rpb248L3Nw YW4+IDogZmlsdGVyIGV2ZW50cyBieSB0aGlzIGxpc3Qgb2Ygc2VjdGlvbnMuIERlZmF1bHQ6 IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmF1dGhvcjwvc3Bhbj4gOiBm aWx0ZXIgZXZlbnRzIGJ5IHRoaXMgYXV0aG9yIFJlYWwgTmFtZS4gRGVmYXVsdDogdW5zZXQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aWQ8L3NwYW4+IDogdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBJRCB0byBhcHBseSB0byB0aGUgdGFibGUgdGhhdCBo b2xkcyB0aGUgY2FsZW5kYXIuIFRoaXMgaXMgdGhlIHZhbHVlIG9mIHRoZSA8c3BhbiBjbGFz cz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSA8Y29kZT5jYWxpZDwvY29kZT4gYW5kIGl0 cyBkZWZhdWx0IGlzIHVuc2V0LiBFYWNoIGNhbGVuZGFyIG9uIGEgcGFnZSA8YSBocmVmPSIj bmFtaW5nIj5tdXN0IGJlIHVuaXF1ZTwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+bmF2aWQ8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBJ RCB0byBhcHBseSB0byB0aGUgcHJldi9uZXh0L21vbnRoL3llYXIgbmF2aWdhdGlvbiBmb3Jt LiBJZiB1c2VkLCBlYWNoIGNhbGVuZGFyIG9uIGEgcGFnZSBtdXN0IGhhdmUgYSB1bmlxdWUg bmF2aWQuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5h dmFycm93PC9zcGFuPiA6IGNvbW1hLXNlcGFyYXRlZCBwYWlyIG9mIGl0ZW1zIHlvdSB3YW50 IHRvIGFwcGVhciBhcyBwcmV2L25leHQgYXJyb3dzIGluIHRoZSBjYWxlbmRhci4gRGVmYXVs dDogPGNvZGU+JmFtcDsjNjA7LCAmYW1wOyM2Mjs8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPm1vbnRoPC9zcGFuPiA6IHN0YXJ0IHRoZSBjYWxlbmRhciBvbiB0aGlz IG1vbnRoIGZyb20gMSAoSmFudWFyeSkgdG8gMTIgKERlY2VtYmVyKS4gTm9ybWFsIGNhbGVu ZGFyIG5hdmlnYXRpb24gb3ZlcnJpZGVzIHRoaXMgdmFsdWUuIElmIDxjb2RlPnN0YXRpYzwv Y29kZT4gaXMgdXNlZCwgdGhpcyBtb250aCBiZWNvbWVzIHRoZSBvbmx5IG9uZSB5b3UgbWF5 IHZpZXcuIElmIHVuc2V0LCBhbmQgbm8gPGNvZGU+bT08L2NvZGU+IHZhbHVlIGFwcGVhcnMg b24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUsIHRoZSBjdXJyZW50 IG1vbnRoIGlzIHVzZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d2Vlazwvc3Bh bj4gOiBzdGFydCB0aGUgY2FsZW5kYXIgZHVyaW5nIHRoZSBtb250aCBjb250YWluaW5nIHRo aXMgPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2VlayAoZnJvbSAxIHRvIDUzKS4g SWdub3JlZCBpZiA8Y29kZT5zdGF0aWM8L2NvZGU+IG9yIG9uZSBvZiB0aGUgY2FsZW5kYXIg bmF2aWdhdGlvbiBjb250cm9scyBpcyB1c2VkLiBJZiBhIDxjb2RlPnc9PC9jb2RlPiB2YWx1 ZSBhcHBlYXJzIG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lLCB0 aGUgZ2l2ZW4gd2VlayBvdmVycmlkZXMgYW55IG1vbnRoIHZhbHVlPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnllYXI8L3NwYW4+IDogc3RhcnQgdGhlIGNhbGVuZGFyIGF0IHRo aXMgNC1kaWdpdCB5ZWFyLiBOb3JtYWwgY2FsZW5kYXIgbmF2aWdhdGlvbiBvdmVycmlkZXMg dGhpcyB2YWx1ZS4gSWYgPGNvZGU+c3RhdGljPC9jb2RlPiBpcyB1c2VkLCB0aGlzIHllYXIg YmVjb21lcyB0aGUgb25seSBvbmUgeW91IG1heSB2aWV3LiBJZiB1bnNldCwgYW5kIG5vIDxj b2RlPnk9PC9jb2RlPiB2YWx1ZSBhcHBlYXJzIG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiBsaW5lLCB0aGUgY3VycmVudCB5ZWFyIGlzIHVzZWQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+eWVhcndpZHRoPC9zcGFuPiA6IGEgY29tbWEtc2VwYXJhdGVk IGxpc3QgdGhhdCBzcGVjaWZpZXMgaG93IG1hbnkgeWVhcnMgeW91ciBjYWxlbmRhciBzcGFu cy4gQnkgZGVmYXVsdCBpdCBpcyA8Y29kZT4wPC9jb2RlPiB3aGljaCB1c2VzIHRoZSBlYXJs aWVzdCAocG9zdGVkKSBldmVudCBpbiB0aGUgc2VjdGlvbiBhcyB0aGUgbG93ZXN0IHllYXIg YW5kIHRoZSBsYXRlc3QgKG1vZGlmaWVkIG9yIHBvc3RlZCwgd2hpY2hldmVyIGlzIGdyZWF0 ZXIpIGV2ZW50IGluIHRoZSBzZWN0aW9uIGFzIHRoZSBsYXRlc3QgeWVhci4gWW91IHdpbGwg bm90IGJlIHBlcm1pdHRlZCB0byBuYXZpZ2F0ZSB0aGUgY2FsZW5kYXIgb3V0c2lkZSB0aGlz IHJhbmdlLjxkaXYgY2xhc3M9ImJyZWFrIj5UbyB3aWRlbiB0aGUgcmFuZ2UsIHNwZWNpZnkg c29tZSB2YWx1ZXMsIGZvciBleGFtcGxlIDxjb2RlPnllYXJ3aWR0aD0mcXVvdDsyLDQmcXVv dDs8L2NvZGU+IHdpbGwgc3VidHJhY3QgMiB3aG9sZSB5ZWFycyBmcm9tIHRoZSBlYXJsaWVz dCBldmVudCBhbmQgYWRkIDQgd2hvbGUgeWVhcnMgdG8gdGhlIGxhdGVzdCAocG9zdGVkIG9y IG1vZGlmaWVkKSBldmVudC4gSWYgeW91IHNwZWNpZnkgYSBzaW5nbGUgbnVtYmVyLCB0aGF0 IHZhbHVlIHdpbGwgYmUgdXNlZCB0byBleHBhbmQgdGhlIHJhbmdlIGVxdWFsbHkgaW4gYm90 aCBkaXJlY3Rpb25zLjwvZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj4gSWYgeW91IGFkZCAmIzgy MTY7QGNAJiM4MjE3OyB0byBlaXRoZXIgdmFsdWUgdGhlIGN1cnJlbnQgeWVhciBpcyB1c2Vk IGluc3RlYWQgb2YgdGhlIGVhcmxpZXN0IG9yIGxhdGVzdCBldmVudCwgZS5nLiA8Y29kZT55 ZWFyd2lkdGg9JnF1b3Q7Miw0YyZxdW90OzwvY29kZT4gd2lsbCBzdWJ0cmFjdCAyIHllYXJz IGZyb20gdGhlIGVhcmxpZXN0IGV2ZW50IGFuZCBhZGQgNCB3aG9sZSB5ZWFycyB0byB0b2Rh eSYjODIxNztzIGRhdGU8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9y bTwvc3Bhbj4gOiB1c2UgdGhpcyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3Jt IHRvIHByb2Nlc3MgZWFjaCBldmVudC4gSWYgdGhlIGNhbGVuZGFyIHRhZyBpcyB1c2VkIGFz IGEgY29udGFpbmVyIGl0IHdpbGwgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBmb3Jt LiBJZiBuZWl0aGVyIGFyZSB1c2VkLCB0aGUgZGVmYXVsdCBmb3IgYSBsYXJnZSBjYWxlbmRh ciBpcyBhIGh5cGVybGlua2VkIGFydGljbGUgdGl0bGUuIFRoZSBzbWFsbCBjYWxlbmRhciBy ZW5kZXJzIGFuIGVtcHR5IGV2ZW50PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNw YW5mb3JtPC9zcGFuPiA6IHlvdSBtYXkgZWxlY3QgdG8gcmVuZGVyIHNwYW5uZWQgZXZlbnRz IGRpZmZlcmVudGx5IHRvIHN0YW5kYXJkIGV2ZW50cy4gQnkgZGVmYXVsdCB0aGV5IHVzZSB0 aGUgc2FtZSA8Y29kZT5mb3JtPC9jb2RlPiBidXQgJiM4MjEyOyBpZiBuZWl0aGVyIHRoYXQg bm9yIHRoZSBjb250YWluZXIgYXJlIHNwZWNpZmllZCAmIzgyMTI7IHdpbGwgYmUgcmVuZGVy ZWQgYXMgYSBoeXBlcmxpbmtlZCByaWdodC1hcnJvdyB0byBpbmRpY2F0ZSBjb250aW51YXRp b24gb2YgdGhlIHByZXZpb3VzIGRheSYjODIxNztzIGV2ZW50LiBOb3RlIHRoZSBmaXJzdCBk YXkgb2YgYSBzcGFubmVkIHNldCBpcyA8ZW0+bm90PC9lbT4gcGFzc2VkIHRvIHRoZSA8Y29k ZT5zcGFuZm9ybTwvY29kZT47IG9ubHkgY29udGludWF0aW9uIGNlbGxzIGFyZSBwYXNzZWQg dG8gaXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cmVjdXJmb3JtPC9zcGFuPiA6 IHNpbWlsYXJseSB0byA8Y29kZT5zcGFuZm9ybTwvY29kZT4geW91IG1heSBlbGVjdCB0byBy ZW5kZXIgcmVjdXJyaW5nIGV2ZW50cyBkaWZmZXJlbnRseSB0byBzdGFuZGFyZCBldmVudHMu IEJ5IGRlZmF1bHQgdGhleSB1c2UgdGhlIHNhbWUgPGNvZGU+Zm9ybTwvY29kZT4gKG9yIGNv bnRhaW5lcikgYXMgc3RhbmRhcmQgZXZlbnRzIGFuZCB0aGUgZmlyc3QgZXZlbnQgb2YgYSBy ZWN1cnJpbmcgc2V0IGlzIG5vdCBwYXNzZWQgdG8gPGNvZGU+cmVjdXJmb3JtPC9jb2RlPjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jZWxsZm9ybTwvc3Bhbj4gKDxzcGFuIGNs YXNzPSJyZXF1aXJlZCI+b25seSBvbiBsYXJnZSBjYWxlbmRhcnM8L3NwYW4+KSA6IHVzZSB0 aGlzIGlmIHlvdSB3aXNoIHRvIGJ1aWxkIGVhY2ggY2VsbCBlbnRpcmVseSBmcm9tIHNjcmF0 Y2guIEl0IHdvcmtzIGRpZmZlcmVudGx5IHRvIHRoZSBvdGhlciBmb3JtIGF0dHJpYnV0ZXMg aW4gdGhhdCBpdCA8ZW0+bXVzdDwvZW0+IGJlIGEgZm9ybSBhbmQgY2Fubm90IHVzZSB0aGUg Y29udGFpbmVyLiBUaGVyZSBhcmUgYWxzbyBzb21lIDxhIGhyZWY9IiNjZWxsZm9ybSI+cmVw bGFjZW1lbnQgdmFyaWFibGVzPC9hPiB5b3UgY2FuIHVzZSB0byBpbnNlcnQgZHluYW1pYyBw aWVjZXMgb2YgaW5mb3JtYXRpb24gaW4geW91ciBjZWxsczwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5zdGVwZmllbGQ8L3NwYW4+IDogdGhlIElEIG9mIGEgZmllbGQgd2l0aGlu IHdoaWNoIGFuIGV2ZW50IG1heSBiZSB0b2xkIHRvIHJlcGVhdC4gTm90ZSBpdCBpcyB0aGUg ZmllbGQmIzgyMTc7cyBJRCBub3QgaXRzIG5hbWUsIHNvIGZvciBjdXN0b20gZmllbGRzIHlv dSBtdXN0IHVzZSA8Y29kZT5jdXN0b21fMTwvY29kZT4gb3IgPGNvZGU+Y3VzdG9tXzI8L2Nv ZGU+IGV0Yy4gV2l0aG91dCB0aGlzIGF0dHJpYnV0ZSAoaXRzIGRlZmF1bHQpLCBubyByZWN1 cnJpbmcgZXZlbnRzIG1heSBiZSBkZWZpbmVkLiBTZWUgPGEgaHJlZj0iI3JlY3VyIj5yZWN1 cnJpbmcgZXZlbnRzPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbWl0Zmll bGQ8L3NwYW4+IDogdGhlIElEIG9mIGEgZmllbGQgZnJvbSB3aGljaCBldmVudCBkYXRlcyBt YXkgYmUgb21pdHRlZCBpZiByZXF1aXJlZC4gQXMgYWJvdmUsIHRoaXMgaXMgdGhlIElEIChu b3QgbmFtZSkgb2YgdGhlIGZpZWxkLiBTcGVjaWZ5IGEgbGlzdCBvZiBkYXRlcyBvbiB3aGlj aCB0aGlzIGV2ZW50IGlzIG5vdCBydW5uaW5nLiBTZWUgPGEgaHJlZj0iI2NhbmNlbCI+Y2Fu Y2VsbGluZyBhbmQgb21pdHRpbmcgZXZlbnRzPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5za2lwZmllbGQ8L3NwYW4+IDogdGhlIElEIG9mIGEgZmllbGQgZnJvbSB3aGlj aCBldmVudCBkYXRlcyBtYXkgYmUgY2FuY2VsbGVkIGlmIHJlcXVpcmVkLiBBZ2FpbiwgdGhp cyBpcyB0aGUgSUQgKG5vdCBuYW1lKSBvZiB0aGUgZmllbGQuIFNwZWNpZnkgYSBsaXN0IG9m IGRhdGVzIG9uIHdoaWNoIHRoaXMgZXZlbnQgd2lsbCBiZSBjYW5jZWxsZWQuIFNlZSA8YSBo cmVmPSIjY2FuY2VsIj5jYW5jZWxsaW5nIGFuZCBvbWl0dGluZyBldmVudHM8L2E+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNob3dza2lwcGVkPC9zcGFuPiA6IHdoZW4gYW4g ZXZlbnQgaXMgY2FuY2VsbGVkIHlvdSBjYW4gcmVtb3ZlIGl0IGZyb20gdGhlIGNhbGVuZGFy ICg8Y29kZT4wPC9jb2RlPikgb3Igc2hvdyBpdCAoPGNvZGU+MTwvY29kZT4pLiBEZWZhdWx0 OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zaG93c3Bh bm5lZDwvc3Bhbj4gOiBldmVudHMgd2l0aCBleHBpcnkgdGltZXMgbGF0ZXIgdGhhbiB0aGVp ciBwb3N0ZWQgZGF0ZSBtYXkgYmUgcmVuZGVyZWQgYWNyb3NzIG11bHRpcGxlIGNlbGxzLiBJ ZiB5b3UgZG8gbm90IHdhbnQgdGhpcyBmZWF0dXJlIHlvdSBjYW4gdHVybiBpdCBvZmYgKDxj b2RlPjA8L2NvZGU+KS4gRGVmYXVsdDogPGNvZGU+MTwvY29kZT48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+aG9saWRheXM8L3NwYW4+IDogbGlzdCBvZiBkYXRlcyB0aGF0IGFy ZSBkZWNyZWVkIGFzIDxhIGhyZWY9IiNob2xpZGF5cyI+aG9saWRheXM8L2E+LiBFdmVudHMg Y2FuIGJlIHNjaGVkdWxlZCBvbiBob2xpZGF5cyBidXQgbWF5IG5vdCByZWN1ciBvciBzcGFu IGEgaG9saWRheSB1bmxlc3MgeW91IGV4cGxpY2l0bHkgc2F5IHNvIHZpYSB0aGUgPGNvZGU+ aG9saWRheWZsYWdzPC9jb2RlPiBhdHRyaWJ1dGUuIFlvdXIgbGlzdCBvZiBkYXRlcyBtYXkg YmUgZGVmZXJyZWQgdG8gYSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiwg aW4gd2hpY2ggY2FzZSBkZWZpbmUgeW91ciBsaXN0IGluIGEgbmFtZWQgdmFyaWFibGUgYW5k IHVzZSA8Y29kZT5ob2xpZGF5cz0mcXVvdDt0eHB2YXI6bXlfdmFyX25hbWUmcXVvdDs8L2Nv ZGU+IHRvIHJlYWQgdGhlbSBpbnRvIHRoZSBwbHVnaW48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+aG9saWRheWZsYWdzPC9zcGFuPiA6IHBlcm1pdCBjZXJ0YWluIDxhIGhyZWY9 IiNuYW1pbmciPmV2ZW50IGZsYWdzPC9hPiB0byBiZSBzY2hlZHVsZWQgb24gaG9saWRheXMu IERlZmF1bHQ6IDxjb2RlPnN0YW5kYXJkPC9jb2RlPiAoaS5lLiBzdGFuZGFyZCBvbmUtb2Zm IGV2ZW50cykgYnV0IG90aGVycyBtYXkgYmUgbGlzdGVkIGFzIHdlbGwuIENob29zZSBmcm9t IDxjb2RlPnN0YW5kYXJkPC9jb2RlPiwgPGNvZGU+cmVjdXI8L2NvZGU+IG9yIDxjb2RlPm11 bHRpPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5saW5rcG9zdGVkPC9z cGFuPiAoPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5vbmx5IG9uIHNtYWxsIGNhbGVuZGFyczwv c3Bhbj4pIDogZWFjaCBjZWxsIHRoYXQgY29udGFpbnMgYW4gPGEgaHJlZj0iI25hbWluZyI+ ZXZlbnQgZmxhZzwvYT4gb2YgdGhlIGdpdmVuIHR5cGUocykgd2lsbCBoYXZlIGl0cyBkYXkg bnVtYmVyIGxpbmtlZCB0byB0aGUgZXZlbnQmIzgyMTc7cyB0cnVlIHN0YXJ0IGRhdGUgaW5z dGVhZCBvZiB0aGUgY2VsbCYjODIxNztzIGRhdGUuIFRodXMsIGlmIHlvdSBoYXZlIGEgd2Vl a2x5IGV2ZW50IHRoYXQgc3RhcnRzIG9uIHRoZSAyMHRoIERlY2VtYmVyIDIwMDgsIHNldHRp bmcgPGNvZGU+bGlua3Bvc3RlZD0mcXVvdDtyZWN1ciZxdW90OzwvY29kZT4gd2lsbCBjYXVz ZSB0aGUgbGluayB0byBzaG93IDxjb2RlPmRhdGU9MjAwOC0xMi0yMDwvY29kZT4gZWFjaCB3 ZWVrLiBUaGlzIGFsbG93cyB5b3UgdG8gYWx3YXlzIGxpbmsgdG8gYSB2YWxpZCBhcnRpY2xl L2V2ZW50LiBXaXRob3V0IGxpbmtwb3N0ZWQsIHRoZSBkYXRlcyB3b3VsZCBiZSAyMDA4LTEy LTIwLCAyMDA4LTEyLTI3LCAyMDA5LTAxLTAzLCBhbmQgc28gb24uIERlZmF1bHQ6IDxjb2Rl PnJlY3VyLCBtdWx0aSwgbXVsdGlwcmV2LCBtdWx0aWxhc3Q8L2NvZGU+IChpLmUuIGFueSBy ZWN1cnJpbmcgb3Igc3Bhbm5lZCBldmVudCkuIE5vdGUgdGhhdCBpZiBtb3JlIHRoYW4gb25l IGV2ZW50IG9jY3VycyBpbiB0aGUgY2VsbCwgdGhlIGxpbmsgd2lsbCBvbmx5IGJlIHRvIHRo ZSBmaXJzdCBldmVudCB0aGUgcGx1Z2luIGZpbmRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPm1haW50YWluPC9zcGFuPiA6IGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgc3Rh dGUgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHdoZW4gbmF2aWdhdGlu ZyB0aGUgY2FsZW5kYXIgdXNpbmcgdGhlIG5leHQvcHJldiBvciBtb250aC95ZWFyIHNlbGVj dCBsaXN0cy4gSXRlbXMgdGhhdCB5b3Ugd2FudCB0byBwcmVzZXJ2ZSBzaG91bGQgYmUgY29t bWEtc2VwYXJhdGVkIGhlcmUuIENob29zZSBmcm9tIDxjb2RlPmNhbGlkPC9jb2RlPiwgPGNv ZGU+c2VjdGlvbjwvY29kZT4sIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+YXV0aG9y PC9jb2RlPiwgPGNvZGU+YXJ0aWNsZTwvY29kZT4sIDxjb2RlPnBnPC9jb2RlPiBvciB5b3Vy IG93biA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZS4gRGVmYXVsdDog PGNvZGU+Y2FsaWQ8L2NvZGU+LjxkaXYgY2xhc3M9ImJyZWFrIj5Vc2UgPGNvZGU+bWFpbnRh aW49JnF1b3Q7c2VjdGlvbiwgYXJ0aWNsZSwgY2FsaWQmcXVvdDs8L2NvZGU+IGlmIHlvdSBo YXZlIGFuIGluZGl2aWR1YWwgYXJ0aWNsZSBwYWdlIHdpdGggYSBjYWxlbmRhciBpbiBhIHNp ZGViYXIsIHNvIHRoZSBjdXJyZW50bHkgdmlld2VkIGFydGljbGUgd2lsbCByZW1haW4gaW4g dmlldyB3aGVuIGNoYW5naW5nIGRhdGUuIElmIHlvdSB3aXNoIHRvIG1haW50YWluIHN0YXRl IHlvdXJzZWxmIG9yIGRvIHNvbWV0aGluZyBleG90aWMsIGVtcHR5IHRoaXMgYXR0cmlidXRl IGZpcnN0IHRvIGF2b2lkIHdlaXJkbmVzczwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5zdGF0aWM8L3NwYW4+IDogZm9yY2UgdGhlIGNhbGVuZGFyIHRvIGJlIGZpeGVk IHRvIG9uZSBtb250aC95ZWFyIChpLmUuIG5vIG5hdmlnYXRpb24pLiBNb250aCBhbmQgeWVh ciBkZWNpZGVkIGJ5IGF0dHJpYnV0ZXMgPGNvZGU+bW9udGg8L2NvZGU+IGFuZCA8Y29kZT55 ZWFyPC9jb2RlPiBvciAmIzgyMTI7IGlmIG9taXR0ZWQgJiM4MjEyOyB0aGUgY3VycmVudCBk YXRlIHdpbGwgYmUgdXNlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5nbXQ8L3Nw YW4+IDogcmV0dXJuIGVpdGhlciBsb2NhbCB0aW1lICg8Y29kZT4wPC9jb2RlPikgYWNjb3Jk aW5nIHRvIHRoZSB0aW1lIHpvbmUgc2V0IGluIEJhc2ljIFByZWZzLCBvciA8c3BhbiBjbGFz cz0iY2FwcyI+R01UPC9zcGFuPiB0aW1lICg8Y29kZT4xPC9jb2RlPikuIERlZmF1bHQ6IDxj b2RlPjA8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxhbmc8L3NwYW4+ IDogYW4gPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gbGFuZ3VhZ2UgY29kZSB0aGF0 IGZvcm1hdHMgdGltZSBzdHJpbmdzIHN1aXRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIGxhbmd1 YWdlIChvciBsb2NhbGUpIGFzIGRlZmluZWQgYnkgPGEgaHJlZj0iaHR0cDovL2VuLndpa2lw ZWRpYS5vcmcvd2lraS9JU09fNjM5Ij48c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiA2 Mzk8L2E+LiBEZWZhdWx0OiB1bnNldCAoaS5lLiB1c2UgdGhlIHZhbHVlIGFzIHN0YXRlZCBp biA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBwcmVmcyk8L2xpPgoJPC91bD4KCgk8 aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0c3R5bGVzIj5TdHlsZSBhdHRyaWJ1dGVzPC9oMz4K Cgk8cD5PbmNlIHlvdSBoYXZlIHR3ZWFrZWQgeW91ciBiYXNpYyBjYWxlbmRhciBhcyBkZXNj cmliZWQgYWJvdmUgeW91IGNhbiBtb3ZlIG9udG8gdGhlIHN0eWxlIGF0dHJpYnV0ZXMgc28g eW91IG1heSBnZXQgYXQgZWFjaCBmYWNldCBvZiB0aGUgY2FsZW5kYXIgYW5kIHZpc3VhbGx5 IGFsdGVyIGl0OjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzc2xl dmVsczwvc3Bhbj4gOiBjbGFzc2VzIGNhbiBiZSBhcHBsaWVkIGF0IHRoZSBldmVudCBsZXZl bCAoc28geW91IGNhbiBjb2xvdXIgZWFjaCBldmVudCBpbiBhIGNlbGwpLCBvciB0aGUgY2Vs bCBsZXZlbCAoc28geW91IGNhbiBjb2xvdXIgdGhlIHdob2xlIGRheSksIG9yIGJvdGguIFlv dSBtYXkgYWxzbyBwcm9tb3RlIChpLmUuIGNvcHkpIGFsbCBldmVudC1sZXZlbCBjbGFzc2Vz IHRoYXQgb2NjdXIgaW4gYSBkYXkgdG8gdGhlIGNlbGwgbGV2ZWwgc28geW91IGNhbiBjb2xv dXIgdGhlIGNlbGwgYmFzZWQgb24gdGhlIGV2ZW50cyB0aGF0IGl0IGNvbnRhaW5zLiBDb21t YS1zZXBhcmF0ZSBhbnkgb2YgPGNvZGU+ZXZlbnQ8L2NvZGU+IChmb3IgcmVuZGVyaW5nIGV2 ZW50LWxldmVsIHN0eWxlcyksIDxjb2RlPmNlbGw8L2NvZGU+IChmb3IgcmVuZGVyaW5nIHN0 eWxlcyBhdCB0aGUgY2VsbCBsZXZlbCksIG9yIDxjb2RlPmNlbGxwbHVzPC9jb2RlPiAoZm9y IGNvcHlpbmcgdW5pcXVlIGV2ZW50IGNsYXNzZXMgdG8gdGhlIGNlbGwpLiBOb3RlIHlvdSB3 aWxsIG5vdCBuZWVkIHRvIHVzZSA8Y29kZT5jZWxsPC9jb2RlPiBhbmQgPGNvZGU+Y2VsbHBs dXM8L2NvZGU+IHRvZ2V0aGVyIGJlY2F1c2UgdGhlIGxhdHRlciBvdmVycmlkZXMgdGhlIGZv cm1lciwgYnV0IHRoZXJlJiM4MjE3O3Mgbm8gaGFybSBpZiB5b3UgZG8uIERlZmF1bHQ6IDxj b2RlPmNlbGwsIGV2ZW50PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5j bGFzc3ByZWZpeGVzPC9zcGFuPiA6IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdXAgdG8g dHdvIHByZWZpeGVzIHRvIGFwcGx5IHRvIHlvdXIgY2xhc3MgbmFtZXMuIFRoZSBmaXJzdCBw cmVmaXggaXMgYXBwbGllZCB0byBjZWxsLWxldmVsIGNsYXNzZXMgKGFuZCBmbGFncykgYW5k IHRoZSBzZWNvbmQgcHJlZml4IGlzIGFwcGxpZWQgdG8gZXZlbnQgY2xhc3NlcyAoc2VlIDxj b2RlPmV2ZW50Y2xhc3NlczwvY29kZT4pIHNvIHlvdSBtYXkgZGlzdGluZ3Vpc2ggdGhlbSBp ZiB5b3Ugd2lzaC4gSWYgeW91IG9ubHkgc3BlY2lmeSBvbmUgcHJlZml4IGl0IHdpbGwgYmUg dXNlZCBmb3IgYm90aCB0eXBlcyBvZiBjbGFzcy4gSWYgeW91IHVzZSA8Y29kZT5jbGFzc3By ZWZpeGVzPSZxdW90OyZxdW90OzwvY29kZT4gdGhlbiBubyBwcmVmaXhlcyB3aWxsIGJlIHVz ZWQgYXQgYWxsLiBEZWZhdWx0OiA8Y29kZT5zbWRfY2FsXywgc21kX2NhbF9ldl88L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzPC9zcGFuPiA6IHRoZSBjbGFz cyBuYW1lIChwbHVzIGNsYXNzIHByZWZpeCkgdG8gYXBwbHkgdG8gdGhlIGNhbGVuZGFyIHRh YmxlIGl0c2VsZi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+cm93Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgKHBsdXMgY2xhc3MgcHJlZml4 KSB0byBhcHBseSB0byBlYWNoIHRhYmxlIHJvdy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+Y2VsbGNsYXNzPC9zcGFuPiA6IHRoZSBjbGFzcyBuYW1l IChwbHVzIGNsYXNzIHByZWZpeCkgdG8gYXBwbHkgdG8gZWFjaCB0YWJsZSBjZWxsLiBEZWZh dWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5lbXB0eWNsYXNzPC9z cGFuPiA6IHRoZSBjbGFzcyBuYW1lIChwbHVzIGNsYXNzIHByZWZpeCkgdG8gYXBwbHkgdG8g YW55IGNlbGxzIHRoYXQgZG9uJiM4MjE3O3QgY29udGFpbiBhIGRheSBudW1iZXIgKGkuZS4g dGhlIGJsYW5rIGNlbGxzIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIGEgbW9udGgpLiBEZWZh dWx0OiA8Y29kZT5lbXB0eTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ aXNvd2Vla2NsYXNzPC9zcGFuPiA6IHRoZSBjbGFzcyBuYW1lIChwbHVzIGNsYXNzIHByZWZp eCkgdG8gYXBwbHkgdG8gZWFjaCBjZWxsIGNvbnRhaW5pbmcgYW4gPHNwYW4gY2xhc3M9ImNh cHMiPklTTzwvc3Bhbj4gd2VlayAoaWYgPGNvZGU+aXNvd2Vla3M8L2NvZGU+IGlzIHVzZWQp LiBEZWZhdWx0OiA8Y29kZT53ZWVrPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5uYXZjbGFzczwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSAocGx1cyBjbGFzcyBwcmVm aXgpIHRvIGFwcGx5IHRvIHRoZSBwcmV2L25leHQgbW9udGggbmF2aWdhdGlvbiBhcnJvd3Mu IElmIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgaXMgdXNlZCwgdGhlIGZpcnN0IGl0ZW0gd2ls bCBiZSB0aGUgbmFtZSBvZiB0aGUgY2xhc3Mgb24gdGhlIGxpbmsgdG8gdGhlIHByZXZpb3Vz IG1vbnRoLCB0aGUgMm5kIGl0ZW0gdG8gdGhlIG5leHQgbW9udGguIElmIGEgc2luZ2xlIHZh bHVlIGlzIHVzZWQsIGJvdGggY2xhc3MgbmFtZXMgd2lsbCBiZSB0aGUgc2FtZS4gRGVmYXVs dDogPGNvZGU+bmF2cHJldiwgbmF2bmV4dDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+bXljbGFzczwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSAocGx1cyBjbGFzcyBw cmVmaXgpIHRvIGFwcGx5IHRvIGJvdGggdGhlIG1vbnRoIGFuZCB5ZWFyIGluIHRoZSBjYWxl bmRhciBoZWFkZXIgKGVpdGhlciB0aGUgPGNvZGU+Jmx0O3NwYW4mZ3Q7PC9jb2RlPiBvciA8 Y29kZT4mbHQ7c2VsZWN0Jmd0OzwvY29kZT4gdGFncykuIElmIDxjb2RlPm15d3JhcHRhZzwv Y29kZT4gaXMgdXNlZCwgdGhlIGNsYXNzIGlzIGFwcGxpZWQgdG8gdGhlIHdyYXB0YWcgaW5z dGVhZC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZl bnRjbGFzc2VzPC9zcGFuPiA6IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaXRlbXMgdG8g YWRkIGFzIGNsYXNzZXMgdG8gZWFjaCBldmVudCAoZWFjaCBwcmVmaXhlZCB3aXRoIHRoZSBl dmVudCBwcmVmaXgpLiBJdCBkZWZhdWx0cyB0byA8Y29kZT5jYXRlZ29yeTwvY29kZT4gc28g aXQgYWRkcyB0aGUgQ2F0ZWdvcnkxIGFuZCAyIG5hbWVzIGFzIGNsYXNzIGlkZW50aWZpZXJz IHRvIGVhY2ggZXZlbnQuIFRodXMsIG91dCBvZiB0aGUgYm94LCB5b3UgY2FuIHN0eWxlIGV2 ZW50cyBieSBjYXRlZ29yeS4gPGRpdiBjbGFzcz0iYnJlYWsiPklmIHlvdSB3aXNoIHRvIGV4 dGVuZCBvciBhbHRlciB0aGlzLCBqdXN0IGdpdmUgYSBsaXN0IG9mIGZpZWxkcyB0aGF0IHlv dSB3YW50IHRvIGFwcGx5IHRvIHRoZSBldmVudCAoZS5nLiA8Y29kZT5ldmVudGNsYXNzZXM9 JnF1b3Q7SUQsIEF1dGhvcklELCBjdXN0b21fNSZxdW90OzwvY29kZT4gd291bGQgYWRkIHRo cmVlIGNsYXNzZXMgdG8gZWFjaCBldmVudCBjb3JyZXNwb25kaW5nIHRvIHRoZSBldmVudCYj ODIxNztzIElELCBpdHMgYXV0aG9yIChsb2dpbikgbmFtZSBhbmQgdGhlIGNvbnRlbnRzIG9m IGN1c3RvbV81KS4gT2YgY291cnNlLCBpZiB5b3UgdXNlIDxjb2RlPmNlbGxwbHVzPC9jb2Rl PiBtb2RlIHRoZXNlIGNsYXNzZXMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGNlbGwgbGV2ZWwu IDwvZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5Tb21lIHNwZWNpYWwgbmFtZXMgZXhpc3Q6IDxj b2RlPmNhdGVnb3J5PC9jb2RlPiByZXR1cm5zIGJvdGggQ2F0ZWdvcnkxIGFuZCBDYXRlZ29y eTIgKGlmIHNldCk7IDxjb2RlPmdjYXQ8L2NvZGU+IHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50 ICYjODIxNjtnbG9iYWwmIzgyMTc7IGNhdGVnb3J5IChpZiBjdXJyZW50bHkgZmlsdGVyaW5n IGJ5IGNhdGVnb3J5KTsgPGNvZGU+YXV0aG9yPC9jb2RlPiByZXR1cm5zIHRoZSBhdXRob3Ig SUQgKGlmIGN1cnJlbnRseSBmaWx0ZXJpbmcgYnkgYXV0aG9yKTsgPGNvZGU+c2VjdGlvbjwv Y29kZT4gZ2l2ZXMgdGhlIGN1cnJlbnQgc2VjdGlvbjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5ldmVudHdyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnLCB3 aXRob3V0IGl0cyBicmFja2V0cywgdG8gd3JhcCBlYWNoIGV2ZW50IHdpdGguIERlZmF1bHQ6 IDxjb2RlPnNwYW48L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm15d3Jh cHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcsIHdpdGhvdXQgaXRzIGJyYWNrZXRzLCB0 byB3cmFwIGFyb3VuZCA8ZW0+Ym90aDwvZW0+IG1vbnRoICsgeWVhciBkcm9wZG93biBzZWxl Y3QgbGlzdHMgYW5kIG9wdGlvbmFsIHN1Ym1pdCBidXR0b24gKGl0IHdyYXBzIHRoZSBsb3Qs IGNvbWJpbmVkKS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNlbGxm b3JtIj5Vc2luZyBhIDxjb2RlPmNlbGxmb3JtPC9jb2RlPiB3aXRoIHJlcGxhY2VtZW50IHZh cmlhYmxlczwvaDI+CgoJPHA+SWYgeW91IGRvbiYjODIxNzt0IGxpa2UgdGhlIGxheW91dCBv ZiB0aGUgZGVmYXVsdCBjZWxsLCB5b3UgY2FuIGRvIGl0IHlvdXJzZWxmIHdpdGggdGhlIDxj b2RlPmNlbGxmb3JtPC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKCTxwPlRvIGJ1aWxkIHlvdXIg b3duIGNlbGxzIHlvdSBvZnRlbiBuZWVkIGluZm9ybWF0aW9uIHN1Y2ggYXMgdGhlIChwcmUt cHJvY2Vzc2VkKSBldmVudHMsIHRoZSBkYXksIG9yIG1vbnRoIGV0Yy4gU28gJiM4MjEyOyBp biBhZGRpdGlvbiB0byB5b3VyIHVzdWFsIG1hcmt1cCBhbmQgPHNwYW4gY2xhc3M9ImNhcHMi PlRYUDwvc3Bhbj4gdGFncyAmIzgyMTI7IHlvdSBtYXkgYWxzbyBpbnNlcnQgYW55IG9mIHRo ZSBmb2xsb3dpbmcgJiM4MjE2O3JlcGxhY2VtZW50cyYjODIxNzsgdG8gaGF2ZSB0aGUgcmVs ZXZhbnQgdmFsdWUgaW5zZXJ0ZWQgYXQgdGhhdCBwbGFjZSBpbiB0aGUgY2VsbDo8L3A+CgoJ PHVsPgoJCTxsaT48Y29kZT57ZGF5fTwvY29kZT4gOiBpbnNlcnRzIHRoZSBjdXJyZW50IGRh eSAoYXMgYSBudW1iZXIgZnJvbSAxIHRvIDMxKTwvbGk+CgkJPGxpPjxjb2RlPnt3ZWVrZGF5 fTwvY29kZT4gOiBpbnNlcnRzIHRoZSBjdXJyZW50IHdlZWtkYXkgKGFzIGEgd29yZCBpbiB0 aGUgbG9jYWwgbGFuZ3VhZ2UsIG9yIGZyb20geW91ciA8Y29kZT5kYXlmb3JtYXQ8L2NvZGU+ IGxpc3QpPC9saT4KCQk8bGk+PGNvZGU+e3dlZWt9PC9jb2RlPiA6IGluc2VydHMgdGhlIGN1 cnJlbnQgPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2VlayBudW1iZXI8L2xpPgoJ CTxsaT48Y29kZT57bW9udGh9PC9jb2RlPiA6IGluc2VydHMgdGhlIGN1cnJlbnQgbW9udGgg KGFzIGEgbnVtYmVyIGZyb20gMSB0byAxMik8L2xpPgoJCTxsaT48Y29kZT57bW9udGhuYW1l fTwvY29kZT4gOiBpbnNlcnRzIHRoZSBtb250aCBuYW1lIGluIHRoZSBsb2NhbCBsYW5ndWFn ZTwvbGk+CgkJPGxpPjxjb2RlPnt5ZWFyfTwvY29kZT4gOiBpbnNlcnRzIHRoZSBjdXJyZW50 IHllYXIgKDQgZGlnaXRzKTwvbGk+CgkJPGxpPjxjb2RlPntzaG9ydHllYXJ9PC9jb2RlPiA6 IGluc2VydHMgdGhlIGN1cnJlbnQgeWVhciAoMiBkaWdpdHMpPC9saT4KCQk8bGk+PGNvZGU+ e2lzb3llYXJ9PC9jb2RlPiA6IGluc2VydHMgdGhlIGN1cnJlbnQgPHNwYW4gY2xhc3M9ImNh cHMiPklTTzwvc3Bhbj4geWVhciAoNCBkaWdpdHMpPC9saT4KCQk8bGk+PGNvZGU+e3Nob3J0 aXNveWVhcn08L2NvZGU+IDogaW5zZXJ0cyB0aGUgY3VycmVudCA8c3BhbiBjbGFzcz0iY2Fw cyI+SVNPPC9zcGFuPiB5ZWFyICgyIGRpZ2l0cyk8L2xpPgoJCTxsaT48Y29kZT57ZXZlbnRz fTwvY29kZT4gOiBpbnNlcnRzIGFsbCBldmVudHMgKGluY2x1ZGluZyB0aGVpciBwcm9jZXNz ZWQgZm9ybS9jb250YWluZXIgaW5mbyk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9InNpemVkaWZm Ij5EaWZmZXJlbmNlcyBiZXR3ZWVuIGxhcmdlIGFuZCBzbWFsbCBjYWxlbmRhcnM8L2gyPgoK CTxwPk5vdCBhIGxvdCEgQnV0IHRoZXJlIGFyZSBzb21lIHN1YnRsZXRpZXM6PC9wPgoKCTx1 bD4KCQk8bGk+PGNvZGU+Y2VsbGZvcm08L2NvZGU+IGNhbm5vdCBiZSB1c2VkIG9uIGEgc21h bGwgY2FsZW5kYXI8L2xpPgoJCTxsaT5CeSBkZWZhdWx0LCBubyBldmVudHMgYXJlIHBsYWNl ZCBpbiB0aGUgc21hbGwgY2FsZW5kYXIuIFlvdSBjYW4gYWRkIHRoZW0geW91cnNlbGYgaWYg eW91IHdpc2ggYmVjYXVzZSB5b3UgY2FuIHVzZSB0aGUgc2FtZSBmb3JtL2NvbnRhaW5lciBt ZWNoYW5pc20gYXMgdGhlIGxhcmdlIGNhbGVuZGFyPC9saT4KCQk8bGk+VGhlIG9ubHkgdGhp bmcgcmVuZGVyZWQgaW4gYSBzbWFsbCBjYWxlbmRhciBjZWxsIGlzIHRoZSBoeXBlcmxpbmtl ZCBkYXRlIGFuZCBhbnkgPGEgaHJlZj0iI25hbWluZyI+ZmxhZ3M8L2E+IHNvIHlvdSBjYW4g c3R5bGUgdGhlIGJveGVzPC9saT4KCQk8bGk+PGNvZGU+Y2xhc3NsZXZlbHM8L2NvZGU+IGFy ZSBpZ25vcmVkOiBldmVyeXRoaW5nIGlzIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgYXQgdGhl IGNlbGwgbGV2ZWwgKGkuZS4gPGNvZGU+Y2VsbHBsdXM8L2NvZGU+IGlzIHNldCk8L2xpPgoJ CTxsaT48Y29kZT5ldmVudGNsYXNzZXM8L2NvZGU+IGFyZSBzdGlsbCBob25vdXJlZCBpZiB5 b3Ugd2lzaCB0byB1c2UgYSA8Y29kZT5mb3JtPC9jb2RlPiB0byBwcm9jZXNzIHRoZW0geW91 cnNlbGY8L2xpPgoJCTxsaT5UaGUgc21hbGwgY2FsZW5kYXIgb3V0cHV0cyB5ZWFyLW1vbnRo LWRheS10aXRsZSBvciBtZXNzeSBwZXJtbGlua3Mgb25seTwvbGk+Cgk8L3VsPgoKCTxwPkFz aWRlIGZyb20gdGhhdCB0aGV5JiM4MjE3O3JlIHByZXR0eSBtdWNoIGlkZW50aWNhbC48L3A+ CgoJPGgyIGlkPSJpZmNhbCI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9pZl9jYWwmZ3Q7PC9j b2RlPjwvaDI+CgoJPHA+VGhpcyBjb25kaXRpb25hbCB0YWcgYWxsb3dzIHlvdSAmIzgyMTI7 IGluc2lkZSB5b3VyIGNvbnRhaW5lci9mb3JtcyAgJiM4MjEyOyB0byB0ZXN0IGNlcnRhaW4g Y29uZGl0aW9ucyBvZiB0aGUgY3VycmVudCBldmVudC9jZWxsLiBGb3IgZW5oYW5jZWQgY29u ZGl0aW9uYWwgY2hlY2tpbmcgKHBlcmhhcHMgaW4gY29uanVuY3Rpb24gd2l0aCA8YSBocmVm PSIjY2Fsbm93Ij5zbWRfY2FsX25vdzwvYT4pLCBjb25zaWRlciB0aGUgc21kX2lmIHBsdWdp bi48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNpZmNhbCI+QXR0cmlidXRlczwv aDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZmxhZzwvc3Bhbj4gOiB0aGUg Y2VsbCBvciBldmVudCBmbGFnKHMpIHlvdSB3YW50IHRvIHRlc3QsIGVhY2ggc2VwYXJhdGVk IGJ5IGEgY29tbWEuIENob29zZSBmcm9tOiA8Y29kZT5ldmVudDwvY29kZT4sIDxjb2RlPnN0 YW5kYXJkPC9jb2RlPiwgPGNvZGU+cmVjdXJmaXJzdDwvY29kZT4sIDxjb2RlPnJlY3VyPC9j b2RlPiwgPGNvZGU+bXVsdGlmaXJzdDwvY29kZT4sIDxjb2RlPm11bHRpbGFzdDwvY29kZT4s IDxjb2RlPm11bHRpPC9jb2RlPiwgPGNvZGU+bXVsdGlwcmV2PC9jb2RlPiwgPGNvZGU+Y2Fu Y2VsPC9jb2RlPiwgPGNvZGU+b21pdDwvY29kZT4sIDxjb2RlPmhvbHM8L2NvZGU+LCA8Y29k ZT50b2RheTwvY29kZT4gb3IgdGhlIHNwZWNpYWwgZmxhZyA8Y29kZT5TTURfQU5ZPC9jb2Rl PiB3aGljaCB3aWxsIHRyaWdnZXIgaWYgdGhlIGNlbGwgb3IgZXZlbnQgY29udGFpbnMgYW55 IG9mIHRoZSBhYm92ZS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+Y2FsaWQ8L3NwYW4+IDogdGhlIGNhbGVuZGFyIElEIHlvdSB3aXNoIHRvIGNoZWNr IGZvciBhIG1hdGNoLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj55ZWFyPC9zcGFuPiA6IHRoZSB5ZWFyIHRoZSBjdXJyZW50IGNlbGwgZmFsbHMgaW4u IERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlzb3llYXI8 L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHllYXIgdGhlIGN1 cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+bW9udGg8L3NwYW4+IDogdGhlIG1vbnRoIG51bWJlciAoMS0xMikgdGhh dCB0aGUgY3VycmVudCBjZWxsIGZhbGxzIGluLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj53ZWVrPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+SVNPPC9zcGFuPiB3ZWVrIG51bWJlciB0aGF0IHRoZSBjdXJyZW50IGNlbGwgZmFsbHMg aW4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRheTwv c3Bhbj4gOiB0aGUgZGF5IG51bWJlciB0aGUgY3VycmVudCBjZWxsIGZhbGxzIGluLiBEZWZh dWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sb2dpYzwvc3Bhbj4g OiB3aGV0aGVyIHlvdSB3YW50IHRvIGNoZWNrIGlmIDxlbT5hbGw8L2VtPiB0ZXN0cyB5b3Ug bm9taW5hdGVkIGFyZSB0cnVlIGluIHRoZSBjdXJyZW50IGNlbGwgKDxjb2RlPmxvZ2ljPSZx dW90O2FuZCZxdW90OzwvY29kZT4pIG9yIDxlbT5hdCBsZWFzdCBvbmU8L2VtPiBvZiB0aGUg dGVzdHMgaXMgdHJ1ZSAoPGNvZGU+bG9naWM9JnF1b3Q7b3ImcXVvdDs8L2NvZGU+KS4gRGVm YXVsdDogPGNvZGU+b3I8L2NvZGU+PC9saT4KCTwvdWw+CgoJPHA+WW91IG1heSBjb21iaW5l IHRoZSB0ZXN0cyBzbywgZm9yIGV4YW1wbGUsIHlvdSBjYW4gY2hlY2sgaWYgdGhlIGNlbGwg aXMgb2YgYSBjZXJ0YWluIHR5cGUgPHNwYW4gY2xhc3M9ImNhcHMiPkFORDwvc3Bhbj4gaXMg bGF0ZXIgdGhhbiB0aGUgMTV0aCBvZiB0aGUgbW9udGguPC9wPgoKCTxwPlJ1ZGltZW50YXJ5 IGNvbXBhcmF0b3JzIGNhbiBiZSBhcHBsaWVkIHRvIHRoZSA8Y29kZT55ZWFyPC9jb2RlPiwg PGNvZGU+bW9udGg8L2NvZGU+IGFuZCA8Y29kZT5kYXk8L2NvZGU+IGF0dHJpYnV0ZXMuIE5v cm1hbGx5IHRoZSB2YWx1ZSB5b3Ugc3VwcGx5IHdpbGwgYmUgdGVzdGVkIGZvciBhbiBleGFj dCBtYXRjaCBidXQgaWYgeW91IHByZWZpeCBpdCB3aXRoIG9uZSBvZiB0aGUgZm9sbG93aW5n IGNoYXJhY3RlciBzZXF1ZW5jZXMgdGhlbiB0aGUgYmVoYXZpb3VyIGNoYW5nZXM6PC9wPgoK CTx1bD4KCQk8bGk+PGNvZGU+Jmd0OzwvY29kZT4gdGVzdHMgaWYgYXR0cmlidXRlIGlzIDxl bT5ncmVhdGVyIHRoYW48L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUuZy4gPGNvZGU+eWVhcj0m cXVvdDsmZ3Q7MjAwOCZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+Jmd0Oz08L2Nv ZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv PC9lbT4gdGhlIGdpdmVuIHZhbHVlIChlLmcuIDxjb2RlPm1vbnRoPSZxdW90OyZndDs9NyZx dW90OzwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+Jmx0OzwvY29kZT4gdGVzdHMgaWYgYXR0 cmlidXRlIGlzIDxlbT5sZXNzIHRoYW48L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUuZy4gPGNv ZGU+ZGF5PSZxdW90OyZsdDsxNSZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+Jmx0 Oz08L2NvZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+bGVzcyB0aGFuIG9yIGVxdWFs IHRvPC9lbT4gdGhlIGdpdmVuIHZhbHVlIChlLmcuIDxjb2RlPm1vbnRoPSZxdW90OyZsdDs9 NSZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+ITwvY29kZT4gdGVzdHMgaWYgYXR0 cmlidXRlIGlzIDxlbT5ub3Q8L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUuZy4gPGNvZGU+ZGF5 PSZxdW90OyExNSZxdW90OzwvY29kZT4pPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJjYWxpbmZv Ij5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2NhbF9pbmZvIC8mZ3Q7PC9jb2RlPjwvaDI+CgoJ PHA+SW5zaWRlIHlvdXIgY29udGFpbmVyL2Zvcm1zLCB1c2UgdGhpcyB0YWcgdG8gb3V0cHV0 IGNlcnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgZXZlbnQuPC9wPgoKCTxo MyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRzY2FsaW5mbyI+QXR0cmlidXRlczwvaDM+CgoJPHVs PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dHlwZTwvc3Bhbj4gOiB0aGUgdHlwZShzKSBv ZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byByZXR1cm4sIGVhY2ggc2VwYXJhdGVkIGJ5IGEg Y29tbWEuIENob29zZSBmcm9tOiA8Y29kZT5mbGFnPC9jb2RlPiwgPGNvZGU+eWVhcjwvY29k ZT4sIDxjb2RlPmlzb3llYXI8L2NvZGU+LCA8Y29kZT5tb250aDwvY29kZT4sIDxjb2RlPndl ZWs8L2NvZGU+LCA8Y29kZT5kYXk8L2NvZGU+LCA8Y29kZT5zZWN0aW9uPC9jb2RlPiwgPGNv ZGU+Y2F0ZWdvcnk8L2NvZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT5jYWxpZDwv Y29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+am9pbjwvc3Bhbj4gOiB0aGUg Y2hhcmFjdGVycyB5b3Ugd2FudCB0byB1c2UgdG8gc2VwYXJhdGUgZWFjaCBpdGVtIHlvdSBh c2tlZCBmb3IuIE5vdGUgaXQgaXMgdGhlIGNoYXJhY3RlcnMgPGVtPmJldHdlZW48L2VtPiBl YWNoIGl0ZW0gc28gdGhlIHZlcnkgZmlyc3QgZW50cnkgd2lsbCA8c3Ryb25nPm5vdDwvc3Ry b25nPiBoYXZlIHRoZSA8Y29kZT5qb2luPC9jb2RlPiBpbiBmcm9udCBvZiBpdCAoc2VlIDxj b2RlPmpvaW5fcHJlZml4PC9jb2RlPikuIERlZmF1bHQ6IGEgc3BhY2U8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+am9pbl9wcmVmaXg8L3NwYW4+IDogdGhlIHN0cmluZyB5b3Ug d2FudCB0byBwdXQgaW4gZnJvbnQgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHJldHVybmVk IGxpc3QuIElmIHlvdSBkbyBub3Qgc3BlY2lmeSB0aGlzIGF0dHJpYnV0ZSBpdCBkZWZhdWx0 cyB0byA8Y29kZT5TTURfQVVUTzwvY29kZT4gd2hpY2ggdHJpZXMgdG8gYmUgY2xldmVyOgoJ PHVsPgoJCTxsaT5pZiB1c2luZyA8Y29kZT50eXBlPSZxdW90O2ZsYWcmcXVvdDs8L2NvZGU+ IHRoZSBqb2luX3ByZWZpeCBpcyBzZXQgdG8gdGhlIHNhbWUgYXMgPGNvZGU+am9pbjwvY29k ZT4uIFRodXMgd2l0aCA8Y29kZT5qb2luPSZxdW90OyBjYWxfJnF1b3Q7PC9jb2RlPiB5b3Ug bWlnaHQgZ2V0IDxjb2RlPiBjYWxfbXVsdGkgY2FsX3RvZGF5IGNhbF9ob2xzPC9jb2RlPjwv bGk+CgkJPGxpPmlmIHVzaW5nIDxjb2RlPmh0bWw9JnF1b3Q7MSZxdW90OzwvY29kZT4gdGhl IGpvaW5fcHJlZml4IGlzIHNldCB0byBhIHF1ZXN0aW9uIG1hcmssIHRodXM6IDxjb2RlPnR5 cGU9JnF1b3Q7bW9udGgseWVhcixjYXRlZ29yeSZxdW90OyBodG1sPSZxdW90OzEmcXVvdDs8 L2NvZGU+IG1pZ2h0IHJlbmRlciA8Y29kZT4/bT0xMiZhbXA7eT0yMDA4JmFtcDtjPWdpZ3M8 L2NvZGU+LCB3aGljaCBjYW4gYmUgcHV0IHN0cmFpZ2h0IG9uIHRoZSBlbmQgb2YgYW4gYW5j aG9yPC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmh0bWw8L3Nw YW4+IDogSWYgc2V0IHRvIDxjb2RlPjE8L2NvZGU+LCByZXR1cm5zIG5vdCBvbmx5IHRoZSB2 YWx1ZXMgeW91IHNwZWNpZmllZCBidXQgdGhlaXIgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gdmFyaWFibGUgbmFtZXMgYXMgd2VsbCwgZ2l2aW5nIHlvdSB0aGUgZW50aXJlIHN0 cmluZyBhcyBhIHZhbGlkIHNldCBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBw YXJhbWV0ZXJzIHdoaWNoIGNhbiBiZSBhZGRlZCB0byBhbiBhbmNob3IuIEl0IG92ZXJyaWRl cyB0aGUgPGNvZGU+am9pbjwvY29kZT4gYXR0cmlidXRlIGFuZCBzZXRzIGl0IHRvIGFuIGFt cGVyc2FuZC4gRGVmYXVsdDogPGNvZGU+MDwvY29kZT4uPGRpdiBjbGFzcz0iYnJlYWsiPlRo aXMgYXR0cmlidXRlIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGJ1aWxkaW5nIHlvdXIgb3duIGNv bnRlbnQgaW5zaWRlIGVhY2ggY2VsbCB2aWEgYSA8Y29kZT5mb3JtPC9jb2RlPiBhbmQgd2lz aCB0byBtYWludGFpbiB0aGUgY3VycmVudCBzZWFyY2ggZW52aXJvbm1lbnQuIElmIHlvdSBh bGxvdyBwZW9wbGUgdG8gZmlsdGVyIGV2ZW50cyBieSBjYXRlZ29yeSBvciBhdXRob3IgeW91 IGNhbiB1c2UgdGhpcyB0byByZXR1cm4gdGhlICYjODIxNjtjdXJyZW50JiM4MjE3OyBzdGF0 ZSBvZiBjZXJ0YWluIHZhcmlhYmxlcyBzbyB5b3UgY2FuIHBhc3MgdGhlbSB0byB0aGUgbmV4 dCBwYWdlIGFuZCBtYWludGFpbiBzdGF0ZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5lc2NhcGU8L3NwYW4+IDogZXNjYXBlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1M PC9zcGFuPiBlbnRpdGllcyBzdWNoIGFzIDxjb2RlPiZsdDs8L2NvZGU+LCA8Y29kZT4mZ3Q7 PC9jb2RlPiBhbmQgPGNvZGU+JmFtcDs8L2NvZGU+IGZvciBwYWdlIHZhbGlkYXRpb24gcHVy cG9zZXMuIFNldCB0byA8Y29kZT5lc2NhcGU9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byB0dXJu IGl0IG9mZi4gRGVmYXVsdDogPGNvZGU+aHRtbDwvY29kZT48L2xpPgoJPC91bD4KCgk8aDIg aWQ9ImNhbGNsYXNzIj5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2NhbF9jbGFzcyAvJmd0Ozwv Y29kZT48L2gyPgoKCTxwPkluc2lkZSB5b3VyIGNvbnRhaW5lci9mb3JtcywgdXNlIHRoaXMg dGFnIHRvIGFkZCBhIGxpc3Qgb2YgY2xhc3NlcyB0byB0aGUgY3VycmVudCBjZWxsL2V2ZW50 LiBWZXJ5IHVzZWZ1bCBpZiBidWlsZGluZyBjZWxscyB5b3Vyc2VsZiBiZWNhdXNlIGluc2lk ZSBhIDxhIGhyZWY9IiNpZmNhbCI+Y29uZGl0aW9uYWw8L2E+IHRhZyB5b3UgY291bGQgYWRk IHBhcnRpY3VsYXIgY2xhc3MgbmFtZXMgYmFzZWQgb24gc29tZSB2YWx1ZSBpbiBhIGNlbGwu PC9wPgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRzY2FsY2xhc3MiPkF0dHJpYnV0ZXM8 L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hbWU8L3NwYW4+IDogYSBj b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjbGFzc25hbWVzIHRvIGFkZCB0byB0aGUgY3VycmVu dCBjZWxsL2V2ZW50LiBUaGVzZSBhcmUgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gc3ViamVjdCB0 byBhbnkgPGNvZGU+Y2xhc3NwcmVmaXhlczwvY29kZT4gc28gd2lsbCBhbHdheXMgYXBwZWFy IGV4YWN0bHkgYXMgeW91IHdyaXRlIHRoZW08L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNhbG5v dyI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPjwvaDI+CgoJ PHA+UmV0dXJuIHRoZSBjdXJyZW50IGRhdGUvdGltZSwgZm9ybWF0dGVkIGhvd2V2ZXIgeW91 IHBsZWFzZS4gVXNlZnVsIGZvciBleHRyYWN0aW5nIHBhcnRzIG9mIHRoZSBjdXJyZW50IHN5 c3RlbSB0aW1lc3RhbXAgdG8gY29tcGFyZSB0aGluZ3MgdmlhIG90aGVyIGNvbmRpdGlvbmFs IHBsdWdpbnMgb3IgdGhlIDxjb2RlPiZsdDt0eHA6c21kX2lmX2NhbCZndDs8L2NvZGU+IHRh Zy48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNjYWxub3ciPkF0dHJpYnV0ZXM8 L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm1hdDwvc3Bhbj4gOiB0 aGUgd2F5IHlvdSB3YW50IHRoZSBkYXRlL3RpbWUgcmVwcmVzZW50ZWQuIFVzZSBhbnkgdmFs aWQgPGEgaHJlZj0iaHR0cDovL3VrMi5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9h PiBzdHJpbmcuIERlZmF1bHRzIHRvIHRoZSBkYXRlIGZvcm1hdCB5b3Ugc2V0IGluIEJhc2lj IFByZWZzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5vdzwvc3Bhbj4gOiBpZiB5 b3UgZG9uJiM4MjE3O3Qgd2FudCB0aGUgdGltZSB0byBiZSwgdW1tLCAmIzgyMTY7bm93JiM4 MjE3OyB5b3UgY2FuIHN0YXRlIHdoYXQgdGltZSAmIzgyMTY7bm93JiM4MjE3OyBpcyEgVXNl IGFueSBzdGFuZGFyZCBkYXRlL3RpbWUgZm9ybWF0LiAgRGVmYXVsdDogdGhlIHRpbWUgYXQg d2hpY2ggeW91IGNhbGwgdGhlIHRhZy48ZGl2IGNsYXNzPSJicmVhayI+WW91IG1heSBhbHNv IHVzZSB0aGUgY29kZXMgPGNvZGU+P2RheTwvY29kZT4sIDxjb2RlPj9tb250aDwvY29kZT4g b3IgPGNvZGU+P3llYXI8L2NvZGU+IGluIHlvdXIgdGltZSBzdHJpbmcgd2hpY2ggd2lsbCBk byBvbmUgb2YgdHdvIHRoaW5nczoKCTx1bD4KCQk8bGk+cmVwbGFjZSB0aGUgY29kZXMgd2l0 aCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gcGFyYW1ldGVycyA8Y29kZT5k PTwvY29kZT4sIDxjb2RlPm09PC9jb2RlPiBvciA8Y29kZT55PTwvY29kZT4sIGlmIHRoZXkg YXJlIGJlaW5nIHVzZWQ8L2xpPgoJCTxsaT51c2UgdGhlIGN1cnJlbnQgZGF5LCBtb250aCBv ciB5ZWFyIChpLmUuIHRoZSBwYXJ0cyBvZiB0b2RheSYjODIxNztzIGRhdGUpPGJyIC8+Cjwv ZGl2PjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vZmZzZXQ8 L3NwYW4+IDogYW4gb2Zmc2V0IGludG8gdGhlIGZ1dHVyZSB0aGF0IHlvdSB3aXNoIHRvIGFw cGx5IHRvIDxjb2RlPm5vdzwvY29kZT4uIGUuZy4gPGNvZGU+MiBtb250aHM8L2NvZGU+LiBT ZWUgPGEgaHJlZj0iI2VnNiI+RXhhbXBsZSA2PC9hPiBmb3IgYSBwcmFjdGljYWwgYXBwbGlj YXRpb24gb2YgdGhpcyBhdHRyaWJ1dGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ Z210PC9zcGFuPiA6IHJldHVybiBlaXRoZXIgbG9jYWwgdGltZSAoPGNvZGU+MDwvY29kZT4p IGFjY29yZGluZyB0byB0aGUgdGltZSB6b25lIHNldCBpbiBCYXNpYyBQcmVmcywgb3IgPHNw YW4gY2xhc3M9ImNhcHMiPkdNVDwvc3Bhbj4gdGltZSAoPGNvZGU+MTwvY29kZT4pLiBEZWZh dWx0OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYW5n PC9zcGFuPiA6IGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IGxhbmd1YWdlIGNv ZGUgdGhhdCBmb3JtYXRzIHRpbWUgc3RyaW5ncyBzdWl0YWJsZSBmb3IgdGhlIHNwZWNpZmll ZCBsYW5ndWFnZSAob3IgbG9jYWxlKSBhcyBkZWZpbmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly9l bi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzYzOSI+PHNwYW4gY2xhc3M9ImNhcHMiPklTTzwv c3Bhbj4gNjM5PC9hPi4gRGVmYXVsdDogdW5zZXQgKGkuZS4gdXNlIHRoZSB2YWx1ZSBhcyBz dGF0ZWQgaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gcHJlZnMpPC9saT4KCTwv dWw+CgoJPGgyIGlkPSJhcnRldiI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9hcnRpY2xlX2V2 ZW50IC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+V2hlbiB5b3UgY3JlYXRlIGV2ZW50cywgdGhl eSByZWFsbHkgb25seSBleGlzdCBvbmNlIGFzIGEgc2luZ2xlIGFydGljbGU7IHRoZSByZXBl dGl0aW9uIGlzIGEgdHJpY2suIFRodXMgdGhlIGJ1aWx0LWluIGFydGljbGUgdGFncyBvbmx5 IHNob3cgdGhlIHNpbmdsZSwgcmVhbCBhcnRpY2xlcy48L3A+CgoJPHA+VGhpcyB0YWcgJiM4 MjEyOyBzaW1pbGFyIGluIGZ1bmN0aW9uIHRvIDxjb2RlPiZsdDt0eHA6YXJ0aWNsZV9jdXN0 b20gLyZndDs8L2NvZGU+ICYjODIxMjsgYWxsb3dzIHlvdSB0byBzZWUgcmVjdXJyaW5nIGFy dGljbGVzIGFzIGlmIHRoZXkgd2VyZSAmIzgyMTY7cmVhbCYjODIxNzsgYXJ0aWNsZXMgaW4g dGhlIGRhdGFiYXNlLiBJbnNpZGUgdGhlIHRhZyYjODIxNztzIDxjb2RlPmZvcm08L2NvZGU+ IG9yIGNvbnRhaW5lciB5b3UgY2FuIHVzZSBhbGwgZXhpc3RpbmcgYXJ0aWNsZSB0YWdzIHRv IGRpc3BsYXkgYW55IGluZm9ybWF0aW9uIHlvdSBsaWtlIGFib3V0IGVhY2ggJiM4MjE2O3Zp cnR1YWwmIzgyMTc7IGFydGljbGUuPC9wPgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRz YXJ0ZXYiPkF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnN0ZXBmaWVsZDwvc3Bhbj4gOiBzYW1lIGFzIGluIDxhIGhyZWY9IiNzbWRjYWwiPnNtZF9j YWxlbmRhcjwvYT4sIHRoZSBJRCBvZiB0aGUgZmllbGQgdGhhdCBjb250YWlucyBldmVudCBy ZXBldGl0aW9ucy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+c2tpcGZpZWxkPC9zcGFuPiA6IHNhbWUgYXMgaW4gPGEgaHJlZj0iI3NtZGNhbCI+c21k X2NhbGVuZGFyPC9hPiwgdGhlIElEIG9mIHRoZSBmaWVsZCB0aGF0IGNvbnRhaW5zIHRoZSBs aXN0IG9mIGV2ZW50IGNhbmNlbGxhdGlvbiBkYXRlcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b21pdGZpZWxkPC9zcGFuPiA6IHNhbWUgYXMgaW4g PGEgaHJlZj0iI3NtZGNhbCI+c21kX2NhbGVuZGFyPC9hPiwgdGhlIElEIG9mIHRoZSBmaWVs ZCB0aGF0IGNvbnRhaW5zIHRoZSBsaXN0IG9mIGV2ZW50IG9taXNzaW9uIGRhdGVzLiBEZWZh dWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50eXBlPC9zcGFuPiA6 IHRoZSB0eXBlcyBvZiBldmVudCB0byBkaXNwbGF5LiBDaG9vc2UgZnJvbSA8Y29kZT5zdGFu ZGFyZDwvY29kZT4sIDxjb2RlPnJlY3VyPC9jb2RlPiBvciA8Y29kZT5tdWx0aTwvY29kZT4u IERlZmF1bHQ6IDxjb2RlPnN0YW5kYXJkLCByZWN1ciwgbXVsdGk8L2NvZGU+PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNlY3Rpb248L3NwYW4+IDogcmVzdHJpY3QgdGhlIGV2 ZW50cyB0byBhIGxpc3Qgb2Ygc2VjdGlvbnMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmNhdGVnb3J5PC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBldmVu dHMgdG8gYSBsaXN0IG9mIGNhdGVnb3JpZXMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmF1dGhvcjwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRz IHRvIGEgbGlzdCBvZiBhdXRob3JzLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5pZDwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRzIHRvIGEgbGlz dCBvZiBhcnRpY2xlIElEcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+c3RhdHVzPC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBldmVudHMgdG8gdGhpcyBs aXN0IG9mIGFydGljbGUgc3RhdHVzLiBEZWZhdWx0OiA8Y29kZT5saXZlPC9jb2RlPjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5leHBpcmVkPC9zcGFuPiA6IGRlZmluaXRpdmVs eSBoaWRlICg8Y29kZT4wPC9jb2RlPikgb3Igc2hvdyAoPGNvZGU+MTwvY29kZT4pIGV4cGly ZWQgZXZlbnRzLiBMZWF2ZSBibGFuayB0byB1c2UgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IEFkdmFuY2VkIFByZWZlcmVuY2UgPGNvZGU+UHVibGlzaCBleHBpcmVkIGFy dGljbGVzPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aW1lPC9zcGFu PiA6IG9ubHkgc2hvdyBldmVudHMgaW4gdGhpcyB0aW1lIGZyYW1lLiBDaG9vc2UgZnJvbSA8 Y29kZT5hbnk8L2NvZGU+LCA8Y29kZT5mdXR1cmU8L2NvZGU+IG9yIDxjb2RlPnBhc3Q8L2Nv ZGU+LiBEZWZhdWx0OiA8Y29kZT5hbnk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPm1vbnRoPC9zcGFuPiA6IG9ubHkgc2hvdyBldmVudHMgdGhhdCBvY2N1ciBpbiB0 aGUgZ2l2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPllZWVk8L3NwYW4+LW1tLiBEZWZhdWx0OiB1 bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mcm9tPC9zcGFuPiA6IG9ubHkg c2hvdyBldmVudHMgZnJvbSB0aGlzIHN0YXJ0IGRhdGUuIENhbiBiZSBhbnkgdmFsaWQgZGF0 ZSBmb3JtYXQuIERlZmF1bHQ6IHVuc2V0IChpLmUuIGFsbCBkYXRlcyk8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+dG88L3NwYW4+IDogb25seSBzaG93IGV2ZW50cyB1cCB0byB0 aGlzIGVuZCBkYXRlLiBDYW4gYmUgYW55IHZhbGlkIGRhdGUgZm9ybWF0LiBEZWZhdWx0OiB1 bnNldCAoaS5lLiBhbGwgZGF0ZXMpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNv cnQ8L3NwYW4+IDogb3JkZXIgdGhlIGV2ZW50cyBieSB0aGlzIGNvbHVtbi4gVGhlIG1vc3Qg dXNlZnVsIHZhbHVlIGlzIHRoZSBkZWZhdWx0OiA8Y29kZT5Qb3N0ZWQgYXNjPC9jb2RlPjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHBhc3MgZWFjaCBt YXRjaGluZyBldmVudCB0byB0aGUgZ2l2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gZm9ybS4gRGVmYXVsdDogdW5zZXQuIE5vdGUgdGhhdCB1c2luZyB0aGUgY29udGFpbmVy IG92ZXJyaWRlcyB0aGlzIGF0dHJpYnV0ZSwgYW5kIGlmIHlvdSBzcGVjaWZ5IG5laXRoZXIg YSBmb3JtIG5vciBjb250YWluZXIsIHlvdSB3aWxsIHNlZSBhIGxpc3Qgb2YgYXJ0aWNsZSBw b3N0ZWQgZGF0ZXM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b2Zmc2V0PC9zcGFu PiA6IHVubGlrZSBhcnRpY2xlX2N1c3RvbSwgZXZlbnRzIGZyb20gdGhlIHNtZF9hcnRpY2xl X2V2ZW50IHRhZyBtYXkgYmUgcGFnZWQgdXNpbmcgPGNvZGU+Jmx0O3R4cDpvbGRlciAvJmd0 OzwvY29kZT4gYW5kIDxjb2RlPiZsdDt0eHA6bmV3ZXIgLyZndDs8L2NvZGU+LiBZb3UgbWF5 IHNwZWNpZnkgYSBmaXhlZCBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpc3Qgb2Yg ZXZlbnRzIGlmIHlvdSB3aXNoLiBEZWZhdWx0OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bhbj4gOiBvbmx5IHNob3cgdGhpcyBtYW55 IGV2ZW50cyBtYXhpbXVtIDxzdHJvbmc+cGVyIHBhZ2U8L3N0cm9uZz4sIGkuZS4gdGhlIG51 bWJlciBvZiBldmVudHMgdG8gZGlzcGxheSwgd2hldGhlciB0aGV5IGNvbWUgZnJvbSBvbmUg JiM4MjE2O3JlYWwmIzgyMTc7IGFydGljbGUgb3IgbWFueS4gRGVmYXVsdDogPGNvZGU+MTA8 L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2ZW50bGltaXQ8L3NwYW4+ IDogb25seSBzaG93IHRoaXMgbWFueSBldmVudHMgbWF4aW11bSwgPHN0cm9uZz5wZXIgZXZl bnQ8L3N0cm9uZz4uIFNvIGlmIHlvdSBoYXZlIGEgd2Vla2x5IHJlcGVhdGVkIGV2ZW50IHRo YXQgbGFzdHMgZm9yIGZvdXIgbW9udGhzIGFuZCB5b3Ugc2V0IDxjb2RlPmV2ZW50bGltaXQ9 JnF1b3Q7NiZxdW90OzwvY29kZT4geW91IHdpbGwgb25seSBzZWUgYSBtYXhpbXVtIG9mIDYg ZXZlbnRzIGZyb20gZXZlcnkgYXJ0aWNsZSBjb250YWluaW5nIHJlcGV0aXRpb24uIFRoZSBy YW5nZSAoc3RhcnQgYW5kIGVuZCBkYXRlKSBpcyBkZXRlcm1pbmVkIGJ5IG90aGVyIHBsdWdp biBhdHRyaWJ1dGVzLiBEZWZhdWx0OiA8Y29kZT4xMDwvY29kZT48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+cGFnZWJ5PC9zcGFuPiA6IGVzb3RlcmljIHBhZ2luZyBmZWF0dXJl LCBpZGVudGljYWwgdG8gPGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9jb2RlPi4gRGVm YXVsdDogc2FtZSBhcyA8Y29kZT5saW1pdDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+cGdvbmx5PC9zcGFuPiA6IHNldCB0byA8Y29kZT4xPC9jb2RlPiB0byBwZXJm b3JtIHRoZSBwYWdpbmcgYWN0aW9uIHdpdGhvdXQgZGlzcGxheWluZyBhbnl0aGluZy4gUHJv YmFibHkgdXNlbGVzcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgKHdpdGhvdXQgYnJhY2tl dHMpIHRvIHdyYXAgdGhlIGxpc3QgaW4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzZXBh cmF0ZSBlYWNoIGl0ZW0gd2l0aC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8 L3NwYW4+IGNsYXNzIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnLiBEZWZhdWx0OiB1bnNldDwv bGk+Cgk8L3VsPgoKCTxwPkl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IHRoaXMgdGFnIGV4ZWN1 dGVzIGluIDMtcGhhc2VzOjwvcD4KCgk8b2w+CgkJPGxpPlByZS1maWx0ZXI6IGFsbCBldmVu dHMgdGhhdCBtYXRjaCA8Y29kZT50eXBlPC9jb2RlPiwgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+ LCA8Y29kZT5zZWN0aW9uPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+c3Rh dHVzPC9jb2RlPiwgPGNvZGU+aWQ8L2NvZGU+LCBhbmQgPGNvZGU+ZXhwaXJlZDwvY29kZT4g YXJlIGV4dHJhY3RlZDwvbGk+CgkJPGxpPlRpbWUtZmlsdGVyOiBhbnkgJiM4MjIwO3RpbWUt YmFzZWQmIzgyMjE7IGF0dHJpYnV0ZXMgYXJlIHRoZW4gYXBwbGllZCB0byB0aGUgYWJvdmUg bGlzdC4gQXQgdGhpcyBwb2ludCwgYW55IDxjb2RlPnN0ZXBmaWVsZDwvY29kZT4sIDxjb2Rl Pm9taXRmaWVsZDwvY29kZT4sIG9yIDxjb2RlPnNraXBmaWVsZDwvY29kZT4gYXJlIGNhbGN1 bGF0ZWQgdG8gZmluZCByZXBlYXRlZCBkYXRlcyAodXAgdG8gYXMgbWFueSBhcyA8Y29kZT5l dmVudGxpbWl0PC9jb2RlPiBhbGxvd3Mgb3IgdGhlIGNhbGN1bGF0aW9uIGV4Y2VlZHMgdGhl IGV2ZW50JiM4MjE3O3MgZXhwaXJ5IHRpbWUpLiBTbyB0aGUgYXR0cmlidXRlcyA8Y29kZT50 aW1lPC9jb2RlPiwgPGNvZGU+bW9udGg8L2NvZGU+LCA8Y29kZT5mcm9tPC9jb2RlPiwgYW5k IDxjb2RlPnRvPC9jb2RlPiBhcmUgdXNlZCB0byByZWZpbmUgdGhlIGZpbHRyYXRpb248L2xp PgoJCTxsaT5PdXRwdXQ6IHdoYXRldmVyIHRoZSBwcmV2aW91cyBwaGFzZXMgaGF2ZSBsZWZ0 IGJlaGluZCBpcyBzdWJqZWN0IHRvIGFueSBwYWdpbmcsIDxjb2RlPm9mZnNldDwvY29kZT4g YW5kIDxjb2RlPmxpbWl0PC9jb2RlPiB5b3UgbWF5IGhhdmUgc3BlY2lmaWVkLCB0aGVuIHdy YXBwZWQgYW5kIGRpc3BsYXllZDwvbGk+Cgk8L29sPgoKCTxoMiBpZD0iZGF0ZXMiPkRhdGVz LCBnb3RjaGFzIGFuZCBpZGlvc3luY3JhY2llczwvaDI+CgoJPHA+SWYgdGhlcmUgd2FzIG9u ZSBnbG9iYWwgdGltZSB6b25lIHRoZSB3b3JsZCB3b3VsZCBiZSBzaW1wbGVyLiBTYWRseSwg d2UgYWxsIGxpdmUgaW4gZGlmZmVyZW50IHBsYWNlcyBhbmQgdGhlIEludGVybmV0IEJlYXQg aGFzbiYjODIxNzt0IHJlYWxseSB0YWtlbiBvZmYuIEV2ZW4gbW9yZSBzYWRseSwgY2VydGFp biB1cHBlciBlY2hlbG9ucyBvZiBwb3dlciBkZWNyZWUgdGhhdCB0d2ljZSBhIHllYXIgc29t ZSBjb3VudHJpZXMgbXVzdCBhbHRlciB0aGVpciBjbG9ja3MgdG8gU2F2ZSBEYXlsaWdodCAo d2hhdGV2ZXIgdGhhdCBtZWFucykuPC9wPgoKCTxwPjxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IGRvZXMgaXRzIGJlc3QgdG8gc2hpZWxkIHlvdSBmcm9tIHRoaXMgbWF5aGVtIGJ5 IGFsbG93aW5nIHlvdSB0byBzcGVjaWZ5IHlvdXIgbG9jYWxlLCB0aW1lIG9mZnNldCBmcm9t IDxzcGFuIGNsYXNzPSJjYXBzIj5HTVQ8L3NwYW4+LCBhbmQgd2hlbiA8c3BhbiBjbGFzcz0i Y2FwcyI+RFNUPC9zcGFuPiBhcHBsaWVzIGluIHlvdXIgdGltZSB6b25lIChub3QgZm9yZ2V0 dGluZyB0aGUgdGltZSB6b25lIG9mIHlvdXIgc2VydmVyIGlmIGl0IGhhcHBlbnMgdG8gYmUg bm93aGVyZSBuZWFyIHlvdSkuPC9wPgoKCTxwPkFuZCB0aGVyZWluIGxpZXMgdGhlIHJ1Yi48 L3A+CgoJPHA+Rm9yIGEgY2FsZW5kYXIgc3lzdGVtLCB0aGlzIGlzIHN1Yi1vcHRpbWFsLiBJ biBmYWN0IGl0JiM4MjE3O3MgZG93bnJpZ2h0IGFubm95aW5nIGJlY2F1c2Ugd2hlbiB5b3Ug c2F5IHRoYXQgYW4gZXZlbnQgaXMgZ29pbmcgdG8gb2NjdXIgYXQgOHBtIGluIHNpeCBtb250 aHMmIzgyMTc7IHRpbWUsIHBlc2t5IERheWxpZ2h0IFNhdmluZ3MgbWF5IHRoZW4gYmUgaW4g ZWZmZWN0IGFuZCB5b3VyIGV2ZW50IHdpbGwgYXBwZWFyIGFuIGhvdXIgJiM4MjE2O29mZiYj ODIxNzsgKGl0IG1heSBsb29rIHdyb25nIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UgYXMgd2Vs bCBhcyBpbiB5b3VyIGNhbGVuZGFyLCBkZXBlbmRpbmcgb24gdGhlIHNldHRpbmdzKS48L3A+ CgoJPHA+QWxzbywgaWYgeW91ciBzZXJ2ZXIgb3IgeW91ciBvZmZpY2UgaXMgcmVsb2NhdGVk IGFuZCB5b3UgaGF2ZSB0byBhZGp1c3QgdGltZSB6b25lLCBhbGwgeW91ciBiZWF1dGlmdWxs eSBjcmFmdGVkIGRhdGVzIHdpbGwgYmUgc2hpZnRlZC4gV2VsbCwgdGhleSYjODIxNztyZSBu b3QgYWN0dWFsbHkgY2hhbmdlZCBpbiB0aGUgZGF0YWJhc2UgdW5sZXNzIHlvdSBlZGl0IGFu IGFydGljbGUgYW5kIHJlLXNhdmUgaXQsIGJ1dCB0aGV5IDxlbT5hcHBlYXI8L2VtPiB0byBo YXZlIHNoaWZ0ZWQgYmVjYXVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBpcyB0 cnlpbmcgdG8gc2hpZWxkIHlvdSBmcm9tIHRpbWUgYnVyZWF1Y3JhY3kgaW4gYSB3b3JsZCBn b25lIG1hZC48L3A+CgoJPHA+VW5mb3J0dW5hdGVseSB0aGVyZSBpcyBsaXR0bGUgd2UgY2Fu IGRvIGFib3V0IHRoaXMgYXQgdGhlIG1vbWVudCB1bnRpbCB0aGUgd2F5IGRhdGVzIGFyZSBo YW5kbGVkIGluIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGlzIGNoYW5nZWQuIEJ1 dCB0aGVyZSBhcmUgc29tZSBzZXR0aW5ncyB0aGF0IHlvdSBjYW4gcGxheSB3aXRoIHRvIHRy eSBhbmQgbWFrZSBzZW5zZSBvZiBpdCBhbGwuIE5hbWVseSB0aGUgPGNvZGU+Z210PC9jb2Rl PiBhdHRyaWJ1dGUgdG8gdGhlIGNhbGVuZGFyIHBsdWdpbiBhbmQgYW55IG9mIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+JiM4MjE3O3MgZGF0ZS1iYXNlZCB0YWdzIHN1Y2ggYXMg PGNvZGU+Jmx0O3R4cDpwb3N0ZWQgLyZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7dHhwOmV4 cGlyZXMgLyZndDs8L2NvZGU+LiBTb21ldGltZXMgZmlkZGxpbmcgd2l0aCB0aGF0IGFuZCB0 aGUgdGltZSB6b25lL0RTVCBmbGFncyB3aWxsIGhlbHAuIE90aGVyIHRpbWVzIHlvdSYjODIx NztsbCBnZXQgaW4gYSByaWdodCBvbGQgbWVzcy48L3A+CgoJPHA+SWYgYWxsIHRoYXQgZmFp bHMsIHRoZSBjb25kaXRpb25hbCB0YWcgbWF5IGJlIGFibGUgdG8gaGVscCB5b3UgY29tcGFy ZSBjZXJ0YWluIGRhdGVzIGFuZCBhcHBseSBkaWZmZXJlbnQgYXR0cmlidXRlcyBkZXBlbmRp bmcgb24gdGhlIGRheSBvZiB0aGUgeWVhci4gRmFpbGluZyB0aGF0LCBqdXN0IHVzZSA8c3Bh biBjbGFzcz0iY2FwcyI+R01UPC9zcGFuPiBhbmQgcmVmdXNlIHRvIG9ic2VydmUgPHNwYW4g Y2xhc3M9ImNhcHMiPkRTVDwvc3Bhbj4gOi0pPC9wPgoKCTxoMiBjbGFzcz0iZXhhbXBsZXMi PkV4YW1wbGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxPC9oMz4KCgk8cD5UaGUg YmVhdXR5IG9mIHRoZSBwbHVnaW4gaXMgdGhhdCB5b3UgaGF2ZSB0aGUgZW50aXJlIGFyc2Vu YWwgb2YgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyBhdmFpbGFibGUgdG8g eW91IGlmIHlvdSBjaG9vc2UgdG8gdXNlIGEgPGNvZGU+Zm9ybTwvY29kZT4uIFRodXMgeW91 IGNhbiBzZXQgdGhlIGFydGljbGUmIzgyMTc7cyBzdGFydCBhbmQgZW5kIGRhdGVzIHRvIHRo ZSBzYW1lIGRheSBhbmQgc2V0IHRoZSBzdGFydCBhbmQgZW5kIHRpbWVzIHRvIGluZGljYXRl IHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBldmVudC4gWW91IGNhbiB0aGVuIHVzZSBzdGFu ZGFyZCA8Y29kZT4mbHQ7dHhwOnBvc3RlZCAvJmd0OzwvY29kZT4gb3IgPGNvZGU+Jmx0O3R4 cDpleHBpcmVzIC8mZ3Q7PC9jb2RlPiB0YWdzIHdpdGggdmFyaW91cyA8Y29kZT5mb3JtYXQ8 L2NvZGU+IHN0cmluZ3MgdG8gcmVuZGVyIHRoZSBldmVudCYjODIxNztzIGNyaXRlcmlhLjwv cD4KCgk8cD5TaW1pbGFybHkgeW91IGNhbiB1c2UgPGNvZGU+Jmx0O3R4cDpleGNlcnB0IC8m Z3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3R4cDp0aXRsZSAvJmd0OzwvY29kZT4gb3Igb2Yg Y291cnNlIGFueSBjdXN0b20gZmllbGRzIHRvIHNob3cgYXMgbXVjaCBvciBhcyBsaXR0bGUg ZGV0YWlsIGFzIHlvdSBsaWtlIGluIHRoZSBjYWxlbmRhciBjZWxsLjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2NhbGVuZGFyIHNl Y3Rpb249JnF1b3Q7ZXZlbnRzJnF1b3Q7Jmd0OwombHQ7ZGl2Jmd0OwogICBFdmVudDogJmx0 O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsm Z3Q7CiAgICZsdDticiAvJmd0OyZsdDt0eHA6ZXhjZXJwdCAvJmd0OwombHQ7L2RpdiZndDsK Jmx0O2RpdiBjbGFzcz0mcXVvdDtldnRpbWUmcXVvdDsmZ3Q7CiAgIFN0YXJ0OiAmbHQ7dHhw OnBvc3RlZCBmb3JtYXQ9JnF1b3Q7JUg6JU0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZs dDtkaXYgY2xhc3M9JnF1b3Q7ZXZ0aW1lJnF1b3Q7Jmd0OwogICBFbmQ6ICZsdDt0eHA6ZXhw aXJlcyBmb3JtYXQ9JnF1b3Q7JUg6JU0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZsdDsv dHhwOnNtZF9jYWxlbmRhciZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWcyIj5FeGFt cGxlIDI8L2gzPgoKCTxwPlVzaW5nIHRoZSBjb25kaXRpb25hbCB0YWcgeW91IGNhbiB0YWtl IGFjdGlvbiBpZiBjZXJ0YWluIGV2ZW50cyBjb250YWluIHBhcnRpY3VsYXIgZmxhZ3MuIFRo aXMgZXhhbXBsZSBhbHNvIHNob3cgYSBjb21wbGV0ZWx5IHVzZWxlc3MgbWFubmVyIG9mIGVt cGxveWluZyA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPi48L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaW1lIGlzOiAmbHQ7dHhw OnNtZF9jYWxfbm93IGZvcm1hdD0mcXVvdDslVCZxdW90OyAvJmd0OwombHQ7dHhwOnNtZF9j YWxlbmRhciBmb3JtPSZxdW90O2V2Zm9ybSZxdW90OwogICAgIHN0ZXBmaWVsZD0mcXVvdDtj dXN0b21fMyZxdW90OyBza2lwZmllbGQ9JnF1b3Q7Y3VzdG9tXzYmcXVvdDsKICAgICBzcGFu Zm9ybT0mcXVvdDttdWx0aXMmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkluIGZv cm0gPGNvZGU+ZXZmb3JtPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVvdDtyZWN1ciZxdW90 OyZndDsKICAmbHQ7dHhwOnBlcm1saW5rJmd0OyhSRUNVUikmbHQ7L3R4cDpwZXJtbGluayZn dDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0 aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7dHhwOnNtZF9pZl9jYWwg ZmxhZz0mcXVvdDttdWx0aWZpcnN0JnF1b3Q7Jmd0OwogICAgICAmbHQ7c3BhbiBjbGFzcz0m cXVvdDtyaWdodCZxdW90OyZndDsmYW1wO2xhcXVvOy0tJmx0Oy9zcGFuJmd0OwogICAmbHQ7 L3R4cDpzbWRfaWZfY2FsJmd0OwogICAmbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVvdDty ZWN1cmZpcnN0JnF1b3Q7Jmd0OwogICAgICAmbHQ7c3BhbiZndDtPbmUgb2YgbWFueS4uLiZs dDsvc3BhbiZndDsKICAgJmx0Oy90eHA6c21kX2lmX2NhbCZndDsKJmx0Oy90eHA6c21kX2lm X2NhbCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkFuZCBpbiBmb3JtIDxjb2RlPm11bHRpczwv Y29kZT46PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7bXVsdGksIG11bHRpcHJldiZxdW90OyZndDsK ICAgJmx0O3R4cDpwZXJtbGluayZndDstLSZhbXA7cmFxdW87LS0mbHQ7L3R4cDpwZXJtbGlu ayZndDsKJmx0Oy90eHA6c21kX2lmX2NhbCZndDsKJmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9 JnF1b3Q7bXVsdGlsYXN0JnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0OwogICAg ICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtsZWZ0JnF1b3Q7Jmd0Oy0tJmFtcDtyYXF1bzsmbHQ7 L3NwYW4mZ3Q7IEVORCAmbHQ7dHhwOnRpdGxlIC8mZ3Q7CiAgICZsdDsvdHhwOnBlcm1saW5r Jmd0OwombHQ7L3R4cDpzbWRfaWZfY2FsJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90aWNl IHRoYXQgPGNvZGU+bXVsdGlmaXJzdDwvY29kZT4gaXMgdGVzdGVkIGluc2lkZSB0aGUgc2Ft ZSBmb3JtIGFzIHN0YW5kYXJkIGV2ZW50cy4gVGhpcyBpcyBiZWNhdXNlIG9ubHkgPGVtPmNv bnRpbnVhdGlvbiBzcGFubmVkIGNlbGxzPC9lbT4gYXJlIHBhc3NlZCB0byB0aGUgPGNvZGU+ c3BhbmZvcm08L2NvZGU+OyB0aGUgZmlyc3QgZXZlbnQgb2YgYSBzcGFubmVkIGdyb3VwIGlz IGp1c3QgbGlrZSBhbnkgc3RhbmRhcmQgZXZlbnQuIFNpbWlsYXJseSwgaWYgeW91IGhhZCBi ZWVuIHVzaW5nIDxjb2RlPnJlY3VyZm9ybTwvY29kZT4gdGhlIGZpcnN0IGV2ZW50IG9mIHRo ZSByZWN1cnJpbmcgc2V0IHdvdWxkIGJlIHByb2Nlc3NlZCBpbiB0aGUgdXN1YWwgZm9ybS9j b250YWluZXIgYW5kIGV2ZXJ5IHN1YnNlcXVlbnQgZXZlbnQgd291bGQgYmUgcGFzc2VkIHRv IHRoZSBkZWRpY2F0ZWQgZm9ybS48L3A+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUgMzwvaDM+ CgoJPHA+WW91IGNvdWxkIHVzZSB0aGUgY2FsZW5kYXIgdGFncyB0byBvdXRwdXQgdmFyaW91 cyBwaWVjZXMgb2YgZmxhZyBpbmZvcm1hdGlvbiB0byBidWlsZCB5b3VyIG93biBjbGFzcyBu YW1lcy4gVGhpcyBleGFtcGxlIGFsc28gZGVtb25zdHJhdGVzIHRoZSA8Y29kZT5odG1sPC9j b2RlPiBhdHRyaWJ1dGUgb2YgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2luZm8gLyZndDs8L2Nv ZGU+IHRvIGJ1aWxkIHVwIGEgcXVlcnkgc3RyaW5nIHRoYXQgaXMgcGFzc2VkIGFsb25nIHdp dGggYW4gZXZlbnQmIzgyMTc7cyA8Y29kZT5jYXRlZ29yeTE8L2NvZGU+IHdoZW4gYSB2aXNp dG9yIGNsaWNrcyB0aGUgYW5jaG9yLjwvcD4KCgk8cD5UaGlzIGFsbG93cyB5b3VyIHNpdGUg dmlzaXRvcnMgdG8gZmlsdGVyIGV2ZW50cyBieSBjYXRlZ29yeSB3aGlsZSByZXRhaW5pbmcg dGhlIGFiaWxpdHkgdG8gc2hvdyB0aGUgY2FsZW5kYXIgZm9yIHRoZSBjdXJyZW50IG1vbnRo L3llYXIgYW5kIHNlY3Rpb24gdGhleSBhcmUgdmlld2luZyBpbnN0ZWFkIG9mIGRyb3BwaW5n IGJhY2sgdG8gdGhlIGN1cnJlbnQgbW9udGgveWVhciBsaWtlIG90aGVyIGNhbGVuZGFyIHN5 c3RlbXMgb2Z0ZW4gZG8uPC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpzbWRfY2FsZW5kYXIgaXNvd2Vla3M9JnF1b3Q7V0VFSyMmcXVvdDsK ICAgICB5ZWFyd2lkdGg9JnF1b3Q7MCwyJnF1b3Q7IHNlbGVjdD0mcXVvdDt5ZWFyLCBtb250 aCZxdW90OwogICAgIHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OyBza2lwZmllbGQ9 JnF1b3Q7Y3VzdG9tXzImcXVvdDsKICAgICBzaG93c2tpcHBlZD0mcXVvdDsxJnF1b3Q7IGV4 cGlyZWQ9JnF1b3Q7MSZxdW90OyZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Jmx0O3R4 cDpzbWRfY2FsX2luZm8gam9pbj0mcXVvdDsgY2FsXyZxdW90OyAvJmd0OyZxdW90OyZndDsK ICAgICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6 cGVybWxpbmsmZ3Q7CiAgICAgICZsdDthIGhyZWY9JnF1b3Q7P2M9Jmx0O3R4cDpjYXRlZ29y eTEKICAgICAgICAgLyZndDsmYW1wOyZsdDt0eHA6c21kX2NhbF9pbmZvIHR5cGU9JnF1b3Q7 c2VjdGlvbiwgeWVhciwKICAgICAgICAgbW9udGgsIGNhbGlkJnF1b3Q7IGh0bWw9JnF1b3Q7 MSZxdW90OyBqb2luX3ByZWZpeD0mcXVvdDsmcXVvdDsKICAgICAgICAgLyZndDsmcXVvdDsm Z3Q7Jmx0O3R4cDpjYXRlZ29yeTEgdGl0bGU9JnF1b3Q7MSZxdW90OyAvJmd0OyZsdDsvYSZn dDsKICAgJmx0Oy9zcGFuJmd0OwombHQ7L3R4cDpzbWRfY2FsZW5kYXImZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5XaGF0IGlzIGFsc28gdXNlZnVsIGFib3V0IHRoZSA8Y29kZT4mbHQ7dHhw OnNtZF9jYWxfaW5mbyAvJmd0OzwvY29kZT4gdGFnIGlzIHRoYXQgaWYgYSBwYXJ0aWN1bGFy IHZhbHVlIGlzIG5vdCBzZXQgaXQgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1 dC48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDwvaDM+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aDImZ3Q7VXBjb21pbmcgRXZlbnRzJmx0Oy9o MiZndDsKJmx0O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9t XzEmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O2RsJnF1b3Q7IHRpbWU9JnF1b3Q7ZnV0dXJl JnF1b3Q7IGV2ZW50bGltaXQ9JnF1b3Q7NSZxdW90OyZndDsKICAgJmx0O3R4cDppZl9kaWZm ZXJlbnQmZ3Q7CiAgICAgJmx0O2R0Jmd0OyZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDsl QiAlWSZxdW90OyAvJmd0OyZsdDsvZHQmZ3Q7CiAgICZsdDsvdHhwOmlmX2RpZmZlcmVudCZn dDsKICAgJmx0O2RkJmd0OwogICAgICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6dGl0 bGUvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAgICAmbHQ7dHhwOnBvc3RlZCAvJmd0 OwogICAmbHQ7L2RkJmd0OwombHQ7L3R4cDpzbWRfYXJ0aWNsZV9ldmVudCZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPlRoYXQgbGlzdHMgdGhlIG5leHQgNSB1cGNvbWluZyAmIzgyMTI7IHJl Y3VycmluZyAmIzgyMTI7IGV2ZW50cywgcGx1cyBhbnkgc3RhbmRhcmQgYW5kIHNwYW5uZWQg ZXZlbnRzLCBmb3JtYXR0aW5nIHRoZW0gYXMgYSBkZWZpbml0aW9uIGxpc3QuIElmIHlvdSBh ZGQgcGFnaW5hdGlvbiB0YWdzIHlvdSBjYW4gZmxpcCB0aHJvdWdoIGFsbCB0aGUgZXZlbnRz OyB0aGV5IHdpbGwgYmUgZGlzcGxheWVkIDEwIGF0IGEgdGltZSBvbiBlYWNoIHBhZ2UgKGlm IHlvdSB3YW50IHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggcGFnZSB5b3UgYXJlIG9uIGFzIHlv dSBmbGlwIHRocm91Z2ggYSBjYWxlbmRhciB0aGF0IGlzIGluIGEgc2lkZWJhciwgYWRkIDxj b2RlPnBnPC9jb2RlPiB0byB0aGUgPGNvZGU+bWFpbnRhaW48L2NvZGU+IGF0dHJpYnV0ZSBp biB5b3VyIGNhbGVuZGFyKS48L3A+CgoJPHA+Tm90ZSB0aGUgaHlwZXJsaW5rZWQgdGl0bGUg c2hvd24gaGVyZSB3aWxsIHJldHVybiB0byB0aGUgJiM4MjE2O3JlYWwmIzgyMTc7IGFydGlj bGUgd2hlbiBjbGlja2VkLiBJZiB5b3Ugd2FudGVkIHRvIGFsbG93IHBlb3BsZSB0byBib29r IGFuIGV2ZW50IG9uIHlvdXIgaW5kaXZpZHVhbCBhcnRpY2xlLCB0cnkgdGhpczo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOmlmX2luZGl2 aWR1YWxfYXJ0aWNsZSZndDsKICZsdDt0eHA6YXJ0aWNsZSBsaW1pdD0mcXVvdDsxJnF1b3Q7 Jmd0OwogICZsdDtoMyZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy9oMyZndDsKICAmbHQ7 dHhwOmJvZHkgLyZndDsKICAmbHQ7cCZndDtQbGVhc2UgY2hvb3NlIGEgZGF0ZSB0byBib29r OiZsdDsvcCZndDsKICAmbHQ7c2VsZWN0Jmd0OwogICZsdDt0eHA6c21kX2FydGljbGVfZXZl bnQgc3RlcGZpZWxkPSZxdW90O2N1c3RvbV8xJnF1b3Q7CiAgICB0eXBlPSZxdW90O3JlY3Vy JnF1b3Q7IGlkPSYjMzk7Jmx0O3R4cDphcnRpY2xlX2lkIC8mZ3Q7JiMzOTsmZ3Q7CiAgICAm bHQ7b3B0aW9uCiAgICAgdmFsdWU9JiMzOTsmbHQ7dHhwOnBvc3RlZCBmb3JtYXQ9JnF1b3Q7 JUctJW0tJWQmcXVvdDsvJmd0OyYjMzk7Jmd0OwogICAgICAmbHQ7dHhwOnBvc3RlZCBmb3Jt YXQ9JnF1b3Q7JW0gJWQsICRHJnF1b3Q7IC8mZ3Q7CiAgICAmbHQ7L29wdGlvbiZndDsKICAm bHQ7L3R4cDpzbWRfYXJ0aWNsZV9ldmVudCZndDsKICAmbHQ7L3NlbGVjdCZndDsKICZsdDsv dHhwOmFydGljbGUmZ3Q7CiZsdDsvdHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsKPC9j b2RlPjwvcHJlPgoKCTxwPldpdGggc29tZSBjdW5uaW5nIHlvdSBjb3VsZCBldmVuIGFkZCB0 aGUgJiM4MjE2O3ZpcnR1YWwmIzgyMTc7IGRhdGUgdGhhdCB0aGV5IGNob3NlIGluIHlvdXIg b3JpZ2luYWwgYXJ0aWNsZV9ldmVudCBsaXN0IGFuZCBwYXNzIGl0IGFzIGEgPHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgdG8geW91ciBpbmRpdmlkdWFsIGFydGlj bGUgd2hlcmUgeW91IGNvdWxkIHJlYWQgdGhlIHZhbHVlIGFuZCBwcmUtc2VsZWN0IHRoZSBk YXRlIGZvciB0aGUgdmlzdG9yLjwvcD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1PC9oMz4K Cgk8cD5Ib3cgYWJvdXQgYmVpbmcgYWJsZSB0byBvdXRwdXQgeW91ciBldmVudHMgaW4gaUNh bCBmb3JtYXQgc28gb3RoZXIgcGVvcGxlIGNhbiBzeW5jIHRoZWlyIGNhbGVuZGFycyB0byB5 b3Vycz8gUHV0IHRoaXMgaW4gYSBuZXcgUGFnZSB0ZW1wbGF0ZSBpbiBpdHMgb3duIFNlY3Rp b246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+QkVHSU46 VkNBTEVOREFSClZFUlNJT046Mi4wClgtV1ItQ0FMTkFNRTpHaWdzIENhbGVuZGFyClBST0RJ RDotLy9BcHBsZSBDb21wdXRlciwgSW5jLy9pQ2FsIDEuNS8vRU4KWC1XUi1USU1FWk9ORTpF dXJvcGUvTG9uZG9uCiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQgZm9ybT0mcXVvdDtpY3Np dGVtJnF1b3Q7IHRpbWU9JnF1b3Q7YW55JnF1b3Q7CnNlY3Rpb249JnF1b3Q7Z2lncyZxdW90 OyBsaW1pdD0mcXVvdDsxMDAwJnF1b3Q7Jmd0OwogQkVHSU46VkVWRU5UCiBEVFNUQVJUOiZs dDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDslWSVtJWRUJUglaSVzJnF1b3Q7IC8mZ3Q7CiBE VEVORDombHQ7dHhwOmV4cGlyZXMgZm9ybWF0PSZxdW90OyVZJW0lZFQlSCVpJXMmcXVvdDsg LyZndDsKIFNVTU1BUlk6Jmx0O3R4cDp0aXRsZSAvJmd0OwogRU5EOlZFVkVOVAombHQ7L3R4 cDpzbWRfYXJ0aWNsZV9ldmVudCZndDsKRU5EOlZDQUxFTkRBUgo8L2NvZGU+PC9wcmU+CgoJ PHA+VGhhdCB3aWxsIG91dHB1dCBhbiBpQ2FsLWZvcm1hdHRlZCBnaWcgbGlzdCAocmVwZWF0 ZWQgb3Igb3RoZXJ3aXNlKS4gSWYgeW91IGdvdCBmcmVha3kgd2l0aCBpdCBhbmQgYWRkZWQg c29tZSBjb25kaXRpb25hbCBsb2dpYyBpbnNpZGUgdGhlIHRlbXBsYXRlIHlvdSBjb3VsZCBl dmVuIHJlYWQgaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGVzIGFu ZCBwbHVnIHRoZW0gaW4uIFRodXMgeW91IGNvdWxkIGxpbmsgdG8gaXQgZGlyZWN0bHkgb2Zm IHRoZSBjYWxlbmRhciBpdHNlbGYsIHBhc3MgaW4gdGhlIHNlY3Rpb24sIGNhdGVnb3J5IG9y IGV2ZW50IGluZm8gYW5kIGhhdmUgYSBjdXN0b21pc2VkIGlDYWwgc3RyZWFtIHB1bXBlZCBv dXQgb2YgVGV4dHBhdHRlcm4uPC9wPgoKCTxwPlRoYW5rcyB0byB3b29mIGZvciBicmluZ2lu ZyB0aGUgb3JpZ2luYWwgPGEgaHJlZj0iaHR0cDovL2RlLW9ubGluZS5jby51ay8yMDA2LzA1 LzA1L3RleHRwYXR0ZXJuLWFuZC1pY2FsIj5EYXZpZCBFbWVyeTwvYT4gYXJ0aWNsZSB0byBt eSBhdHRlbnRpb24uPC9wPgoKCTxoMyBpZD0iZWc2Ij5FeGFtcGxlIDY8L2gzPgoKCTxwPlVz aW5nIHRoZSA8Y29kZT5ub3c8L2NvZGU+IGFuZCA8Y29kZT5vZmZzZXQ8L2NvZGU+IGF0dHJp YnV0ZXMgb2YgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX25vdyAvJmd0OzwvY29kZT4geW91IGNh biBlZmZlY3RpdmVseSBzZXQgJiM4MjE2O25vdyYjODIxNzsgdG8gYmUgYW55IHRpbWUgeW91 IGxpa2UgYW5kIG1ha2UgY2FsY3VsYXRpb25zIGJhc2VkIG9uIGEgcGFydGljdWxhciBkYXRl LjwvcD4KCgk8cD5QbHVnZ2luZyB0aGUgPGNvZGU+P21vbnRoPC9jb2RlPiBhbmQgPGNvZGU+ P3llYXI8L2NvZGU+IGNvZGVzIGluIGFsbG93cyB5b3UgdG8gbWFrZSA8Y29kZT4mbHQ7dHhw OnNtZF9hcnRpY2xlX2V2ZW50IC8mZ3Q7PC9jb2RlPiB0cmFjayB0aGUgY2FsZW5kYXIuIFNv IHlvdSBjYW4gYXV0b21hdGljYWxseSBzaG93IG9ubHkgdGhlIGV2ZW50cyB0aGF0IG9jY3Vy IGluIHRoZSBtb250aCB0aGUgdmlzaXRvciBpcyBicm93c2luZyB2aWEgdGhlIGNhbGVuZGFy OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6 c21kX2NhbGVuZGFyIHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OyAvJmd0OwombHQ7 aDImZ3Q7RXZlbnRzIHRoaXMgbW9udGgmbHQ7L2gyJmd0OwombHQ7dHhwOnNtZF9hcnRpY2xl X2V2ZW50IHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OwogICAgIGZyb209JiMzOTsm bHQ7dHhwOnNtZF9jYWxfbm93IG5vdz0mcXVvdDswMS0/bW9udGgtP3llYXImcXVvdDsgLyZn dDsmIzM5OwogICAgIHRvPSYjMzk7Jmx0O3R4cDpzbWRfY2FsX25vdyBub3c9JnF1b3Q7P21v bnRoLT95ZWFyJnF1b3Q7CiAgICAgICAgb2Zmc2V0PSZxdW90OzEgbW9udGgmcXVvdDsgLyZn dDsmIzM5OyB0aW1lPSZxdW90O2FueSZxdW90OyB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7Jmd0 OwombHQ7bGkmZ3Q7Jmx0O3R4cDpwZXJtbGluayZndDsmbHQ7YiZndDsmbHQ7dHhwOnRpdGxl LyZndDsmbHQ7L2ImZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiZsdDtici8mZ3Q7Jmx0O3R4 cDpwb3N0ZWQgLyZndDsmbHQ7L2xpJmd0OwombHQ7L3R4cDpzbWRfYXJ0aWNsZV9ldmVudCZn dDsKPC9jb2RlPjwvcHJlPgoKCTxoMiBjbGFzcz0iY2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2gy PgoKCTx1bD4KCQk8bGk+MjEgRGVjIDA4IHwgMC4xIHwgSW5pdGlhbCByZWxlYXNlIChzcG9u c29ycyBvbmx5KTwvbGk+CgkJPGxpPjIyIERlYyAwOCB8IDAuMiB8IEZpeGVkIGEgZmV3IFcz QyB2YWxpZGF0aW9uIGlzc3VlcyBhbmQgYWRkZWQgbW9yZSBkYXRhIHZhbGlkaXR5IGNoZWNr cyA7IGF0dGVtcHRlZCB0byBhZGRyZXNzIGRhdGUvdGltZXpvbmUgcHJvYmxlbXMgKGFuZCBt b3N0bHkgZmFpbGVkLCBzbyB3cm90ZSBhYm91dCBpdCBpbnN0ZWFkKSA7IGVuaGFuY2VkIDxj b2RlPnNtZF9pZl9jYWw8L2NvZGU+IHRhZyB0byBjaGVjayBmb3IgZGF0ZXMgYW5kIDxjb2Rl PmNhbGlkPC9jb2RlPiA7IGFkZGVkIDxjb2RlPmVzY2FwZTwvY29kZT4gYXR0cmlidXRlIHRv IHNtZF9jYWxfaW5mbyB0YWc8L2xpPgoJCTxsaT4yMyBEZWMgMDggfCAwLjIxIHwgQ2hhbmdl ZCA8Y29kZT5pc293ZWVrczwvY29kZT4gc28gYW55IGdpdmVuIHRleHQgYmVjb21lcyB0aGUg Y29sdW1uIGhlYWRpbmcgOyBhZGRlZCA8Y29kZT53ZWVrPC9jb2RlPiBhdHRyaWJ1dGUgdG8g YWxsIHJlbGV2YW50IHRhZ3MgOyBhZGRlZCA8Y29kZT5kYXk8L2NvZGU+IGF0dHJpYnV0ZSB0 byA8Y29kZT5zbWRfY2FsX2luZm88L2NvZGU+IDsgZml4ZWQgPGNvZGU+bW9udGg8L2NvZGU+ IGFuZCA8Y29kZT55ZWFyPC9jb2RlPiBhdHRyaWJ1dGVzIHNvIGNhbGVuZGFyIG5hdmlnYXRp b24gb3ZlcnJpZGVzIHRoZW08L2xpPgoJCTxsaT4yNiBEZWMgMDggfCAwLjIyIHwgRW5oYW5j ZWQgPGNvZGU+bmF2Y2xhc3M8L2NvZGU+IDsgYWRkZWQgPGNvZGU+bGlua3Bvc3RlZDwvY29k ZT4gKGJvdGggdGhhbmtzIG1yZGFsZSk8L2xpPgoJCTxsaT4yOCBEZWMgMDggfCAwLjIzIHwg Q29ycmVjdGVkIHRpbWV6b25lIG9mZnNldCBmYXV4IHBhcyA7IGFkZGVkIGZpcnN0L2xhc3Qg d2Vla2RheSByZWN1cnJlbmNlIGFuZCA8Y29kZT5yZWN1cmZvcm08L2NvZGU+IChhbGwgdGhh bmtzIG1yZGFsZSkgOyBmaXhlZCBtaW5pY2FsICYjODIxNjt0b2RheSYjODIxNzsgYmVpbmcg d3JvbmdseSBzZXQ8L2xpPgoJCTxsaT4wMSBKYW4gMDkgfCAwLjMgfCBBZGRlZCA8Y29kZT5j ZWxsZm9ybTwvY29kZT4sIDxjb2RlPm5hdmlkPC9jb2RlPiwgPGNvZGU+bmF2YXJyb3c8L2Nv ZGU+LCBhbmQgPGNvZGU+bWFpbnRhaW48L2NvZGU+IDsgYWRkZWQgPGNvZGU+Jmx0O3R4cDpz bWRfYXJ0aWNsZV9ldmVudCAvJmd0OzwvY29kZT4gKHRoYW5rcyBtcmRhbGUpIGFuZCA8Y29k ZT4mbHQ7dHhwOnNtZF9jYWxfY2xhc3MgLyZndDs8L2NvZGU+IDsgYWRkZWQgdGhlIDxjb2Rl PnN0YW5kYXJkPC9jb2RlPiBhbmQgPGNvZGU+cmVjdXJmaXJzdDwvY29kZT4gZXZlbnQgZmxh Z3MgOyBtYWRlIGNlbGwvZXZlbnQgZmxhZyBkaXN0aW5jdGlvbiBiZXR0ZXIgKGUuZy4gPGNv ZGU+ZXZlbnQ8L2NvZGU+IGFuZCA8Y29kZT5ob2xzPC9jb2RlPiBmbGFncyBub3cgb2NjdXIg PGVtPm9ubHk8L2VtPiBhdCB0aGUgY2VsbCBsZXZlbCkgOyBhZGRlZCBhYmlsaXR5IHRvIHNw ZWNpZnkgYSA8Y29kZT5kYXlmb3JtYXQ8L2NvZGU+IGFycmF5LCBhZGRlZCBhIHdlZWsgc2Vs ZWN0IGxpc3QgYW5kIGVuaGFuY2VkIHRoZSA8Y29kZT5pc293ZWVrczwvY29kZT4gYXR0cmli dXRlICh0aGFua3MgdWxpKSA7IGZpeGVkIHNtZF9pZl9jYWwmIzgyMTc7cyA8Y29kZT5mbGFn PC9jb2RlPiBidW1ibGluZywgYW5kIGFkZGVkIDxjb2RlPlNNRF9BTlk8L2NvZGU+IHRlc3Qg OyBmaXhlZCBzbWRfY2FsX2luZm8gPGNvZGU+YXV0aG9yPC9jb2RlPiB3YXJuaW5nIGFuZCBh ZGRlZCA8Y29kZT5qb2luX3ByZWZpeDwvY29kZT4gOyBmaXhlZCBkYW5nbGluZyBhcnRpY2xl IGFmdGVyIHBsdWdpbiB0ZXJtaW5hdGVzPC9saT4KCQk8bGk+MDIgSmFuIDA5IHwgMC4zMSB8 IEFkZGVkIDxjb2RlPm9taXRmaWVsZDwvY29kZT4gYW5kIHRoZSA8Y29kZT5vbWl0PC9jb2Rl PiBjZWxsIGZsYWcgKHRoYW5rcyB3b29mKTwvbGk+CgkJPGxpPjA0IEphbiAwOSB8IDAuMzIg fCBBZGRlZCA8Y29kZT5ub3c8L2NvZGU+IGFuZCA8Y29kZT5vZmZzZXQ8L2NvZGU+IHRvIDxj b2RlPnNtZF9jYWxfbm93PC9jb2RlPiA7IGZpeGVkIHdhcm5pbmcgaWYgbm8gZXZlbnRzIG1h dGNoIGluIDxjb2RlPnNtZF9hcnRpY2xlX2V2ZW50PC9jb2RlPiA7IGZpeGVkIGZpcnN0L2xh c3QgdGltZXN0YW1wcyAodGhhbmtzIG1yZGFsZSk8L2xpPgoJCTxsaT4wNiBKYW4gMDkgfCAw LjMzIHwgRml4ZWQgPGNvZGU+c21kX2NhbF9jbGFzczwvY29kZT4gdHlwbyA7IGNoYW5nZWQg PGNvZGU+c21kX2lmX2NhbDwvY29kZT4gbG9naWMgdG8gPGNvZGU+b3I8L2NvZGU+IGJ5IGRl ZmF1bHQgKGJvdGggdGhhbmtzIEVscykgOyBmaXhlZCBtdWx0aSBkZXRlY3Rpb24gOyBtYWRl IDxjb2RlPnllYXJ3aWR0aDwvY29kZT4gbW9yZSBpbnRlbGxpZ2VudDwvbGk+CgkJPGxpPjA3 IEphbiAwOSB8IDAuMzQgfCBGaXhlZCA8Y29kZT57c2hvcnR5ZWFyfTwvY29kZT4gdHlwbyA7 IGFkZGVkIDxjb2RlPntpc295ZWFyfTwvY29kZT4gYW5kIDxjb2RlPntzaG9ydGlzb3llYXJ9 PC9jb2RlPiA7IGFkZGVkIDxjb2RlPmlzb3llYXI8L2NvZGU+IHRvIDxjb2RlPnNtZF9pZl9j YWw8L2NvZGU+IGFuZCA8Y29kZT5zbWRfY2FsX2luZm88L2NvZGU+PC9saT4KCTwvdWw+CgoJ PHA+PC9kaXY+PC9wPgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxl IHR5cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRf aGVscCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVy IE5ldyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9 CiNzbWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4 IGRvdHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2Nr OyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTps aW5rLCAjc21kX2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6ICMwMGM7IHRleHQtZGVjb3JhdGlv bjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9t OjFweDt9CiNzbWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjog Ymx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQg Ymx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7 IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWdu OiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJs YWNrOyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lh LCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMDc5OyBmb250OiBib2xk IDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjog MTBweCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVu ZGVybGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1z ZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFu c2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xk OyBjb2xvcjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9y ZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4 dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3Nt ZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3Nt ZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLnJlcXVp cmVkIHtjb2xvcjpyZWQ7fQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIwcHggNXB4IDMw cHg7IH0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+Cjwh LS0gLS0tIEVORCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czozMjoiOTI3MDQ3 NmI1ZTg2N2U5YTFkZTczYWEzZWQyOWZkY2YiO30=