# Name: smd_calendar v0.41 # 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 b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuNDEiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjYyOiJDYWxlbmRhciAvIGV2ZW50IC8gc2NoZWR1bGUgc3lzdGVtIHdpdGggZXZlbnRzIGFz IFRYUCBhcnRpY2xlcyI7czo0OiJjb2RlIjtzOjYzMzMxOiIvLyBCYXNlZCBvbiBtZHBfY2Fs ZW5kYXIgLSB0aGFua3MgTWFyc2hhbGwhDQovL1RPRE86IEludmVzdGlnYXRlDQovKg0KJGQg PSBuZXcgRGF0ZVRpbWUoJzIwMDgtMTItMjIgMTI6NTInKTsNCmVjaG8gJGQtPmdldFRpbWV6 b25lKCktPmdldE5hbWUoKTsNCiovDQppZiggJGRhdGUgPSBncHMoJ2RhdGUnKSApIHsNCgkk X0dFVFsnbW9udGgnXSA9ICRkYXRlOw0KfQ0KZnVuY3Rpb24gc21kX2NhbGVuZGFyKCRhdHRz LCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0aWNsZSwgJHZhcmlh YmxlLCAkcHJlZnMsICRzbWRfY2FsX2ZsYWcsICRzbWRfZGF0ZSwgJHNtZF9jYWxpbmZvLCAk c21kX2NhbF91Y2xzOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ3RpbWUnID0+ICdh bnknLA0KCQknc2l6ZScgPT4gJ2xhcmdlJywNCgkJJ2V4cGlyZWQnID0+ICcnLA0KCQknY2F0 ZWdvcnknID0+ICcnLA0KCQknc2VjdGlvbicgPT4gJycsDQoJCSdhdXRob3InID0+ICcnLA0K CQkncmVhbG5hbWUnID0+ICcnLA0KCQknc3RhdHVzJyA9PiAnbGl2ZScsDQoJCSdzaG93YWxs JyA9PiAnMCcsDQoJCSdzdGF0aWMnID0+ICcnLA0KCQknZm9ybScgPT4gJycsDQoJCSdzcGFu Zm9ybScgPT4gJ1NNRF9TQU1FJywNCgkJJ3JlY3VyZm9ybScgPT4gJ1NNRF9TQU1FJywNCgkJ J2NlbGxmb3JtJyA9PiAnJywNCgkJJ3N0ZXBmaWVsZCcgPT4gJycsDQoJCSdza2lwZmllbGQn ID0+ICcnLA0KCQknb21pdGZpZWxkJyA9PiAnJywNCgkJJ2V4dHJhZmllbGQnID0+ICcnLA0K CQknZXh0cmFzdHJpY3QnID0+ICcwJywNCgkJJ3Nob3dza2lwcGVkJyA9PiAnMCcsDQoJCSdz aG93c3Bhbm5lZCcgPT4gJzEnLA0KCQknaG9saWRheXMnID0+ICcnLA0KCQknaG9saWRheWZs YWdzJyA9PiAnc3RhbmRhcmQnLA0KCQknY2xhc3NsZXZlbHMnID0+ICdjZWxsLCBldmVudCcs DQoJCSdsaW5rcG9zdGVkJyA9PiAncmVjdXIsIG11bHRpLCBtdWx0aXByZXYsIG11bHRpbGFz dCcsDQoJCSdjbGFzc3ByZWZpeGVzJyA9PiAnc21kX2NhbF8sIHNtZF9jYWxfZXZfJywNCgkJ J2NsYXNzJyA9PiAnJywNCgkJJ3Jvd2NsYXNzJyA9PiAnJywNCgkJJ2NlbGxjbGFzcycgPT4g JycsDQoJCSdlbXB0eWNsYXNzJyA9PiAnZW1wdHknLA0KCQknaXNvd2Vla2NsYXNzJyA9PiAn d2VlaycsDQoJCSduYXZjbGFzcycgPT4gJ25hdnByZXYsIG5hdm5leHQnLA0KCQknbmF2YXJy b3cnID0+ICcmIzYwOywgJiM2MjsnLA0KCQknbmF2aWQnID0+ICcnLA0KCQknZXZlbnRjbGFz c2VzJyA9PiAnY2F0ZWdvcnknLA0KCQknZXZlbnR3cmFwdGFnJyA9PiAnc3BhbicsDQoJCSdz ZWxlY3QnID0+ICcnLA0KCQknc2VsZWN0YnRuJyA9PiAnJywNCgkJJ215Y2xhc3MnID0+ICcn LA0KCQknbXl3cmFwdGFnJyA9PiAnJywNCgkJJ2lkJyA9PiAnJywNCgkJJ3dlZWsnID0+ICcn LA0KCQknbW9udGgnID0+ICcnLA0KCQkneWVhcicgPT4gJycsDQoJCSdyZW1hcCcgPT4gJycs DQoJCSd5ZWFyd2lkdGgnID0+ICcwJywNCgkJJ2lzb3dlZWtzJyA9PiAnJywNCgkJJ2RheWZv cm1hdCcgPT4gJ0FCQlInLA0KCQknbW9udGhmb3JtYXQnID0+ICdGVUxMJywNCgkJJ2ZpcnN0 ZGF5JyA9PiAwLA0KCQknbWFpbnRhaW4nID0+ICdjYWxpZCcsDQoJCSduYW1ldmFsJyA9PiAn JywNCgkJJ2dtdCcgPT4gMCwNCgkJJ2xhbmcnID0+ICcnLA0KCQknZGVidWcnID0+IDAsDQoJ KSwgJGF0dHMpKTsNCg0KCSRmdXR1cmUgPSAoICR0aW1lICE9ICdwYXN0JyApID8gdHJ1ZSA6 IGZhbHNlOyAvLyBEZXRlcm1pbmUgaGVhZGluZyBzdHlsZQ0KCSRzdGF0dXMgPSAoJHN0YXR1 cykgPyAkc3RhdHVzIDogJ2xpdmUnOyAvLyBpbiBjYXNlIHN0YXR1cyBoYXMgYmVlbiBlbXB0 aWVkDQoJJGZpcnN0ZGF5ID0gKCRpc293ZWVrcyA9PSAnJykgPyAkZmlyc3RkYXkgOiAxOw0K CSRzcGFuZm9ybSA9ICgkc3BhbmZvcm0gPT0gJ1NNRF9TQU1FJykgPyAkZm9ybSA6ICRzcGFu Zm9ybTsNCgkkcmVjdXJmb3JtID0gKCRyZWN1cmZvcm0gPT0gJ1NNRF9TQU1FJykgPyAkZm9y bSA6ICRyZWN1cmZvcm07DQoJJGNlbGxmb3JtID0gKGVtcHR5KCRjZWxsZm9ybSkpID8gJycg OiBmZXRjaF9mb3JtKCRjZWxsZm9ybSk7DQoJJGZyb250cGFnZSA9ICgkc2VjdGlvbj09Jycg JiYgJHByZXRleHRbJ3MnXT09J2RlZmF1bHQnKSA/IHRydWUgOiBmYWxzZTsNCg0KCS8vIFNl dCB1cCB0aGUgY2xhc3MgcHJlZml4ZXMNCgkkY2xldnMgPSBkb19saXN0KCRjbGFzc2xldmVs cyk7DQoJJGNscyA9IGRvX2xpc3QoJGNsYXNzcHJlZml4ZXMpOw0KCSRjbGFzc3ByZWZpeCA9 ICRldmNsYXNzcHJlZml4ID0gJGNsc1swXTsNCglpZiAoY291bnQoJGNscykgPiAxKXsNCgkJ JGV2Y2xhc3NwcmVmaXggPSAkY2xzWzFdOw0KCX0NCg0KCS8vIFNldCB1cCB0aGUgbmF2IGNs YXNzKGVzKQ0KCSRtYWludGFpbiA9IGRvX2xpc3QoJG1haW50YWluKTsNCgkkbmF2YXJyb3cg PSBkb19saXN0KCRuYXZhcnJvdyk7DQoJJG5hdnBhcnIgPSAkbmF2YXJyb3dbMF07DQoJJG5h dm5hcnIgPSAoY291bnQoJG5hdmFycm93KSA+IDEpID8gJG5hdmFycm93WzFdIDogJG5hdmFy cm93WzBdOw0KCSRuYXZjbGFzcyA9IGRvX2xpc3QoJG5hdmNsYXNzKTsNCgkkbmF2cGNsYXNz ID0gJG5hdmNsYXNzWzBdOw0KCSRuYXZuY2xhc3MgPSAoY291bnQoJG5hdmNsYXNzKSA+IDEp ID8gJG5hdmNsYXNzWzFdIDogJG5hdmNsYXNzWzBdOw0KDQoJLy8gRmlsdGVycw0KCSRmb3B0 cyA9IGFycmF5KCk7DQoJJGNhdFNRTCA9ICRzZWNTUUwgPSAkYXV0aFNRTCA9ICRmcFNRTCA9 ICcnOw0KCWlmKCRjYXRlZ29yeSkgew0KCQkkZm9wdHNbJ2MnXSA9ICRjYXRlZ29yeTsNCgkJ JGNhdFNRTCA9IGRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRjYXRlZ29y eSkpKSk7DQoJCSRjYXRTUUwgPSAiIEFORCAoIENhdGVnb3J5MSBJTiAoIi4kY2F0U1FMLiIp IE9SIENhdGVnb3J5MiBJTiAoIi4kY2F0U1FMLiIpICkgIjsNCgl9DQoJaWYoJHNlY3Rpb24p IHsNCgkJJHNlY3MgPSBkb19saXN0KCRzZWN0aW9uKTsNCgkJJHNtZF9jYWxpbmZvWydzJ10g PSAkc2Vjc1swXTsNCgkJJHNlY1NRTCA9IGRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaCgk c2VjcykpKTsNCgkJJHNlY1NRTCA9ICIgQU5EIFNlY3Rpb24gSU4gKCIuJHNlY1NRTC4iKSAi Ow0KCX0NCglpZigkcmVhbG5hbWUpIHsNCgkJJGF1dGhvcnMgPSBzYWZlX2NvbHVtbignbmFt ZScsICd0eHBfdXNlcnMnLCAnUmVhbE5hbWUgSU4gKCcuIGRvUXVvdGUoam9pbigiJywnIiwg ZG9BcnJheShkb19saXN0KCRyZWFsbmFtZSksICd1cmxkZWNvZGUnKSkpIC4nKScgKTsNCgkJ JGF1dGhvciA9IGpvaW4oJywnLCAkYXV0aG9ycyk7DQoJfQ0KCWlmKCRhdXRob3IpIHsNCgkJ JGZvcHRzWydhdXRob3InXSA9IGh0bWxlbnRpdGllcyhncHMoJ2F1dGhvcicpKTsNCgkJJGF1 dGhTUUwgPSBkb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkYXV0aG9yKSkp KTsNCgkJJGF1dGhTUUwgPSAiIEFORCBBdXRob3JJRCBJTiAoIi4kYXV0aFNRTC4iKSAiOw0K CX0NCglpZiAoJGZyb250cGFnZSAmJiAhJHNob3dhbGwpIHsNCgkJJGZwU1FMID0gZmlsdGVy RnJvbnRQYWdlKCk7DQoJfQ0KCSRzbWRfY2FsaW5mb1snYXJ0aWQnXSA9ICR0aGlzYXJ0aWNs ZVsndGhpc2lkJ107DQoJJHNtZF9jYWxpbmZvWydhcnRpdGxlJ10gPSAkdGhpc2FydGljbGVb J3VybF90aXRsZSddOw0KCSRuYW1ldmFsID0gZG9fbGlzdCgkbmFtZXZhbCk7DQoJZm9yZWFj aCAoJG5hbWV2YWwgYXMgJG52KSB7DQoJCSRudiA9IGV4cGxvZGUoIj0iLCAkbnYpOw0KCQlp ZiAoJG52WzBdKSB7DQoJCQkkZm9wdHNbJG52WzBdXSA9ICgoaXNzZXQoJG52WzFdKSkgPyAk bnZbMV0gOiAnJyk7DQoJCX0NCgl9DQoJJHN0YXR1cyA9IGRvX2xpc3QoJHN0YXR1cyk7DQoJ JHN0YXRpID0gYXJyYXkoKTsNCglmb3JlYWNoICgkc3RhdHVzIGFzICRzdGF0KSB7DQoJCWlm IChlbXB0eSgkc3RhdCkpIHsNCgkJCWNvbnRpbnVlOw0KCQl9IGVsc2UgaWYgKGlzX251bWVy aWMoJHN0YXQpKSB7DQoJCQkkc3RhdGlbXSA9ICRzdGF0Ow0KCQl9IGVsc2Ugew0KCQkJJHN0 YXRpW10gPSBnZXRTdGF0dXNOdW0oJHN0YXQpOw0KCQl9DQoJfQ0KCSRzdGF0aSA9ICIgU3Rh dHVzIElOICgiLmpvaW4oJywnLCAkc3RhdGkpLiIpIjsNCg0KCSRleHBpcmVkID0gKCRleHBp cmVkKSA/ICRleHBpcmVkIDogJHByZWZzWydwdWJsaXNoX2V4cGlyZWRfYXJ0aWNsZXMnXTsN CgkkZXhwaXJlZCA9ICgoJGV4cGlyZWQpID8gJycgOiAnIEFORCAobm93KCkgPD0gRXhwaXJl cyBPUiBFeHBpcmVzID0gJy5OVUxMREFURVRJTUUuJyknKTsNCgkkZXZlbnRjbGFzc2VzID0g ZG9fbGlzdCgkZXZlbnRjbGFzc2VzKTsNCgkkaG9saWRheWZsYWdzID0gZG9fbGlzdCgkaG9s aWRheWZsYWdzKTsNCgkkbGlua3Bvc3RlZCA9IGRvX2xpc3QoJGxpbmtwb3N0ZWQpOw0KDQoJ Ly8gV29yayBvdXQgdGhlIGZpcnN0IGFuZCBsYXN0IHBvc3RzIHRvIGRldGVybWluZSB0aGUg eWVhciByYW5nZSAtIHByb2JhYmx5IGEgYmV0dGVyIHdheSBvZiBkb2luZyB0aGlzIHRoYW4g MyBxdWVyaWVzDQoJJGZpbHQgPSAkc3RhdGkgLiAoKCRjYXRlZ29yeSkgPyAkY2F0U1FMIDog JycpIC4gKCgkc2VjdGlvbikgPyAkc2VjU1FMIDogJycpIC4gKCgkYXV0aG9yKSA/ICRhdXRo U1FMIDogJycpIC4gJGZwU1FMOw0KCSRlYXJsaWVzdCA9IHNhZmVfZmllbGQoJ3VuaXhfdGlt ZXN0YW1wKFBvc3RlZCkgQVMgdVBvc3RlZCcsICd0ZXh0cGF0dGVybicsICRmaWx0IC4nIE9S REVSIEJZIFBvc3RlZCBBU0MgTElNSVQgMCwgMScsICRkZWJ1Zyk7DQoJJGxwID0gc2FmZV9m aWVsZCgndW5peF90aW1lc3RhbXAoUG9zdGVkKSBBUyB1UG9zdGVkJywgJ3RleHRwYXR0ZXJu JywgJGZpbHQgLicgT1JERVIgQlkgUG9zdGVkIERFU0MgTElNSVQgMCwgMScsICRkZWJ1Zyk7 DQoJJGxtID0gc2FmZV9maWVsZCgndW5peF90aW1lc3RhbXAoTGFzdE1vZCkgQVMgdUxhc3RN b2QnLCAndGV4dHBhdHRlcm4nLCAkZmlsdCAuJyBPUkRFUiBCWSBMYXN0TW9kIERFU0MgTElN SVQgMCwgMScsICRkZWJ1Zyk7DQoJJGxhdGVzdCA9ICgkdGltZT09InBhc3QiKSA/IHRpbWUo KSA6ICgoJGxwID4gJGxtKSA/ICRscCA6ICRsbSk7DQoNCgkkeWVhcndpZHRoID0gZG9fbGlz dCgkeWVhcndpZHRoKTsNCgkkeWVhcndpZHRoWzBdID0gKGVtcHR5KCR5ZWFyd2lkdGhbMF0p KSA/IDAgOiAkeWVhcndpZHRoWzBdOw0KCWlmIChjb3VudCgkeWVhcndpZHRoKSA9PSAxKSB7 DQoJCSR5ZWFyd2lkdGhbMV0gPSAkeWVhcndpZHRoWzBdOw0KCX0NCgkkdXNlbm93ID0gYXJy YXkoZmFsc2UsZmFsc2UpOw0KCWZvcmVhY2ggKCR5ZWFyd2lkdGggYXMgJHlyaWR4ID0+ICR5 cml0ZW0pIHsNCgkJaWYgKHN0cnBvcygkeXJpdGVtLCJjIikgIT09IGZhbHNlKSB7DQoJCQkk eWVhcndpZHRoWyR5cmlkeF0gPSBpbnR2YWwoJHlyaXRlbSk7DQoJCQkkdXNlbm93WyR5cmlk eF0gPSB0cnVlOw0KCQl9DQoJfQ0KDQoJLy8gUmVtYXAgdy9tL3kgdG8gb3RoZXIgdmFycyBp ZiByZXF1aXJlZA0KCSRyZW1hcCA9IGRvX2xpc3QoJHJlbWFwKTsNCgkkZG1hcCA9IGFycmF5 KCJ5IiA9PiAieSIsICJtIiA9PiAibSIsICJ3IiA9PiAidyIpOw0KCWZvcmVhY2ggKCRyZW1h cCBhcyAkZHBhaXIpIHsNCgkJJGRwYWlyID0gZG9fbGlzdCgkZHBhaXIsICc6Jyk7DQoJCSRk bWFwWyRkcGFpclswXV0gPSAoaXNzZXQoJGRwYWlyWzFdKSkgPyAkZHBhaXJbMV0gOiAkZHBh aXJbMF07DQoJfQ0KCSRlYXJsaWVzdCA9IGRhdGUoIlkiLCBzdHJ0b3RpbWUoIi0iLiR5ZWFy d2lkdGhbMF0uIiB5ZWFyIiwgKCAoZW1wdHkoJGVhcmxpZXN0KSB8fCAkdXNlbm93WzBdPT10 cnVlKSA/IHRpbWUoKSA6ICRlYXJsaWVzdCkgKSApOw0KCSRsYXRlc3QgPSBkYXRlKCJZIiwg c3RydG90aW1lKCIrIi4keWVhcndpZHRoWzFdLiIgeWVhciIsICggKGVtcHR5KCRsYXRlc3Qp IHx8ICR1c2Vub3dbMV09PXRydWUpID8gdGltZSgpIDogJGxhdGVzdCkgKSApOw0KDQoJLy8g Q2hlY2sgdGhlIFVSTCBmb3IgY3VycmVudCBkYXRlIGFuZCBjYWxlbmRhciB0YXJnZXQgaW5m bw0KCSRpbmNvbWluZ19jYWxpZCA9IGdwcygnY2FsaWQnKTsNCgkkaW5jb21pbmdfeWVhciA9 IChncHMoJGRtYXBbInkiXSkgYW5kIGlzX251bWVyaWMoZ3BzKCRkbWFwWyJ5Il0pKSkgPyAo aW50KWdwcygkZG1hcFsieSJdKSA6ICcnOw0KCSRpbmNvbWluZ19tb250aCA9IChncHMoJGRt YXBbIm0iXSkgYW5kIGlzX251bWVyaWMoZ3BzKCRkbWFwWyJtIl0pKSkgPyAoaW50KWdwcygk ZG1hcFsibSJdKSA6ICcnOw0KCSRpbmNvbWluZ193ZWVrID0gKGdwcygkZG1hcFsidyJdKSBh bmQgaXNfbnVtZXJpYyhncHMoJGRtYXBbInciXSkpKSA/IChpbnQpZ3BzKCRkbWFwWyJ3Il0p IDogJyc7DQoNCglpZigkc3RhdGljKSB7IC8vIGlmIHdlJ3JlIHN0YXRpYyB3L28gYW55IHN1 cHBsaWVkIHZhcnMsIHVzZSB0aGUgY3VycmVudCBkYXRlDQoJCWlmKCEkeWVhcikgeyAkeWVh ciA9IHNhZmVfc3RyZnRpbWUoJyVZJyk7IH0NCgkJaWYoISRtb250aCkgeyAkbW9udGggPSBz YWZlX3N0cmZ0aW1lKCclbScpOyB9DQoJfSBlbHNlIHsgLy8gb3RoZXJ3aXNlIHVzZSBjdXJy ZW50IGRhdGUgb25seSBpZiB0aGVyZSdzIG5vdGhpbmcgZWxzZQ0KCQlpZiggJGlkID09ICRp bmNvbWluZ19jYWxpZCApIHsgLy8gdXNlIGluY29taW5nDQoJCQkkeWVhciA9ICgkaW5jb21p bmdfeWVhcikgPyAkaW5jb21pbmdfeWVhciA6ICgoJHllYXIpID8gJHllYXIgOiBzYWZlX3N0 cmZ0aW1lKCclWScpKTsNCgkJCSRtb250aCA9ICgkaW5jb21pbmdfbW9udGgpID8gJGluY29t aW5nX21vbnRoIDogKCgkbW9udGgpID8gJG1vbnRoIDogc2FmZV9zdHJmdGltZSgnJW0nKSk7 DQoJCQkvLyBJZiB3ZWVrIGlzIHVzZWQsIGFkanVzdCBtb250aCBzbyBpdCBlbmNvbXBhc3Nl cyB0aGUgZ2l2ZW4gd2Vlaw0KCQkJJHdlZWsgPSAkaW5jb21pbmdfd2VlazsNCgkJCWlmICgk d2Vlaykgew0KCQkJCSRtb250aCA9IHNhZmVfc3RyZnRpbWUoIiVtIiwgc3RydG90aW1lKCR5 ZWFyLiJXIi5zdHJfcGFkKCR3ZWVrLCAyLCAnMCcsIFNUUl9QQURfTEVGVCkpKTsgLy8gR2V0 IHRoZSBtb250aCBmcm9tIHRoZSB3ZWVrDQoJCQl9DQoJCX0gZWxzZSB7IC8vIHVzZSBjdXJy ZW50DQoJCQlpZighJHllYXIpIHsgJHllYXIgPSBzYWZlX3N0cmZ0aW1lKCclWScpOyB9DQoJ CQlpZighJG1vbnRoKSB7ICRtb250aCA9IHNhZmVfc3RyZnRpbWUoJyVtJyk7IH0NCgkJCWlm KCR3ZWVrKSB7ICRtb250aCA9IHNhZmVfc3RyZnRpbWUoIiVtIiwgc3RydG90aW1lKCR5ZWFy LiJXIi5zdHJfcGFkKCR3ZWVrLCAyLCAnMCcsIFNUUl9QQURfTEVGVCkpKTsgfQ0KCQl9DQoJ fQ0KCSRzbWRfY2FsaW5mb1snaWQnXSA9ICgkaW5jb21pbmdfY2FsaWQpID8gJGluY29taW5n X2NhbGlkIDogJGlkOw0KCSRzbWRfZGF0ZVsneSddID0gJHllYXI7ICRzbWRfZGF0ZVsnbSdd ID0gJG1vbnRoOyAvLyAkd2Vlay9kYXkvaXNveWVhciBhcmUgc2V0IHBlciBldmVudCBsYXRl cg0KDQoJLy8gVGhlIHRpbWVzIGluIHRoZSBEQiBhcmUgc3RvcmVkIHVzaW5nIHRoZSBzZXJ2 ZXIncyBsb2NhbCB0aW1lLCBzbyB3ZSBkb24ndA0KCS8vIHdhbnQgdG8gYWRqdXN0IGFueXRo aW5nIChzaW5jZSBta3RpbWUgdXNlcyB0aGUgc2VydmVyJ3MgbG9jYWwgdGltZSkuDQoJLy9U T0RPOiBXb3JyeSBhYm91dCBnbXQgLyBkc3QNCgkkdHNfZmlyc3QgPSBta3RpbWUoMCwgMCwg MCwgJG1vbnRoLCAxLCAkeWVhcik7DQoJJHRzX2xhc3QgPSBta3RpbWUoMjMsIDU5LCA1OSwg JG1vbnRoLCBkYXRlKCd0JywkdHNfZmlyc3QpLCAkeWVhcik7DQoNCgkkZXh0cmFzcWwgPSAk Y2F0U1FMIC4gJHNlY1NRTCAuICRhdXRoU1FMIC4gJGZwU1FMOw0KCXN3aXRjaCgkdGltZSkg ew0KCQljYXNlICJhbnkiIDogYnJlYWs7DQoJCWNhc2UgImZ1dHVyZSIgOiAkZXh0cmFzcWwg Lj0gIiBBTkQgUG9zdGVkID4gQ1VSREFURSgpIjsgYnJlYWs7DQoJCWRlZmF1bHQgOiAkZXh0 cmFzcWwgLj0gIiBBTkQgUG9zdGVkIDwgQ1VSREFURSgpIjsgYnJlYWs7IC8vIFRoZSBwYXN0 DQoJfQ0KDQoJLy8gSG9saWRheXMgYXJlIGdsb2JhbCAnZXhjbHVzaW9ucycsIGVpdGhlciBk ZWZpbmVkIGRpcmVjdGx5IG9yIGluIGEgPHR4cDp2YXJpYWJsZSAvPg0KCSRob2xpZGF5cyA9 IGRvX2xpc3QoJGhvbGlkYXlzKTsNCgkkdHhwaG9scyA9IGRvX2xpc3QoJGhvbGlkYXlzWzBd LCAiOiIpOw0KCWlmICgkdHhwaG9sc1swXSA9PSAidHhwdmFyIikgew0KCQkkaG9saWRheXMg PSBkb19saXN0KCR2YXJpYWJsZVskdHhwaG9sc1sxXV0pOw0KCX0NCgkvLyBGb3JjZSBlYWNo IGhvbGlkYXkgdG8gYSBrbm93biBmb3JtYXQuIEhvbGlkYXlzIHdpdGhvdXQgeWVhcnMgdXNl IGN1cnJlbnQgeWVhcg0KCWZvcmVhY2ggKCRob2xpZGF5cyBhcyAka2V5ID0+ICR2YWwpIHsN CgkJaWYgKGVtcHR5KCR2YWwpKSBjb250aW51ZTsNCgkJJG51bXBhcnRzID0gcHJlZ19tYXRj aCgnL14oW1xkXHddKykuPyhbXGRcd10rKS4/KFtcZFx3XSspPyQvJywgJHZhbCwgJHBhcnRz KTsNCg0KCQlpZiAoJG51bXBhcnRzKSB7DQoJCQlpZiAoY291bnQoJHBhcnRzKSA9PSAzKSB7 DQoJCQkJJHBhcnRzWzNdID0gJHllYXI7DQogICAgICAgICB9DQoJCQkkdmFsID0gc3RyX3Bh ZCgkcGFydHNbMV0sIDIsICcwJywgU1RSX1BBRF9MRUZUKS4nLScuc3RyX3BhZCgkcGFydHNb Ml0sIDIsICcwJywgU1RSX1BBRF9MRUZUKS4nLScuJHBhcnRzWzNdOw0KCQl9DQoJCSRob2xp ZGF5c1ska2V5XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsNCgl9DQoNCglp ZiAoJGRlYnVnID4gMCAmJiAhZW1wdHkoJGhvbGlkYXlzKSAmJiAkaG9saWRheXNbMF0gIT0g JycpIHsNCgkJZWNobyAiKysgSE9MSURBWVMgKysgIjsNCgkJZG1wKCRob2xpZGF5cyk7DQoJ fQ0KDQoJLy8gR2V0IGFsbCBtYXRjaGluZyBhcnRpY2xlcyBpbiAoYW5kIGJlZm9yZSkgdGhp cyBtb250aA0KCSRldmVudHMgPSBhcnJheSgpOw0KCSRzcWwyID0gJHN0YXRpIC4gIiBIQVZJ TkcgdVBvc3RlZCA8PSAiLiR0c19sYXN0IC4gJGV4cGlyZWQgLiAkZXh0cmFzcWwgLiIgT1JE RVIgQlkgUG9zdGVkIEFTQyI7DQoJJGdyYWJDb2xzID0gJyosIHVuaXhfdGltZXN0YW1wKFBv c3RlZCkgYXMgdVBvc3RlZCwgdW5peF90aW1lc3RhbXAoTGFzdE1vZCkgYXMgdUxhc3RNb2Qs IHVuaXhfdGltZXN0YW1wKEV4cGlyZXMpIGFzIHVFeHBpcmVzJzsNCgkkZXZsaXN0ID0gc2Fm ZV9yb3dzKCRncmFiQ29scywgJ3RleHRwYXR0ZXJuJywgJHNxbDIsICRkZWJ1Zyk7DQoJYXJ0 aWNsZV9wdXNoKCk7DQoNCgkvLyBJZiBhbnkgZXZlbnRzIHJlY3VyIGFuZCBmYWxsIHdpdGhp biB0aGUgY3VycmVudCBtb250aCwgYWRkIHRob3NlIGFzIHdlbGwNCgkvLyBJZiBhbnkgZGF0 ZXMgYXJlIHRvIGJlIGV4Y2x1ZGVkLCB0aGUgZW50cnkgaXMgc2tpcHBlZCBVTkxFU1Mgc2hv d3NraXBwZWQgaW5kaWNhdGVzIG90aGVyd2lzZQ0KCWZvcmVhY2ggKCRldmxpc3QgYXMgJHJv dykgew0KCQkkaWR4ID0gMDsgLy8gSW4gY2FzZSB0aGUgMXN0IGRheSBvZiB0aGUgbW9udGgg aXMgYSBjb250aW51YXRpb24gb2YgYW4gZXZlbnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBwcmV2 aW91cyBtb250aA0KCQkkc3RhcnQgPSAkcm93Wyd1UG9zdGVkJ107DQoJCSRzdGFydF9kYXRl ID0gZGF0ZSgiWS1tLWQiLCAkc3RhcnQpOyAvLyBGb3IgcmVjdXJyaW5nL3NwYW5uZWQgZXZl bnRzIG9uIGEgbWluaWNhbCwgdGhpcyBpcyB0aGUgZXZlbnQgdGhlIGNlbGwgbGlua3MgdG8N CgkJJHJlYWxfZW5kID0gJHJvd1sndUV4cGlyZXMnXTsNCgkJJGVuZCA9ICgkcmVhbF9lbmQg IT0gMCAmJiAkcmVhbF9lbmQgPCAkdHNfbGFzdCkgPyAkcmVhbF9lbmQgOiAkdHNfbGFzdDsN CgkJJHJlYWxfZGlmZiA9ICgkcmVhbF9lbmQ9PTApID8gMCA6ICRyZWFsX2VuZCAtICRzdGFy dDsNCgkJJGZha2VfZGlmZiA9IHN0cnRvdGltZShkYXRlKCJZLU0tZCIsICRyZWFsX2VuZCkg LiAiIDIzOjU5OjU5Iik7DQoJCSRkaWZmID0gKCRyZWFsX2VuZD09MCkgPyAwIDogJGZha2Vf ZGlmZiAtICRzdGFydDsNCgkJJHNtZF9jYWxfZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJh eSgpOw0KDQoJCWlmICgkZGVidWcgPiAxKSB7DQoJCQllY2hvICcrKyBFVkVOVCBTVEFSVCAv LyBFTkQgLy8gUkVBTCBFTkQgKysnOw0KCQkJZG1wKCRyb3dbJ1RpdGxlJ10pOw0KCQkJZG1w KGRhdGUoJ2QtTS1ZIEg6aTpzJywgJHN0YXJ0KSAuJyAvLyAnLiBkYXRlKCdkLU0tWSBIOmk6 cycsICRlbmQpIC4nIC8vICcuIGRhdGUoJ2QtTS1ZIEg6aTpzJywgJHJlYWxfZW5kKSk7DQoJ CQlpZiAoJGRlYnVnID4gMikgew0KCQkJCWRtcCgkcm93KTsNCgkJCX0NCgkJfQ0KDQoJCSRt dWx0aSA9ICgkcm93Wyd1RXhwaXJlcyddID4gJHJvd1sndVBvc3RlZCddICYmICRyb3dbJ3VF eHBpcmVzJ10gPiAkdHNfZmlyc3QgJiYgKGRhdGUoImQtbS1ZIiwgJHJvd1sndUV4cGlyZXMn XSkgIT0gZGF0ZSgiZC1tLVkiLCAkcm93Wyd1UG9zdGVkJ10pKSkgPyB0cnVlIDogZmFsc2U7 DQoJCSRyZWN1ciA9IChlbXB0eSgkcm93WyRzdGVwZmllbGRdKSkgPyBmYWxzZSA6IHRydWU7 DQoJCSRob2xfaGl0ID0gaW5fYXJyYXkoZGF0ZSgiZC1NLVkiLCAkc3RhcnQpLCAkaG9saWRh eXMpOw0KCQkkZXZjbGFzc2VzID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAoJGV2ZW50Y2xhc3Nl cyBhcyAkZXZjbHMpIHsNCgkJCXN3aXRjaCAoJGV2Y2xzKSB7DQoJCQkJY2FzZSAiIjoNCgkJ CQkJYnJlYWs7DQoJCQkJY2FzZSAiZ2NhdCI6DQoJCQkJCWlmIChpc3NldCgkcHJldGV4dFsn YyddKSAmJiAhZW1wdHkoJHByZXRleHRbJ2MnXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9 ICRldmNsYXNzcHJlZml4LiRwcmV0ZXh0WydjJ107DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJ CQkJY2FzZSAiY2F0ZWdvcnkiOg0KCQkJCQlpZiAoaXNzZXQoJHJvd1snQ2F0ZWdvcnkxJ10p ICYmICFlbXB0eSgkcm93WydDYXRlZ29yeTEnXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9 ICRldmNsYXNzcHJlZml4LiRyb3dbJ0NhdGVnb3J5MSddOw0KCQkJCQl9DQoJCQkJCWlmIChp c3NldCgkcm93WydDYXRlZ29yeTInXSkgJiYgIWVtcHR5KCRyb3dbJ0NhdGVnb3J5MiddKSkg ew0KCQkJCQkJJGV2Y2xhc3Nlc1tdID0gJGV2Y2xhc3NwcmVmaXguJHJvd1snQ2F0ZWdvcnky J107DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAic2VjdGlvbiI6DQoJCQkJCWlm IChpc3NldCgkcHJldGV4dFsncyddKSAmJiAhZW1wdHkoJHByZXRleHRbJ3MnXSkpIHsNCgkJ CQkJCSRldmNsYXNzZXNbXSA9ICRldmNsYXNzcHJlZml4LiRwcmV0ZXh0WydzJ107DQoJCQkJ CX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiYXV0aG9yIjoNCgkJCQkJaWYgKGlzc2V0KCRw cmV0ZXh0WydhdXRob3InXSkgJiYgIWVtcHR5KCRwcmV0ZXh0WydhdXRob3InXSkpIHsNCgkJ CQkJCSRldmNsYXNzZXNbXSA9ICRldmNsYXNzcHJlZml4LiRwcmV0ZXh0WydhdXRob3InXTsN CgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJCQlpZiAoaXNzZXQoJHJv d1skZXZjbHNdKSAmJiAhZW1wdHkoJHJvd1skZXZjbHNdKSkgew0KCQkJCQkJJGV2Y2xhc3Nl c1tdID0gJGV2Y2xhc3NwcmVmaXguJHJvd1skZXZjbHNdOw0KCQkJCQl9DQoJCQkJCWJyZWFr Ow0KCQkJfQ0KCQl9DQoJCSRldmNsYXNzZXMgPSAoJGV2Y2xhc3NlcykgPyAnICcuIGpvaW4o JyAnLCAkZXZjbGFzc2VzKSA6ICcnOw0KCQkkaWdub3JlID0gJG9taXQgPSAkY2ZsYWcgPSBh cnJheSgpOw0KDQoJCWlmICgkZGVidWcgPiAxICYmICRldmNsYXNzZXMpIHsNCgkJCWVjaG8g JysrIEVWRU5UIENMQVNTRVMgKysnOw0KCQkJZG1wKCRldmNsYXNzZXMpOw0KCQl9DQoNCgkJ Ly8gRXZlbnRzIHRoYXQgc3RhcnQgb3IgYXJlIGFkZGVkIHRoaXMgbW9udGgNCgkJaWYgKCRz dGFydCA8ICRlbmQgJiYgJHN0YXJ0ID4gJHRzX2ZpcnN0KSB7DQoJCQlwb3B1bGF0ZUFydGlj bGVEYXRhKCRyb3cpOw0KCQkJLy8gYSBzdGFuZGFyZCBldmVudCBvciBzdGFydCBvZiBhIG11 bHRpDQoJCQlpZiAoJHNob3dzcGFubmVkICYmICRtdWx0aSAmJiAhJHJlY3VyKSB7DQoJCQkJ JHNtZF9jYWxfZmxhZ1tdID0gJ211bHRpZmlyc3QnOw0KCQkJfQ0KCQkJaWYgKCRyZWN1cikg ew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdyZWN1cmZpcnN0JzsNCgkJCX0NCgkJCWlmICgh JHNtZF9jYWxfZmxhZykgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdzdGFuZGFyZCc7DQoJ CQl9DQoJCQlpZiAoICggJGhvbF9oaXQgJiYgIWluX2FycmF5KCdtdWx0aScsJGhvbGlkYXlm bGFncykgJiYgaW5fYXJyYXkoJ211bHRpZmlyc3QnLCRzbWRfY2FsX2ZsYWcpICkgfHwgKCAk aG9sX2hpdCAmJiAhaW5fYXJyYXkoJ3N0YW5kYXJkJywkaG9saWRheWZsYWdzKSAmJiBpbl9h cnJheSgnc3RhbmRhcmQnLCRzbWRfY2FsX2ZsYWcpICkgKSB7DQoJCQkJJHNtZF9jYWxfZmxh Z1tdID0gJ2NhbmNlbCc7DQoJCQl9DQoJCQlmb3JlYWNoICgkc21kX2NhbF9mbGFnIGFzICRp dGVtKSB7DQoJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07DQoJCQl9DQoNCgkJ CSRpZHggPSAkc21kX2RhdGVbJ2QnXSA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHN0YXJ0KTsN CgkJCSRzbWRfZGF0ZVsndyddID0gc3RyZnRpbWUoJyVWJywgJHN0YXJ0KTsNCgkJCSRzbWRf ZGF0ZVsnaXknXSA9IHN0cmZ0aW1lKCclRycsICRzdGFydCk7DQoJCQkkb3AgPSAoJHRoaW5n KSA/IHBhcnNlKCR0aGluZykgOiAoKCRmb3JtKSA/IHBhcnNlX2Zvcm0oJGZvcm0pIDogKCgk c2l6ZT09InNtYWxsIikgPyAnJyA6IGhyZWYoJHJvd1snVGl0bGUnXSwgcGVybWxpbmt1cmwo JHJvdyksICcgdGl0bGU9IicuJHJvd1snVGl0bGUnXS4nIicpKSApOw0KCQkJJGV2ZW50c1sk aWR4XVtdID0gYXJyYXkoJ2V2JyA9PiAkb3AsICdmbGFnJyA9PiAkc21kX2NhbF9mbGFnLCAn Y2xhc3NlcycgPT4gKCgkY2ZsYWcpID8gam9pbignICcsYXJyYXlfbWVyZ2UoJGNmbGFnLCAk c21kX2NhbF91Y2xzKSkgOiAnJykuJGV2Y2xhc3NlcywgJ3Bvc3RlZCcgPT4gJHN0YXJ0X2Rh dGUpOw0KCQkJJHNtZF9jYWxfZmxhZyA9ICRjZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJh eSgpOw0KCQl9DQoNCgkJLy8gR2VuZXJhdGUgYSBza2lwIGFycmF5IGZvciB0aGlzIGV2ZW50 DQoJCWlmICgkc2tpcGZpZWxkICYmICRyb3dbJHNraXBmaWVsZF0gIT0gJycpIHsNCgkJCSRp Z25vcmUgPSBkb19saXN0KCRyb3dbJHNraXBmaWVsZF0pOw0KCQkJZm9yZWFjaCAoJGlnbm9y ZSBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCQkkaWdub3JlWyRrZXldID0gZGF0ZSgiZC1NLVki LCBzdHJ0b3RpbWUoJHZhbCkpOyAvLyBGb3JjZSBlYWNoIGRhdGUgdG8gYSBrbm93biBmb3Jt YXQNCgkJCX0NCgkJfQ0KCQkvLyBHZW5lcmF0ZSBhbiBvbWl0IGFycmF5IGZvciB0aGlzIGV2 ZW50DQoJCWlmICgkb21pdGZpZWxkICYmICRyb3dbJG9taXRmaWVsZF0gIT0gJycpIHsNCgkJ CSRvbWl0ID0gZG9fbGlzdCgkcm93WyRvbWl0ZmllbGRdKTsNCgkJCWZvcmVhY2ggKCRvbWl0 IGFzICRrZXkgPT4gJHZhbCkgew0KCQkJCSRvbWl0WyRrZXldID0gZGF0ZSgiZC1NLVkiLCBz dHJ0b3RpbWUoJHZhbCkpOw0KCQkJfQ0KCQl9DQoJCWlmICgkZGVidWcgPiAxICYmICgkaWdu b3JlIHx8ICRvbWl0KSkgew0KCQkJZWNobyAnKysgT01JVFRFRCBEQVRFUyArKyc7DQoJCQlk bXAoJG9taXQpOw0KCQkJZWNobyAnKysgQ0FOQ0VMTEVEIERBVEVTICsrJzsNCgkJCWRtcCgk aWdub3JlKTsNCgkJfQ0KCQkvLyBDYWxjdWxhdGUgdGhlIGRhdGUgb2Zmc2V0cyBhbmQgY2hl Y2sgcmVjdXJyaW5nIGV2ZW50cyB0aGF0IGZhbGwgd2l0aGluIHRoZSBtb250aCBvZiBpbnRl cmVzdA0KCQlpZiAoJHN0ZXBmaWVsZCAmJiAkcm93WyRzdGVwZmllbGRdICE9ICcnKSB7DQoJ CQkkZnJlcSA9IGRvX2xpc3QoJHJvd1skc3RlcGZpZWxkXSk7DQoJCQlmb3JlYWNoICgkZnJl cSBhcyAkaW50ZXJ2YWwpIHsNCgkJCQkkbWF4X2xvb3AgPSA5OTk5OTsgLy8gWXVrLCBidXQg cHJhY3RpY2FsbHkgbGltaXRsZXNzDQoJCQkJJG9yaWdlcnZhbCA9ICRpbnRlcnZhbDsNCgkJ CQkkaW50ZXJ2YWwgPSBzdHJfcmVwbGFjZSgiP21vbnRoIiwgZGF0ZSgnRicsIGdtbWt0aW1l KDAsMCwwLCRtb250aCwxKSksICRpbnRlcnZhbCk7DQoJCQkJJGludGVydmFsID0gc3RyX3Jl cGxhY2UoIj95ZWFyIiwgJHllYXIsICRpbnRlcnZhbCk7DQoJCQkJaWYgKHN0cnBvcygkaW50 ZXJ2YWwsICJsYXN0IikgPT09IDApIHsNCgkJCQkJJGludGVydmFsID0gZGF0ZSgibCwgRiBq UyBZIiwgc3RydG90aW1lKCRpbnRlcnZhbCwgbWt0aW1lKDEyLCAwLCAwLCBkYXRlKCJuIixt a3RpbWUoMCwwLDAsJG1vbnRoLDEsJHllYXIpKSsxLCAxLCAkeWVhcikpKTsNCgkJCQkJJG1h eF9sb29wID0gMTsNCgkJCQl9IGVsc2UgaWYgKHN0cnBvcygkaW50ZXJ2YWwsICJmaXJzdCIp ID09PSAwKSB7DQoJCQkJCSRpbnRlcnZhbCA9IGRhdGUoImwsIEYgalMgWSIsIHN0cnRvdGlt ZSgkaW50ZXJ2YWwsIG1rdGltZSgxMiwgMCwgMCwgKCgkbW9udGg+MSkgPyAkbW9udGgtMSA6 IDEyKSwgZGF0ZSgidCIsbWt0aW1lKDAsMCwwLCRtb250aC0xLDEsKCgkbW9udGg9PTEpID8g JHllYXItMTogJHllYXIpKSksICgoJG1vbnRoPT0xKSA/ICR5ZWFyLTE6ICR5ZWFyKSkpKTsN CgkJCQkJJG1heF9sb29wID0gMTsNCgkJCQl9DQoJCQkJJHRzX2xvb3AgPSAwOw0KCQkJCSR0 c19jdXJyID0gJHN0YXJ0Ow0KCQkJCWlmIChzdHJwb3MoJG9yaWdlcnZhbCwgIj9tb250aCIp IHx8IHN0cnBvcygkb3JpZ2VydmFsLCAiP3llYXIiKSkgew0KCQkJCQkkbWF4X2xvb3AgPSAx Ow0KICAgICAgICAgICAgfQ0KDQoJCQkJd2hpbGUgKCR0c19jdXJyIDwgJGVuZCAmJiAkdHNf bG9vcCA8ICRtYXhfbG9vcCkgew0KCQkJCQlpZiAoJG1heF9sb29wID09IDEpIHsNCgkJCQkJ CSR0c19jdXJyID0gc3RydG90aW1lKCRpbnRlcnZhbCk7DQoJCQkJCQkkdHNfY3VyciA9ICgk dHNfY3VyciA8ICRzdGFydCB8fCAkdHNfY3VyciA+ICRlbmQpID8gJHN0YXJ0IDogJHRzX2N1 cnI7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkdHNfY3VyciA9IHN0cnRvdGltZSgkaW50ZXJ2 YWwsICR0c19jdXJyKTsNCgkJCQkJfQ0KCQkJCQlpZiAoJHRzX2N1cnIgPT09IGZhbHNlKSB7 DQoJCQkJCQkkdHNfbG9vcCsrOw0KCQkJCQkJYnJlYWs7DQoJCQkJCX0gZWxzZSB7DQoJCQkJ CQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCQkJCWRtcCgiSU5URVJWQUw6ICIuIGRhdGUoJ2Qt TS1ZIEg6aTpzJywgJHRzX2N1cnIpKTsNCgkJCQkJCX0NCgkJCQkJCWlmICgkdHNfY3VyciA8 ICRlbmQgJiYgJHRzX2N1cnIgPj0gJHRzX2ZpcnN0ICYmICR0c19jdXJyICE9ICRzdGFydCkg ew0KCQkJCQkJCS8vIEEgcmVjdXJyaW5nIGV2ZW50LiBDaGVjayBpdCBpc24ndCBhIGhvbGlk YXkgb3IgdG8gYmUgaWdub3JlZA0KCQkJCQkJCXBvcHVsYXRlQXJ0aWNsZURhdGEoJHJvdyk7 DQoJCQkJCQkJJG9wID0gJyc7DQoJCQkJCQkJJGlkeCA9IChpbnQpc3RyZnRpbWUoJyVkJywg JHRzX2N1cnIpOw0KCQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdyZWN1cic7DQoJCQkJCQkJ JHRoaXNkYXRlID0gZGF0ZSgiZC1NLVkiLCAkdHNfY3Vycik7DQoJCQkJCQkJJG9taXRfbWUg PSBpbl9hcnJheSgkdGhpc2RhdGUsICRvbWl0KTsNCgkJCQkJCQkkc2hvd19tZSA9ICFpbl9h cnJheSgkdGhpc2RhdGUsICRpZ25vcmUpOw0KCQkJCQkJCSRob2xfaGl0ID0gaW5fYXJyYXko JHRoaXNkYXRlLCAkaG9saWRheXMpOw0KCQkJCQkJCSRzaG93X2hvbCA9ICgkaG9sX2hpdCAm JiAhaW5fYXJyYXkoJ3JlY3VyJywkaG9saWRheWZsYWdzKSApID8gZmFsc2UgOiB0cnVlOw0K CQkJCQkJCWlmICggJG9taXRfbWUgKSB7DQoJCQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdv bWl0JzsNCgkJCQkJCQl9DQoJCQkJCQkJaWYgKCAoISRzaG93X21lIHx8ICEkc2hvd19ob2wp ICYmICEkb21pdF9tZSApIHsNCgkJCQkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7 DQoJCQkJCQkJfQ0KCQkJCQkJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsN CgkJCQkJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07DQoJCQkJCQkJfQ0KDQoJ CQkJCQkJLy8gQ3JlYXRlIHRoZSBldmVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIGNlbGwgYnV0 IG9ubHkgaWYgdGhleSd2ZSBub3QgYXBwZWFyZWQgYmVmb3JlLCBvciBhcmUgdG8gYmUgaWdu b3JlZC9vbWl0dGVkDQoJCQkJCQkJaWYgKCEkb21pdF9tZSkgew0KCQkJCQkJCQlpZiAoKCRz aG93X21lICYmICRzaG93X2hvbCkgfHwgJHNob3dza2lwcGVkKSB7DQoJCQkJCQkJCQkkc21k X2RhdGVbJ2QnXSA9ICRpZHg7DQoJCQkJCQkJCQkkc21kX2RhdGVbJ3cnXSA9IHN0cmZ0aW1l KCclVicsICR0c19jdXJyKTsNCgkJCQkJCQkJCSRzbWRfZGF0ZVsnaXknXSA9IHN0cmZ0aW1l KCclRycsICR0c19jdXJyKTsNCgkJCQkJCQkJCSRvcCA9ICgkcmVjdXJmb3JtKSA/IHBhcnNl X2Zvcm0oJHJlY3VyZm9ybSkgOiAoKCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDogKCgkc2l6 ZT09InNtYWxsIikgPyAnJyA6IGhyZWYoJHJvd1snVGl0bGUnXSwgcGVybWxpbmt1cmwoJHJv dyksICcgdGl0bGU9IicuJHJvd1snVGl0bGUnXS4nIicpKSApOw0KCQkJCQkJCQl9DQoJCQkJ CQkJfQ0KCQkJCQkJCSR1c2VkID0gYXJyYXkoKTsNCgkJCQkJCQlpZiAoaXNzZXQoJGV2ZW50 c1skaWR4XSkgJiYgJGV2ZW50c1skaWR4XSAhPSBOVUxMKSB7DQoJCQkJCQkJCWZvcmVhY2gg KCRldmVudHNbJGlkeF0gYXMgJGV2KSB7DQoJCQkJCQkJCQkkdXNlZFtdID0gJGV2Wydldidd Ow0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJCWlmIChpc3NldCgkZXZlbnRzWyRpZHhd KSAmJiAkZXZlbnRzWyRpZHhdID09IE5VTEwgfHwgIWluX2FycmF5KCRvcCwgJHVzZWQpKSB7 DQoJCQkJCQkJCSRldmVudHNbJGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9wLCAnZmxhZycg PT4gJHNtZF9jYWxfZmxhZywgJ2NsYXNzZXMnID0+ICgoJGNmbGFnKSA/IGpvaW4oJyAnLGFy cmF5X21lcmdlKCRjZmxhZywgJHNtZF9jYWxfdWNscykpIDogJycpLiRldmNsYXNzZXMsICdw b3N0ZWQnID0+ICRzdGFydF9kYXRlKTsNCgkJCQkJCQl9DQoJCQkJCQkJJHNtZF9jYWxfZmxh ZyA9ICRjZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KCQkJCQkJfQ0KCQkJCQkJ JHRzX2xvb3ArKzsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfSBlbHNlIGlmICgkc2hvd3Nw YW5uZWQgJiYgJG11bHRpKSB7DQoJCQkvLyBOb24tcmVjdXJyaW5nIGV2ZW50cyBtYXkgc3Bh biBtb3JlIHRoYW4gb25lIGRhdGUgYnV0IHRoZXkgbXVzdCBzdGlsbCByZXNwZWN0IGlnbm9y ZWQgZGF0ZXMgYW5kIGhvbGlkYXlzDQoJCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0K CQkJJGxhc3RkYXkgPSAoaW50KXN0cmZ0aW1lKCclZCcsICRlbmQpOw0KCQkJJHJlYWxfbGFz dGRheSA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHJlYWxfZW5kKTsNCgkJCXdoaWxlICgrKyRp ZHggPD0gJGxhc3RkYXkpIHsNCgkJCQkkb3AgPSAnJzsNCgkJCQkkbXVsdGlmbGFnID0gKCRp ZHg9PSRyZWFsX2xhc3RkYXkpID8gJ211bHRpbGFzdCcgOiAoKCRpZHg9PTEpID8gJ211bHRp cHJldicgOiAnbXVsdGknKTsNCgkJCQkkc21kX2NhbF9mbGFnW10gPSAkbXVsdGlmbGFnOw0K CQkJCSR0aGlzdGltZSA9IGdtbWt0aW1lKDAsIDAsIDAsICRtb250aCwgJGlkeCwgJHllYXIp Ow0KCQkJCSR0aGlzZGF0ZSA9IGRhdGUoImQtTS1ZIiwgJHRoaXN0aW1lKTsNCgkJCQkkb21p dF9tZSA9IGluX2FycmF5KCR0aGlzZGF0ZSwgJG9taXQpOw0KCQkJCSRzaG93X21lID0gIWlu X2FycmF5KCR0aGlzZGF0ZSwgJGlnbm9yZSk7DQoJCQkJJGhvbF9oaXQgPSBpbl9hcnJheSgk dGhpc2RhdGUsICRob2xpZGF5cyk7DQoJCQkJJHNob3dfaG9sID0gKCRob2xfaGl0ICYmICFp bl9hcnJheSgnbXVsdGknLCRob2xpZGF5ZmxhZ3MpICkgPyBmYWxzZSA6IHRydWU7DQoJCQkJ aWYgKCAkb21pdF9tZSApIHsNCgkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ29taXQnOw0KCQkJ CX0NCgkJCQlpZiAoICghJHNob3dfbWUgfHwgISRzaG93X2hvbCkgJiYgISRvbWl0X21lICkg ew0KCQkJCQkkc21kX2NhbF9mbGFnW10gPSAnY2FuY2VsJzsNCgkJCQl9DQoJCQkJZm9yZWFj aCAoJHNtZF9jYWxfZmxhZyBhcyAkaXRlbSkgew0KCQkJCQkkY2ZsYWdbXSA9ICRjbGFzc3By ZWZpeC4kaXRlbTsNCgkJCQl9DQoJCQkJLy8gQ3JlYXRlIHRoZSBzcGFubmVkIGV2ZW50IHRo YXQgYXBwZWFycyBpbiB0aGUgY2VsbA0KCQkJCWlmICghJG9taXRfbWUpIHsNCgkJCQkJaWYg KCAoJHNob3dfbWUgJiYgJHNob3dfaG9sKSB8fCAkc2hvd3NraXBwZWQpIHsNCgkJCQkJCSRz bWRfZGF0ZVsnZCddID0gJGlkeDsNCgkJCQkJCSRzbWRfZGF0ZVsndyddID0gc3RyZnRpbWUo JyVWJywgJHRoaXN0aW1lKTsNCgkJCQkJCSRzbWRfZGF0ZVsnaXknXSA9IHN0cmZ0aW1lKCcl RycsICR0aGlzdGltZSk7DQoJCQkJCQkkb3AgPSAoJHNwYW5mb3JtKSA/IHBhcnNlX2Zvcm0o JHNwYW5mb3JtKSA6ICgoJHRoaW5nKSA/IHBhcnNlKCR0aGluZykgOiAoKCRzaXplPT0ic21h bGwiKSA/ICcnIDogaHJlZignJnJhcnI7JywgcGVybWxpbmt1cmwoJHJvdyksICcgdGl0bGU9 IicuJHJvd1snVGl0bGUnXS4nIicpKSApOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSRldmVudHNb JGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9wLCAnZmxhZycgPT4gJHNtZF9jYWxfZmxhZywg J2NsYXNzZXMnID0+ICgoJGNmbGFnKSA/IGpvaW4oJyAnLGFycmF5X21lcmdlKCRjZmxhZywg JHNtZF9jYWxfdWNscykpIDogJycpLiRldmNsYXNzZXMsICdwb3N0ZWQnID0+ICRzdGFydF9k YXRlKTsNCgkJCQkkc21kX2NhbF9mbGFnID0gJGNmbGFnID0gJHNtZF9jYWxfdWNscyA9IGFy cmF5KCk7DQoJCQl9DQoJCX0NCgkJLy8gQWRkIGFueSBleHRyYSBkYXRlcyBmb3IgdGhpcyBl dmVudCB0aGF0IGFyZSB3aXRoaW4gdGhlIGN1cnJlbnQgbW9udGgNCgkJaWYgKCRleHRyYWZp ZWxkICYmICRyb3dbJGV4dHJhZmllbGRdICE9ICcnKSB7DQoJCQkkeHRyYSA9IGRvX2xpc3Qo JHJvd1skZXh0cmFmaWVsZF0pOw0KCQkJJGV2X2hyID0gZGF0ZSgnSCcsICRzdGFydCk7DQoJ CQkkZXZfbW4gPSBkYXRlKCdpJywgJHN0YXJ0KTsNCgkJCSRldl9zYyA9IGRhdGUoJ3MnLCAk c3RhcnQpOw0KCQkJJHN0YW1wb2ZmID0gKGludCkoMzYwMCokZXZfaHIpICsgKGludCkoNjAq JGV2X21uKSArIChpbnQpJGV2X3NjOw0KCQkJZm9yZWFjaCAoJHh0cmEgYXMgJHZhbCkgew0K CQkJCWlmIChzdHJwb3MoJHZhbCwgIisiKSA9PT0gZmFsc2UpIHsNCgkJCQkJJHNwaWR0aCA9 IDE7DQoJCQkJCSRzcGV4ID0gMDsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkY2hrID0gJHNob3dz cGFubmVkICYmICEkcmVjdXI7DQoJCQkJCSRzcGlkdGggPSAkY2hrID8gY2VpbCgkZGlmZiAv ICg2MCo2MCoyNCkpIDogMTsgLy8gZGF5cyBiZXR3ZWVuIGRhdGVzDQoJCQkJCSR2YWwgPSBy dHJpbSgkdmFsLCAnKycpOw0KCQkJCQkkc3BleCA9ICRjaGsgPyAxIDogMDsNCgkJCQl9DQoJ CQkJZm9yICgkamR4ID0gMTsgJGpkeCA8PSAkc3BpZHRoOyAkamR4KyspIHsNCgkJCQkJJHRt ID0gc3RydG90aW1lKCR2YWwgLiAoKCRqZHg9PTEpID8gJycgOiAnKycuKCRqZHgtMSkuJyBk YXlzJykpOw0KCQkJCQlpZiAoJGRpZmYgPiAwICYmICRqZHggPT0gMSkgew0KCQkJCQkJJGV4 cHN0YW1wID0gJHRtKyRzdGFtcG9mZiskcmVhbF9kaWZmOw0KCQkJCQl9DQoJCQkJCSRpZHgg PSAkc21kX2RhdGVbJ2QnXSA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHRtKTsNCgkJCQkJJGR0 ID0gZGF0ZSgiWS1tLWQiLCAkdG0pOw0KCQkJCQkkbHN0ID0gKCRleHRyYXN0cmljdCkgPyAk ZW5kIDogJHRzX2xhc3Q7DQoJCQkJCWlmICgkdG0gPCAkbHN0ICYmICR0bSA+PSAkdHNfZmly c3QpIHsNCgkJCQkJCSRmYWtlcm93ID0gJHJvdzsNCgkJCQkJCSRmYWtlcm93WydQb3N0ZWQn XSA9IGRhdGUoIlktbS1kIEg6aTpzIiwgJHRtKyRzdGFtcG9mZik7DQoJCQkJCQkkZmFrZXJv d1sndVBvc3RlZCddID0gJHRtKyRzdGFtcG9mZjsNCgkJCQkJCWlmICgkZGlmZj4wKSB7DQoJ CQkJCQkJJGZha2Vyb3dbJ0V4cGlyZXMnXSA9IGRhdGUoIlktbS1kIEg6aTpzIiwgJGV4cHN0 YW1wKTsNCgkJCQkJCQkkZmFrZXJvd1sndUV4cGlyZXMnXSA9ICRleHBzdGFtcDsNCgkJCQkJ CX0NCg0KCQkJCQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkZmFrZXJvdyk7DQoJCQkJCQkkc21k X2NhbF9mbGFnW10gPSAnZXh0cmEnOw0KCQkJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVmaXgu J2V4dHJhJzsNCgkJCQkJCSRvbWl0X21lID0gZmFsc2U7DQoJCQkJCQkkc2hvd19tZSA9ICRz aG93X2hvbCA9IHRydWU7DQoJCQkJCQlpZiAoJHNwZXgpIHsNCgkJCQkJCQkkbXVsdGlmbGFn ID0gKCRqZHg9PTEpID8gJ211bHRpZmlyc3QnIDogKCgkamR4PT0kc3BpZHRoKSA/ICdtdWx0 aWxhc3QnIDogKCgkaWR4PT0xKSA/ICdtdWx0aXByZXYnIDogJ211bHRpJykpOw0KCQkJCQkJ CSR0aGlzZGF0ZSA9IGRhdGUoImQtTS1ZIiwgJHRtKTsNCgkJCQkJCQkkb21pdF9tZSA9IGlu X2FycmF5KCR0aGlzZGF0ZSwgJG9taXQpOw0KCQkJCQkJCSRzaG93X21lID0gIWluX2FycmF5 KCR0aGlzZGF0ZSwgJGlnbm9yZSk7DQoJCQkJCQkJJGhvbF9oaXQgPSBpbl9hcnJheSgkdGhp c2RhdGUsICRob2xpZGF5cyk7DQoJCQkJCQkJJHNob3dfaG9sID0gKCRob2xfaGl0ICYmICFp bl9hcnJheSgnbXVsdGknLCRob2xpZGF5ZmxhZ3MpICkgPyBmYWxzZSA6IHRydWU7DQoJCQkJ CQkJaWYgKCRvbWl0X21lKSB7DQoJCQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdvbWl0JzsN CgkJCQkJCQl9DQoJCQkJCQkJaWYgKCAoISRzaG93X21lIHx8ICEkc2hvd19ob2wpICYmICEk b21pdF9tZSApIHsNCgkJCQkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJCQkJ CQkJfQ0KCQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICRtdWx0aWZsYWc7DQoJCQkJCQkJJGNm bGFnW10gPSAkY2xhc3NwcmVmaXguJG11bHRpZmxhZzsNCgkJCQkJCX0NCgkJCQkJCWlmICgh JG9taXRfbWUpIHsNCgkJCQkJCQlpZiAoICgkc2hvd19tZSAmJiAkc2hvd19ob2wpIHx8ICRz aG93c2tpcHBlZCkgew0KCQkJCQkJCQkkc21kX2RhdGVbJ3cnXSA9IHN0cmZ0aW1lKCclVics ICR0bSk7DQoJCQkJCQkJCSRzbWRfZGF0ZVsnaXknXSA9IHN0cmZ0aW1lKCclRycsICR0bSk7 DQoJCQkJCQkJCSRvcCA9ICgkc3BleCAmJiAkc3BhbmZvcm0pID8gcGFyc2VfZm9ybSgkc3Bh bmZvcm0pIDogKCgkdGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJGZvcm0pID8gcGFyc2Vf Zm9ybSgkZm9ybSkgOiAoKCRzaXplPT0ic21hbGwiKSA/ICcnIDogaHJlZigoKCRzcGV4ICYm ICRqZHg+MSkgPyAnJnJhcnI7JyA6ICRyb3dbJ1RpdGxlJ10pLCBwZXJtbGlua3VybCgkcm93 KSwgJyB0aXRsZT0iJy4kcm93WydUaXRsZSddLiciJykpICkpOw0KCQkJCQkJCQkkZXZlbnRz WyRpZHhdW10gPSBhcnJheSgnZXYnID0+ICRvcCwgJ2ZsYWcnID0+ICRzbWRfY2FsX2ZsYWcs ICdjbGFzc2VzJyA9PiAoKCRjZmxhZykgPyBqb2luKCcgJyxhcnJheV9tZXJnZSgkY2ZsYWcs ICRzbWRfY2FsX3VjbHMpKSA6ICcnKS4kZXZjbGFzc2VzLCAncG9zdGVkJyA9PiAkZHQpOw0K CQkJCQkJCQkkc21kX2NhbF9mbGFnID0gJGNmbGFnID0gJHNtZF9jYWxfdWNscyA9IGFycmF5 KCk7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0K CWFydGljbGVfcG9wKCk7DQoNCglpZiAoJGRlYnVnID4gMSAmJiAkZXZlbnRzKSB7DQoJCWVj aG8gJysrIEFMTCBFVkVOVFMgKysnOw0KCQlkbXAoJGV2ZW50cyk7DQoJfQ0KDQoJLy8gR2Vu ZXJhdGUgdGhlIGNhbGVuZGFyDQoJaWYoICRzaXplID09ICJzbWFsbCIgKSB7DQoJCSRjYWxl bmRhciA9IG5ldyBTTURfU21hbGxfQ2FsZW5kYXIoJHllYXIsICRtb250aCwgJGV2ZW50cywg JHNlY3Rpb24sICRjYXRlZ29yeSk7DQoJfSBlbHNlIHsNCgkJJGNhbGVuZGFyID0gbmV3IFNN RF9DYWxlbmRhcigkeWVhciwgJG1vbnRoLCAkZXZlbnRzKTsNCgl9DQoJJGNhbGVuZGFyLT5z ZXRXZWVrKCR3ZWVrKTsNCgkkY2FsZW5kYXItPnNldEdNVCgkZ210KTsNCgkkY2FsZW5kYXIt PnNldExhbmcoJGxhbmcpOw0KCSRjYWxlbmRhci0+c2V0Q2xhc3NMZXZlbHMoJGNsZXZzKTsN CgkkY2FsZW5kYXItPnNldENsYXNzUHJlZml4KCRjbGFzc3ByZWZpeCk7DQoJJGNhbGVuZGFy LT5zZXRFdmVudFByZWZpeCgkZXZjbGFzc3ByZWZpeCk7DQoJJGNhbGVuZGFyLT5zZXRFdmVu dFdyYXB0YWcoJGV2ZW50d3JhcHRhZyk7DQoJJGNhbGVuZGFyLT5zZXRDZWxsRm9ybSgkY2Vs bGZvcm0pOw0KCSRjYWxlbmRhci0+c2V0TVlXcmFwdGFnKCRteXdyYXB0YWcpOw0KCSRjYWxl bmRhci0+c2V0VGFibGVJRCgkaWQpOw0KCSRjYWxlbmRhci0+c2V0VGFibGVDbGFzcygkY2xh c3MpOw0KCSRjYWxlbmRhci0+c2V0Um93Q2xhc3MoJHJvd2NsYXNzKTsNCgkkY2FsZW5kYXIt PnNldENlbGxDbGFzcygkY2VsbGNsYXNzKTsNCgkkY2FsZW5kYXItPnNldEVtcHR5Q2xhc3Mo JGVtcHR5Y2xhc3MpOw0KCSRjYWxlbmRhci0+c2V0SVNPV2Vla0NsYXNzKCRpc293ZWVrY2xh c3MpOw0KCSRjYWxlbmRhci0+c2V0TmF2SW5mbygkbmF2cGNsYXNzLCRuYXZuY2xhc3MsJG5h dnBhcnIsJG5hdm5hcnIsJG5hdmlkKTsNCgkkY2FsZW5kYXItPnNldE5hdktlZXAoJG1haW50 YWluKTsNCgkkY2FsZW5kYXItPnNldE1ZQ2xhc3MoJG15Y2xhc3MpOw0KCSRjYWxlbmRhci0+ c2V0TmFtZUZvcm1hdCgkZGF5Zm9ybWF0LCAiZCIpOw0KCSRjYWxlbmRhci0+c2V0TmFtZUZv cm1hdCgkbW9udGhmb3JtYXQsICJtIik7DQoJJGNhbGVuZGFyLT5zZXRTaG93SVNPV2Vlaygk aXNvd2Vla3MpOw0KCSRjYWxlbmRhci0+c2V0RVllYXIoJGVhcmxpZXN0KTsNCgkkY2FsZW5k YXItPnNldExZZWFyKCRsYXRlc3QpOw0KCSRjYWxlbmRhci0+c2V0RmlsdGVyT3B0cygkZm9w dHMpOw0KCSRjYWxlbmRhci0+c2V0SG9saWRheXMoJGhvbGlkYXlzKTsNCgkkY2FsZW5kYXIt PnNldFNlbGVjdG9ycyhkb19saXN0KCRzZWxlY3QpLCAkc2VsZWN0YnRuKTsNCgkkY2FsZW5k YXItPnNldEZpcnN0RGF5T2ZXZWVrKCRmaXJzdGRheSk7DQoJJGNhbGVuZGFyLT5zZXRMaW5r UG9zdGVkKCRsaW5rcG9zdGVkKTsNCg0KCXJldHVybiAkY2FsZW5kYXItPmRpc3BsYXkoJHN0 YXRpYywgJGZ1dHVyZSk7DQp9DQoNCmNsYXNzIFNNRF9DYWxlbmRhciBleHRlbmRzIFNNRF9S YXdfQ2FsZW5kYXIgew0KCS8vIE92ZXJyaWRlIENvbnN0cnVjdG9yDQoJLy8gUGVybWl0cyBt dWx0aXBsZSBldmVudHMgdG8gc2hvdyBwZXIgZGF5DQoJZnVuY3Rpb24gU01EX0NhbGVuZGFy KCR5ZWFyLCRtb250aCwkZXZlbnRzKSB7DQoJCSR0aGlzLT5ldmVudHMgPSAkZXZlbnRzOw0K CQkkdGhpcy0+U01EX1Jhd19DYWxlbmRhcigkeWVhciwkbW9udGgpOw0KCX0NCg0KCS8vIE92 ZXJyaWRlIGRzcERheUNlbGwgdG8gZGlzcGxheSBzdHVmZiByaWdodA0KCWZ1bmN0aW9uIGRz cERheUNlbGwoJHRoZWRheSkgew0KCQlnbG9iYWwgJHNtZF9jYWxfZmxhZywgJHNtZF9jYWxp bmZvLCAkc21kX2NhbF91Y2xzLCAkc21kX2RhdGU7DQoNCgkJJHNtZF9jYWxfZmxhZyA9ICRz bWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KCQkkaGFzYXJ0aWNsZSA9IGlzc2V0KCR0aGlzLT5l dmVudHNbJHRoZWRheV0pOw0KCQkkdGhlZGF0ZSA9IGdtbWt0aW1lKDAsIDAsIDAsICR0aGlz LT5tb250aCwgJHRoZWRheSwgJHRoaXMtPnllYXIpOw0KCQkkaG9sX2hpdCA9IGluX2FycmF5 KGRhdGUoImQtTS1ZIiwgJHRoZWRhdGUpLCAkdGhpcy0+aG9saWRheXMpOw0KCQlpZiAoJGhh c2FydGljbGUpIHsNCgkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdldmVudCc7DQoJCX0NCgkJaWYg KCRob2xfaGl0KSB7DQoJCQkkc21kX2NhbF9mbGFnW10gPSAnaG9scyc7DQoJCX0NCgkJJGNm bGFnID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAoJHNtZF9jYWxfZmxhZyBhcyAkaXRlbSkgew0K CQkJJGNmbGFnW10gPSAkdGhpcy0+Y2xhc3NwcmVmaXguJGl0ZW07DQoJCX0NCgkJJHRkY2xh c3MgPSB0cmltKCR0aGlzLT5jZWxsY2xhc3MgLiAoKCRjZmxhZykgPyAnICcuam9pbignICcs ICRjZmxhZykgOiAnJykpOw0KCQkkcnVubmluZ2NsYXNzID0gKGluX2FycmF5KCJjZWxsIiwg JHRoaXMtPmNsYXNzbGV2ZWxzKSB8fCBpbl9hcnJheSgiY2VsbHBsdXMiLCAkdGhpcy0+Y2xh c3NsZXZlbHMpKSA/IGV4cGxvZGUoJyAnLCAkdGRjbGFzcykgOiBhcnJheSgpOw0KCQlpZigk dGhpcy0+eWVhciA9PSBkYXRlKCdZJyx0aW1lKCkrdHpfb2Zmc2V0KCkgKSBhbmQgJHRoaXMt Pm1vbnRoID09IGRhdGUoJ24nLHRpbWUoKSt0el9vZmZzZXQoKSApIGFuZCAkdGhlZGF5ID09 IGRhdGUoJ2onLHRpbWUoKSt0el9vZmZzZXQoKSkgKSB7DQoJCQkkc21kX2NhbF9mbGFnW10g PSAndG9kYXknOw0KCQkJJHJ1bm5pbmdjbGFzc1tdID0gJHRoaXMtPmNsYXNzcHJlZml4Lid0 b2RheSc7DQoJCX0NCg0KCQkkb3V0ID0gJGZsYWdzID0gYXJyYXkoKTsNCgkJJGZvdXQgPSBh cnJheSgnc3RhbmRhcmQnPT5hcnJheSgpLCdyZWN1cic9PmFycmF5KCksJ3JlY3VyZmlyc3Qn PT5hcnJheSgpLCdtdWx0aWZpcnN0Jz0+YXJyYXkoKSwnbXVsdGknPT5hcnJheSgpLCdtdWx0 aXByZXYnPT5hcnJheSgpLCdtdWx0aWxhc3QnPT5hcnJheSgpLCdjYW5jZWwnPT5hcnJheSgp LCdleHRyYSc9PmFycmF5KCkpOw0KCQlpZiAoZW1wdHkoJHRoaXMtPmNlbGxmb3JtKSkgew0K CQkJJG91dFtdID0gaGVkKCR0aGVkYXksNCk7DQoJCX0NCgkJaWYoIGlzc2V0KCR0aGlzLT5l dmVudHNbJHRoZWRheV0pICkgew0KCQkJJGRheXNfZXZlbnRzID0gJHRoaXMtPmV2ZW50c1sk dGhlZGF5XTsNCgkJCWZvcmVhY2goJGRheXNfZXZlbnRzIGFzICRldikgew0KCQkJCSRldmNs YXNzID0gdHJpbSgkZXZbJ2NsYXNzZXMnXSk7DQoJCQkJJGZsYWdzID0gYXJyYXlfbWVyZ2Uo JGZsYWdzLCAkZXZbJ2ZsYWcnXSk7DQoJCQkJaWYgKGluX2FycmF5KCJjZWxscGx1cyIsICR0 aGlzLT5jbGFzc2xldmVscykpIHsNCgkJCQkJZm9yZWFjaCAoZXhwbG9kZSgnICcsICRldmNs YXNzKSBhcyAkZXZjKSB7DQoJCQkJCQkkcnVubmluZ2NsYXNzW109ICRldmM7DQoJCQkJCX0N CgkJCQl9DQoJCQkJJGNscyA9ICgkZXZjbGFzcyAmJiBpbl9hcnJheSgiZXZlbnQiLCAkdGhp cy0+Y2xhc3NsZXZlbHMpKSA/ICcgY2xhc3M9IicudHJpbSgkZXZjbGFzcykuJyInIDogJyc7 DQoJCQkJJG9wID0gKCR0aGlzLT5ldndyYXB0YWcpID8gdGFnKCRldlsnZXYnXSwgJHRoaXMt PmV2d3JhcHRhZywgJGNscykgOiAkZXZbJ2V2J107DQoJCQkJZm9yZWFjaCAoJGV2WydmbGFn J10gYXMgJGZsZXYpIHsNCgkJCQkJJGZvdXRbJGZsZXZdW10gPSAkb3A7DQoJCQkJfQ0KCQkJ CSRvdXRbXSA9ICRvcDsNCgkJCX0NCgkJfQ0KDQoJCS8vIEFtYWxnYW1hdGUgdGhlIGV2ZW50 LWxldmVsIGNsYXNzZXMgYW5kIGNlbGwtbGV2ZWwgY2xhc3NlcyBpZiByZXF1aXJlZA0KCQkk cnVubmluZ2NsYXNzID0gYXJyYXlfdW5pcXVlKCRydW5uaW5nY2xhc3MpOw0KCQlpZiAoaW5f YXJyYXkoImNlbGxwbHVzIiwgJHRoaXMtPmNsYXNzbGV2ZWxzKSkgew0KCQkJJHNtZF9jYWxf ZmxhZyA9IGFycmF5X21lcmdlKCRzbWRfY2FsX2ZsYWcsICRmbGFncyk7DQoJCX0NCg0KCQlp ZiAoJHRoaXMtPmNlbGxmb3JtKSB7DQoJCQkkdGhpc3RpbWUgPSBnbW1rdGltZSgwLCAwLCAw LCAkdGhpcy0+bW9udGgsICR0aGVkYXksICR0aGlzLT55ZWFyKTsNCgkJCSRzbWRfY2FsaW5m b1snaWQnXSA9ICR0aGlzLT50YWJsZUlEOw0KCQkJJHNtZF9kYXRlWyd5J10gPSAkdGhpcy0+ eWVhcjsNCgkJCSRzbWRfZGF0ZVsnbSddID0gJHRoaXMtPm1vbnRoOw0KCQkJJHNtZF9kYXRl Wyd3J10gPSBzdHJmdGltZSgiJVYiLCAkdGhpc3RpbWUpOw0KCQkJJHNtZF9kYXRlWydpeSdd ID0gc3RyZnRpbWUoIiVHIiwgJHRoaXN0aW1lKTsNCgkJCSRzbWRfZGF0ZVsnZCddID0gJHRo ZWRheTsNCgkJCSRyZXBzID0gYXJyYXkoDQoJCQkJJ3tzdGFuZGFyZH0nID0+IGpvaW4oJycs JGZvdXRbJ3N0YW5kYXJkJ10pLA0KCQkJCSd7cmVjdXJ9JyA9PiBqb2luKCcnLCRmb3V0Wydy ZWN1ciddKSwNCgkJCQkne3JlY3VyZmlyc3R9JyA9PiBqb2luKCcnLCRmb3V0WydyZWN1cmZp cnN0J10pLA0KCQkJCSd7YWxscmVjdXJ9JyA9PiBqb2luKCcnLGFycmF5X21lcmdlKCRmb3V0 WydyZWN1ciddLCAkZm91dFsncmVjdXJmaXJzdCddKSksDQoJCQkJJ3ttdWx0aWZpcnN0fScg PT4gam9pbignJywkZm91dFsnbXVsdGlmaXJzdCddKSwNCgkJCQkne211bHRpcHJldn0nID0+ IGpvaW4oJycsJGZvdXRbJ211bHRpcHJldiddKSwNCgkJCQkne211bHRpfScgPT4gam9pbign JywkZm91dFsnbXVsdGlsYXN0J10pLA0KCQkJCSd7bXVsdGlsYXN0fScgPT4gam9pbignJywk Zm91dFsnbXVsdGlsYXN0J10pLA0KCQkJCSd7YWxsbXVsdGl9JyA9PiBqb2luKCcnLGFycmF5 X21lcmdlKCRmb3V0WydtdWx0aWZpcnN0J10sJGZvdXRbJ211bHRpJ10sJGZvdXRbJ211bHRp cHJldiddLCRmb3V0WydtdWx0aWxhc3QnXSkpLA0KCQkJCSd7Y2FuY2VsfScgPT4gam9pbign JywkZm91dFsnY2FuY2VsJ10pLA0KCQkJCSd7ZXh0cmF9JyA9PiBqb2luKCcnLCRmb3V0Wydl eHRyYSddKSwNCgkJCQkne2V2ZW50c30nID0+IGpvaW4oJycsJG91dCksDQoJCQkJJ3tkYXl9 JyA9PiAkdGhlZGF5LA0KCQkJCSd7d2Vla2RheX0nID0+ICgoaXNfYXJyYXkoJHRoaXMtPmRh eU5hbWVGbXQpKSA/ICR0aGlzLT5kYXlOYW1lc1tkYXRlKCd3JywkdGhpc3RpbWUpXSA6IHN0 cmZ0aW1lKCR0aGlzLT5kYXlOYW1lRm10LCAkdGhpc3RpbWUpKSwNCgkJCQkne3dlZWt9JyA9 PiAkc21kX2RhdGVbJ3cnXSwNCgkJCQkne21vbnRofScgPT4gJHRoaXMtPm1vbnRoLA0KCQkJ CSd7bW9udGhuYW1lfScgPT4gKChpc19hcnJheSgkdGhpcy0+bXRoTmFtZUZtdCkpID8gJHRo aXMtPm10aE5hbWVzW2RhdGUoJ24nLCR0aGlzdGltZSldIDogc3RyZnRpbWUoJHRoaXMtPm10 aE5hbWVGbXQsICR0aGlzdGltZSkpLA0KCQkJCSd7eWVhcn0nID0+ICR0aGlzLT55ZWFyLA0K CQkJCSd7c2hvcnR5ZWFyfScgPT4gc3RyZnRpbWUoIiV5IiwgJHRoaXN0aW1lKSwNCgkJCQkn e2lzb3llYXJ9JyA9PiAkc21kX2RhdGVbJ2l5J10sDQoJCQkJJ3tzaG9ydGlzb3llYXJ9JyA9 PiBzdHJmdGltZSgiJWciLCAkdGhpc3RpbWUpLA0KCQkJKTsNCgkJCSRjZWxsb3V0ID0gcGFy c2Uoc3RydHIoJHRoaXMtPmNlbGxmb3JtLCAkcmVwcykpOw0KCQkJJGNhcnJheSA9IGFycmF5 X21lcmdlKCRydW5uaW5nY2xhc3MsICRzbWRfY2FsX3VjbHMpOw0KCQkJJHNtZF9jYWxfdWNs cyA9IGFycmF5KCk7DQoNCgkJCXJldHVybiBkb1RhZygkY2VsbG91dCwndGQnLGpvaW4oJyAn LCRjYXJyYXkpKTsNCgkJfSBlbHNlIHsNCgkJCXJldHVybiBkb1RhZyhqb2luKCcnLCRvdXQp LCd0ZCcsam9pbignICcsJHJ1bm5pbmdjbGFzcykpOw0KCQl9DQoJfQ0KDQoJZnVuY3Rpb24g ZGlzcGxheSgkc3RhdGljPWZhbHNlLCAkZnV0dXJlPWZhbHNlKSB7DQoJCSRpZCA9ICgkdGhp cy0+dGFibGVJRCkgPyAnIGlkPSInLiR0aGlzLT50YWJsZUlELiciJyA6ICcnOw0KCQkkY1td ID0gJHRoaXMtPmRzcEhlYWRlcigkc3RhdGljLCAkZnV0dXJlKTsNCgkJJGNbXSA9ICR0aGlz LT5kc3BEYXlOYW1lcygpOw0KCQkkY1tdID0gJHRoaXMtPmRzcERheUNlbGxzKCk7DQoNCgkJ cmV0dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0YWJsZScsJHRoaXMtPnRhYmxlY2xhc3MsJGlk KTsNCgl9DQoNCglmdW5jdGlvbiBkc3BIZWFkZXIoJHN0YXRpYywgJGZ1dHVyZSkgew0KCQln bG9iYWwgJHByZXRleHQsICRzbWRfY2FsaW5mbzsNCg0KCQkkY3Vycm1vID0gJHRoaXMtPm1v bnRoOw0KCQkkY3VycnlyID0gJHRoaXMtPnllYXI7DQoJCSRuYXZwY2xhc3MgPSAkdGhpcy0+ Z2V0TmF2SW5mbygicGMiKTsNCgkJJG5hdm5jbGFzcyA9ICR0aGlzLT5nZXROYXZJbmZvKCJu YyIpOw0KCQkkbmF2cGFycm93ID0gJHRoaXMtPmdldE5hdkluZm8oInBhIik7DQoJCSRuYXZu YXJyb3cgPSAkdGhpcy0+Z2V0TmF2SW5mbygibmEiKTsNCgkJJG5hdmlkID0gJHRoaXMtPmdl dE5hdkluZm8oImlkIik7DQoJCSRuYXZwY2xhc3MgPSAoJG5hdnBjbGFzcykgPyAnIGNsYXNz PSInLiRuYXZwY2xhc3MuJyInIDogJyc7DQoJCSRuYXZuY2xhc3MgPSAoJG5hdm5jbGFzcykg PyAnIGNsYXNzPSInLiRuYXZuY2xhc3MuJyInIDogJyc7DQoJCSRmb3B0cyA9ICR0aGlzLT5m b3B0czsNCgkJJHNlYyA9IChpc3NldCgkc21kX2NhbGluZm9bJ3MnXSkgJiYgIWVtcHR5KCRz bWRfY2FsaW5mb1sncyddKSkgPyAkc21kX2NhbGluZm9bJ3MnXSA6ICcnOw0KCQlmb3JlYWNo ICgkdGhpcy0+bWFpbnRhaW4gYXMgJGNvbCkgew0KCQkJc3dpdGNoICgkY29sKSB7DQoJCQkJ Y2FzZSAic2VjdGlvbiI6DQoJCQkJCSRzZWMgPSAoJHByZXRleHRbJ3MnXSkgPyAkcHJldGV4 dFsncyddIDogJHNlYzsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiYXJ0aWNsZSI6DQoJCQkJ CWlmICgkcHJldGV4dFsnaWQnXSkgew0KCQkJCQkJJGZvcHRzID0gYXJyYXkoJ2lkJyA9PiAk cHJldGV4dFsnaWQnXSkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2Fz ZSAiY2F0ZWdvcnkiOg0KCQkJCQlpZiAoJHByZXRleHRbJ2MnXSkgew0KCQkJCQkJJGZvcHRz ID0gYXJyYXkoJ2MnID0+ICRwcmV0ZXh0WydjJ10pICsgJGZvcHRzOw0KCQkJCQl9DQoJCQkJ CWJyZWFrOw0KCQkJCWNhc2UgImF1dGhvciI6DQoJCQkJCWlmIChncHMoJ2F1dGhvcicpKSB7 DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgnYXV0aG9yJyA9PiBncHMoJ2F1dGhvcicpKSArICRm b3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJwZyI6DQoJCQkJCWlmICgk cHJldGV4dFsncGcnXSkgew0KCQkJCQkJJGZvcHRzID0gYXJyYXkoJ3BnJyA9PiAkcHJldGV4 dFsncGcnXSkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiY2Fs aWQiOg0KCQkJCQlpZiAoJHRoaXMtPnRhYmxlSUQpIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5 KCdjYWxpZCcgPT4gJHRoaXMtPnRhYmxlSUQpICsgJGZvcHRzOw0KCQkJCQl9DQoJCQkJCWJy ZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCWlmIChncHMoJGNvbCkpIHsNCgkJCQkJCSRmb3B0 cyA9IGFycmF5KCRjb2wgPT4gZ3BzKCRjb2wpKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQli cmVhazsNCgkJCX0NCgkJfQ0KCQkkZm9wdHMgPSBhcnJheV91bmlxdWUoJGZvcHRzKTsNCgkJ JGZpbHRlcnMgPSBhcnJheSgpOw0KCQkkZmlsdGVySGlkID0gYXJyYXkoKTsNCgkJaWYgKCEk c3RhdGljKSB7DQoJCQlmb3JlYWNoKCRmb3B0cyBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCQkk ZmlsdGVyc1tdID0gJGtleS4nPScuJHZhbDsNCgkJCQkkZmlsdGVySGlkW10gPSBoSW5wdXQo JGtleSwgJHZhbCk7DQoJCQl9DQoJCX0NCgkJJGZpbHRlclVSTCA9IGpvaW4oYSwgJGZpbHRl cnMpOw0KDQoJCS8vIFdlZWsgc2VsZWN0IGxpc3QNCgkJaWYgKCR0aGlzLT51c2VTZWxlY3Rv cignd2VlaycpICYmICEkc3RhdGljKSB7DQoJCQkkY3VycndrID0gKCR0aGlzLT53ZWVrKSA/ ICR0aGlzLT53ZWVrIDogZGF0ZSgnVycsIHN0cnRvdGltZSggJGN1cnJ5ci4iLSIuJGN1cnJt by4iLTEgMTI6MDAiICkpOw0KCQkJZm9yICggJGlkeCA9IDE7ICRpZHggPD0gNTM7ICRpZHgr KyApIHsNCgkJCQkkdGFnYXR0cyA9ICcgdmFsdWU9IicuJGlkeC4nIic7DQoJCQkJaWYgKCAk aWR4ID09ICRjdXJyd2sgKSAkdGFnYXR0cyAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOw0K CQkJCSRvcHRpb250YWdzW10gPSBkb1RhZygkdGhpcy0+c2VscGZ4Wyd3ZWVrJ10uc3RyX3Bh ZCgkaWR4LCAyLCAnMCcsIFNUUl9QQURfTEVGVCkuJHRoaXMtPnNlbHNmeFsnd2VlayddLCAn b3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCX0NCgkJCSRzZWxlY3RvcltdID0gZG9UYWco am9pbihuLCAkb3B0aW9udGFncyksICdzZWxlY3QnLCAoKCR0aGlzLT5teXdyYXB0YWcpID8g JycgOiAkdGhpcy0+bXljbGFzcyksICcgbmFtZT0idyInLigoJHRoaXMtPnNlbGJ0bikgPyAn JyA6ICcgb25jaGFuZ2U9InN1Ym1pdCgpIicpLCAnJykNCiAgIAkJCQkuICgoJHRoaXMtPnVz ZVNlbGVjdG9yKCd5ZWFyJykpID8gJycgOiBoSW5wdXQoJ3knLCAkY3VycnlyKSk7DQoJCQkk b3B0aW9udGFncyA9IGFycmF5KCk7IC8vIEJsYW5rIG91dA0KCQl9DQoNCgkJLy8gTW9udGgg c2VsZWN0IGxpc3QgLSBub3RlIG1rdGltZSBoYXMgdGhlIGRheSBmb3JjZWQgdG8gMS4gSWYg bm90IHlvdSBnZXQNCgkJLy8gYml6YXJyZSByZXBlYXRlZCBtb250aCBuYW1lcyBvbiB0aGUg MzFzdCBvZiBzb21lIG1vbnRocyA6LVwNCgkJaWYgKCEkdGhpcy0+dXNlU2VsZWN0b3IoJ3dl ZWsnKSkgew0KCQkJaWYgKCR0aGlzLT51c2VTZWxlY3RvcignbW9udGgnKSAmJiAhJHN0YXRp Yykgew0KCQkJCWZvciAoICRpZHggPSAxOyAkaWR4IDw9IDEyOyAkaWR4KysgKSB7DQoJCQkJ CSR0YWdhdHRzID0gJyB2YWx1ZT0iJy4kaWR4LiciJzsNCgkJCQkJaWYgKCAkaWR4ID09ICRj dXJybW8gKSAkdGFnYXR0cyAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOw0KCQkJCQkkb3B0 aW9udGFnc1tdID0gZG9UYWcoJHRoaXMtPnNlbHBmeFsnbW9udGgnXS4oKGlzX2FycmF5KCR0 aGlzLT5tdGhOYW1lRm10KSkgPyAkdGhpcy0+bXRoTmFtZXNbZGF0ZSgnbicsZ21ta3RpbWUo MTIsMCwwLCRpZHgsMSkpXSA6IHN0cmZ0aW1lKCR0aGlzLT5tdGhOYW1lRm10LCBnbW1rdGlt ZSgxMiwwLDAsJGlkeCwxKSkpLiR0aGlzLT5zZWxzZnhbJ21vbnRoJ10sICdvcHRpb24nLCAn JywgJHRhZ2F0dHMpOw0KCQkJCX0NCgkJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKGpvaW4obiwg JG9wdGlvbnRhZ3MpLCAnc2VsZWN0JywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRo aXMtPm15Y2xhc3MpLCAnIG5hbWU9Im0iJy4oKCR0aGlzLT5zZWxidG4pID8gJycgOiAnIG9u Y2hhbmdlPSJzdWJtaXQoKSInKSwgJycpDQoJICAgCQkJCS4gKCgkdGhpcy0+dXNlU2VsZWN0 b3IoJ3llYXInKSkgPyAnJyA6IGhJbnB1dCgneScsICRjdXJyeXIpKTsNCgkJCQkkb3B0aW9u dGFncyA9IGFycmF5KCk7IC8vIEJsYW5rIG91dA0KCQkJfSBlbHNlIHsNCgkJCQkkc2VsZWN0 b3JbXSA9IGRvVGFnKCR0aGlzLT5nZXRNb250aE5hbWUoKSwgJ3NwYW4nLCAoKCR0aGlzLT5t eXdyYXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcykpOw0KCQkJfQ0KCQl9DQoNCgkJLy8g WWVhciBzZWxlY3QgbGlzdA0KCQkkeTAgPSAkdGhpcy0+ZXlyOw0KCQkkeTEgPSAkdGhpcy0+ bHlyOw0KCQlpZiAoJHRoaXMtPnVzZVNlbGVjdG9yKCd5ZWFyJykgJiYgKCR5MCAhPSAkeTEp ICYmICEkc3RhdGljKSB7DQoJCQlmb3IgKCAkaWR4ID0gJHkwOyAkaWR4IDw9ICR5MTsgJGlk eCsrICkgew0KCQkJCSR0YWdhdHRzID0gJyB2YWx1ZT0iJy4kaWR4LiciJzsNCgkJCQlpZiAo ICRpZHggPT0gJGN1cnJ5ciApICR0YWdhdHRzIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7 DQoJCQkJJG9wdGlvbnRhZ3NbXSA9IGRvVGFnKCR0aGlzLT5zZWxwZnhbJ3llYXInXS4kaWR4 LiR0aGlzLT5zZWxzZnhbJ3llYXInXSwgJ29wdGlvbicsICcnLCAkdGFnYXR0cyk7DQoJCQl9 DQoJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKGpvaW4obiwgJG9wdGlvbnRhZ3MpLCAnc2VsZWN0 JywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMtPm15Y2xhc3MpLCAnIG5hbWU9 InkiJy4oKCR0aGlzLT5zZWxidG4pID8gJycgOiAnIG9uY2hhbmdlPSJzdWJtaXQoKSInKSwg JycpDQoJCQkJCS4gKCgkdGhpcy0+dXNlU2VsZWN0b3IoJ21vbnRoJykpID8gJycgOiBoSW5w dXQoJ20nLCAkY3Vycm1vKSk7DQoJCX0gZWxzZSB7DQoJCQkkc2VsZWN0b3JbXSA9IGRvVGFn KCRjdXJyeXIsICdzcGFuJywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMtPm15 Y2xhc3MpKTsNCgkJfQ0KDQoJCSRleHRyYXMgPSAnJzsNCgkJaWYgKCEkc3RhdGljICYmICgg JHRoaXMtPnVzZVNlbGVjdG9yKCdtb250aCcpIHx8ICR0aGlzLT51c2VTZWxlY3RvcigneWVh cicpICkpIHsNCgkJCWlmICgkdGhpcy0+c2VsYnRuKSB7DQoJCQkJJGV4dHJhcyAuPSBkb1Rh ZygnJywgJ2lucHV0JywgJ3NtZF9jYWxfaW5wdXQnLCAnIHR5cGU9InN1Ym1pdCIgdmFsdWU9 IicuJHRoaXMtPnNlbGJ0bi4nIicpOw0KCQkJfQ0KCQkJJGV4dHJhcyAuPSBqb2luKCcnLCAk ZmlsdGVySGlkKTsNCgkJfQ0KDQoJCSR1cmxwID0gcGFyc2VfdXJsKCRwcmV0ZXh0WydyZXF1 ZXN0X3VyaSddKTsNCgkJJHNlbGVjdG9yID0gJzxmb3JtIGFjdGlvbj0iJy4kdXJscFsncGF0 aCddLiciIG1ldGhvZD0iZ2V0IicuKCgkbmF2aWQpID8gJyBpZD0iJy4kbmF2aWQuJyInIDog JycpLic+Jy5kb1RhZyhqb2luKHNwLCAkc2VsZWN0b3IpLiRleHRyYXMsICR0aGlzLT5teXdy YXB0YWcsICR0aGlzLT5teWNsYXNzKS4nPC9mb3JtPic7DQoNCgkJJG5hdl9iYWNrX2xpbmsg PSAkdGhpcy0+bmF2aWdhdGlvbigkY3VycnlyLCAkY3Vycm1vLCAnLScsICRmaWx0ZXJVUkws ICRzZWMpOw0KCQkkbmF2X2Z3ZF9saW5rICA9ICR0aGlzLT5uYXZpZ2F0aW9uKCRjdXJyeXIs ICRjdXJybW8sICcrJywgJGZpbHRlclVSTCwgJHNlYyk7DQoNCgkJJG5hdl9iYWNrID0gKCEk c3RhdGljICYmICRuYXZfYmFja19saW5rKSA/ICc8YSBocmVmPSInLiRuYXZfYmFja19saW5r LiciJy4kbmF2cGNsYXNzLic+Jy4kbmF2cGFycm93Lic8L2E+JyA6ICcmbmJzcDsnOw0KCQkk bmF2X2Z3ZCAgPSAoISRzdGF0aWMgJiYgJGZ1dHVyZSAmJiAkbmF2X2Z3ZF9saW5rKSA/ICc8 YSBocmVmPSInLiRuYXZfZndkX2xpbmsuJyInLiRuYXZuY2xhc3MuJz4nLiRuYXZuYXJyb3cu JzwvYT4nIDogJyZuYnNwOyc7DQoNCgkJJGNbXSA9IGRvVGFnKCRuYXZfYmFjaywndGgnKTsN CgkJJGNbXSA9ICc8dGggY29sc3Bhbj0iJy4oKCR0aGlzLT5zaG93SVNPV2VlaykgPyA2IDog NSkuJyI+Jy4kc2VsZWN0b3IuJzwvdGg+JzsNCgkJJGNbXSA9IGRvVGFnKCRuYXZfZndkLCd0 aCcpOw0KDQoJCXJldHVybiBkb1RhZyhqb2luKCcnLCRjKSwndHInLCAnc21kX2NhbF9uYXZy b3cnKTsNCgl9DQoNCglmdW5jdGlvbiBuYXZpZ2F0aW9uKCR5ZWFyLCRtb250aCwkZGlyZWN0 aW9uLCRmbHQsJHNlYz0nJykgew0KCQlnbG9iYWwgJHBlcm1saW5rX21vZGU7DQoNCgkJaWYo JGRpcmVjdGlvbiA9PSAnLScpIHsNCgkJCWlmKCRtb250aCAtIDEgPCAxKSB7DQoJCQkJJG1v bnRoID0gMTI7DQoJCQkJJHllYXIgLT0gMTsNCgkJCX0gZWxzZSB7DQoJCQkJJG1vbnRoIC09 IDE7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQlpZigkbW9udGggKyAxID4gMTIpIHsNCgkJCQkk bW9udGggPSAxOw0KCQkJCSR5ZWFyICs9IDE7DQoJCQl9IGVsc2Ugew0KCQkJCSRtb250aCAr PSAxOw0KCQkJfQ0KCQl9DQoNCgkJLy8gQWJvcnQgaWYgd2UncmUgYWJvdXQgdG8gZ28gb3V0 IG9mIHJhbmdlDQoJCWlmICgkeWVhciA8ICR0aGlzLT5leXIgfHwgJHllYXIgPiAkdGhpcy0+ bHlyKSB7DQoJCQlyZXR1cm4gJyc7DQoJCX0NCgkJJGZsdCA9ICgkZmx0KSA/IGEuJGZsdCA6 ICcnOw0KCQlpZigkcGVybWxpbmtfbW9kZSAhPSAnbWVzc3knKSB7DQoJCQkkdXJsID0gJyc7 DQoJCQlpZiAoJHNlYyAmJiBzdHJwb3MoJHBlcm1saW5rX21vZGUsICdzZWN0aW9uJyAhPT0g ZmFsc2UpKSB7DQoJCQkJJHVybCA9IGh1LiRzZWMuJy8nLigoJHBlcm1saW5rX21vZGU9PSdz ZWN0aW9uX2lkX3RpdGxlJykgPyAkc21kX2NhbGluZm9bJ2FydGlkJ10gOiAnJykuJHNtZF9j YWxpbmZvWydhcnRpdGxlJ107DQoJCQl9DQoJCQlyZXR1cm4gJHVybC4iP209JG1vbnRoIi5h LiJ5PSR5ZWFyIi4kZmx0Ow0KCQl9IGVsc2UgeyAvLyBmb3IgbWVzc3kgVVJMcyB3ZSBuZWVk IHRvIGJ1aWxkIHRoZSBlbnRpcmUgcmVxdWVzdCBzdHJpbmcgZmlyc3QsIHRoZW4gdGFjayBv biB0aGUgcmVzdA0KCQkJJG91dCA9IG1ha2VPdXQoJ2lkJywncycsJ2MnLCdxJywncGcnLCdw JywnbW9udGgnKTsNCgkJCSRvdXRbJ3MnXSA9ICgkc2VjKSA/ICRzZWMgOiAkb3V0WydzJ107 DQoJCQkkciA9ICc/JzsNCgkJCWZvcmVhY2goJG91dCBhcyAka2V5ID0+ICR2YWwgKSB7DQoJ CQkJJHIgLj0gKCR2YWwpID8gIiRrZXk9JHZhbCIuYSA6ICcnOw0KCQkJfQ0KCQkJcmV0dXJu ICRyLiJtPSRtb250aCIuYS4ieT0keWVhciIuJGZsdDsNCgkJfQ0KCX0NCn0NCg0KY2xhc3Mg U01EX1NtYWxsX0NhbGVuZGFyIGV4dGVuZHMgU01EX0NhbGVuZGFyIHsNCgl2YXIgJHNlY3Rp b24gPSAnJzsNCgl2YXIgJGNhdGVnb3J5ID0gJyc7DQoJZnVuY3Rpb24gU01EX1NtYWxsX0Nh bGVuZGFyKCR5ZWFyLCRtb250aCwkZXZlbnRzLCRzZWN0aW9uLCRjYXRlZ29yeSkgew0KCQkk dGhpcy0+c2VjdGlvbiA9ICRzZWN0aW9uOw0KCQkkdGhpcy0+Y2F0ZWdvcnkgPSAkY2F0ZWdv cnk7DQoJCSR0aGlzLT5TTURfQ2FsZW5kYXIoJHllYXIsJG1vbnRoLCRldmVudHMpOw0KCX0N Cg0KCWZ1bmN0aW9uIGRzcERheUNlbGwoJHRoZWRheSkgew0KCQlnbG9iYWwgJHBlcm1saW5r X21vZGU7DQoNCgkJJGhhc2FydGljbGUgPSBpc3NldCgkdGhpcy0+ZXZlbnRzWyR0aGVkYXld KTsNCgkJJGNsYXNzW10gPSAkdGhpcy0+Y2VsbGNsYXNzLicgJyAuICgoJGhhc2FydGljbGUp ID8gJHRoaXMtPmNsYXNzcHJlZml4LidldmVudCcgOiAnJyk7DQoJCWlmICgoaW5fYXJyYXko IGRhdGUoJ2QtTS1ZJywgZ21ta3RpbWUoIDAsIDAsIDAsICR0aGlzLT5tb250aCwgJHRoZWRh eSwgJHRoaXMtPnllYXIpICksICR0aGlzLT5ob2xpZGF5cykpICkgew0KCQkJJGNsYXNzW10g PSAkdGhpcy0+Y2xhc3NwcmVmaXguJ2hvbHMnOw0KCQl9DQoJCWlmKCR0aGlzLT55ZWFyID09 IGRhdGUoJ1knLHRpbWUoKSt0el9vZmZzZXQoKSApIGFuZCAkdGhpcy0+bW9udGggPT0gZGF0 ZSgnbicsdGltZSgpK3R6X29mZnNldCgpICkgYW5kICR0aGVkYXkgPT0gZGF0ZSgnaicsdGlt ZSgpK3R6X29mZnNldCgpKSApIHsNCgkJCSRjbGFzc1tdID0gJHRoaXMtPmNsYXNzcHJlZml4 Lid0b2RheSc7DQoJCX0NCg0KCQlpZiggaXNzZXQoJHRoaXMtPmV2ZW50c1skdGhlZGF5XSkg KSB7DQoJCQkkZGF5c19ldmVudHMgPSAkdGhpcy0+ZXZlbnRzWyR0aGVkYXldOw0KCQkJZm9y ZWFjaCgkZGF5c19ldmVudHMgYXMgJGV2KSB7DQoJCQkJJGV2Y2xhc3MgPSB0cmltKCRldlsn Y2xhc3NlcyddKTsNCgkJCQlmb3JlYWNoIChleHBsb2RlKCcgJywgJGV2Y2xhc3MpIGFzICRl dmMpIHsNCgkJCQkJJGNsYXNzW109ICRldmM7DQoJCQkJfQ0KDQoJCQkJJG91dFtdID0gKCR0 aGlzLT5ldndyYXB0YWcpID8gdGFnKCRldlsnZXYnXSwgJHRoaXMtPmV2d3JhcHRhZywgKCgk ZXZjbGFzcykgPyAnIGNsYXNzPSInLnRyaW0oJGV2Y2xhc3MpLiciJyA6ICcnKSkgOiAkZXZb J2V2J107DQoJCQl9DQoJCQkkdXNlX3Bvc3RlZCA9IGZhbHNlOw0KCQkJZm9yZWFjaCAoJHRo aXMtPmxpbmtwb3N0ZWQgYXMgJGRsaW5rcykgew0KCQkJCWlmIChpbl9hcnJheSgkZGxpbmtz LCAkY2xhc3MpKSB7DQoJCQkJCSR1c2VfcG9zdGVkID0gdHJ1ZTsNCgkJCQkJYnJlYWs7DQoJ CQkJfQ0KCQkJfQ0KCQkJaWYoICRwZXJtbGlua19tb2RlICE9ICd5ZWFyX21vbnRoX2RheV90 aXRsZScgKSB7DQoJCQkJJGxpbmtkYXRlID0gKCR1c2VfcG9zdGVkKSA/ICRldlsncG9zdGVk J10gOiAkdGhpcy0+eWVhci4nLScuJHRoaXMtPmRvdWJsZWRpZ2l0KCR0aGlzLT5tb250aCku Jy0nLiR0aGlzLT5kb3VibGVkaWdpdCgkdGhlZGF5KTsNCgkJCQkkaHJlZiA9ICcgaHJlZj0i Jy5odS4nP2RhdGU9Jy4kbGlua2RhdGU7DQoJCQkJaWYoJHRoaXMtPnNlY3Rpb24pIHsgJGhy ZWYgPSAkaHJlZi5hLidzPScuJHRoaXMtPnNlY3Rpb247IH0NCgkJCQlpZigkdGhpcy0+Y2F0 ZWdvcnkpIHsgJGhyZWYgPSAkaHJlZi5hLidjPScuJHRoaXMtPmNhdGVnb3J5OyB9DQoJCQkJ JGhyZWYgLj0gJyInOw0KCQkJfSBlbHNlIHsNCgkJCQkkc2VjdGlvbiA9ICgkdGhpcy0+c2Vj dGlvbikgPyAkdGhpcy0+c2VjdGlvbi4nLycgOiAnJzsNCgkJCQkkbGlua2RhdGUgPSAoJHVz ZV9wb3N0ZWQpID8gcHJlZ19yZXBsYWNlKCItIiwgIi8iLCAkZXZbJ3Bvc3RlZCddKSA6ICR0 aGlzLT55ZWFyLicvJy4kdGhpcy0+ZG91YmxlZGlnaXQoJHRoaXMtPm1vbnRoKS4nLycuJHRo aXMtPmRvdWJsZWRpZ2l0KCR0aGVkYXkpOw0KCQkJCSRocmVmID0gJyBocmVmPSInLmh1LiRz ZWN0aW9uLiRsaW5rZGF0ZS4nIic7DQoJCQl9DQoNCgkJCSRjW10gPSBkb1RhZygkdGhlZGF5 LmpvaW4oJycsJG91dCksJ2EnLCcnLCRocmVmKTsNCgkJfSBlbHNlIHsNCgkJCSRjW10gPSAk dGhlZGF5Ow0KCQl9DQoNCgkJcmV0dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0ZCcsam9pbign ICcsJGNsYXNzKSk7DQoJfQ0KDQoJZnVuY3Rpb24gZG91YmxlZGlnaXQoJG4pIHsNCgkJaWYo JG4gPCAxMCkgeyAkbiA9ICcwJy4oaW50KSRuOyB9DQoJCXJldHVybiAkbjsNCgl9DQoNCn0N Cg0KLyoqDQoqIEJhc2ljIENhbGVuZGFyIGRhdGEgYW5kIGRpc3BsYXkNCiogaHR0cDovL3d3 dy5vc2Nhcm0ub3JnL3N0YXRpYy9wZy9jYWxlbmRhckNsYXNzLw0KKiBAYXV0aG9yIE9zY2Fy IE1lcmlkYQ0KKiBAY3JlYXRlZCBKYW4gMTggMjAwNA0KKiBAcGFja2FnZSAgZ29Db3JlTGli DQoqLw0KY2xhc3MgU01EX1Jhd19DYWxlbmRhciB7DQp2YXIgJGdtdCA9IDE7DQp2YXIgJGxh bmc7DQp2YXIgJHllYXI7DQp2YXIgJGV5cjsNCnZhciAkbHlyOw0KdmFyICRtb250aDsNCnZh ciAkd2VlazsNCnZhciAkZGF5TmFtZUZtdDsNCnZhciAkbXRoTmFtZUZtdDsNCnZhciAkZGF5 TmFtZXM7DQp2YXIgJG10aE5hbWVzOw0KdmFyICRzdGFydERheTsNCnZhciAkc2VsZWN0b3Jz Ow0KdmFyICRzZWxidG47DQp2YXIgJHNlbHBmeDsNCnZhciAkc2Vsc2Z4Ow0KdmFyICRzaG93 SVNPV2VlazsNCnZhciAkSVNPV2Vla0hlYWQ7DQp2YXIgJElTT1dlZWtDZWxsOw0KdmFyICRl bmREYXk7DQp2YXIgJGZpcnN0RGF5T2ZXZWVrID0gMDsNCnZhciAkc3RhcnRPZmZzZXQgPSAw Ow0KdmFyICRjbGFzc2xldmVsczsNCnZhciAkY2xhc3NwcmVmaXg7DQp2YXIgJGV2Y2xhc3Nw cmVmaXg7DQp2YXIgJGV2d3JhcHRhZzsNCnZhciAkbXl3cmFwdGFnOw0KdmFyICRyb3djbGFz czsNCnZhciAkY2VsbGNsYXNzOw0KdmFyICRlbXB0eWNsYXNzOw0KdmFyICRpc29jbGFzczsN CnZhciAkbmF2cGNsYXNzOw0KdmFyICRuYXZuY2xhc3M7DQp2YXIgJG5hdnBhcnJvdzsNCnZh ciAkbmF2bmFycm93Ow0KdmFyICRuYXZpZDsNCnZhciAkbXljbGFzczsNCnZhciAkZm9wdHM7 DQp2YXIgJGhvbGlkYXlzOw0KdmFyICRsaW5rcG9zdGVkOw0KdmFyICRjZWxsZm9ybTsNCnZh ciAkdGFibGVJRDsNCnZhciAkbWFpbnRhaW47DQovKioNCiogQ29uc3RydWN0b3INCioNCiog QHBhcmFtIGludGVnZXIsIHllYXINCiogQHBhcmFtIGludGVnZXIsIG1vbnRoDQoqIEByZXR1 cm4gb2JqZWN0DQoqIEBwdWJsaWMNCiovDQpmdW5jdGlvbiBTTURfUmF3X0NhbGVuZGFyICgg JHlyLCAkbW8gKSB7DQoJJHRoaXMtPnNldFllYXIoJHlyKTsNCgkkdGhpcy0+c2V0TW9udGgo JG1vKTsNCgkkdGhpcy0+c2V0Q2xhc3NQcmVmaXgoJ3NtZF9jYWxfJyk7DQoNCgkkdGhpcy0+ c3RhcnRUaW1lID0gc3RydG90aW1lKCAiJHlyLSRtby0wMSAwMDowMCIgKTsNCgkkdGhpcy0+ c3RhcnREYXkJPSBkYXRlKCAnRCcsICR0aGlzLT5zdGFydFRpbWUgKTsNCgkkdGhpcy0+ZW5k RGF5ID0gZGF0ZSggJ3QnLCAkdGhpcy0+c3RhcnRUaW1lICk7DQoJJHRoaXMtPmVuZFRpbWUg ICA9IHN0cnRvdGltZSggIiR5ci0kbW8tIi4kdGhpcy0+ZW5kRGF5LiIgMjM6NTkiICk7DQoN CgkkdGhpcy0+c2V0TmFtZUZvcm1hdCgnJWEnLCAnZCcpOw0KCSR0aGlzLT5zZXROYW1lRm9y bWF0KCclQicsICdtJyk7DQoJJHRoaXMtPnNldEZpcnN0RGF5T2ZXZWVrKDApOw0KCSR0aGlz LT5zZXRTaG93SVNPV2VlaygnJyk7DQoJJHRoaXMtPnNldFRhYmxlSUQoJycpOw0KCSR0aGlz LT5zZXRUYWJsZUNsYXNzKCcnKTsNCn0NCi8vID09PT0gZW5kIENhbGVuZGFyID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLy8gR2V0dGVycw0K ZnVuY3Rpb24gdXNlU2VsZWN0b3IoJHZhbCkgeyByZXR1cm4gaW5fYXJyYXkoJHZhbCwgJHRo aXMtPnNlbGVjdG9ycyk7IH0NCmZ1bmN0aW9uIGdldERheU5hbWUoJGRheSkgeyByZXR1cm4g KCR0aGlzLT5kYXlOYW1lc1skZGF5JTddKTsgfQ0KZnVuY3Rpb24gZ2V0TW9udGhOYW1lKCkg ew0KCWlmIChpc19hcnJheSgkdGhpcy0+bXRoTmFtZUZtdCkpIHsNCgkJcmV0dXJuICR0aGlz LT5tdGhOYW1lc1tkYXRlKCduJywkdGhpcy0+c3RhcnRUaW1lKV07DQoJfSBlbHNlIHsNCgkJ cmV0dXJuIHN0cmZ0aW1lKCR0aGlzLT5tdGhOYW1lRm10LCAkdGhpcy0+c3RhcnRUaW1lKTsN Cgl9DQp9DQpmdW5jdGlvbiBnZXROYXZJbmZvKCR0eXBlKSB7DQoJJHIgPSAnJzsNCglzd2l0 Y2ggKCR0eXBlKSB7DQoJCWNhc2UgImlkIjogJHIgPSAkdGhpcy0+bmF2aWQ7IGJyZWFrOw0K CQljYXNlICJwYyI6ICRyID0gJHRoaXMtPm5hdnBjbGFzczsgYnJlYWs7DQoJCWNhc2UgIm5j IjogJHIgPSAkdGhpcy0+bmF2bmNsYXNzOyBicmVhazsNCgkJY2FzZSAicGEiOiAkciA9ICR0 aGlzLT5uYXZwYXJyb3c7IGJyZWFrOw0KCQljYXNlICJuYSI6ICRyID0gJHRoaXMtPm5hdm5h cnJvdzsgYnJlYWs7DQoJfQ0KCXJldHVybiAkcjsNCn0NCi8vIFNldHRlcnMNCmZ1bmN0aW9u IHNldEdNVCgkYil7ICR0aGlzLT5nbXQgPSAkYjsgfQ0KZnVuY3Rpb24gc2V0TGFuZygkY29k ZSl7ICR0aGlzLT5sYW5nID0gJGNvZGU7IH0NCmZ1bmN0aW9uIHNldENlbGxGb3JtKCRmcm0p eyAkdGhpcy0+Y2VsbGZvcm0gPSAkZnJtOyB9DQpmdW5jdGlvbiBzZXRUYWJsZUlEKCRpZCl7 ICR0aGlzLT50YWJsZUlEID0gJGlkOyB9DQpmdW5jdGlvbiBzZXRZZWFyKCR5cil7ICR0aGlz LT55ZWFyID0gJHlyOyB9DQpmdW5jdGlvbiBzZXRFWWVhcigkeXIpeyAkdGhpcy0+ZXlyID0g JHlyOyB9DQpmdW5jdGlvbiBzZXRMWWVhcigkeXIpeyAkdGhpcy0+bHlyID0gJHlyOyB9DQpm dW5jdGlvbiBzZXRNb250aCgkbXRoKXsgJHRoaXMtPm1vbnRoID0gKGludCkkbXRoOyB9DQpm dW5jdGlvbiBzZXRXZWVrKCR3ayl7DQoJaWYgKCR3aykgew0KCQkkd2sgPSBzdHJfcGFkKCR3 aywgMiwgJzAnLCBTVFJfUEFEX0xFRlQpOw0KCQkkdGhpcy0+d2VlayA9ICR3azsNCgkJJHRo aXMtPm1vbnRoID0gc2FmZV9zdHJmdGltZSgiJW0iLCBzdHJ0b3RpbWUoJHRoaXMtPnllYXIu IlciLiR3aykpOw0KCX0NCn0NCmZ1bmN0aW9uIHNldE5hdktlZXAoJGFyKXsgJHRoaXMtPm1h aW50YWluID0gJGFyOyB9DQpmdW5jdGlvbiBzZXRTaG93SVNPV2VlaygkdmFsKSB7DQoJJHRo aXMtPnNob3dJU09XZWVrID0gKCR2YWwpID8gdHJ1ZSA6IGZhbHNlOw0KCWlmICgkdmFsKSB7 DQoJCSR2YWwgPSBkb19saXN0KCR2YWwpOw0KCQkkdGhpcy0+SVNPV2Vla0hlYWQgPSAkdmFs WzBdOw0KCQkkdGhpcy0+SVNPV2Vla0NlbGwgPSAoaXNzZXQoJHZhbFsxXSkpID8gJHZhbFsx XSA6ICd7d2Vla30nOw0KCX0NCn0NCmZ1bmN0aW9uIHNldENsYXNzTGV2ZWxzKCRjbHMpeyAk dGhpcy0+Y2xhc3NsZXZlbHMgPSAkY2xzOyB9DQpmdW5jdGlvbiBzZXRDbGFzc1ByZWZpeCgk Y2xzKXsgJHRoaXMtPmNsYXNzcHJlZml4ID0gJGNsczsgfQ0KZnVuY3Rpb24gc2V0RXZlbnRQ cmVmaXgoJGNscyl7ICR0aGlzLT5ldmNsYXNzcHJlZml4ID0gJGNsczsgfQ0KZnVuY3Rpb24g c2V0RXZlbnRXcmFwdGFnKCR3cmFwKXsgJHRoaXMtPmV2d3JhcHRhZyA9ICR3cmFwOyB9DQpm dW5jdGlvbiBzZXRNWVdyYXB0YWcoJHdyYXApeyAkdGhpcy0+bXl3cmFwdGFnID0gJHdyYXA7 IH0NCmZ1bmN0aW9uIHNldFRhYmxlQ2xhc3MoJGNscykgeyAkdGhpcy0+dGFibGVjbGFzcyA9 ICgkY2xzKSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kY2xzIDogJyc7IH0NCmZ1bmN0aW9uIHNl dFJvd0NsYXNzKCRjbHMpeyAkdGhpcy0+cm93Y2xhc3MgPSAoJGNscykgPyAkdGhpcy0+Y2xh c3NwcmVmaXguJGNscyA6ICcnOyB9DQpmdW5jdGlvbiBzZXRDZWxsQ2xhc3MoJGNscyl7ICR0 aGlzLT5jZWxsY2xhc3MgPSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNscyA6ICcn OyB9DQpmdW5jdGlvbiBzZXRFbXB0eUNsYXNzKCRjbHMpeyAkdGhpcy0+ZW1wdHljbGFzcyA9 ICgkY2xzKSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kY2xzIDogJyc7IH0NCmZ1bmN0aW9uIHNl dElTT1dlZWtDbGFzcygkY2xzKXsgJHRoaXMtPmlzb2NsYXNzID0gKCRjbHMpID8gJHRoaXMt PmNsYXNzcHJlZml4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0TmF2SW5mbygkY2xzcCwg JGNsc24sICRhcnJwLCAkYXJybiwgJG5pZCl7DQoJJHRoaXMtPm5hdnBjbGFzcyA9ICgkY2xz cCkgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNsc3AgOiAnJzsNCgkkdGhpcy0+bmF2bmNsYXNz ID0gKCRjbHNuKSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kY2xzbiA6ICcnOw0KCSR0aGlzLT5u YXZwYXJyb3cgPSAoJGFycnApID8gJGFycnAgOiAnJzsNCgkkdGhpcy0+bmF2bmFycm93ID0g KCRhcnJuKSA/ICRhcnJuIDogJyc7DQoJJHRoaXMtPm5hdmlkID0gKCRuaWQpID8gJHRoaXMt PmNsYXNzcHJlZml4LiRuaWQgOiAnJzsNCn0NCmZ1bmN0aW9uIHNldE1ZQ2xhc3MoJGNscyl7 ICR0aGlzLT5teWNsYXNzID0gKCRjbHMpID8gJHRoaXMtPmNsYXNzcHJlZml4LiRjbHMgOiAn JzsgfQ0KZnVuY3Rpb24gc2V0RmlsdGVyT3B0cygkZikgeyAkdGhpcy0+Zm9wdHMgPSAkZjsg fQ0KZnVuY3Rpb24gc2V0TGlua1Bvc3RlZCgkZGwpIHsNCglmb3JlYWNoICgkZGwgYXMgJGR2 YWwpIHsNCgkJJHRoaXMtPmxpbmtwb3N0ZWRbXSA9ICR0aGlzLT5jbGFzc3ByZWZpeC4kZHZh bDsNCgl9DQp9DQpmdW5jdGlvbiBzZXRIb2xpZGF5cygkaG9scykgeyAkdGhpcy0+aG9saWRh eXMgPSAkaG9sczsgfQ0KZnVuY3Rpb24gc2V0U2VsZWN0b3JzKCRzZWwsICRidG4pIHsNCglm b3JlYWNoICgkc2VsIGFzICRpZHggPT4gJGl0ZW0pIHsNCgkJJHNlbHBhcnRzID0gZXhwbG9k ZSgiOiIsICRpdGVtKTsNCgkJJHNlbFskaWR4XSA9ICRzZWxwYXJ0c1swXTsNCgkJJHRoaXMt PnNlbHBmeFskc2VscGFydHNbMF1dID0gKGlzc2V0KCRzZWxwYXJ0c1sxXSkpID8gJHNlbHBh cnRzWzFdIDogJyc7DQoJCSR0aGlzLT5zZWxzZnhbJHNlbHBhcnRzWzBdXSA9IChpc3NldCgk c2VscGFydHNbMl0pKSA/ICRzZWxwYXJ0c1syXSA6ICcnOw0KCX0NCgkkdGhpcy0+c2VsZWN0 b3JzID0gJHNlbDsNCgkkdGhpcy0+c2VsYnRuID0gJGJ0bjsNCn0NCmZ1bmN0aW9uIHNldEZp cnN0RGF5T2ZXZWVrKCRkKSB7DQoJJHRoaXMtPmZpcnN0RGF5T2ZXZWVrID0gKChpbnQpJGQg PD0gNiBhbmQgKGludCkkZCA+PSAwKSA/IChpbnQpJGQgOiAwOw0KDQoJJHRoaXMtPnN0YXJ0 T2Zmc2V0ID0gZGF0ZSggJ3cnLCAkdGhpcy0+c3RhcnRUaW1lICktJHRoaXMtPmZpcnN0RGF5 T2ZXZWVrOw0KCWlmICggJHRoaXMtPnN0YXJ0T2Zmc2V0IDwgMCApIHsNCgkJJHRoaXMtPnN0 YXJ0T2Zmc2V0ID0gNyAtIGFicygkdGhpcy0+c3RhcnRPZmZzZXQpOw0KCX0NCn0NCi8qKg0K KiBmcm06IGFueSB2YWxpZCBQSFAgc3RyZnRpbWUoKSBzdHJpbmcgb3IgQUJCUi9GVUxMDQoq IHR5cDogZCB0byBzZXQgZGF5LCBtIHRvIHNldCBtb250aCBmb3JtYXQNCiovDQpmdW5jdGlv biBzZXROYW1lRm9ybWF0KCRmcm0sICR0eXA9ImQiKSB7DQoJc3dpdGNoICgkZnJtKSB7DQoJ CWNhc2UgImZ1bGwiOg0KCQljYXNlICJGVUxMIjoNCgkJCSRmbXQgPSAoJHR5cCA9PSAnZCcp ID8gIiVBIiA6ICIlQiI7DQoJCQlicmVhazsNCgkJY2FzZSAiYWJiciI6DQoJCWNhc2UgIkFC QlIiOg0KCQkJJGZtdCA9ICgkdHlwID09ICdkJykgPyAiJWEiIDogIiViIjsNCgkJCWJyZWFr Ow0KCQlkZWZhdWx0Og0KCQkJaWYgKHN0cnBvcygkZnJtLCAnJScpID09PSAwKSB7DQoJCQkJ JGZtdCA9ICRmcm07DQoJCQl9IGVsc2Ugew0KCQkJCSRmcm0gPSB0cmltKCRmcm0sICd7fScp Ow0KCQkJCSRmcm0gPSBkb19saXN0KCRmcm0pOw0KCQkJCSRmbXQgPSAkZnJtOw0KCQkJfQ0K CQkJYnJlYWs7DQoJfQ0KDQoJaWYgKCR0eXAgPT0gImQiKSB7DQoJCSR0aGlzLT5kYXlOYW1l Rm10ID0gJGZtdDsNCgkJJHRoaXMtPmRheU5hbWVzID0gYXJyYXkoKTsNCg0KCQkvLyBUaGlz IGlzIGRvbmUgdG8gbWFrZSBzdXJlIFN1bmRheSBpcyBhbHdheXMgdGhlIGZpcnN0IGRheSBv ZiBvdXIgYXJyYXkNCgkJLy8gVW5peCB0aW1lIGdldHMgYSBsaXR0bGUgZnVua3kgYXQgdGhl IGJlZ2lubmluZyBkZXBlbmRpbmcgdXBvbiB0aGUgdGltZXpvbmUuDQoJCSRzZXJ2ZXJvZmZz ZXQgPSBnbW1rdGltZSgwLDAsMCkgLSBta3RpbWUoMCwwLDApOw0KCQkkc3RhcnQgPSAoJHNl cnZlcm9mZnNldCA8IDApID8gNCA6IDM7DQoJCSRlbmQgPSAkc3RhcnQgKyA3Ow0KCQlmb3Io JGk9JHN0YXJ0OyAkaTwkZW5kOyAkaSsrKSB7DQoJCQlpZiAoaXNfYXJyYXkoJGZtdCkpIHsN CgkJCQkkdGhpcy0+ZGF5TmFtZXNbXSA9ICRmbXRbJGktJHN0YXJ0XTsNCgkJCX0gZWxzZSB7 DQoJCQkJJHRoaXMtPmRheU5hbWVzW10gPSB1Y2ZpcnN0KHNhZmVfc3RyZnRpbWUoJGZtdCwg ODY0MDAqJGkgLSB0el9vZmZzZXQoKSwgJHRoaXMtPmdtdCwgJHRoaXMtPmxhbmcgKSk7DQoJ CQl9DQoJCX0NCgl9IGVsc2Ugew0KCQkkdGhpcy0+bXRoTmFtZUZtdCA9ICRmbXQ7DQoJCSR0 aGlzLT5tdGhOYW1lcyA9IGFycmF5KCk7DQoJCWZvciAoJGk9MDsgJGk8MTI7ICRpKyspIHsN CgkJCWlmIChpc19hcnJheSgkZm10KSkgew0KCQkJCSR0aGlzLT5tdGhOYW1lc1skaSsxXSA9 ICRmbXRbJGldOw0KCQkJfSBlbHNlIHsNCgkJCQkkdGhpcy0+bXRoTmFtZXNbJGkrMV0gPSB1 Y2ZpcnN0KHNhZmVfc3RyZnRpbWUoJGZtdCwgODY0MDAqJGkgLSB0el9vZmZzZXQoKSwgJHRo aXMtPmdtdCwgJHRoaXMtPmxhbmcgKSk7DQoJCQl9DQoJCX0NCgl9DQp9DQovKioNCiogUmV0 dXJucyBtYXJrdXAgZm9yIGRpc3BsYXlpbmcgdGhlIGNhbGVuZGFyLg0KKiBAcmV0dXJuDQoq IEBwdWJsaWMNCiovDQpmdW5jdGlvbiBkaXNwbGF5ICggKSB7DQoJJGlkID0gKCR0aGlzLT50 YWJsZUlEKSA/ICcgaWQ9IicuJHRoaXMtPnRhYmxlSUQuJyInIDogJyc7DQoJJGNbXSA9ICc8 dGFibGUnLiRpZC4nPic7DQoJJGNbXSA9ICR0aGlzLT5kc3BEYXlOYW1lcygpOw0KCSRjW10g PSAkdGhpcy0+ZHNwRGF5Q2VsbHMoKTsNCgkkY1tdID0gJzwvdGFibGU+JzsNCg0KCXJldHVy biBqb2luKCcnLCRjKTsNCn0NCi8vID09PT0gZW5kIGRpc3BsYXkgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQovKioNCiogRGlzcGxheXMgdGhl IHJvdyBvZiBkYXkgbmFtZXMuDQoqIEByZXR1cm4gc3RyaW5nDQoqIEBwcml2YXRlDQoqLw0K ZnVuY3Rpb24gZHNwRGF5TmFtZXMgKCApIHsNCgkkY1tdID0gJzx0ciBjbGFzcz0ic21kX2Nh bF9kYXluYW1lcyI+JzsNCg0KCSRpID0gJHRoaXMtPmZpcnN0RGF5T2ZXZWVrOw0KCSRqID0g MDsgLy8gY291bnQgbnVtYmVyIG9mIGRheXMgZGlzcGxheWVkDQoJJGVuZCA9IGZhbHNlOw0K DQoJaWYgKCR0aGlzLT5zaG93SVNPV2Vlaykgew0KCQkkY1tdID0gIjx0aD4iLiR0aGlzLT5J U09XZWVrSGVhZC4iPC90aD4iOw0KCX0NCglmb3IoJGogPSAwOyAkajw9NjsgJGorKywgJGkr Kykgew0KCQlpZigkaSA9PSA3KSB7ICRpID0gMDsgfQ0KCQkkY1tdID0gJzx0aD4nLiR0aGlz LT5nZXREYXlOYW1lKCRpKS4iPC90aD4iOw0KCX0NCg0KCSRjW10gPSAnPC90cj4nOw0KCXJl dHVybiBqb2luKCcnLCRjKTsNCn0NCi8vID09PT0gZW5kIGRzcERheU5hbWVzID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLyoqDQoqIERpc3Bs YXlzIGFsbCBkYXkgY2VsbHMgZm9yIHRoZSBtb250aA0KKg0KKiBAcmV0dXJuIHN0cmluZw0K KiBAcHJpdmF0ZQ0KKi8NCmZ1bmN0aW9uIGRzcERheUNlbGxzICggKSB7DQoJJGkgPSAwOyAv LyBjZWxsIGNvdW50ZXINCgkkZW1wdHlDbGFzcyA9ICR0aGlzLT5lbXB0eWNsYXNzOw0KCSRp c29DbGFzcyA9ICR0aGlzLT5pc29jbGFzczsNCgkkcm93Q2xhc3MgPSAkdGhpcy0+cm93Y2xh c3M7DQoJJHJvd0NsYXNzID0gKCRyb3dDbGFzcykgPyAnIGNsYXNzPSInLiRyb3dDbGFzcy4n IicgOiAnJzsNCg0KCSRjW10gPSAnPHRyJy4kcm93Q2xhc3MuJz4nOw0KDQoJaWYgKCR0aGlz LT5zaG93SVNPV2Vlaykgew0KCQkkcmVwcyA9IGFycmF5KA0KCQkJJ3t3ZWVrfScgPT4gZGF0 ZSgnVycsICR0aGlzLT5zdGFydFRpbWUpLA0KCQkJJ3ttb250aH0nID0+IGRhdGUoJ24nLCAk dGhpcy0+c3RhcnRUaW1lKSwNCgkJCSd7eWVhcn0nID0+IGRhdGUoJ1knLCAkdGhpcy0+c3Rh cnRUaW1lKSwNCgkJCSd7aXNveWVhcn0nID0+IGRhdGUoJ28nLCAkdGhpcy0+c3RhcnRUaW1l KSwNCgkJKTsNCgkJJHdrY2VsbCA9IHN0cnRyKCR0aGlzLT5JU09XZWVrQ2VsbCwgJHJlcHMp Ow0KCQkkY1tdID0gJzx0ZCBjbGFzcz0iJy4kaXNvQ2xhc3MuJyI+Jy4kd2tjZWxsLic8L3Rk Pic7DQoJfQ0KCS8vIGZpcnN0IGRpc3BsYXkgZW1wdHkgY2VsbHMgYmFzZWQgb24gd2hhdCB3 ZWVrZGF5IHRoZSBtb250aCBzdGFydHMgaW4NCglmb3IoICRqPTA7ICRqPCR0aGlzLT5zdGFy dE9mZnNldDsgJGorKyApCXsNCgkJJGkrKzsNCgkJJGNbXSA9ICc8dGQgY2xhc3M9IicuJGVt cHR5Q2xhc3MuJyI+Jm5ic3A7PC90ZD4nOw0KCX0gLy8gZW5kIG9mZnNldCBjZWxscw0KDQoJ Ly8gd3JpdGUgb3V0IHRoZSByZXN0IG9mIHRoZSBkYXlzLCBhdCBlYWNoIHN1bmRheSwgc3Rh cnQgYSBuZXcgcm93Lg0KCWZvciggJGQ9MTsgJGQ8PSR0aGlzLT5lbmREYXk7ICRkKysgKSB7 DQoJCSRpKys7DQoJCSRjW10gPSAkdGhpcy0+ZHNwRGF5Q2VsbCggJGQgKTsNCgkJaWYgKCAk aSU3ID09IDAgKSB7ICRjW10gPSAnPC90cj4nOyB9DQoJCWlmICggJGQ8JHRoaXMtPmVuZERh eSAmJiAkaSU3ID09IDAgKSB7DQoJCQkkY1tdID0gJzx0cicuJHJvd0NsYXNzLic+JzsNCgkJ CWlmICgkdGhpcy0+c2hvd0lTT1dlZWspIHsNCgkJCQkkdGhlVGltZSA9IHN0cnRvdGltZSgk dGhpcy0+eWVhci4iLSIuJHRoaXMtPm1vbnRoLiItIi4oaW50KSgkZCArIDEpIC4iIDAwOjAw Iik7DQoJCQkJJHJlcHMgPSBhcnJheSgNCgkJCQkJJ3t3ZWVrfScgPT4gZGF0ZSgnVycsICR0 aGVUaW1lKSwNCgkJCQkJJ3ttb250aH0nID0+IGRhdGUoJ24nLCAkdGhlVGltZSksDQoJCQkJ CSd7eWVhcn0nID0+IGRhdGUoJ1knLCAkdGhlVGltZSksDQoJCQkJCSd7aXNveWVhcn0nID0+ IGRhdGUoJ28nLCAkdGhlVGltZSksDQoJCQkJKTsNCgkJCQkkd2tjZWxsID0gc3RydHIoJHRo aXMtPklTT1dlZWtDZWxsLCAkcmVwcyk7DQoJCQkJJGNbXSA9ICc8dGQgY2xhc3M9IicuJGlz b0NsYXNzLiciPicuJHdrY2VsbC4nPC90ZD4nOw0KCQkJfQ0KCQl9DQoJfQ0KCS8vIGZpbGwg aW4gdGhlIGZpbmFsIHJvdw0KCSRsZWZ0ID0gNyAtICggJGklNyApOw0KCWlmICggJGxlZnQg PCA3KQl7DQoJCWZvciAoICRqPTA7ICRqPCRsZWZ0OyAkaisrICkJew0KCQkgICRjW10gPSAn PHRkIGNsYXNzPSInLiRlbXB0eUNsYXNzLiciPiZuYnNwOzwvdGQ+JzsNCgkJfQ0KCQkkY1td ID0gIlxuXHQ8L3RyPiI7DQoJfQ0KCXJldHVybiBqb2luKCcnLCRjKTsNCn0NCi8vID09PT0g ZW5kIGRzcERheUNlbGxzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KLyoqDQoqIG91dHB1dHMgdGhlIGNvbnRlbnRzIGZvciBhIGdpdmVuIGRh eQ0KKg0KKiBAcGFyYW0gaW50ZWdlciwgZGF5DQoqIEBhYnN0cmFjdA0KKi8NCmZ1bmN0aW9u IGRzcERheUNlbGwgKCAkZGF5ICkgew0KCXJldHVybiAnPHRkPicuJGRheS4nPC90ZD4nOw0K fQ0KLy8gPT09PSBlbmQgZGF5Q2VsbCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCn0gLy8gZW5kIGNsYXNzDQoNCi8vIFBlcmZvcm0gb25lIG9m IDIgdHlwZXMgb2YgdGVzdDogYSBmbGFnLWJhc2VkIHRlc3QsIG9yIGFuIGluZm8tYmFzZWQg dGVzdA0KZnVuY3Rpb24gc21kX2lmX2NhbCgkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICRz bWRfY2FsX2ZsYWcsICRzbWRfY2FsaW5mbywgJHNtZF9kYXRlOw0KDQoJZXh0cmFjdChsQXR0 cyhhcnJheSgNCgkJJ2ZsYWcnID0+ICcnLA0KCQknY2FsaWQnID0+ICcnLA0KCQknaXNveWVh cicgPT4gJycsDQoJCSd5ZWFyJyA9PiAnJywNCgkJJ21vbnRoJyA9PiAnJywNCgkJJ3dlZWsn ID0+ICcnLA0KCQknZGF5JyA9PiAnJywNCgkJJ2xvZ2ljJyA9PiAnb3InLA0KCQknZGVidWcn ID0+ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJJGZsYWcgPSBkb19saXN0KCRmbGFnKTsNCgkk Y3RyID0gJG51bSA9IDA7DQoNCglpZiAoJGRlYnVnKSB7DQoJCWRtcCgkYXR0cyk7DQoJfQ0K DQoJaWYgKCRmbGFnICYmICRmbGFnWzBdICE9ICcnKSB7DQoJCSRudW0gKz0gY291bnQoJGZs YWcpOw0KCQlmb3JlYWNoICgkZmxhZyBhcyAkd2hhdG5vdCkgew0KCQkJaWYgKGVtcHR5KCR3 aGF0bm90KSkgY29udGludWU7DQoJCQkkY3RyICs9IChpbl9hcnJheSgkd2hhdG5vdCwgJHNt ZF9jYWxfZmxhZykgfHwgKCR3aGF0bm90ID09ICdTTURfQU5ZJyAmJiAhZW1wdHkoJHNtZF9j YWxfZmxhZykpKSA/IDEgOiAwOw0KCQl9DQoJfQ0KCWlmICgkY2FsaWQpIHsNCgkJJG51bSsr Ow0KCQkkY3RyICs9ICgkc21kX2NhbGluZm9bJ2lkJ10gPT09ICRjYWxpZCkgPyAxIDogMDsN Cgl9DQoJZm9yZWFjaCAoYXJyYXkoIml5IiA9PiAiaXNveWVhciIsICJ5IiA9PiAieWVhciIs ICJtIiA9PiAibW9udGgiLCAidyIgPT4gIndlZWsiLCAiZCIgPT4gImRheSIpIGFzICRpZHgg PT4gJHRlc3QpIHsNCgkJJHRlc3RlciA9ICQkdGVzdDsNCgkJJGNvbXBhcmUgPSAkc21kX2Rh dGVbJGlkeF07DQoNCgkJaWYgKCR0ZXN0ZXIpIHsNCgkJCSRudW0rKzsNCgkJCXByZWdfbWF0 Y2goJy8oWyE9PD5dKyk/KFtcZF0rKS8nLCAkdGVzdGVyLCAkbWF0Y2hlcyk7DQoJCQlpZiAo JGRlYnVnKSB7DQoJCQkJZG1wKCJURVNUIElGOiAiLiAkY29tcGFyZS4gKCgkbWF0Y2hlc1sx XSkgPyAkbWF0Y2hlc1sxXSA6ICc9JykgLiAkbWF0Y2hlc1syXSApOw0KCQkJfQ0KCQkJc3dp dGNoICgkbWF0Y2hlc1sxXSkgew0KCQkJCWNhc2UgIiEiOg0KCQkJCQkkY3RyICs9ICgkY29t cGFyZSE9JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIj4i Og0KCQkJCQkkY3RyICs9ICgkY29tcGFyZT4kbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJ YnJlYWs7DQoJCQkJY2FzZSAiPj0iOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZT49JG1hdGNo ZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIjwiOg0KCQkJCQkkY3Ry ICs9ICgkY29tcGFyZTwkbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQkJ Y2FzZSAiPD0iOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZTw9JG1hdGNoZXNbMl0pID8gMSA6 IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCSRjdHIgKz0gKCRjb21wYXJl PT0kbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX0NCgl9DQoJ JHJlc3VsdCA9ICgoJGN0ciA9PT0gJG51bSAmJiAkbG9naWMgPT0gImFuZCIpIHx8ICRjdHIg PiAwICYmICRsb2dpYyA9PSAib3IiKSA/IHRydWUgOiBmYWxzZTsNCglyZXR1cm4gcGFyc2Uo RXZhbEVsc2UoJHRoaW5nLCAkcmVzdWx0KSk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9jYWxfaW5m bygkYXR0cykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRpY2xlLCAkc21kX2NhbF9m bGFnLCAkc21kX2NhbGluZm8sICRzbWRfZGF0ZTsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXko DQoJCSd0eXBlJyA9PiAnZmxhZycsDQoJCSdqb2luJyA9PiAnICcsDQoJCSdqb2luX3ByZWZp eCcgPT4gJ1NNRF9BVVRPJywNCgkJJ2h0bWwnID0+IDAsDQoJCSdlc2NhcGUnID0+ICdodG1s JywNCgkpLCAkYXR0cykpOw0KDQoJLy8gVHlwZTogMD1kYXRlLCAxPXNtZF9jYWxpbmZvLCAy PXByZXRleHQsIDM9dGhpc2FydGljbGUsIDQob3Igb3RoZXIpPXVzZXIgdmFsdWUNCgkkbWFw ID0gYXJyYXkoDQoJCSd5ZWFyJyA9PiBhcnJheSgwLCAneScsKSwNCgkJJ2lzb3llYXInID0+ IGFycmF5KDAsICdpeScsICd5JyksDQoJCSdtb250aCcgPT4gYXJyYXkoMCwgJ20nKSwNCgkJ J3dlZWsnID0+IGFycmF5KDAsICd3JyksDQoJCSdkYXknID0+IGFycmF5KDAsICdkJyksDQoJ CSdzZWN0aW9uJyA9PiBhcnJheSgzLCAnJywgJ3MnKSwNCgkJJ2NhdGVnb3J5MScgPT4gYXJy YXkoMywgJycsICdjJyksDQoJCSdjYXRlZ29yeTInID0+IGFycmF5KDMsICcnLCAnYycpLA0K CQkndGhpc2lkJyA9PiBhcnJheSgzLCAndGhpc2lkJywgJ2lkJyksDQoJCSdhcnRpY2xlJyA9 PiBhcnJheSgxLCAnYXJ0aWQnLCAnaWQnKSwNCgkJJ2NhbGlkJyA9PiBhcnJheSgxLCAnaWQn LCAnY2FsaWQnKSwNCgkJJ2NhdGVnb3J5JyA9PiBhcnJheSgyLCAnYycpLA0KCQkncmVhbG5h bWUnID0+IGFycmF5KDIsICdhdXRob3InKSwNCgkpOw0KCSRqb2luID0gKCRodG1sKSA/IGEg OiAkam9pbjsgLy8gaHRtbCBtb2RlIGZvcmNlcyBhbXBlcnNhbmQgam9pbg0KCSR0eXBlID0g ZG9fbGlzdCgkdHlwZSk7DQoJJHJldCA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJHR5cGUgYXMg JGl0ZW0pIHsNCgkJJHB0cyA9IGRvX2xpc3QoJGl0ZW0sICc6Jyk7DQoJCSRpdGVtID0gJHB0 c1swXTsNCg0KCQlpZiAoZW1wdHkoJGl0ZW0pKSBjb250aW51ZTsNCgkJLy8gRGVmYXVsdCBo dG1sIGlkDQoJCSRoaWQgPSAoaXNzZXQoJG1hcFskaXRlbV0pKSA/ICgoaXNzZXQoJG1hcFsk aXRlbV1bMl0pKSA/ICRtYXBbJGl0ZW1dWzJdIDogJG1hcFskaXRlbV1bMV0pIDogJGl0ZW07 DQoJCS8vIFVzZXItc3BlY2lmaWVkIGh0bWxpZCBvdmVycmlkZXMgaXQNCgkJJGhpZCA9IChj b3VudCgkcHRzKSA+IDEgJiYgIWVtcHR5KCRwdHNbMV0pKSA/ICRwdHNbMV0gOiAkaGlkOw0K CQlpZiAoJGl0ZW0gPT0gImZsYWciKSB7DQoJCQkkcmV0W10gPSAoKCRqb2luX3ByZWZpeD09 IlNNRF9BVVRPIikgPyAkam9pbiA6ICcnKS5qb2luKCRqb2luLCAkc21kX2NhbF9mbGFnKTsN CgkJfSBlbHNlIGlmICgkaXRlbSA9PSAiYXV0aG9yIiB8fCAkaXRlbSA9PSAicmVhbG5hbWUi KSB7DQoJCQkkY3VycmF1dGhvciA9ICgkdGhpc2FydGljbGUgPT0gTlVMTCkgPyAnJyA6IGF1 dGhvcihhcnJheSgpKTsNCgkJCWlmICgkY3VycmF1dGhvcikgew0KCQkJCSRyZXRbXSA9ICgo JGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAkY3VycmF1dGhvcjsNCgkJCX0NCgkJfSBlbHNl IGlmICgkaXRlbSA9PSAicyIpIHsNCgkJCSRzZWMgPSAoIWVtcHR5KCRwcmV0ZXh0WydzJ10p KSA/ICRwcmV0ZXh0WydzJ10gOiAoKGlzc2V0KCRzbWRfY2FsaW5mb1sncyddKSAmJiAhZW1w dHkoJHNtZF9jYWxpbmZvWydzJ10pKSA/ICRzbWRfY2FsaW5mb1sncyddIDogJycpOw0KCQkJ aWYgKCRzZWMpIHsNCgkJCQkkcmV0W10gPSAoKCRodG1sKSA/ICRoaWQuJz0nIDogJycpIC4g JHNlYzsNCgkJCX0NCgkJfSBlbHNlIGlmIChpc3NldCgkbWFwWyRpdGVtXSkpIHsNCgkJCSR0 eXAgPSAkbWFwWyRpdGVtXVswXTsNCgkJCSRpZHggPSBlbXB0eSgkbWFwWyRpdGVtXVsxXSkg PyAkaXRlbSA6ICRtYXBbJGl0ZW1dWzFdOw0KCQkJc3dpdGNoICgkdHlwKSB7DQoJCQkJY2Fz ZSAwOg0KCQkJCQlpZiAoJHNtZF9kYXRlWyRpZHhdKSB7DQoJCQkJCQkkcmV0W10gPSAoKCRo dG1sKSA/ICRoaWQuJz0nIDogJycpIC4gJHNtZF9kYXRlWyRpZHhdOw0KCQkJCQl9DQoJCQkJ CWJyZWFrOw0KCQkJCWNhc2UgMToNCgkJCQkJaWYgKCFlbXB0eSgkc21kX2NhbGluZm9bJGlk eF0pKSB7DQoJCQkJCQkkcmV0W10gPSAoKCRodG1sKSA/ICRoaWQuJz0nIDogJycpIC4gJHNt ZF9jYWxpbmZvWyRpZHhdOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgMjoNCgkJ CQkJaWYgKCFlbXB0eSgkcHJldGV4dFskaWR4XSkpIHsNCgkJCQkJCSRyZXRbXSA9ICgoJGh0 bWwpID8gJGhpZC4nPScgOiAnJykgLiAkcHJldGV4dFskaWR4XTsNCgkJCQkJfQ0KCQkJCQli cmVhazsNCgkJCQljYXNlIDM6DQoJCQkJCWlmICgkdGhpc2FydGljbGUgIT0gTlVMTCAmJiBp c3NldCgkdGhpc2FydGljbGVbJGlkeF0pICYmICFlbXB0eSgkdGhpc2FydGljbGVbJGlkeF0p KSB7DQoJCQkJCQkkcmV0W10gPSAoKCRodG1sKSA/ICRoaWQuJz0nIDogJycpIC4gJHRoaXNh cnRpY2xlWyRpZHhdOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9IGVsc2UgaWYg KGFycmF5X2tleV9leGlzdHMoJGl0ZW0sICRwcmV0ZXh0KSkgew0KCQkJaWYgKCRwcmV0ZXh0 WyRpdGVtXSkgew0KCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAk cHJldGV4dFskaXRlbV07DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQlpZiAoJHRoaXNhcnRpY2xl ICE9IE5VTEwgJiYgaXNzZXQoJHRoaXNhcnRpY2xlWyRpdGVtXSkgJiYgIWVtcHR5KCR0aGlz YXJ0aWNsZVskaXRlbV0pKSB7DQoJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAkaGlkLic9JyA6 ICcnKSAuICR0aGlzYXJ0aWNsZVskaXRlbV07DQoJCQl9DQoJCX0NCgl9DQoJJHJldCA9IGFy cmF5X3VuaXF1ZSgkcmV0KTsNCgkkb3V0ID0gKCgkam9pbl9wcmVmaXg9PSJTTURfQVVUTyIp ID8gKCgkaHRtbCkgPyAnPycgOiAnJykgOiAkam9pbl9wcmVmaXgpLmpvaW4oJGpvaW4sICRy ZXQpOw0KCXJldHVybiAoJGVzY2FwZT09J2h0bWwnKSA/IGh0bWxzcGVjaWFsY2hhcnMoJG91 dCkgOiAkb3V0Ow0KfQ0KDQpmdW5jdGlvbiBzbWRfY2FsX25vdygkYXR0cykgew0KCWdsb2Jh bCAkZGF0ZWZvcm1hdDsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdmb3JtYXQnID0+ ICRkYXRlZm9ybWF0LA0KCQknbm93JyA9PiAnJywNCgkJJ29mZnNldCcgPT4gJycsDQoJCSdn bXQnID0+ICcnLA0KCQknbGFuZycgPT4gJycsDQoJKSwgJGF0dHMpKTsNCg0KCSR0aGVEYXkg PSAoZ3BzKCdkJykgJiYgaXNfbnVtZXJpYyhncHMoJ2QnKSkpID8gKGludClncHMoJ2QnKSA6 IHNhZmVfc3RyZnRpbWUoJyVkJyk7DQoJJHRoZU1vbnRoID0gKGdwcygnbScpICYmIGlzX251 bWVyaWMoZ3BzKCdtJykpKSA/IChpbnQpZ3BzKCdtJykgOiBzYWZlX3N0cmZ0aW1lKCclbScp Ow0KCSR0aGVZZWFyID0gKGdwcygneScpICYmIGlzX251bWVyaWMoZ3BzKCd5JykpKSA/IChp bnQpZ3BzKCd5JykgOiBzYWZlX3N0cmZ0aW1lKCclWScpOw0KCWlmICgkbm93KSB7DQoJCSRu b3cgPSBzdHJfcmVwbGFjZSgiP21vbnRoIiwgZGF0ZSgnRicsIGdtbWt0aW1lKDEyLDAsMCwk dGhlTW9udGgsJHRoZURheSwkdGhlWWVhcikpLCAkbm93KTsNCgkJJG5vdyA9IHN0cl9yZXBs YWNlKCI/eWVhciIsICR0aGVZZWFyLCAkbm93KTsNCgkJJG5vdyA9IHN0cl9yZXBsYWNlKCI/ ZGF5IiwgJHRoZURheSwgJG5vdyk7DQoJCSRub3cgPSBzdHJ0b3RpbWUoJG5vdyk7DQoJfSBl bHNlIHsNCgkJJG5vdyA9IHRpbWUoKTsNCgl9DQoNCglpZiAoJG9mZnNldCkgew0KCQkkbm93 ID0gc3RydG90aW1lKCRvZmZzZXQsICRub3cpOw0KCX0NCg0KCXJldHVybiBzYWZlX3N0cmZ0 aW1lKCRmb3JtYXQsICRub3csICRnbXQsICRsYW5nKTsNCn0NCg0KLy8gU2V0IHVzZXItZGVm aW5lZCBjbGFzc2VzIGZvciBhIGNlbGwNCmZ1bmN0aW9uIHNtZF9jYWxfY2xhc3MoJGF0dHMp IHsNCglnbG9iYWwgJHNtZF9jYWxfdWNsczsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJ CSduYW1lJyA9PiAnJywNCgkpLCAkYXR0cykpOw0KDQoJJG5hbWUgPSBkb19saXN0KCRuYW1l KTsNCgkkc21kX2NhbF91Y2xzID0gYXJyYXlfbWVyZ2UoJHNtZF9jYWxfdWNscywgJG5hbWUp Ow0KfQ0KDQovLyA8dHhwOmFydGljbGVfY3VzdG9tIC8+IHJlcGxhY2VtZW50KGlzaCkgdGFn IHRoYXQgdW5kZXJzdGFuZHMgaG93IHRvIGhhbmRsZSByZWN1cnJpbmcgZXZlbnRzDQpmdW5j dGlvbiBzbWRfYXJ0aWNsZV9ldmVudCgkYXR0cywgJHRoaW5nPScnKSB7DQoJZ2xvYmFsICRw cmVmcywgJHByZXRleHQsICR0aGlzcGFnZTsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJ CSd0aW1lJyA9PiAnYW55JywNCgkJJ3R5cGUnID0+ICdzdGFuZGFyZCxyZWN1cixtdWx0aScs DQoJCSdleHBpcmVkJyA9PiAnJywNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAn JywNCgkJJ3NlY3Rpb24nID0+ICcnLA0KCQknYXV0aG9yJyA9PiAnJywNCgkJJ3JlYWxuYW1l JyA9PiAnJywNCgkJJ3N0YXR1cycgPT4gJ2xpdmUnLA0KCQknc29ydCcgPT4gJycsDQoJCSdm b3JtJyA9PiAnJywNCgkJJ3N0ZXBmaWVsZCcgPT4gJycsDQoJCSdza2lwZmllbGQnID0+ICcn LA0KCQknb21pdGZpZWxkJyA9PiAnJywNCgkJJ2V4dHJhZmllbGQnID0+ICcnLA0KCQknbW9u dGgnID0+ICcnLA0KCQknZnJvbScgPT4gJycsDQoJCSd0bycgPT4gJycsDQoJCSdvZmZzZXQn ID0+IDAsDQoJCSdsaW1pdCcgPT4gJzEwJywNCgkJJ2V2ZW50bGltaXQnID0+ICcxMCcsDQoJ CSdwYWdpbmcnID0+ICcxJywNCgkJJ3BhZ2VieScgPT4gJycsDQoJCSdwZ29ubHknID0+ICcn LA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdicmVhaycgPT4gJycsDQoJCSdjbGFzcycgPT4g JycsDQoJCSdkZWJ1ZycgPT4gMCwNCgkpLCAkYXR0cykpOw0KDQoJLy8gUGhhc2UgMSBmaWx0 ZXJzDQoJJGZpbHRTUUwgPSAkc3ViU1FMID0gYXJyYXkoKTsNCglpZigkY2F0ZWdvcnkpIHsN CgkJJHRtcCA9IGRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRjYXRlZ29y eSkpKSk7DQoJCSRmaWx0U1FMW10gPSAnKCBDYXRlZ29yeTEgSU4gKCcuJHRtcC4nKSBPUiBD YXRlZ29yeTIgSU4gKCcuJHRtcC4nKSApJzsNCgl9DQoJaWYoJHNlY3Rpb24pIHsNCgkJJGZp bHRTUUxbXSA9ICdTZWN0aW9uIElOICgnLmRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChk b19saXN0KCRzZWN0aW9uKSkpKS4nKSc7DQoJfQ0KCWlmKCRyZWFsbmFtZSkgew0KCQkkYXV0 aG9ycyA9IHNhZmVfY29sdW1uKCduYW1lJywgJ3R4cF91c2VycycsICdSZWFsTmFtZSBJTiAo Jy4gZG9RdW90ZShqb2luKCInLCciLCBkb0FycmF5KGRvX2xpc3QoJHJlYWxuYW1lKSwgJ3Vy bGRlY29kZScpKSkgLicpJyApOw0KCQkkYXV0aG9yID0gam9pbignLCcsICRhdXRob3JzKTsN Cgl9DQoJaWYoJGF1dGhvcikgew0KCQkkZmlsdFNRTFtdID0gJ0F1dGhvcklEIElOICgnLmRv UXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRhdXRob3IpKSkpLicpJzsNCgl9 DQoJaWYoJGlkKSB7DQoJCSRmaWx0U1FMW10gPSAnSUQgSU4gKCcuam9pbignLCcsIGFycmF5 X21hcCgnaW50dmFsJywgZG9fbGlzdCgkaWQpKSkuJyknOw0KCX0NCgkkdHlwZSA9IGRvX2xp c3QoJHR5cGUpOw0KCSRwYWdlYnkgPSAoZW1wdHkoJHBhZ2VieSkgPyAkbGltaXQgOiAkcGFn ZWJ5KTsNCg0KCWZvcmVhY2ggKCR0eXBlIGFzICRldnR5cCkgew0KCQlzd2l0Y2goJGV2dHlw KSB7DQoJCQljYXNlICdzdGFuZGFyZCc6DQoJCQkJaWYgKCRzdGVwZmllbGQpIHsNCgkJCQkJ JHN1YlNRTFtdID0gIigiLiRzdGVwZmllbGQuIiA9ICcnIEFORCBFeHBpcmVzID0gIi5OVUxM REFURVRJTUUuIikiOw0KCQkJCX0NCgkJCQlicmVhazsNCgkJCWNhc2UgJ3JlY3VyJzoNCgkJ CQlpZiAoJHN0ZXBmaWVsZCkgew0KCQkJCQkkc3ViU1FMW10gPSAiKCIuJHN0ZXBmaWVsZC4i ICE9ICcnKSI7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnbXVsdGknOg0KCQkJCWlm ICgkc3RlcGZpZWxkKSB7DQoJCQkJCSRzdWJTUUxbXSA9ICIoIi4kc3RlcGZpZWxkLiIgPSAn JyBBTkQgRXhwaXJlcyAhPSAiLk5VTExEQVRFVElNRS4iKSI7DQoJCQkJfQ0KCQkJCWJyZWFr Ow0KCQl9DQoJfQ0KCWlmICgkc3ViU1FMKSB7DQoJCSRmaWx0U1FMW10gPSAnKCcuam9pbign IE9SICcsICRzdWJTUUwpLicpJzsNCgl9DQoNCgkkc3RhdHVzID0gKCRzdGF0dXMpID8gJHN0 YXR1cyA6ICdsaXZlJzsgLy8gaW4gY2FzZSBzdGF0dXMgaGFzIGJlZW4gZW1wdGllZA0KCSRz dGF0dXMgPSBkb19saXN0KCRzdGF0dXMpOw0KCSRzdGF0aSA9IGFycmF5KCk7DQoJZm9yZWFj aCAoJHN0YXR1cyBhcyAkc3RhdCkgew0KCQlpZiAoZW1wdHkoJHN0YXQpKSB7DQoJCQljb250 aW51ZTsNCgkJfSBlbHNlIGlmIChpc19udW1lcmljKCRzdGF0KSkgew0KCQkJJHN0YXRpW10g PSAkc3RhdDsNCgkJfSBlbHNlIHsNCgkJCSRzdGF0aVtdID0gZ2V0U3RhdHVzTnVtKCRzdGF0 KTsNCgkJfQ0KCX0NCgkkZmlsdFNRTFtdID0gJ1N0YXR1cyBJTiAoJy5kb1F1b3RlKGpvaW4o IicsJyIsICRzdGF0aSkpLicpJzsNCg0KCSRleHBpcmVkID0gKCRleHBpcmVkKSA/ICRleHBp cmVkIDogJHByZWZzWydwdWJsaXNoX2V4cGlyZWRfYXJ0aWNsZXMnXTsNCglpZiAoISRleHBp cmVkKSB7DQoJCSRmaWx0U1FMW10gPSAnKG5vdygpIDw9IEV4cGlyZXMgT1IgRXhwaXJlcyA9 ICcuTlVMTERBVEVUSU1FLicpJzsNCgl9DQoNCgkvLyBTb3J0aW5nIHJ1bGVzOiBkYXRhIGlz IHNvcnRlZCBvbmNlIGFzIGl0IGlzIGV4dHJhY3RlZCB2aWEgU1FMIGFuZCB0aGVuIGFnYWlu IGFmdGVyIHRoZSBmYWtlIGRhdGVzIGhhdmUgYmVlbiBpbnNlcnRlZA0KCSRzb3J0ID0gKGVt cHR5KCRzb3J0KSkgPyAnUG9zdGVkIGFzYycgOiAkc29ydDsNCgkkc29ydCA9IGRvX2xpc3Qo JHNvcnQpOw0KCSRzb3J0UHJlZml4ID0gIlNPUlRfIjsNCgkkc29ydE9yZGVyID0gYXJyYXko KTsNCglmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHNvcnQpOyAkaWR4KyspIHsNCgkJ JHNvcnRpZXMgPSBleHBsb2RlKCcgJywgJHNvcnRbJGlkeF0pOw0KCQlpZiAoY291bnQoJHNv cnRpZXMpIDw9IDEpIHsNCgkJCSRzb3J0aWVzWzFdID0gImFzYyI7DQoJCX0NCgkJJHNvcnRp ZXNbMV0gPSAkc29ydFByZWZpeC4oKCRzb3J0aWVzWzFdID09ICJkZXNjIikgPyAnREVTQycg OiAnQVNDJyk7DQoJCSRzb3J0T3JkZXJbXSA9IGFycmF5KCJieSIgPT4gJHNvcnRpZXNbMF0s ICJkaXIiID0+ICRzb3J0aWVzWzFdKTsNCgl9DQoNCgkkZmlsdFNRTCA9IGpvaW4oJyBBTkQg JywgJGZpbHRTUUwpOw0KCSRmaWx0U1FMIC49ICcgT1JERVIgQlkgJy5qb2luKCcsJyxkb1Ns YXNoKCRzb3J0KSk7DQoNCgkkZ3JhYkNvbHMgPSAnKiwgdW5peF90aW1lc3RhbXAoUG9zdGVk KSBhcyB1UG9zdGVkLCB1bml4X3RpbWVzdGFtcChMYXN0TW9kKSBhcyB1TGFzdE1vZCwgdW5p eF90aW1lc3RhbXAoRXhwaXJlcykgYXMgdUV4cGlyZXMnOw0KCSRldmxpc3QgPSBzYWZlX3Jv d3MoJGdyYWJDb2xzLCAndGV4dHBhdHRlcm4nLCAkZmlsdFNRTCwgJGRlYnVnKTsNCg0KCWlm ICgkZGVidWc+Mikgew0KCQllY2hvICIrKyBSRUNPUkQgU0VUICsrIjsNCgkJZG1wKCRldmxp c3QpOw0KCX0NCgkkYWxsX2V2cyA9ICRldl90YWxseSA9IGFycmF5KCk7DQoJJG5vdyA9IHRp bWUoKTsNCg0KCS8vIFBoYXNlIDI6IGV4cGFuZCBhbnkgcmVjdXJyaW5nIGRhdGVzIGFuZCBj b2xsYXRlIGFsbCBldmVudHMgdGhhdCBmYWxsIHdpdGhpbiB0aGUgYWxsb3RlZCByYW5nZXMN Cglmb3JlYWNoICgkZXZsaXN0IGFzICRyb3cpIHsNCgkJJGV2X3Bvc3RlZCA9ICRyb3dbJ3VQ b3N0ZWQnXTsNCgkJJGV2X2V4cGlyZXMgPSAkcm93Wyd1RXhwaXJlcyddOw0KCQkkZGlmZiA9 ICgkZXZfZXhwaXJlcyA9PSAwKSA/IDAgOiAkZXZfZXhwaXJlcyAtICRldl9wb3N0ZWQ7DQoJ CSRldl9tb250aCA9IGRhdGUoJ20nLCAkZXZfcG9zdGVkKTsNCgkJJGV2X3llYXIgPSBkYXRl KCdZJywgJGV2X3Bvc3RlZCk7DQoJCSRldl9ociA9IGRhdGUoJ0gnLCAkZXZfcG9zdGVkKTsN CgkJJGV2X21uID0gZGF0ZSgnaScsICRldl9wb3N0ZWQpOw0KCQkkZXZfc2MgPSBkYXRlKCdz JywgJGV2X3Bvc3RlZCk7DQoJCSRpZ25vcmUgPSBhcnJheSgpOw0KDQoJCS8vIEdlbmVyYXRl IGEgc2tpcCBhcnJheSBmb3IgdGhpcyBldmVudA0KCQlpZiAoJHNraXBmaWVsZCAmJiAkcm93 WyRza2lwZmllbGRdICE9ICcnKSB7DQoJCQkkaWdub3JlID0gZG9fbGlzdCgkcm93WyRza2lw ZmllbGRdKTsNCgkJCWZvcmVhY2ggKCRpZ25vcmUgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJ JGlnbm9yZVska2V5XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsgLy8gRm9y Y2UgZWFjaCBkYXRlIHRvIGEga25vd24gZm9ybWF0DQoJCQl9DQoJCX0NCgkJLy8gQXBwZW5k IGFueSBvbWl0dGVkIGV2ZW50cw0KCQlpZiAoJG9taXRmaWVsZCAmJiAkcm93WyRvbWl0Zmll bGRdICE9ICcnKSB7DQoJCQkkb21pdCA9IGRvX2xpc3QoJHJvd1skb21pdGZpZWxkXSk7DQoJ CQlmb3JlYWNoICgkb21pdCBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCQkkaWdub3JlWyRrZXld ID0gZGF0ZSgiZC1NLVkiLCBzdHJ0b3RpbWUoJHZhbCkpOw0KCQkJfQ0KCQl9DQoJCWlmICgk ZGVidWcgPiAxICYmICRpZ25vcmUpIHsNCgkJCWVjaG8gJysrIElHTk9SRUQgREFURVMgKysn Ow0KCQkJZG1wKCRpZ25vcmUpOw0KCQl9DQoNCgkJLy8gRG9lcyB0aGUgZXZlbnQgZGVzZXJ2 ZSB0byBiZSBpbiB0aGUgcmVzdWx0cz8NCgkJaWYgKHNtZF9pbmNsdWRlX2V2ZW50KCRldl9w b3N0ZWQsICRub3csICRpZ25vcmUsICR0aW1lLCAkZnJvbSwgJHRvLCAkbW9udGgpKSB7DQoJ CQkkYWxsX2V2c1tdID0gJHJvdzsNCgkJCSRldl90YWxseVskcm93WydQb3N0ZWQnXV0gPSAo aXNzZXQoJGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCddXSkpID8gJGV2X3RhbGx5WyRyb3dbJ1Bv c3RlZCddXSsxIDogMTsNCgkJfQ0KDQoJCS8vIEFkZCBhbnkgZXh0cmEgZGF0ZXMgZm9yIHRo aXMgZXZlbnQNCgkJaWYgKCRleHRyYWZpZWxkICYmICRyb3dbJGV4dHJhZmllbGRdICE9ICcn KSB7DQoJCQkkeHRyYSA9IGRvX2xpc3QoJHJvd1skZXh0cmFmaWVsZF0pOw0KCQkJJHN0YW1w b2ZmID0gKGludCkoMzYwMCokZXZfaHIpICsgKGludCkoNjAqJGV2X21uKSArIChpbnQpJGV2 X3NjOw0KCQkJZm9yZWFjaCAoJHh0cmEgYXMgJHZhbCkgew0KCQkJCSR2YWwgPSBydHJpbSgk dmFsLCAnKycpOw0KCQkJCSR0bSA9IHN0cnRvdGltZSgkdmFsKTsNCg0KCQkJCS8vIE5vICRp Z25vcmUgZm9yIGFkZGl0aW9uYWwgZXZlbnRzLCBhcyB0aGV5IGFsd2F5cyBzaG93IHVwDQoJ CQkJaWYgKHNtZF9pbmNsdWRlX2V2ZW50KCR0bSskc3RhbXBvZmYsICRub3csIGFycmF5KCks ICR0aW1lLCAkZnJvbSwgJHRvLCAkbW9udGgpKSB7DQoJCQkJCSRmYWtlcm93ID0gJHJvdzsN CgkJCQkJJGZha2Vyb3dbJ1Bvc3RlZCddID0gZGF0ZSgiWS1tLWQgSDppOnMiLCAkdG0rJHN0 YW1wb2ZmKTsNCgkJCQkJJGZha2Vyb3dbJ3VQb3N0ZWQnXSA9ICR0bSskc3RhbXBvZmY7DQoJ CQkJCWlmICgkZGlmZiA+IDApIHsNCgkJCQkJCSRmYWtlcm93WydFeHBpcmVzJ10gPSBkYXRl KCJZLW0tZCBIOmk6cyIsICR0bSskc3RhbXBvZmYrJGRpZmYpOw0KCQkJCQkJJGZha2Vyb3db J3VFeHBpcmVzJ10gPSAkdG0rJHN0YW1wb2ZmKyRkaWZmOw0KCQkJCQl9DQoJCQkJCSRhbGxf ZXZzW10gPSAkZmFrZXJvdzsNCgkJCQkJJGV2X3RhbGx5WyRmYWtlcm93WydQb3N0ZWQnXV0g PSAoaXNzZXQoJGV2X3RhbGx5WyRmYWtlcm93WydQb3N0ZWQnXV0pKSA/ICRldl90YWxseVsk ZmFrZXJvd1snUG9zdGVkJ11dKzEgOiAxOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCWlmICgk c3RlcGZpZWxkICYmICRyb3dbJHN0ZXBmaWVsZF0gIT0gJycpIHsNCgkJCSRmcmVxID0gZG9f bGlzdCgkcm93WyRzdGVwZmllbGRdKTsNCgkJCSRtb250aGx5ID0gZmFsc2U7DQoJCQkkY3Vy cnN0YW1wID0gJGV2X3Bvc3RlZDsNCgkJCSRjdXJybW9udGggPSAkZXZfbW9udGg7DQoJCQkk Y3VycnllYXIgPSAkZXZfeWVhcjsNCgkJCWZvcmVhY2ggKCRmcmVxIGFzICRpbnRlcnZhbCkg ew0KCQkJCSRmYWtlcm93ID0gJHJvdzsNCgkJCQkkc3RhbXBvZmYgPSAwOw0KCQkJCWZvcigk aWR4ID0gMDsgJGlkeCA8IDk5OTk5OyAkaWR4KyspIHsNCgkJCQkJJGxhc3RhbXAgPSAkY3Vy cnN0YW1wOw0KCQkJCQlpZiAoKGlzc2V0KCRldl90YWxseVskcm93WydQb3N0ZWQnXV0pICYm ICgkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dID49ICRldmVudGxpbWl0KSkgfHwgKCR0byAm JiAkY3VycnN0YW1wID4gc3RydG90aW1lKCR0bykpKSB7DQoJCQkJCQlicmVhazsNCgkJCQkJ fQ0KCQkJCQkkaXZhbCA9IHN0cl9yZXBsYWNlKCI/bW9udGgiLCBkYXRlKCdGJywgZ21ta3Rp bWUoMCwwLDAsJGN1cnJtb250aCwxKSksICRpbnRlcnZhbCk7DQoJCQkJCSRpdmFsID0gc3Ry X3JlcGxhY2UoIj95ZWFyIiwgJGN1cnJ5ZWFyLCAkaXZhbCk7DQoNCgkJCQkJaWYgKHN0cnBv cygkaXZhbCwgImxhc3QiKSA9PT0gMCkgew0KCQkJCQkJJGl2YWwgPSBkYXRlKCJsLCBGIGpT IFkiLCBzdHJ0b3RpbWUoJGl2YWwsIG1rdGltZSgxMiwgMCwgMCwgZGF0ZSgibiIsbWt0aW1l KDAsMCwwLCRjdXJybW9udGgsMSwkY3VycnllYXIpKSsxLCAxLCAkY3VycnllYXIpKSk7DQoJ CQkJCQkkbW9udGhseSA9IHRydWU7DQoJCQkJCX0gZWxzZSBpZiAoc3RycG9zKCRpdmFsLCAi Zmlyc3QiKSA9PT0gMCkgew0KCQkJCQkJJGl2YWwgPSBkYXRlKCJsLCBGIGpTIFkiLCBzdHJ0 b3RpbWUoJGl2YWwsIG1rdGltZSgxMiwgMCwgMCwgKCgkY3Vycm1vbnRoPjEpID8gJGN1cnJt b250aC0xIDogMTIpLCBkYXRlKCJ0Iixta3RpbWUoMCwwLDAsJGN1cnJtb250aC0xLDEsKCgk Y3Vycm1vbnRoPT0xKSA/ICRjdXJyeWVhci0xOiAkY3VycnllYXIpKSksICgoJGN1cnJtb250 aD09MSkgPyAkY3VycnllYXItMTogJGN1cnJ5ZWFyKSkpKTsNCgkJCQkJCSRtb250aGx5ID0g dHJ1ZTsNCgkJCQkJfQ0KCQkJCQlpZiAoc3RycG9zKCRpbnRlcnZhbCwgIj9tb250aCIpIHx8 IHN0cnBvcygkaW50ZXJ2YWwsICI/eWVhciIpKSB7DQoJCQkJCQkkbW9udGhseSA9IHRydWU7 DQoJICAgICAgICAgICAgfQ0KDQoJCQkJCWlmICgkbW9udGhseSkgew0KCQkJCQkJJGN1cnJz dGFtcCA9IHN0cnRvdGltZSgkaXZhbCk7DQoJCQkJCQkkc3RhbXBvZmYgPSAoJHN0YW1wb2Zm PT0wKSA/IChpbnQpKDM2MDAqJGV2X2hyKSArIChpbnQpKDYwKiRldl9tbikgKyAoaW50KSRl dl9zYyA6ICRzdGFtcG9mZjsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRjdXJyc3RhbXAgPSBz dHJ0b3RpbWUoJGl2YWwsICRjdXJyc3RhbXApOw0KCQkJCQl9DQoNCgkJCQkJLy8gVGhpcyBr bHVkZ2UgdGFrZXMgYWNjb3VudCBvZiB0aW1lc3RhbXBzIGxpa2UgImxhc3QgVGh1cnNkYXki IChvZiB0aGUgbW9udGgpLiBUaGUgbGFzdCAnd2hhdGV2ZXIgZGF5JyBvZg0KCQkJCQkvLyBh IG1vbnRoIGNhbiBvbmx5IGJlIGEgbWF4aW11bSBvZiAzMSBkYXlzIGJlZm9yZSB0aGUgbGFz dCB0aW1lc3RhbXAgd2Ugc2F3LCBzbyBjaGVjayBmb3IgdGhhdCAoKy8tIDEwIG1pbnMpDQoJ CQkJCSRkaWZmc3RhbXAgPSAkY3VycnN0YW1wIC0gJGxhc3RhbXA7DQoJCQkJCWlmICgkZGlm ZnN0YW1wIDwgMCkgew0KCQkJCQkJaWYgKCRkaWZmc3RhbXAgPiAtKDYwKjYwKjI0KjMxKSs2 MDApIHsNCgkJCQkJCQkkY3VycnN0YW1wID0gZmFsc2U7IC8vIFNvbWUgJ2xhc3Qgd2Vla2Rh eScgb2YgdGhlIHByZXZpb3VzIG1vbnRoDQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCWJyZWFr OyAvLyBQSFBfSU5UX01BWCBleGNlZWRlZA0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWlmICgk Y3VycnN0YW1wICE9PSBmYWxzZSkgew0KCQkJCQkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJCQkJ CQlkbXAoIklOVEVSVkFMOiAiLiAkY3VycnN0YW1wIC4gJyAvLyAnIC5kYXRlKCdkLU0tWSBI Omk6cycsICRjdXJyc3RhbXApKTsNCgkJCQkJCX0NCg0KCQkJCQkJaWYgKCgkY3VycnN0YW1w IDwgJGV2X2V4cGlyZXMgfHwgJGV2X2V4cGlyZXMgPT0gJzAnKSAmJiAoJGN1cnJzdGFtcCAh PSAkZXZfcG9zdGVkKSkgew0KCQkJCQkJCSRzaG93X21lID0gc21kX2luY2x1ZGVfZXZlbnQo JGN1cnJzdGFtcCwgJG5vdywgJGlnbm9yZSwgJHRpbWUsICRmcm9tLCAkdG8sICRtb250aCk7 DQoJCQkJCQkJaWYgKCRzaG93X21lKSB7DQoJCQkJCQkJCSRmYWtlcm93WydQb3N0ZWQnXSA9 IGRhdGUoIlktbS1kIEg6aTpzIiwgJGN1cnJzdGFtcCskc3RhbXBvZmYpOw0KCQkJCQkJCQkk ZmFrZXJvd1sndVBvc3RlZCddID0gJGN1cnJzdGFtcCskc3RhbXBvZmY7DQoJCQkJCQkJCSRh bGxfZXZzW10gPSAkZmFrZXJvdzsNCgkJCQkJCQkJJGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCdd XSA9IChpc3NldCgkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dKSkgPyAkZXZfdGFsbHlbJHJv d1snUG9zdGVkJ11dKzEgOiAxOw0KCQkJCQkJCX0NCgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJ YnJlYWs7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJLy8gSW5jcmVtZW50IHRoZSBtb250aC95 ZWFyIHJlYWR5IGZvciB0aGUgbmV4dCBpbnRlcnZhbA0KCQkJCQlpZiAoJG1vbnRobHkpIHsN CgkJCQkJCSRjdXJyeWVhciA9ICgkY3Vycm1vbnRoPT0xMikgPyAkY3VycnllYXIrMSA6ICRj dXJyeWVhcjsNCgkJCQkJCSRjdXJybW9udGggPSAoJGN1cnJtb250aD09MTIpID8gMSA6ICRj dXJybW9udGgrMTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoJGRlYnVnPjEpIHsNCgkJCQkJ aWYgKGlzc2V0KCRldl90YWxseVskcm93WydQb3N0ZWQnXV0pKSB7DQoJCQkJCQlkbXAoIlRB TExZOiAiLiAkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dKTsNCgkJCQkJfQ0KCQkJCX0NCgkJ CX0NCgkJfQ0KCX0NCg0KCWlmICgkZGVidWc+Mikgew0KCQllY2hvICIrKyBQUkUtU09SVEVE ICsrIjsNCgkJZG1wKCRhbGxfZXZzKTsNCgl9DQoNCgkvLyBNYWtlIHVwIGFuIGFycmF5X211 bHRpc29ydCBhcmcgbGlzdCBhbmQgZXhlY3V0ZSBpdA0KCWZvcmVhY2goJGFsbF9ldnMgYXMg JGtleSA9PiAkcm93KSB7DQoJCWZvcmVhY2ggKCRyb3cgYXMgJGlkZW50aWZpZXIgPT4gJGl0 ZW0pIHsNCgkJCSR2YXJuYW1lID0gImNvbF8iLiRpZGVudGlmaWVyOw0KCQkJJHskdmFybmFt ZX1bJGtleV0gPSAkaXRlbTsNCgkJfQ0KCX0NCglpZihjb3VudCgkYWxsX2V2cykgPiAwKSB7 DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkc29ydE9yZGVyKTsgJGlkeCsrKSB7 DQoJCQkkc29ydGFyZ3NbXSA9ICckY29sXycuJHNvcnRPcmRlclskaWR4XVsnYnknXTsNCgkJ CSRzb3J0YXJnc1tdID0gJHNvcnRPcmRlclskaWR4XVsnZGlyJ107DQoJCX0NCgkJJHNvcnRp dCA9ICdhcnJheV9tdWx0aXNvcnQoJy5pbXBsb2RlKCIsICIsJHNvcnRhcmdzKS4nLCAkYWxs X2V2cyk7JzsNCgkJZXZhbCgkc29ydGl0KTsNCgl9DQoNCglpZiAoJGRlYnVnPjIpIHsNCgkJ ZWNobyAiKysgUE9TVC1TT1JURUQgKysiOw0KCQlkbXAoJGFsbF9ldnMpOw0KCX0NCg0KCS8v IEhhbmRsZSBwYWdpbmcNCglpZiAoJHBhZ2luZykgew0KCQkkZ3JhbmRfdG90YWwgPSBjb3Vu dCgkYWxsX2V2cyk7DQoJCSR0b3RhbCA9ICRncmFuZF90b3RhbCAtICRvZmZzZXQ7DQoJCSRu dW1QYWdlcyA9IGNlaWwoJHRvdGFsLyRwYWdlYnkpOw0KCQkkcGcgPSAoISRwcmV0ZXh0Wydw ZyddKSA/IDEgOiAkcHJldGV4dFsncGcnXTsNCgkJJHBnb2Zmc2V0ID0gJG9mZnNldCArICgo JHBnIC0gMSkgKiAkcGFnZWJ5KTsNCgkJLy8gc2VuZCBwYWdpbmcgaW5mbyB0byB0eHA6bmV3 ZXIgYW5kIHR4cDpvbGRlcg0KCQkkcGFnZW91dFsncGcnXSA9ICRwZzsNCgkJJHBhZ2VvdXRb J251bVBhZ2VzJ10gPSAkbnVtUGFnZXM7DQoJCSRwYWdlb3V0WydzJ10gPSAkcHJldGV4dFsn cyddOw0KCQkkcGFnZW91dFsnYyddID0gJHByZXRleHRbJ2MnXTsNCgkJJHBhZ2VvdXRbJ2dy YW5kX3RvdGFsJ10gPSAkZ3JhbmRfdG90YWw7DQoJCSRwYWdlb3V0Wyd0b3RhbCddID0gJHRv dGFsOw0KDQoJCWlmIChlbXB0eSgkdGhpc3BhZ2UpKQ0KCQkJJHRoaXNwYWdlID0gJHBhZ2Vv dXQ7DQoJCWlmICgkcGdvbmx5KQ0KCQkJcmV0dXJuOw0KCX0gZWxzZSB7DQoJCSRwZ29mZnNl dCA9ICRvZmZzZXQ7DQoJfQ0KDQoJLy8gUGhhc2UgMzogaXRlcmF0ZSBvdmVyIHRoZSBuZXcg YXJyYXkgb2JleWluZyBhbnkgb2Zmc2V0L2xpbWl0LiBBbnl0aGluZyBpbiB0aGUgcmFuZ2Ug Z2V0cyBwb3B1bGF0ZWQgYW5kIHBhcnNlZA0KCSRvdXQgPSBhcnJheSgpOw0KCSRjdHIgPSAw Ow0KCWFydGljbGVfcHVzaCgpOw0KCWZvcmVhY2ggKCRhbGxfZXZzIGFzICRpZHggPT4gJHJv dykgew0KCQlpZiAoJGlkeCA+PSAkcGdvZmZzZXQgJiYgJGN0ciA8ICRsaW1pdCkgew0KCQkJ cG9wdWxhdGVBcnRpY2xlRGF0YSgkcm93KTsNCgkJCSRvdXRbXSA9ICgkdGhpbmcpID8gcGFy c2UoJHRoaW5nKSA6ICgoJGZvcm0pID8gcGFyc2VfZm9ybSgkZm9ybSkgOiBocmVmKCRyb3db J1Bvc3RlZCddLCBwZXJtbGlua3VybCgkcm93KSwgJyB0aXRsZT0iJy4kcm93WydUaXRsZSdd LiciJykgKTsNCgkJCSRjdHIrKzsNCgkJfQ0KCX0NCglhcnRpY2xlX3BvcCgpOw0KCXJldHVy biBkb1dyYXAoJG91dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzKTsNCn0NCg0KLy8gQ2hl Y2sgdGhlIHBhc3NlZCB0aW1lc3RhbXAgYWdhaW5zdCBldmVyeSB0aW1lIHJlc3RyaWN0aW9u IGFuZCByZXR1cm4gdHJ1ZSBpZiBpdCBwYXNzZXMgdGhlbSBhbGwNCmZ1bmN0aW9uIHNtZF9p bmNsdWRlX2V2ZW50KCR0cywgJG5vdywgJGlnbiwgJHRpbWUsICRmcm9tLCAkdG8sICRtb250 aCkgew0KCSRzaG93ID0gYXJyYXkoKTsNCgkkc2hvd1tdID0gIWluX2FycmF5KGRhdGUoImQt TS1ZIiwgJHRzKSwgJGlnbik7DQoJc3dpdGNoKCR0aW1lKSB7DQoJCWNhc2UgImFueSI6IGJy ZWFrOw0KCQljYXNlICJmdXR1cmUiOiAkc2hvd1tdID0gKCR0cyA+ICRub3cpID8gdHJ1ZSA6 IGZhbHNlOyBicmVhazsNCgkJZGVmYXVsdCA6ICRzaG93W10gPSAoJHRzIDwgJG5vdykgPyB0 cnVlIDogZmFsc2U7IGJyZWFrOyAvLyBUaGUgcGFzdA0KCX0NCglpZiAoJGZyb20pIHsgJHNo b3dbXSA9ICgkdHMgPj0gc3RydG90aW1lKCRmcm9tKSkgPyB0cnVlIDogZmFsc2U7IH0NCglp ZiAoJHRvKSB7ICRzaG93W10gPSAoJHRzIDw9IHN0cnRvdGltZSgkdG8pKSA/IHRydWUgOiBm YWxzZTsgfQ0KCWlmICgkbW9udGgpIHsgJHNob3dbXSA9IChkYXRlKCJZLW0iLCAkdHMpID09 ICRtb250aCkgPyB0cnVlIDogZmFsc2U7IH0NCg0KCXJldHVybiAoIWluX2FycmF5KDAsICRz aG93KSkgPyB0cnVlIDogZmFsc2U7DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRl ciI7czoxOiI1IjtzOjQ6ImhlbHAiO3M6NjQ3OTY6IjxwPjxkaXYgaWQ9InNtZF9oZWxwIj48 L3A+CgoJPGgxIGlkPSJ0b3AiPnNtZF9jYWxlbmRhcjwvaDE+CgoJPHA+UmVuZGVyIGEgY2Fs ZW5kYXIgd2l0aCBvbmUgb3IgbW9yZSBhcnRpY2xlcyBhcyBldmVudHMgb24gZWFjaCBkYXku IFVzZWZ1bCBmb3IgZ2lnIGd1aWRlcywgJiM4MjIwO3doYXQmIzgyMTc7cyBvbiYjODIyMTsg b3Igc2NoZWR1bGluZyBhcHBzLjwvcD4KCgk8aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwv aDI+CgoJPHVsPgoJCTxsaT5GdWxsLXNpemUgLyBtaW5pIDxhIGhyZWY9IiNzbWRjYWwiPmNh bGVuZGFyPC9hPiBieSBtb250aCwgd2l0aCBvcHRpb25hbCA8c3BhbiBjbGFzcz0iY2FwcyI+ SVNPPC9zcGFuPiB3ZWVrPC9saT4KCQk8bGk+TmF2OiBuZXh0L3ByZXYgbW9udGggb3IgbW9u dGgveWVhciBkcm9wZG93bi4gWWVhciByYW5nZSBjYW4gYmUgZnJvbSBmaXJzdC9sYXN0IGFy dGljbGUgb3IgKy8tIE4geWVhcnMgaW4gZWl0aGVyIGRpcmVjdGlvbjwvbGk+CgkJPGxpPk9u ZSBhcnRpY2xlID0gb25lIGV2ZW50LCBuYXRpdmUgdG8gPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj46IFBvc3RlZCBkYXRlID0gdGhlIGRhdGUgaXQgYXBwZWFycyBpbiB0aGUgY2Fs ZW5kYXI8L2xpPgoJCTxsaT5GaWx0ZXIgZXZlbnRzIGJ5IGNhdGVnb3J5IC8gc2VjdGlvbiAv IGF1dGhvciAvIHN0YXR1cyAvIHRpbWUgb3IgZXhwaXJ5PC9saT4KCQk8bGk+Q3VzdG9tIGZp ZWxkIHRvIHNwZWNpZnkgZXZlbnQgZnJlcXVlbmN5ICgxIHdlZWsgLyAxMCBkYXlzIC8gMyBt b250aHMgLyBldGMpPC9saT4KCQk8bGk+Q3VzdG9tIGZpZWxkcyBmb3IgaW4vZXhjbHVzaW9u cyAoYSBsaXN0IG9mIGRhdGVzIG9uIHdoaWNoIHRoYXQgZXZlbnQgaXMgcmVzY2hlZHVsZWQv Y2FuY2VsbGVkL29taXR0ZWQpPC9saT4KCQk8bGk+U3Bhbm5lZCBldmVudHMgKG11bHRpLWRh eXMpIGJhc2VkIG9uIHRoZSBhcnRpY2xl4oCZcyBleHBpcnk8L2xpPgoJCTxsaT5GdXR1cmUs IGV4cGlyZWQgb3Igc3RpY2t5IGV2ZW50cyBtYXkgYmUgZGlzcGxheWVkPC9saT4KCQk8bGk+ SG9saWRheXMgb24gYSBwZXItY2FsZW5kYXIgYmFzaXM8L2xpPgoJCTxsaT5FYWNoIGV2ZW50 IGNhbiBiZSBwYXNzZWQgdG8gYSBmb3JtL2NvbnRhaW5lciBzbyB5b3UgY2FuIGJ1aWxkIGl0 IHlvdXIgd2F5LiBTcGFubmVkIGFuZC9vciByZWN1cnJpbmcgZXZlbnRzIGNhbiBiZSBzZW50 IHRvIGEgc2VwYXJhdGUgZm9ybSBpZiB5b3Ugd2lzaC4gQWx0ZXJuYXRpdmVseSwgc2VuZCB0 aGUgZW50aXJlIGNlbGwgdG8gYSBmb3JtPC9saT4KCQk8bGk+PGEgaHJlZj0iI2lmY2FsIj5D b25kaXRpb25hbDwvYT4gdGVzdHMgZm9yIGZsYWdzIGFuZCBkYXRlcyBzbyB5b3UgY2FuIGJ1 aWxkIHlvdXIgb3duIGxvZ2ljPC9saT4KCQk8bGk+VGFibGUtLCByb3ctLCBjZWxsLSwgYW5k IGV2ZW50LWxldmVsIGNsYXNzZXMgZm9yIGluZGljYXRpbmcgZGlmZmVyZW50IHNjZW5hcmlv czsgY3VzdG9tIGNsYXNzZXMgY2FuIGJlIGRlZmluZWQ8L2xpPgoJCTxsaT5UYWdzIHRvIDxh IGhyZWY9IiNhcnRldiI+ZGlzcGxheSByZWN1cnJpbmcgZXZlbnRzPC9hPiA7IGV2ZW50L2Nh bGVuZGFyIDxhIGhyZWY9IiNjYWxpbmZvIj5jaGFyYWN0ZXJpc3RpY3M8L2E+IDsgb3IgdGhl IDxhIGhyZWY9IiNjYWxub3ciPmN1cnJlbnQgZGF0ZS90aW1lPC9hPjwvbGk+Cgk8L3VsPgoK CTxoMiBpZD0iYXV0aG9yIj5BdXRob3IgLyBjcmVkaXRzPC9oMj4KCgk8cD48YSBocmVmPSJo dHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZvcm0iPlN0ZWYgRGF3c29uPC9hPi4gSm9p bnRseSBmdW5kZWQgYnkgZ2VuZXJvdXMgZG9uYXRvcnM6IG1yZGFsZSwgd29vZiwgamFrb2Is IHJlbm9iaXJkIGFuZCBqb2ViYWljaC4gQmFzZWQgb3JpZ2luYWxseSBvbiBtZHBfY2FsZW5k YXIuIEFsbCBwcm9wcyB0byB0aGUgb3JpZ2luYWwgYXV0aG9yIG9mIHRoZSBwbHVnaW4sIGFu ZCBvZiBjb3Vyc2UgdGhlIGNsYXNzIHVwb24gd2hpY2ggdGhlIGNhbGVuZGFyIGlzIGJhc2Vk LiBBbmQgbm90IGZvcmdldHRpbmcgb3VyIGF3ZXNvbWUgVGV4dHBhdHRlcm4gZGV2cyB3aG8g Y29udGludWUgdG8gcHVzaCB0aGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5DTVM8L3NwYW4+IHRv IHRoZSBzdGFycy48L3A+CgoJPGgyIGlkPSJpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmlu c3RhbGxhdGlvbjwvaDI+CgoJPHAgY2xhc3M9InJlcXVpcmVkIj5SZXF1aXJlcyBUZXh0cGF0 dGVybiA0LjAuNys8L3A+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8 YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvMTA1Mi9zbWRfY2FsZW5k YXIiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRh d3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBh bmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0i aHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTI5Mzc1Ij5m b3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNj ZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyB1bmluc3RhbGws IGRlbGV0ZSBmcm9tIHRoZSBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhZ2UuPC9wPgoKCTxoMiBp ZD0ibmFtaW5nIj5OYW1pbmcgY29udmVudGlvbjwvaDI+CgoJPHA+VGhlIGNvcmUgb2YgdGhl IHBsdWdpbiBpcyB0aGUgc21kX2NhbGVuZGFyIHRhZywgd2hpY2ggcmVuZGVycyBhIHN0YW5k YXJkIGNhbGVuZGFyIHdpdGggZWFjaCBjZWxsIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgZXZl bnRzLiBCZWZvcmUgZGl2aW5nIGludG8gdGhlIHRhZ3MgdGhlcmUmIzgyMTc7cyBhIGxpdHRs ZSBiaXQgb2Ygbm9tZW5jbGF0dXJlIHRvIGdyYXNwOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5jYWxpZDwvc3Bhbj4gOiB5b3UgbWF5IHB1dCBtb3JlIHRoYW4gb25l IGNhbGVuZGFyIG9uIGEgcGFnZTogZWFjaCBjYW4gYmUgdW5pcXVlbHkgcmVmZXJlbmNlZCB3 aXRoIGEgY2FsZW5kYXIgSUQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2VsbDwv c3Bhbj4gOiBhIHNwZWNpZmljIGRheSBvbiB0aGUgY2FsZW5kYXIgaW4gYSBwYXJ0aWN1bGFy IG1vbnRoL3llYXI8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZlbnQ8L3NwYW4+ IDogYW4gYXJ0aWNsZS4gSXQmIzgyMTc7cyBiZXN0IHRvIHVzZSBhIGRlZGljYXRlZCBzZWN0 aW9uIGZvciBldmVudHMgdG8ga2VlcCB0aGluZ3MgbmVhdGVyLCBidXQgeW91IGNhbiBkaXNw bGF5IGV2ZW50cyBmcm9tIG1vcmUgdGhhbiBvbmUgc2VjdGlvbiBpZiB5b3Ugd2lzaC4gQW55 IGFydGljbGUgd3JpdHRlbiBpbiB0aGUgZ2l2ZW4gc2VjdGlvbihzKSB3aWxsIGFwcGVhciBv biB0aGUgY2FsZW5kYXIgYXMgbG9uZyBhcyBpdHMgZXhwaXJ5IGhhc24mIzgyMTc7dCBiZWVu IG1ldC4gTW9yZSB0aGFuIG9uZSBldmVudCBtYXkgYXBwZWFyIGluIGVhY2ggY2VsbDwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jZWxsIGZsYWc8L3NwYW4+IDogYSBzZXJpZXMg b2YgZmxhZ3MgYXJlIHVzZWQgdG8gbGFiZWwgZWFjaCBjZWxsIGFjY29yZGluZyB0byB3aGF0 IGl0IGNvbnRhaW5zLiBDZWxscyBjYW4gZWl0aGVyIGJlIDxjb2RlPmVtcHR5PC9jb2RlPiAo aS5lLiBubyBkYXRlOiB0aGUgZmlsbGVyIGNlbGxzIGF0IHRoZSBzdGFydC9lbmQgb2YgdGhl IG1vbnRoKSwgdGhleSBjYW4gYmUgYSByZWd1bGFyIGRheSAobm8gZmxhZyksIHRoZXkgY2Fu IGNvbnRhaW4gYW4gPGNvZGU+ZXZlbnQ8L2NvZGU+LCBvciBtYXkgYmUgYSBob2xpZGF5ICg8 YSBocmVmPSIjaG9saWRheXMiPmhvbHM8L2E+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5ldmVudCBmbGFnPC9zcGFuPiA6IGVhY2ggY2VsbCBjYW4gY29udGFpbiBvbmUgb3Ig bW9yZSBldmVudHMuIEV2ZW50cyBjYW4gZWl0aGVyIGJlIDxhIGhyZWY9IiNldmVudHMiPnN0 YW5kYXJkPC9hPiwgdGhleSBjYW4gPGEgaHJlZj0iI3JlY3VyIj5yZWN1cjwvYT4sIHRoZXkg Y2FuIHNwYW4gbW9yZSB0aGFuIG9uZSBkYXkgKDxhIGhyZWY9IiNtdWx0aSI+bXVsdGk8L2E+ KSwgZGF0ZXMgY2FuIGJlIHVuc2NoZWR1bGVkIG9yIG9taXR0ZWQgKDxhIGhyZWY9IiNjYW5j ZWwiPmNhbmNlbCAvIG9taXQ8L2E+KSBmcm9tIHRoZSBjYWxlbmRhciwgb3IgPGEgaHJlZj0i I2V4dHJhIj5leHRyYTwvYT4gZGF0ZXMgY2FuIGJlIGFkZGVkPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmNsYXNzIGxldmVsPC9zcGFuPiA6IChleHBsb3JlZCBpbiB0aGUgPGEg aHJlZj0iI2F0dHN0eWxlcyI+Y2xhc3NsZXZlbHM8L2E+IGF0dHJpYnV0ZSkuIEVhY2ggZmxh Z2dlZCBjZWxsIGNhbiBiZSBnaXZlbiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+ IGNsYXNzIGJhc2VkIG9uIGl0cyBmbGFnIG5hbWUocykuIFRoZSBjbGFzcyBuYW1lcyBhcmUg c2ltcGx5IGVhY2ggZmxhZyBuYW1lIHByZWZpeGVkIHdpdGggdGhlIHZhbHVlIGdpdmVuIGlu IHRoZSA8Y29kZT5jbGFzc3ByZWZpeGVzPC9jb2RlPiBhdHRyaWJ1dGUuIFN1Y2ggY2xhc3Nl czoKCTx1bD4KCQk8bGk+YXBwZWFyIGluIGEgY2VsbCwgc28geW91IGNhbiBzdHlsZSB0aGUg d2hvbGUgY2VsbDwvbGk+CgkJPGxpPmFwcGVhciBvbiBlYWNoIGV2ZW50LCBzbyB5b3UgY2Fu IHN0eWxlIHBhcnRpY3VsYXIgdHlwZXMgb2YgZXZlbnQ8L2xpPgoJCTxsaT5tYXkgYmUgJiM4 MjE2O2NvcGllZCYjODIxNzsgZnJvbSB0aGUgZXZlbnQgdG8gdGhlIGNlbGwgaXRzZWxmLCBz byB5b3UgY2FuIHN0eWxlIHRoZSB3aG9sZSBjZWxsIGJhc2VkIG9uIHRoZSBldmVudHMgaXQg Y29udGFpbnM8L2xpPgoJPC91bD48L2xpPgoJPC91bD4KCgk8cD5GbGFncyBwcm92aWRlIGlu Zm9ybWF0aW9uIDxlbT5hYm91dDwvZW0+IHRoZSBjZWxsIC8gZXZlbnQgICYjODIxMjsgYW5k IGNhbiBiZSB0ZXN0ZWQgd2l0aCB0aGUgY29uZGl0aW9uYWwgdGFnICYjODIxMjsgd2hpbGUg dGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MgbmFtZXMgYXJlIGp1c3QgdGhlcmUgZm9yIHlvdXIg PHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gdXNlLjwvcD4KCgk8cD5XaGVuIGFzc2ln bmVkIGFzIGNsYXNzZXMsIGZsYWdzIDxzdHJvbmc+YWx3YXlzPC9zdHJvbmc+IHRha2UgdGhl ICYjODIxNjtjbGFzcyYjODIxNzsgcHJlZml4IChpLmUuIHRoZSAxc3QgaXRlbSBnaXZlbiBp biBzbWRfY2FsZW5kYXImIzgyMTc7cyA8Y29kZT5jbGFzc3ByZWZpeGVzPC9jb2RlPiBhdHRy aWJ1dGUpICYjODIxMjsgd2hldGhlciB0aGV5IGFwcGVhciBhdCB0aGUgPGVtPmV2ZW50PC9l bT4gb3IgPGVtPmNlbGw8L2VtPiBsZXZlbHMuIFRoZSBvbmx5IGNsYXNzZXMgdGhhdCB0YWtl IHRoZSBvcHRpb25hbCAybmQgJiM4MjE2O2V2ZW50JiM4MjE3OyBwcmVmaXggYXJlIHRoZSBm aWVsZHMgeW91IHNwZWNpZnkgaW4gdGhlIDxjb2RlPmV2ZW50Y2xhc3NlczwvY29kZT4gYXR0 cmlidXRlLjwvcD4KCgk8cD5JdCYjODIxNztzIGFsc28gd29ydGggYmVhcmluZyBpbiBtaW5k IHRoZSA8YSBocmVmPSIjZGF0ZXMiPmRhdGUgY2F2ZWF0czwvYT4gdGhhdCBtYXkgd2VsbCBi aXRlIHlvdS48L3A+CgoJPGgyIGlkPSJldmVudHMiPlN0YW5kYXJkIGNlbGxzIGFuZCBldmVu dHM8L2gyPgoKCTxwPlRoZSBmb2xsb3dpbmcgY3VtdWxhdGl2ZSBuYW1pbmcgcnVsZXMgYXBw bHk6PC9wPgoKCTx1bD4KCQk8bGk+Tm9ybWFsIChkYXkpIGNlbGxzIGRvbiYjODIxNzt0IGhh dmUgYSBjbGFzcyBhc3NpZ25lZCB0byB0aGVtIHVubGVzcyB5b3Ugc3BlY2lmeSBvbmUgd2l0 aCA8Y29kZT5jZWxsY2xhc3M8L2NvZGU+PC9saT4KCQk8bGk+QW55IGNlbGwgdGhhdCBjb250 YWlucyBhbiBldmVudCAob2YgYW55IHR5cGUpIGlzIGZsYWdnZWQgYXMgYW4gPGNvZGU+ZXZl bnQ8L2NvZGU+PC9saT4KCQk8bGk+QW55IGNlbGwgdGhhdCBmYWxscyBvbiBhIGhvbGlkYXkg aXMgZ2l2ZW4gdGhlIGZsYWcgPGNvZGU+aG9sczwvY29kZT48L2xpPgoJCTxsaT5UaGUgY3Vy cmVudCBkYXkgaXMgZ2l2ZW4gdGhlIGZsYWcgPGNvZGU+dG9kYXk8L2NvZGU+PC9saT4KCTwv dWw+CgoJPHA+QSBzaW5nbGUgZXZlbnQgKGFrYSBhcnRpY2xlKSB3aXRoIGEgUG9zdGVkIGRh dGUgd2lsbCBiZSBmbGFnZ2VkIDxjb2RlPnN0YW5kYXJkPC9jb2RlPiwgdW5sZXNzIGl0IHJl Y3VycyBvciBzcGFucyBtb3JlIHRoYW4gb25lIGRheS48L3A+CgoJPGgyIGlkPSJyZWN1ciI+ UmVjdXJyaW5nIGV2ZW50czwvaDI+CgoJPHA+SWYgeW91IGhhdmUgbm9taW5hdGVkIGEgZmll bGQgYXMgeW91ciA8Y29kZT5zdGVwZmllbGQ8L2NvZGU+IHlvdSBtYXkgZW50ZXIgYSBjb21t YS1zZXBhcmF0ZWQgbGlzdCBvZiBmcmVxdWVuY2llcyBhdCB3aGljaCB0aGUgZXZlbnQgaXMg dG8gcmVwZWF0LiBUaGUgZm9ybWF0IG9mIHRoZSByZXBldGl0aW9uIGlzIDxzdHJvbmc+bnVt YmVyIGludGVydmFsPC9zdHJvbmc+LCBlLmcuIDxjb2RlPjQgd2Vla3M8L2NvZGU+IG9yIDxj b2RlPjEwIGRheXM8L2NvZGU+IG9yIDxjb2RlPjYgbW9udGhzPC9jb2RlPi4gVGhlIHBsdWdp biB3aWxsIGRvIGl0cyBiZXN0IHRvIGZpZ3VyZSBvdXQgd2hhdCB5b3UgbWVhbi4gU2VlIDxh IGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90YXIvbWFudWFsL2h0bWxfbm9k ZS9EYXRlLWlucHV0LWZvcm1hdHMuaHRtbCI+ZGF0ZSBpbnB1dCBmb3JtYXRzPC9hPiBmb3Ig bW9yZS48L3A+CgoJPHA+QSBmZXcgcG9pbnRzOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPnNl Y29uZCB0dWVzZGF5PC9jb2RlPiB3aWxsIHNob3cgYW4gZXZlbnQgPGVtPmV2ZXJ5PC9lbT4g Mm5kIFR1ZXNkYXkgZnJvbSB0aGUgc3RhcnQgZGF0ZSAoaS5lLiBmb3J0bmlnaHRseSk8L2xp PgoJCTxsaT48Y29kZT5zZWNvbmQgdHVlc2RheSA/bW9udGggP3llYXI8L2NvZGU+IHdpbGwg c3Vic3RpdHV0ZSB0aGUgY3VycmVudCBtb250aCBhbmQgeWVhciBpbiBmaXJzdCwgYW5kIDxl bT50aGVuPC9lbT4gY2FsY3VsYXRlIHRoZSBkYXRlLCByZXN1bHRpbmcgaW4gdGhlIGV2ZW50 IG9ubHkgcmVjdXJyaW5nIG9uIHRoZSAybmQgVHVlc2RheSBvZiBlYWNoIG1vbnRoLiBZb3Ug PHN0cm9uZz5tdXN0PC9zdHJvbmc+IHVzZSBib3RoIDxjb2RlPj9tb250aDwvY29kZT4gYW5k IDxjb2RlPj95ZWFyPC9jb2RlPiBpZiB5b3UgY2hvb3NlIHRoaXMgdHlwZSBvZiBkYXRlIG9y IHlvdXIgZXZlbnQgd29uJiM4MjE3O3QgYXBwZWFyPC9saT4KCQk8bGk+PGNvZGU+MjAgP21v bnRoPC9jb2RlPiB3aWxsIHNob3cgdGhlIGV2ZW50IG9uIHRoZSAyMHRoIG9mIGV2ZXJ5IG1v bnRoPC9saT4KCQk8bGk+dGhpbmdzIGxpa2UgPGNvZGU+Zmlyc3QgdGh1cnNkYXk8L2NvZGU+ IG9yIDxjb2RlPmxhc3QgZnJpZGF5PC9jb2RlPiBkb24mIzgyMTc7dCBuZWVkIHRoZSA8Y29k ZT4/bW9udGg8L2NvZGU+IG9yIDxjb2RlPj95ZWFyPC9jb2RlPiBiZWNhdXNlIHRoZXkgY2Fu IDxlbT5vbmx5PC9lbT4gb2NjdXIgbW9udGhseSwgYW5kIHdpbGwgb25seSBzaG93IHRoZSBl dmVudCBvbiB0aGUgZ2l2ZW4gZmlyc3QvbGFzdCBkYXkgb2YgdGhlIG1vbnRoPC9saT4KCTwv dWw+CgoJPHA+SWYgeW91IGNhbiBmaW5kIGEgdXNlIGZvciBpdCwgeW91IG1heSBzcGVjaWZ5 IG11bHRpcGxlIGZyZXF1ZW5jaWVzLCBmb3IgZXhhbXBsZSA8Y29kZT4zIGRheXMsIDEgd2Vl azwvY29kZT4uIFRoYXQgbWVhbnMgeW91IHdvdWxkIHNlZSB0aGUgZXZlbnQgb24gdGhlIDFz dCBkYXksIHRoZW4gdGhlIDNyZCwgNnRoLCA3dGgsIDl0aCwgMTJ0aCwgMTR0aCwgMTV0aCwg MTh0aCwgMjFzdCwgMjR0aCYjODIzMDsgZGF5cyB0aGVyZWFmdGVyLiBOb3RlIHRoYXQgdGhl IGV2ZW50IG9ubHkgb2NjdXJzIG9uY2Ugb24gdGhlIDIxc3QgZGF5IGV2ZW4gdGhvdWdoIHRo ZSB0d28gZnJlcXVlbmNpZXMgY2xhc2guPC9wPgoKCTxwPlJlY3VyIHJ1bGVzOjwvcD4KCgk8 dWw+CgkJPGxpPlRoZSByZXBldGl0aW9uIHdpbGwgY29udGludWUgZm9yZXZlcjxzdXAgY2xh c3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm4xNTUwNTc0MzczNDk5MDRiNTQ4ZDliYyI+MTwv YT48L3N1cD4gdW5sZXNzIHlvdSBzcGVjaWZ5IGFuIGV4cGlyeSB0aW1lIHVuZGVyIHRoZSBh cnRpY2xlJiM4MjE3O3MgPGVtPk1vcmU8L2VtPiBhcmVhPC9saT4KCQk8bGk+VGhlIHZlcnkg Zmlyc3QgZXZlbnQgb2YgYSByZWN1cnJpbmcgc2V0IHdpbGwgYmUgZmxhZ2dlZCB3aXRoIDxj b2RlPnJlY3VyZmlyc3Q8L2NvZGU+PC9saT4KCQk8bGk+RWFjaCBmb2xsb3dpbmcgY2VsbCB0 aGF0IGNvbnRhaW5zIGEgcmVjdXJyaW5nIGV2ZW50IHdpbGwgYmUgZmxhZ2dlZCB3aXRoIDxj b2RlPnJlY3VyPC9jb2RlPjwvbGk+CgkJPGxpPkJvdGggZmxhZ3MgYXJlIGFwcGxpZWQgdG8g dGhlIGV2ZW50IGFzIGNsYXNzZXMgdXNpbmcgdGhlIGNsYXNzIHByZWZpeDwvbGk+CgkJPGxp PlJlcGVhdGVkIGV2ZW50cyBtYXkgYmUgPGEgaHJlZj0iI2NhbmNlbCI+Y2FuY2VsbGVkIG9y IG9taXR0ZWQ8L2E+IG9uIGEgcGVyLWRhdGUgYmFzaXM8L2xpPgoJPC91bD4KCgk8cCBjbGFz cz0ic21hbGwiIGlkPSJmbjE1NTA1NzQzNzM0OTkwNGI1NDhkOWJjIj48c3VwPjE8L3N1cD4g JiM4MjE2O2ZvcmV2ZXImIzgyMTc7IGlzIGxpbWl0ZWQgdG8gOTk5OTkgcmVjdXJyZW5jZXMg cGVyIGV2ZW50LCBvciAyNzQgeWVhcnMmIzgyMTc7IHdvcnRoIG9mIGRhaWx5IGV2ZW50cy4g RWl0aGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5VTklYPC9zcGFuPiB3aWxsIHJ1biBvdXQgb2Yg ZGF0ZXMgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gd2lsbCBydW4gb3V0IG9m IG1lbW9yeSBsb25nIGJlZm9yZSB5b3UgcmVhY2ggdGhpcyBsaW1pdCA6LSk8L3A+CgoJPGgy IGlkPSJtdWx0aSI+TXVsdGktZGF5IChzcGFubmVkKSBldmVudHM8L2gyPgoKCTxwPkFueSBl dmVudCB0aGF0IGhhczo8L3A+CgoJPHVsPgoJCTxsaT5hIHN0YXJ0IGRhdGU8L2xpPgoJCTxs aT5hbiBleHBpcnkgZGF0ZSB0aGF0IGlzIGEgZGF5IG9yIG1vcmUgbGF0ZXIgdGhhbiB0aGUg c3RhcnQgZGF0ZSwgYW5kPC9saT4KCQk8bGk+PGVtPmRvZXMgbm90PC9lbT4gaGF2ZSBhbnkg cmVwZXRpdGlvbiBpbiBpdHMgPGNvZGU+c3RlcGZpZWxkPC9jb2RlPjwvbGk+Cgk8L3VsPgoK CTxwPmlzIGZsYWdnZWQgYXMgYSA8Y29kZT5tdWx0aTwvY29kZT4uIEJ5IGRlZmF1bHQgdGhl IGZpcnN0IGV2ZW50IGlzIGRpc3BsYXllZCBpbiBmdWxsIGFuZCBlYWNoICYjODIxNjtjb250 aW51YXRpb24mIzgyMTc7IGV2ZW50IGlzIHNob3duIG9ubHkgYXMgYSByaWdodCBhcnJvdyBp biBzdWJzZXF1ZW50IGNlbGxzLiBFdmVudHMgbWF5IHNwYW4gbW9udGhzIG9yIHllYXJzIGFu ZCB0aGUgcGx1Z2luIGZpZ3VyZXMgZXZlcnl0aGluZyBvdXQgdXNpbmcgZmxhZyBydWxlczo8 L3A+CgoJPHVsPgoJCTxsaT5UaGUgZmlyc3QgY2VsbCBvZiBhIHNwYW5uZWQgc2V0IGlzIDxj b2RlPm11bHRpZmlyc3Q8L2NvZGU+PC9saT4KCQk8bGk+VGhlIGxhc3QgY2VsbCBpcyA8Y29k ZT5tdWx0aWxhc3Q8L2NvZGU+PC9saT4KCQk8bGk+RXZlcnkgb3RoZXIgY2VsbCBpcyBhIDxj b2RlPm11bHRpPC9jb2RlPiA8ZW0+ZXhjZXB0PC9lbT4gaWYgdGhlIGV2ZW50IHJvbGxzIG92 ZXIgaW50byB0aGUgbmV4dCBtb250aC4gSW4gdGhhdCBjYXNlLCB0aGUgZW50cnkgb24gdGhl IDFzdCBvZiB0aGUgbW9udGggaXMgYSA8Y29kZT5tdWx0aXByZXY8L2NvZGU+IHRvIGluZGlj YXRlIGl0IGJlbG9uZ3MgdG8gYSBwcmV2aW91cyBldmVudDwvbGk+CgkJPGxpPklmIHRoZSAx c3QgZGF5IG9mIHRoZSBtb250aCBpcyB0aGUgbGFzdCBkYXkgb2YgdGhlIGV2ZW50LCB0aGUg PGNvZGU+bXVsdGlwcmV2PC9jb2RlPiBpcyBkcm9wcGVkIGluIGZhdm91ciBvZiA8Y29kZT5t dWx0aWxhc3Q8L2NvZGU+PC9saT4KCTwvdWw+CgoJPHA+U3dpdGNoIG9mZiBzcGFubmluZyBj b21wbGV0ZWx5IHdpdGggPGNvZGU+c2hvd3NwYW5uZWQ9JnF1b3Q7MCZxdW90OzwvY29kZT4u IEV2ZW50cyB0aGF0IGhhdmUgYW4gZXhwaXJ5IGFyZSB0aGVuIGp1c3Qgc3RhbmRhcmQgZXZl bnRzLjwvcD4KCgk8cD4mIzgyMTY7Q29udGludWF0aW9uJiM4MjE3OyBjZWxscyBtYXkgYmUg cHJvY2Vzc2VkIHdpdGggYSBzZXBhcmF0ZSBmb3JtICg8Y29kZT5zcGFuZm9ybTwvY29kZT4p LiBJZiB5b3UgY2hvb3NlIG5vdCB0byB1c2UgYSA8Y29kZT5zcGFuZm9ybTwvY29kZT4sIHRo ZSBzdGFuZGFyZCA8Y29kZT5mb3JtPC9jb2RlPiBvciBjb250YWluZXIgd2lsbCBiZSB1c2Vk IGFuZCB5b3Ugd2lsbCBoYXZlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIGRpZmZlcmVu dCBtdWx0aSBmbGFncyB5b3Vyc2VsZiB1c2luZyB0aGUgPGEgaHJlZj0iI2lmY2FsIj5jb25k aXRpb25hbCB0YWc8L2E+LjwvcD4KCgk8cD5Zb3UgY2FuIGFsc28gPGEgaHJlZj0iI2NhbmNl bCI+Y2FuY2VsIG9yIG9taXQ8L2E+IGRheXMgb2YgYSBzcGFubmVkIGV2ZW50IGluIHRoZSBz YW1lIG1hbm5lciBhcyB5b3UgZG8gd2l0aCA8YSBocmVmPSIjcmVjdXIiPnJlY3VycmluZyBl dmVudHM8L2E+LCBleGNlcHQgeW91IGNhbm5vdCBjYW5jZWwgdGhlIGZpcnN0IGRheTsgeW91 IHNob3VsZCBtb3ZlIHRoZSBldmVudCBzdGFydCBkYXRlIGFuZCBhcG9sb2dpc2UhPC9wPgoK CTxoMiBpZD0iY2FuY2VsIj5DYW5jZWxsaW5nIGFuZCBvbWl0dGluZyBldmVudHM8L2gyPgoK CTxwPlBsYW5zIGNoYW5nZSBhbmQgeW91IG1heSBmaW5kIHRoYXQgYSBnaWcgaGFzIHRvIGJl IGNhbmNlbGxlZC4gUGVyaGFwcyB5b3UgYWR2ZXJ0aXNlIGEgd2Vla2x5IGJvb3QgZmFpciBi dXQgdGhlIGZpZWxkIGlzIHdhdGVybG9nZ2VkIG9uZSB3ZWVrLiBObyBwcm9ibGVtOiBub21p bmF0ZSBhIDxjb2RlPnNraXBmaWVsZDwvY29kZT4gaW4geW91ciA8Y29kZT5zbWRfY2FsZW5k YXI8L2NvZGU+IHRhZyBhbmQgZW50ZXIgdGhlIGRhdGUgb2YgdGhlIGNhbmNlbGxlZCBldmVu dC48L3A+CgoJPHA+T3IgeW91IG1pZ2h0IHJ1biBhIHRoZWF0cmUgd2ViIHNpdGUgdGhhdCBo YXMgYSB0aHJlZS13ZWVrIHByb2R1Y3Rpb24gcGVyZm9ybWFuY2Ugb24gd2Vla25pZ2h0cyBv bmx5LiBJbnN0ZWFkIG9mIHNldHRpbmcgdXAgdGhyZWUgc2VwYXJhdGUgZXZlbnRzICYjODIx Mjsgb25lIGZvciBlYWNoIHdlZWsgJiM4MjEyOyBub21pbmF0ZSBhbiA8Y29kZT5vbWl0Zmll bGQ8L2NvZGU+IGFuZCBsaXN0IHRoZSBkYXRlcyBvbiB3aGljaCB0aGUgcGVyZm9ybWFuY2Ug ZG9lcyBub3QgYWlyLiBPbWl0dGVkIGRhdGVzIHdpbGwgbm90LCB1bmRlciBhbnkgY2lyY3Vt c3RhbmNlcywgYXBwZWFyIG9uIHRoZSBjYWxlbmRhciBhbmQgdGhleSBvdmVycmlkZSBjYW5j ZWxsZWQgZGF0ZXMvaG9saWRheXMuIElmIDxjb2RlPmNlbGxwbHVzPC9jb2RlPiBtb2RlIGlz IHVzZWQsIHlvdSB3aWxsIGhvd2V2ZXIgc2VlIGEgY2VsbCBmbGFnIGxhYmVsbGVkIDxjb2Rl Pm9taXQ8L2NvZGU+IChwbHVzIGNsYXNzIHByZWZpeCkgaW4gY2FzZSB5b3UgZG8gd2lzaCB0 byBzdHlsZSBzdWNoIGNlbGxzLjwvcD4KCgk8cD5UbyBzcGVjaWZ5IHRoZSBkYXRlcyBpbiBl aXRoZXIgZmllbGQsIHVzZSBhbnkgYWNjZXB0YWJsZSBkYXRlIGZvcm1hdCwgYnV0IGRlcml2 YXRpdmVzIG9mIGRkLW1vbnRobmFtZS15eXl5IG9yIG1vbnRobmFtZS1kZC15eXl5IGFyZSB0 aGUgbW9zdCB1bmFtYmlndW91cyB0byBhdm9pZCBwcm9ibGVtcyAoZS5nLiBpcyA8Y29kZT4x LzU8L2NvZGU+IEphbiA1dGggb3IgTWF5IDFzdCkuIFlvdSBjYW4gc3BlY2lmeSBhcyBtYW55 IGNhbmNlbGxhdGlvbnMgb3Igb21pc3Npb25zIGFzIHlvdSBsaWtlOyBjb21tYS1zZXBhcmF0 ZSBlYWNoIG9uZS48L3A+CgoJPHA+QnkgZGVmYXVsdCwgY2FuY2VsbGVkIGV2ZW50cyB3aWxs IG5vdCBhcHBlYXIgb24gdGhlIGNhbGVuZGFyLiBJZiB5b3UgdXNlIDxjb2RlPnNob3dza2lw cGVkPSZxdW90OzEmcXVvdDs8L2NvZGU+IHRoZSBldmVudCB3aWxsIGFwcGVhciBpbiB0aGUg Y2VsbCBhcyBub3JtYWwgYW5kIHRoZSA8Y29kZT5jYW5jZWw8L2NvZGU+IGZsYWcgd2lsbCBh cHBseSB0byB0aGUgZXZlbnQgKGFuZCBjZWxsIGlmIHlvdSBjaG9vc2UpIHNvIHlvdSBtYXkg ZGV0ZWN0L3N0eWxlIGl0LjwvcD4KCgk8aDIgaWQ9ImV4dHJhIj5FeHRyYSBkYXRlczwvaDI+ CgoJPHA+V2hlbiBldmVudHMgYXJlIDxhIGhyZWY9IiNjYW5jZWwiPmNhbmNlbGxlZDwvYT4g eW91IG1heSBlbGVjdCB0byByZXNjaGVkdWxlIHRoZSBldmVudCBvbiBhIGRpZmZlcmVudCBk YXRlIGluc3RlYWQgb2YgaGF2aW5nIHRvIGNyZWF0ZSBhIG5ldyBldmVudCB3aXRoIGlkZW50 aWNhbCBkZXRhaWxzLiBVc2UgdGhlIDxjb2RlPmV4dHJhZmllbGQ8L2NvZGU+IHRvIHNpbXBs eSBhZGQgaXQgdG8gdGhlIGNhbGVuZGFyIG9uIGl0cyBuZXcgZGF5LiBZb3UgbWlnaHQgYWxz byB1c2UgdGhpcyBmZWF0dXJlIGlmIHlvdSBoYXZlIGEgPGEgaHJlZj0iI3JlY3VyIj5yZWN1 cnJpbmc8L2E+IGV2ZW50IG9uIHRoZSAxc3Qgb2YgZXZlcnkgbW9udGggYnV0IGZvciBzb21l IHJlYXNvbiB5b3UgaGF2ZSB0byBtb3ZlIG9uZSBvZiB0aGUgZXZlbnRzIGEgZGF5IG9yIHR3 by4gU2ltcGx5IGNhbmNlbCB0aGUgb2ZmZW5kaW5nIGRhdGUgYW5kIGFkZCB0aGUgbmV3IGRh dGUgdXNpbmcgPGNvZGU+ZXh0cmFmaWVsZDwvY29kZT4uPC9wPgoKCTxwPlRoZSBsaXN0IG9m IGRhdGVzIGNhbiBiZSBpbiBhbnkgc3RhbmRhcmQgZGF0ZSBmb3JtYXQuIFRoZXkgd2lsbCBi ZSBhZGRlZCB0byB0aGUgY2FsZW5kYXIgYW5kIGZsYWdnZWQgYXMgPGNvZGU+ZXh0cmE8L2Nv ZGU+LiBBbHNvIHNlZSB0aGUgPGNvZGU+ZXh0cmFzdHJpY3Q8L2NvZGU+IGF0dHJpYnV0ZS48 L3A+CgoJPHA+SWYgeW91ciBvcmlnaW5hbCBldmVudCBzcGFucyBtb3JlIHRoYW4gb25lIGRh eSwgeW91IG1heSBlbGVjdCB0byBzY2hlZHVsZSB0aGUgZW50aXJlIGJsb2NrIGFnYWluLiBB ZGQgYSAmIzgyMTY7KyYjODIxNzsgYWZ0ZXIgYW55IGRhdGUgeW91IHdpc2ggdG8gcmVwZWF0 IGluIGl0cyBlbnRpcmV0eSwgZS5nLiA8Y29kZT4yMDA5LU1hci0xMissIDIwMDktSnVuLTE4 KywgMjAwOS1GZWItMTk8L2NvZGU+IHdvdWxkIGNvcHkgdGhlIGVudGlyZSBldmVudCBibG9j ayB0byBNYXJjaCBhbmQgSnVuZSwgYnV0IG9ubHkgdGhlIDFzdCBkYXRlIHRvIEZlYiAxOXRo LiBFdmVudHMvY2VsbHMgYXJlIGZsYWdnZWQgYXMgYm90aCA8Y29kZT5leHRyYTwvY29kZT4g YW5kIDxjb2RlPm11bHRpPC9jb2RlPiB3aGVyZSBhcHBsaWNhYmxlLjwvcD4KCgk8cD5Ob3Rl IHRoYXQgaWYgeW91IHNjaGVkdWxlIGFuIGV4dHJhIGV2ZW50IG9uIGEgZGF5IHRoYXQgYWxy ZWFkeSBjb250YWlucyB0aGUgc2FtZSBldmVudCAocGVyaGFwcyBvbiBhIHNwYW5uZWQgb3Ig cmVjdXJyaW5nIGRhdGUpIHlvdSBtYXkgc2VlIHR3byBpZGVudGljYWwgZXZlbnRzIG9uIHRo ZSBzYW1lIGRheS4gQm90dG9tIGxpbmU6IGRvbiYjODIxNzt0IGRvIGl0ITwvcD4KCgk8aDIg aWQ9ImhvbGlkYXlzIj5Ib2xpZGF5czwvaDI+CgoJPHA+UHVibGljIGhvbGlkYXlzIG5lZWQg bm90IGJlIGEgbnVpc2FuY2UgdG8geW91ciBldmVudHMuIEdpdmUgdGhlIHBsdWdpbiBhIGhv bGlkYXkgbGlzdCBhbmQgaXQmIzgyMTc7bGwgbWFrZSBzdXJlIGFueSByZWN1cnJpbmcgb3Ig bXVsdGkgZXZlbnRzIGFyZSBub3Qgc2NoZWR1bGVkIG9uIHRob3NlIGRheXMuIDxhIGhyZWY9 IiNldmVudHMiPlN0YW5kYXJkPC9hPiBvbmUtb2ZmIGV2ZW50cyBhcmUgcGVybWl0dGVkIGJ5 IGRlZmF1bHQgYmVjYXVzZSB5b3UgbWlnaHQgd2FudCB0byBvcmdhbmlzZSBhIHNwZWNpYWwg ZXZlbnQgb24gdGhhdCBkYXksIHRob3VnaCB5b3UgY2FuIGZvcmJpZCB0aG9zZSB0b28gaWYg eW91IHdpc2guPC9wPgoKCTxwPlRoZSBsaXN0IG9mIGRhdGVzIHlvdSBzcGVjaWZ5IGNhbiBi ZSBlbnRlcmVkIGRpcmVjdGx5IGluIGEgc3RyaW5nIGluIHRoZSA8Y29kZT5ob2xpZGF5czwv Y29kZT4gYXR0cmlidXRlIG9yIGluIGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0Ozwv Y29kZT46PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDp2YXJpYWJsZSBuYW1lPSZxdW90O25hdF9ob2xzJnF1b3Q7CiAgICAgdmFsdWU9JnF1 b3Q7RGVjIDI1LCAyNiBEZWMsIDMxL0RlYywgSmFuLTEsCiAgICAgICAgTWF5IDQgMjAwOSwg MjAwOS0wOC0zMSZxdW90OyAvJmd0OwombHQ7dHhwOnNtZF9jYWxlbmRhciBob2xpZGF5cz0m cXVvdDt0eHB2YXI6bmF0X2hvbHMmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkFs bCBkb25lISBUaGF0IGxpc3Qgc2hvd3Mgc29tZSBvZiB0aGUgdmFyaWV0eSBhbmQgYnJlYWR0 aCBvZiBmb3JtYXRzIHRoZSBwbHVnaW4gYWxsb3dzLiBUaGVyZSBhcmUgbW9yZS4gTm90ZSB0 aGF0IHRoZSBldmVudHMgd2l0aG91dCBhIHllYXIgb2NjdXIgb24gdGhlIHNhbWUgZGF0ZSBl dmVyeSB5ZWFyLCB3aGVyZWFzIHRoZSBvbmVzIHdpdGggYSB5ZWFyIHdpbGwgb25seSBvY2N1 ciBvbiB0aGF0IHNwZWNpZmljIGRhdGUuPC9wPgoKCTxwPk9uY2UgeW91ciBkYXRlcyBhcmUg ZGVmaW5lZCB5b3UgY2FuIGNvbnRyb2wgd2hpY2ggZXZlbnRzIGFyZSBhbGxvd2VkIHRvIGZh bGwgb24gdGhvc2UgZGF0ZXMgdmlhIDxjb2RlPmhvbGlkYXlmbGFnczwvY29kZT4uIENvbWJp bmluZyB0aGF0IGF0dHJpYnV0ZSwgPGNvZGU+c2hvd3NwYW5uZWQ8L2NvZGU+LCA8Y29kZT5z aG93c2tpcHBlZDwvY29kZT4gYW5kIHRoZSBmb3JtcyAmIzgyMTI7IGFsb25nIHdpdGggdGhl IGNvbmRpdGlvbmFsIHRhZyAmIzgyMTI7IGNhbiBnaXZlIGEgd2lkZSB2YXJpZXR5IG9mIHdh eXMgdG8gZGlzcGxheSBldmVudHMgYW5kIGNlbGxzLjwvcD4KCgk8cD5Ib2xpZGF5IGNlbGxz IGFyZSBnaXZlbiB0aGUgZmxhZyA8Y29kZT5ob2xzPC9jb2RlPiwgYW5kIGFueSBldmVudCB0 aGF0IGlzIG5vdCBzcGVjaWZpY2FsbHkgcGVybWl0dGVkIGJ5IHRoZSA8Y29kZT5ob2xpZGF5 ZmxhZ3M8L2NvZGU+IGlzIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgYSA8Y29kZT5jYW5jZWw8 L2NvZGU+IGZsYWcgaWYgaXQgZmFsbHMgb24gb25lIG9mIHRoZSBkYXlzLiBPbWl0dGVkIGRh dGVzIHdpbGwsIGhvd2V2ZXIsIGNhdXNlIHRoZSA8Y29kZT5jYW5jZWw8L2NvZGU+IGZsYWcg dG8gYmUgcmVtb3ZlZC48L3A+CgoJPGgyIGlkPSJzbWRjYWwiPjxjb2RlPiZsdDt0eHA6c21k X2NhbGVuZGFyIC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+UHV0IHRoaXMgdGFnIHdoZXJldmVy IHlvdSB3YW50IHlvdXIgY2FsZW5kYXIgdG8gYXBwZWFyLiBVc2UgdGhlIGZvbGxvd2luZyBh dHRyaWJ1dGVzIHRvIGNvbnRyb2wgaXRzIG91dHB1dCBkaXNwbGF5IGFuZCB1c2UgdGhlIDxh IGhyZWY9IiNhdHRzdHlsZXMiPnN0eWxlIGF0dHJpYnV0ZXM8L2E+IHRvIGRldGVybWluZSBo b3cgdG8gYXBwbHkgc3R5bGVzIHRvIHRoZSB2YXJpb3VzIGV2ZW50cyBhbmQgY2VsbHMuPC9w PgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5NYWluIGF0dHJpYnV0ZXM8 L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNpemU8L3NwYW4+IDogY2Fs ZW5kYXIgc2l6ZSwgPGNvZGU+bGFyZ2U8L2NvZGU+IG9yIDxjb2RlPnNtYWxsPC9jb2RlPi4g VGhlIHNtYWxsIGlzIG1vcmUgZ2VhcmVkIHRvd2FyZHMgYSBtaW5pY2FsLCBhbHRob3VnaCBm dW5jdGlvbmFsbHkgdGhlcmUgPGEgaHJlZj0iI3NpemVkaWZmIj5pc24mIzgyMTc7dCBtdWNo IGJldHdlZW4gdGhlbTwvYT4uIERlZmF1bHQ6IDxjb2RlPmxhcmdlPC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aW1lPC9zcGFuPiA6IHNob3cgPGNvZGU+cGFzdDwv Y29kZT4sIDxjb2RlPmZ1dHVyZTwvY29kZT4sIG9yIDxjb2RlPmFueTwvY29kZT4gZXZlbnQu IERlZmF1bHQ6IDxjb2RlPmFueTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+ZXhwaXJlZDwvc3Bhbj4gOiBoaWRlICg8Y29kZT4wPC9jb2RlPikgb3Igc2hvdyAoPGNv ZGU+MTwvY29kZT4pIGV4cGlyZWQgZXZlbnRzLiBMZWF2ZSBibGFuayB0byB1c2UgdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkdmFuY2VkIFByZWZlcmVuY2UgJiM4MjE2 O1B1Ymxpc2ggZXhwaXJlZCBhcnRpY2xlcyYjODIxNzs8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+Zmlyc3RkYXk8L3NwYW4+IDogdGhlIDFzdCBkYXkgb2YgdGhlIHdlZWsgdG8g c2hvdyBpbiB0aGUgY2FsZW5kYXIuIDA9U3VuZGF5LCAxPU1vbmRheSAmIzgyMzA7IDY9U2F0 dXJkYXkuIERlZmF1bHQ6IDA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGF5Zm9y bWF0PC9zcGFuPiA6IHRoZSB3YXkgaW4gd2hpY2ggdGhlIGRheSBuYW1lcyBhcmUgcmVuZGVy ZWQuIDxjb2RlPkFCQlI8L2NvZGU+ICh0aGUgZGVmYXVsdCkgc2hvd3MgdGhlIGRheXMgYXMg TW9uLCBUdWUsIFdlZCwgZXRjIG9yIDxjb2RlPkZVTEw8L2NvZGU+IHJlbmRlcnMgdGhlaXIg ZnVsbCBuYW1lcy4gQWx0ZXJuYXRpdmVseSwgc3VwcGx5IGFueSB2YWxpZCA8YSBocmVmPSJo dHRwOi8vdWsyLnBocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCk8L2E+IGNvZGVzIHRvIHVz ZSB0aGF0IGluc3RlYWQuIExvY2FsZS1zcGVjaWZpYyBuYW1lcyBhcmUgcmV0dXJuZWQuPGRp diBjbGFzcz0iYnJlYWsiPllvdSBjYW4gaGFyZC1jb2RlIHlvdXIgb3duIGRheSBuYW1lczsg d3JpdGUgZWFjaCBpdGVtIGFzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgc3Vycm91bmRlZCBi eSA8Y29kZT57fTwvY29kZT4gYnJhY2tldHMuIElmIHlvdSB3YW50ZWQgdHdvLWxldHRlciBH ZXJtYW4gd2VlayBkYXlzIHlvdSBjb3VsZCB1c2U6IDxjb2RlPmRheWZvcm1hdD0mcXVvdDt7 U28sTW8sRGksTWksRG8sRnIsU2F9JnF1b3Q7PC9jb2RlPi4gVGhlIGZpcnN0IGRheSBpbiB0 aGUgbGlzdCA8c3Ryb25nPm11c3Q8L3N0cm9uZz4gcmVwcmVzZW50IFN1bmRheSBvciB0aGlu Z3Mgd2lsbCBicmVhazwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tb250 aGZvcm1hdDwvc3Bhbj4gOiB0aGUgd2F5IGluIHdoaWNoIHRoZSBtb250aCBuYW1lcyBhcmUg cmVuZGVyZWQuIDxjb2RlPkZVTEw8L2NvZGU+ICh0aGUgZGVmYXVsdCkgc2hvd3MgdGhlIGZ1 bGwgbW9udGggbmFtZXMgb3IgPGNvZGU+QUJCUjwvY29kZT4gcmVuZGVycyB0aGVpciBhYmJy ZXZpYXRlZCBuYW1lcy4gQWx0ZXJuYXRpdmVseSwgc3VwcGx5IGFueSB2YWxpZCA8YSBocmVm PSJodHRwOi8vdWsyLnBocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCk8L2E+IGNvZGVzIHRv IHVzZSB0aGF0IGluc3RlYWQuIExvY2FsZS1zcGVjaWZpYyBuYW1lcyBhcmUgcmV0dXJuZWQu PGRpdiBjbGFzcz0iYnJlYWsiPllvdSBjYW4gaGFyZC1jb2RlIHlvdXIgb3duIG1vbnRoIG5h bWVzOyB3cml0ZSBlYWNoIGl0ZW0gYXMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBzdXJyb3Vu ZGVkIGJ5IDxjb2RlPnt9PC9jb2RlPiBicmFja2V0cy4gSWYgeW91IHdhbnRlZCBzaW5nbGUt bGV0dGVyIG1vbnRoIG5hbWVzIHlvdSBjb3VsZCB1c2U6IDxjb2RlPm1vbnRoZm9ybWF0PSZx dW90O3tKLEYsTSxBLE0sSixKLEEsUyxPLE4sRH0mcXVvdDs8L2NvZGU+LiBUaGUgZmlyc3Qg bW9udGggaW4gdGhlIGxpc3QgPHN0cm9uZz5tdXN0PC9zdHJvbmc+IHJlcHJlc2VudCBKYW51 YXJ5IG9yIHRoaW5ncyB3aWxsIGJyZWFrPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnNlbGVjdDwvc3Bhbj4gOiB1c2UgYSBzZWxlY3QgZHJvcGRvd24gZm9yIHJhcGlk IGFjY2VzcyB0byB3ZWVrcywgbW9udGhzIG9yIHllYXJzIGluc3RlYWQgb2Ygc2VlaW5nIGp1 c3QgdGhlIG5hbWVzLiBEZWZhdWx0OiB1bnNldCwgYnV0IHlvdSBtYXkgbWFrZSBhIChjb21t YS1zZXBhcmF0ZWQpIGxpc3QgZnJvbSBlaXRoZXIgPGNvZGU+d2VlazwvY29kZT4gLyA8Y29k ZT5tb250aDwvY29kZT4gb3IgPGNvZGU+eWVhcjwvY29kZT4gKHdlZWsgYW5kIG1vbnRoIGFy ZSBtdXR1YWxseSBleGNsdXNpdmUpLjxkaXYgY2xhc3M9ImJyZWFrIj5Zb3UgbWF5IGFsc28g c3BlY2lmeSB1cCB0byB0d28gZXh0cmEgYXJndW1lbnRzLCBzZXBhcmF0ZWQgYnkgPGNvZGU+ OjwvY29kZT4gY2hhcnMuIFRoZXNlIGFkZCB0ZXh0IGluIGZyb250IG9mIGFuZCBiZWhpbmQg dGhlIHdlZWsvbW9udGgveWVhciwgcmVzcGVjdGl2ZWx5LiBGb3IgZXhhbXBsZTogPGNvZGU+ c2VsZWN0PSZxdW90O3dlZWs6V0VFSyMsIHllYXI6Jmx0OzomZ3Q7JnF1b3Q7PC9jb2RlPiB3 b3VsZCByZW5kZXIgYSBzZWxlY3QgbGlzdCB3aXRoIGVudHJpZXMgdGhhdCBtaWdodCBsb29r IGxpa2UgdGhpczogPGNvZGU+V0VFSyMxNSAmbHQ7MjAwOSZndDs8L2NvZGU+PC9kaXY+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNlbGVjdGJ0bjwvc3Bhbj4gOiBieSBkZWZh dWx0LCB0aGUgc2VsZWN0IGRyb3Bkb3ducyB3aWxsIGF1dG8tc3VibWl0IHdoZW4gdGhleSBh cmUgY2hhbmdlZC4gSWYgeW91IHByZWZlciBhIGRlZGljYXRlZCBzdWJtaXQgYnV0dG9uLCBn aXZlIHRoZSB0ZXh0IHlvdSB3aXNoIHRvIGFwcGVhciBvbiB0aGUgYnV0dG9uIGhlcmUuIFRo ZSBidXR0b24gaGFzIGEgZml4ZWQgY2xhc3Mgb2YgPGNvZGU+c21kX2NhbF9pbnB1dDwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aXNvd2Vla3M8L3NwYW4+IDogc2hv dyA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIG51bWJlcnMgYXMgYSBjb2x1 bW4gYXQgdGhlIHN0YXJ0IG9mIHRoZSBjYWxlbmRhci4gQW55IHRleHQgaW4gdGhpcyBhdHRy aWJ1dGUgZW5hYmxlcyB0aGUgZmVhdHVyZSwgYW5kIGJlY29tZXMgdGhlIGhlYWRpbmcgb2Yg dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsgY29sdW1uLiBZb3UgbWF5 IGNoYW5nZSB0aGUgZGVmYXVsdCB3ZWVrIG51bWJlciBpbiBlYWNoIGNlbGwgYnkgYWRkaW5n IGEgY29tbWEgYW5kIHNvbWUgdGV4dDsgd2hhdGV2ZXIgeW91IGVudGVyIHdpbGwgYmUgcHV0 IGluIGVhY2ggPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2VlayBjZWxsLiBVc2Ug dGhlIHJlcGxhY2VtZW50IGNvZGVzIDxjb2RlPnt3ZWVrfTwvY29kZT4sIDxjb2RlPnttb250 aH08L2NvZGU+LCA8Y29kZT57eWVhcn08L2NvZGU+IG9yIDxjb2RlPntpc295ZWFyfTwvY29k ZT4gaW4geW91ciBtYXJrdXAgdG8gaW5zZXJ0IHRoZSByZWxldmFudCBpbmZvLiA8ZGl2IGNs YXNzPSJicmVhayI+RXhhbXBsZTogPGNvZGU+aXNvd2Vla3M9JnF1b3Q7d2ssICN7d2Vla30m cXVvdDs8L2NvZGU+IHdpbGwgcmVuZGVyICYjODIxNjt3ayYjODIxNzsgYXQgdGhlIHRvcCBv ZiB0aGUgY29sdW1uIGFuZCBzb21ldGhpbmcgbGlrZSA8Y29kZT4jMjQ8L2NvZGU+LCA8Y29k ZT4jMjU8L2NvZGU+LCA8Y29kZT4jMjY8L2NvZGU+JiM4MjMwOyBiZW5lYXRoIGl0LiBJZiB0 aGUgZmlyc3QgaXRlbSBpcyBvbWl0dGVkLCB0aGVyZSB3aWxsIGJlIG5vIGNvbHVtbiBoZWFk aW5nLjwvZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5Ob3RlIHRoYXQgaWYgdGhpcyBmZWF0dXJl IGlzIGVuYWJsZWQsIDxjb2RlPmZpcnN0ZGF5PC9jb2RlPiB3aWxsIGJlIGZvcmNlZCB0byBz dGFydCBvbiBhIE1vbmRheSBhcyBnb3Zlcm5lZCBieSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMi PklTTzwvc3Bhbj4gc3BlY2lmaWNhdGlvbi4gRGVmYXVsdDogdW5zZXQ8L2Rpdj48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RhdHVzPC9zcGFuPiA6IGV2ZW50cyBpbiB0aGlz IGxpc3Qgb2Ygc3RhdHVzIGFyZSBwdWJsaXNoZWQuIERlZmF1bHQ6IDxjb2RlPmxpdmU8L2Nv ZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNhdGVnb3J5PC9zcGFuPiA6IGZp bHRlciBldmVudHMgYnkgdGhpcyBsaXN0IG9mIGNhdGVnb3JpZXMuIERlZmF1bHQ6IHVuc2V0 PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNlY3Rpb248L3NwYW4+IDogZmlsdGVy IGV2ZW50cyBieSB0aGlzIGxpc3Qgb2Ygc2VjdGlvbnMuIERlZmF1bHQ6IHVuc2V0PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmF1dGhvcjwvc3Bhbj4gOiBmaWx0ZXIgZXZlbnRz IGJ5IHRoaXMgbGlzdCBvZiBhdXRob3IgbG9naW4gbmFtZXMuIERlZmF1bHQ6IHVuc2V0PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnJlYWxuYW1lPC9zcGFuPiA6IGZpbHRlciBl dmVudHMgYnkgdGhpcyBsaXN0IG9mIGF1dGhvciBSZWFsIE5hbWVzIChub3RlOiBhZGRzIG9u ZSBleHRyYSBxdWVyeSkuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnNob3dhbGw8L3NwYW4+IDogaWYgeW91ciBjYWxlbmRhciBhcHBlYXJzIG9uIHRo ZSBmcm9udCBwYWdlIGFuZCB5b3UgaGF2ZSA8ZW0+bm90PC9lbT4gdXNlZCB0aGUgPGNvZGU+ c2VjdGlvbjwvY29kZT4gYXR0cmlidXRlIHRoZSBjYWxlbmRhciBvbmx5IHNob3dzIGV2ZW50 cyBmcm9tIHNlY3Rpb25zIHRoYXQgaGF2ZSB0aGVpciA8Y29kZT5PbiBmcm9udCBwYWdlPC9j b2RlPiByYWRpbyBidXR0b24gc2V0LiBVc2UgPGNvZGU+c2hvd2FsbD0mcXVvdDsxJnF1b3Q7 PC9jb2RlPiB0byBzaG93IGFsbCBldmVudHMgZnJvbSBhbGwgc2VjdGlvbnMgb24gZnJvbnQg cGFnZSBjYWxlbmRhcnM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aWQ8L3NwYW4+ IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBJRCB0byBhcHBseSB0byB0 aGUgdGFibGUgdGhhdCBob2xkcyB0aGUgY2FsZW5kYXIuIFRoaXMgaXMgdGhlIHZhbHVlIG9m IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSA8Y29kZT5jYWxp ZDwvY29kZT4gYW5kIGl0cyBkZWZhdWx0IGlzIHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPm5hdmlkPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwv c3Bhbj4gSUQgdG8gYXBwbHkgdG8gdGhlIHByZXYvbmV4dC9tb250aC95ZWFyIG5hdmlnYXRp b24gZm9ybS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ bmF2YXJyb3c8L3NwYW4+IDogY29tbWEtc2VwYXJhdGVkIHBhaXIgb2YgaXRlbXMgeW91IHdh bnQgdG8gYXBwZWFyIGFzIHByZXYvbmV4dCBhcnJvd3MgaW4gdGhlIGNhbGVuZGFyLiBEZWZh dWx0OiA8Y29kZT4mYW1wOyM2MDssICZhbXA7IzYyOzwvY29kZT48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+bW9udGg8L3NwYW4+IDogc3RhcnQgdGhlIGNhbGVuZGFyIG9uIHRo aXMgbW9udGggZnJvbSAxIChKYW51YXJ5KSB0byAxMiAoRGVjZW1iZXIpLiBOb3JtYWwgY2Fs ZW5kYXIgbmF2aWdhdGlvbiBvdmVycmlkZXMgdGhpcyB2YWx1ZS4gSWYgPGNvZGU+c3RhdGlj PC9jb2RlPiBpcyB1c2VkLCB0aGlzIG1vbnRoIGJlY29tZXMgdGhlIG9ubHkgb25lIHlvdSBt YXkgdmlldy4gSWYgdW5zZXQsIGFuZCBubyA8Y29kZT5tPTwvY29kZT4gdmFsdWUgYXBwZWFy cyBvbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluZSwgdGhlIGN1cnJl bnQgbW9udGggaXMgdXNlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53ZWVrPC9z cGFuPiA6IHN0YXJ0IHRoZSBjYWxlbmRhciBkdXJpbmcgdGhlIG1vbnRoIGNvbnRhaW5pbmcg dGhpcyA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIChmcm9tIDEgdG8gNTMp LiBJZ25vcmVkIGlmIDxjb2RlPnN0YXRpYzwvY29kZT4gb3Igb25lIG9mIHRoZSBjYWxlbmRh ciBuYXZpZ2F0aW9uIGNvbnRyb2xzIGlzIHVzZWQuIElmIGEgPGNvZGU+dz08L2NvZGU+IHZh bHVlIGFwcGVhcnMgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUs IHRoZSBnaXZlbiB3ZWVrIG92ZXJyaWRlcyBhbnkgbW9udGggdmFsdWU8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+eWVhcjwvc3Bhbj4gOiBzdGFydCB0aGUgY2FsZW5kYXIgYXQg dGhpcyA0LWRpZ2l0IHllYXIuIE5vcm1hbCBjYWxlbmRhciBuYXZpZ2F0aW9uIG92ZXJyaWRl cyB0aGlzIHZhbHVlLiBJZiA8Y29kZT5zdGF0aWM8L2NvZGU+IGlzIHVzZWQsIHRoaXMgeWVh ciBiZWNvbWVzIHRoZSBvbmx5IG9uZSB5b3UgbWF5IHZpZXcuIElmIHVuc2V0LCBhbmQgbm8g PGNvZGU+eT08L2NvZGU+IHZhbHVlIGFwcGVhcnMgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5VUkw8L3NwYW4+IGxpbmUsIHRoZSBjdXJyZW50IHllYXIgaXMgdXNlZDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj55ZWFyd2lkdGg8L3NwYW4+IDogYSBjb21tYS1zZXBhcmF0 ZWQgbGlzdCB0aGF0IHNwZWNpZmllcyBob3cgbWFueSB5ZWFycyB5b3VyIGNhbGVuZGFyIHNw YW5zLiBUaGUgZGVmYXVsdCAoMCkgdXNlcyB0aGUgZWFybGllc3QgKHBvc3RlZCkgZXZlbnQg aW4gdGhlIHNlY3Rpb24gYXMgdGhlIGVhcmxpZXN0IHllYXIsIGFuZCB0aGUgbGF0ZXN0ICht b2RpZmllZCBvciBwb3N0ZWQsIHdoaWNoZXZlciBpcyBncmVhdGVyKSBldmVudCBhcyB0aGUg bGF0ZXN0IHllYXIuIFlvdSB3aWxsIG5vdCBiZSBwZXJtaXR0ZWQgdG8gbmF2aWdhdGUgdGhl IGNhbGVuZGFyIG91dHNpZGUgdGhpcyByYW5nZS48ZGl2IGNsYXNzPSJicmVhayI+VG8gd2lk ZW4gdGhlIHJhbmdlLCBzcGVjaWZ5IHNvbWUgdmFsdWVzLCBmb3IgZXhhbXBsZSA8Y29kZT55 ZWFyd2lkdGg9JnF1b3Q7Miw0JnF1b3Q7PC9jb2RlPiB3aWxsIHN1YnRyYWN0IDIgd2hvbGUg eWVhcnMgZnJvbSB0aGUgZWFybGllc3QgZXZlbnQgYW5kIGFkZCA0IHdob2xlIHllYXJzIHRv IHRoZSBsYXRlc3QgZXZlbnQuIElmIHlvdSBzcGVjaWZ5IGEgc2luZ2xlIG51bWJlciwgdGhh dCB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSByYW5nZSBlcXVhbGx5IGluIGJv dGggZGlyZWN0aW9ucy48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+IElmIHlvdSBhZGQgJiM4 MjE2O2MmIzgyMTc7IHRvIGVpdGhlciB2YWx1ZSB0aGUgY3VycmVudCB5ZWFyIGlzIHVzZWQg aW5zdGVhZCBvZiB0aGUgZWFybGllc3Qgb3IgbGF0ZXN0IGV2ZW50LCBlLmcuIDxjb2RlPnll YXJ3aWR0aD0mcXVvdDsyLDRjJnF1b3Q7PC9jb2RlPiB3aWxsIHN1YnRyYWN0IDIgeWVhcnMg ZnJvbSB0aGUgZWFybGllc3QgZXZlbnQgYW5kIGFkZCA0IHdob2xlIHllYXJzIHRvIHRvZGF5 JiM4MjE3O3MgZGF0ZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5yZW1h cDwvc3Bhbj4gOiB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBjYWxlbmRhcnMgb24gYSBw YWdlIGl0IGlzIG9mdGVuIGJlbmVmaWNpYWwgdG8gdXNlIGRpZmZlcmVudCBuYW1lcyBmb3Ig PGNvZGU+dz08L2NvZGU+LCA8Y29kZT5tPTwvY29kZT4gb3IgPGNvZGU+eT08L2NvZGU+IGlu IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBzbyB5b3UgY2FuIG5hdmlnYXRl IGNhbGVuZGFycyBpbmRpdmlkdWFsbHkuIFJlbmFtZSB0aGUgdywgbSwgJmFtcDsgeSB2YXJp YWJsZXMsIGZvciBleGFtcGxlOiA8Y29kZT5yZW1hcD0mcXVvdDt3OndrLCB5OnlyJnF1b3Q7 PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHVz ZSB0aGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdG8gcHJvY2VzcyBl YWNoIGV2ZW50LiBJZiB0aGUgY2FsZW5kYXIgdGFnIGlzIHVzZWQgYXMgYSBjb250YWluZXIg aXQgd2lsbCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlIGZvcm0uIElmIG5laXRoZXIg YXJlIHVzZWQsIGEgZGVmYXVsdCBpcyB1c2VkIChMYXJnZTogaHlwZXJsaW5rZWQgYXJ0aWNs ZSB0aXRsZSwgU21hbGw6IGVtcHR5IGV2ZW50KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5zcGFuZm9ybTwvc3Bhbj4gOiByZW5kZXIgc3Bhbm5lZCBldmVudHMgZGlmZmVyZW50 bHkgdG8gc3RhbmRhcmQgZXZlbnRzOyB0aGV5IHVzdWFsbHkgdXNlIHRoZSBzYW1lIDxjb2Rl PmZvcm08L2NvZGU+L2NvbnRhaW5lci4gSWYgbmVpdGhlciBhcmUgc3BlY2lmaWVkLCBhIHJp Z2h0LWFycm93IHdpbGwgYmUgdXNlZCB0byBpbmRpY2F0ZSBjb250aW51YXRpb24gb2YgdGhl IHByZXZpb3VzIGRheSYjODIxNztzIGV2ZW50LiBOb3RlIHRoZSBmaXJzdCBkYXkgb2YgYSBz cGFubmVkIHNldCBpcyA8ZW0+bm90PC9lbT4gcGFzc2VkIHRvIHRoZSA8Y29kZT5zcGFuZm9y bTwvY29kZT47IG9ubHkgY29udGludWF0aW9uIGNlbGxzIGFyZSBwYXNzZWQgdG8gaXQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cmVjdXJmb3JtPC9zcGFuPiA6IHJlbmRlciBy ZWN1cnJpbmcgZXZlbnRzIGRpZmZlcmVudGx5IHRvIHN0YW5kYXJkIGV2ZW50cy4gVGhlIGZp cnN0IGV2ZW50IG9mIGEgcmVjdXJyaW5nIHNldCBpcyA8ZW0+bm90PC9lbT4gcGFzc2VkIHRv IDxjb2RlPnJlY3VyZm9ybTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ Y2VsbGZvcm08L3NwYW4+ICg8c3BhbiBjbGFzcz0icmVxdWlyZWQiPm9ubHkgb24gbGFyZ2Ug Y2FsZW5kYXJzPC9zcGFuPikgOiB1c2UgdGhpcyBpZiB5b3Ugd2lzaCB0byBidWlsZCBlYWNo IGNlbGwgZW50aXJlbHkgZnJvbSBzY3JhdGNoLiBUaGVyZSBhcmUgc29tZSA8YSBocmVmPSIj Y2VsbGZvcm0iPnJlcGxhY2VtZW50IHZhcmlhYmxlczwvYT4geW91IGNhbiB1c2UgdG8gaW5z ZXJ0IGR5bmFtaWMgcGllY2VzIG9mIGluZm9ybWF0aW9uIGluIHlvdXIgY2VsbHM8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RlcGZpZWxkPC9zcGFuPiA6IHRoZSBJRCBvZiBh IGZpZWxkIHdpdGhpbiB3aGljaCBhbiBldmVudCBtYXkgYmUgdG9sZCB0byByZXBlYXQuIE5v dGUgaXQgaXMgdGhlIGZpZWxkJiM4MjE3O3MgSUQgPGVtPm5vdCBpdHMgbmFtZTwvZW0+LCBz byBmb3IgY3VzdG9tIGZpZWxkcyB5b3UgbXVzdCB1c2UgPGNvZGU+Y3VzdG9tXzE8L2NvZGU+ IG9yIDxjb2RlPmN1c3RvbV8yPC9jb2RlPiBldGMuIFdpdGhvdXQgdGhpcyBhdHRyaWJ1dGUs IG5vIDxhIGhyZWY9IiNyZWN1ciI+cmVjdXJyaW5nIGV2ZW50czwvYT4gbWF5IGJlIGRlZmlu ZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b21pdGZpZWxkPC9zcGFuPiA6IHRo ZSBJRCAobm90IG5hbWUpIG9mIGEgZmllbGQgdGhhdCBjb250YWlucyBhIGxpc3Qgb2YgZGF0 ZXMgb24gd2hpY2ggdGhpcyBldmVudCBpcyB0byBiZSA8YSBocmVmPSIjY2FuY2VsIj5vbWl0 dGVkPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5za2lwZmllbGQ8L3NwYW4+ IDogdGhlIElEIChub3QgbmFtZSkgb2YgYSBmaWVsZCB0aGF0IGNvbnRhaW5zIGEgbGlzdCBv ZiBkYXRlcyBvbiB3aGljaCB0aGlzIGV2ZW50IGlzIDxhIGhyZWY9IiNjYW5jZWwiPmNhbmNl bGxlZDwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXh0cmFmaWVsZDwvc3Bh bj4gOiB0aGUgSUQgKG5vdCBuYW1lKSBvZiBhIGZpZWxkIGZyb20gd2hpY2ggYSBsaXN0IG9m IDxhIGhyZWY9IiNleHRyYSI+YWRkaXRpb25hbCBldmVudCBkYXRlczwvYT4gbWF5IGJlIGdp dmVuOyB0aGUgc2FtZSBldmVudCBkZXRhaWxzIHdpbGwgYmUgY29waWVkIHRvIHRoZSBuZXcg ZGF5KHMpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV4dHJhc3RyaWN0PC9zcGFu PiA6IGFueSBkYXRlcyBpbiA8Y29kZT5leHRyYWZpZWxkPC9jb2RlPiBhdXRvbWF0aWNhbGx5 IGFwcGVhciBvbiB0aGUgY2FsZW5kYXIsIGJ1dCB5b3UgbWF5IGNob29zZSB0byByZXN0cmlj dCBuZXcgZGF0ZXMgZnJvbSBhcHBlYXJpbmcgYWZ0ZXIgdGhlIGV2ZW50JiM4MjE3O3MgZXhw aXJ5IGRhdGUgYnkgc2V0dGluZyA8Y29kZT5leHRyYXN0cmljdD0mcXVvdDsxJnF1b3Q7PC9j b2RlPi4gRGVmYXVsdDogMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zaG93c2tp cHBlZDwvc3Bhbj4gOiBzaG93ICgxKSBvciBoaWRlICgwKSBjYW5jZWxsZWQgZXZlbnRzIG9u IHRoZSBjYWxlbmRhci4gRGVmYXVsdDogMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5zaG93c3Bhbm5lZDwvc3Bhbj4gOiBzaG93ICgxKSBvciBoaWRlICgwKSBzcGFubmVkIGV2 ZW50cyBvbiB0aGUgY2FsZW5kYXIuIERlZmF1bHQ6IDE8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+aG9saWRheXM8L3NwYW4+IDogbGlzdCBvZiBkYXRlcyB0aGF0IGFyZSBkZWNy ZWVkIGFzIDxhIGhyZWY9IiNob2xpZGF5cyI+aG9saWRheXM8L2E+LiBNYXkgYmUgZGVmZXJy ZWQgdG8gYSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiwgaW4gd2hpY2gg Y2FzZSBkZWZpbmUgeW91ciBsaXN0IGluIGEgbmFtZWQgdmFyaWFibGUgYW5kIHVzZSA8Y29k ZT5ob2xpZGF5cz0mcXVvdDt0eHB2YXI6bXlfdmFyX25hbWUmcXVvdDs8L2NvZGU+IHRvIHJl YWQgdGhlbSBpbnRvIHRoZSBwbHVnaW48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ aG9saWRheWZsYWdzPC9zcGFuPiA6IHBlcm1pdCBjZXJ0YWluIDxhIGhyZWY9IiNuYW1pbmci PmV2ZW50IGZsYWdzPC9hPiB0byBiZSBzY2hlZHVsZWQgb24gaG9saWRheXMuIERlZmF1bHQ6 IDxjb2RlPnN0YW5kYXJkPC9jb2RlPiAoaS5lLiBzdGFuZGFyZCBvbmUtb2ZmIGV2ZW50cykg YnV0IG90aGVycyBtYXkgYmUgbGlzdGVkIGFzIHdlbGwuIENob29zZSBmcm9tIDxjb2RlPnN0 YW5kYXJkPC9jb2RlPiwgPGNvZGU+cmVjdXI8L2NvZGU+IG9yIDxjb2RlPm11bHRpPC9jb2Rl PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5saW5rcG9zdGVkPC9zcGFuPiAoPHNw YW4gY2xhc3M9InJlcXVpcmVkIj5vbmx5IG9uIHNtYWxsIGNhbGVuZGFyczwvc3Bhbj4pIDog ZWFjaCBjZWxsIHRoYXQgY29udGFpbnMgYW4gPGEgaHJlZj0iI25hbWluZyI+ZXZlbnQgZmxh ZzwvYT4gb2YgdGhlIGdpdmVuIHR5cGUocykgd2lsbCBoYXZlIGl0cyBkYXkgbnVtYmVyIGxp bmtlZCB0byB0aGUgZXZlbnQmIzgyMTc7cyB0cnVlIHN0YXJ0IGRhdGUgaW5zdGVhZCBvZiB0 aGUgY2VsbCYjODIxNztzIGRhdGUuIFRodXMsIGlmIHlvdSBoYXZlIGEgd2Vla2x5IGV2ZW50 IHRoYXQgc3RhcnRzIG9uIHRoZSAyMHRoIERlY2VtYmVyIDIwMDgsIHNldHRpbmcgPGNvZGU+ bGlua3Bvc3RlZD0mcXVvdDtyZWN1ciZxdW90OzwvY29kZT4gd2lsbCBjYXVzZSB0aGUgbGlu ayB0byBiZSA8Y29kZT5kYXRlPTIwMDgtMTItMjA8L2NvZGU+IGV2ZXJ5IHdlZWsuIFRoaXMg YWxsb3dzIHlvdSB0byBhbHdheXMgbGluayB0byBhIHZhbGlkIGFydGljbGUvZXZlbnQuIFdp dGhvdXQgbGlua3Bvc3RlZCwgdGhlIGRhdGVzIHdvdWxkIGJlIDIwMDgtMTItMjAsIDIwMDgt MTItMjcsIDIwMDktMDEtMDMsIGFuZCBzbyBvbi4gRGVmYXVsdDogPGNvZGU+cmVjdXIsIG11 bHRpLCBtdWx0aXByZXYsIG11bHRpbGFzdDwvY29kZT4gKGkuZS4gYW55IHJlY3VycmluZyBv ciBzcGFubmVkIGV2ZW50KS4gTm90ZSB0aGF0IGlmIG1vcmUgdGhhbiBvbmUgZXZlbnQgb2Nj dXJzIGluIHRoZSBjZWxsLCB0aGUgbGluayB3aWxsIG9ubHkgYmUgdG8gdGhlIGZpcnN0IGV2 ZW50IHRoZSBwbHVnaW4gZmluZHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bWFp bnRhaW48L3NwYW4+IDoga2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gd2hlbiBuYXZpZ2F0aW5nIHRoZSBjYWxl bmRhciB1c2luZyB0aGUgbmV4dC9wcmV2IG9yIG1vbnRoL3llYXIgc2VsZWN0IGxpc3RzLiBJ dGVtcyB0aGF0IHlvdSB3YW50IHRvIHByZXNlcnZlIHNob3VsZCBiZSBjb21tYS1zZXBhcmF0 ZWQuIENob29zZSBmcm9tIDxjb2RlPmNhbGlkPC9jb2RlPiwgPGNvZGU+c2VjdGlvbjwvY29k ZT4sIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+ YXJ0aWNsZTwvY29kZT4sIDxjb2RlPnBnPC9jb2RlPiBvciB5b3VyIG93biA8c3BhbiBjbGFz cz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZS4gRGVmYXVsdDogPGNvZGU+Y2FsaWQ8L2Nv ZGU+LjxkaXYgY2xhc3M9ImJyZWFrIj5Vc2UgPGNvZGU+bWFpbnRhaW49JnF1b3Q7c2VjdGlv biwgYXJ0aWNsZSwgY2FsaWQmcXVvdDs8L2NvZGU+IGlmIHlvdSBoYXZlIGFuIGluZGl2aWR1 YWwgYXJ0aWNsZSBwYWdlIHdpdGggYSBjYWxlbmRhciBpbiBhIHNpZGViYXIsIHNvIHRoZSBj dXJyZW50bHkgdmlld2VkIGFydGljbGUgd2lsbCByZW1haW4gaW4gdmlldyB3aGVuIGNoYW5n aW5nIGRhdGUuIElmIHlvdSB3aXNoIHRvIG1haW50YWluIHN0YXRlIHlvdXJzZWxmIG9yIGRv IHNvbWV0aGluZyBleG90aWMsIGVtcHR5IHRoaXMgYXR0cmlidXRlIGZpcnN0IHRvIGF2b2lk IHdlaXJkbmVzczwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYW1ldmFs PC9zcGFuPiA6IGFkZCB5b3VyIG93biBuYW1lL3ZhbHVlIHBhaXJzIHRvIHRoZSBjYWxlbmRh ciYjODIxNztzIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+LiBlLmcuIDxjb2RlPm5h bWV2YWw9JnF1b3Q7dHJhY2tlcj1teWNhbCwga2VlcD0xJnF1b3Q7PC9jb2RlPiB3b3VsZCBh ZGQgPGNvZGU+P3RyYWNrZXI9bXljYWwmYW1wO2tlZXA9MTwvY29kZT4gdG8gdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+LiBVc2VmdWwgaWYgeW91IHdhbnQgdG8gPGNvZGU+ bWFpbnRhaW48L2NvZGU+IHNvbWUgdmFsdWVzIHdoaWNoIHlvdSBjYW4mIzgyMTc7dCBhZGQg dG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG9uIHBhZ2UgbG9hZDwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdGF0aWM8L3NwYW4+IDogZm9yY2UgdGhlIGNh bGVuZGFyIHRvIGJlIGZpeGVkIHRvIG9uZSBtb250aC95ZWFyIChpLmUuIG5vIG5hdmlnYXRp b24pLiBNb250aCBhbmQgeWVhciBkZWNpZGVkIGJ5IGF0dHJpYnV0ZXMgPGNvZGU+bW9udGg8 L2NvZGU+IGFuZCA8Y29kZT55ZWFyPC9jb2RlPiBvciAmIzgyMTI7IGlmIG9taXR0ZWQgJiM4 MjEyOyB0aGUgY3VycmVudCBkYXRlIHdpbGwgYmUgdXNlZDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5nbXQ8L3NwYW4+IDogY3VycmVudGx5IHVudXNlZCwgcGVuZGluZyByZXZp ZXc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFuZzwvc3Bhbj4gOiBjdXJyZW50 bHkgdW51c2VkLCBwZW5kaW5nIHJldmlldzwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0iYXR0 cyAiIGlkPSJhdHRzdHlsZXMiPlN0eWxlIGF0dHJpYnV0ZXM8L2gzPgoKCTxwPk9uY2UgeW91 IGhhdmUgdHdlYWtlZCB5b3VyIGJhc2ljIGNhbGVuZGFyIGFzIGRlc2NyaWJlZCBhYm92ZSB5 b3UgY2FuIHN0eWxlIGl0IHVzaW5nIHRoZXNlIGF0dHJpYnV0ZXM6PC9wPgoKCTx1bD4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzbGV2ZWxzPC9zcGFuPiA6IGNsYXNzZXMgY2Fu IGJlIGFwcGxpZWQgdG8gZXZlbnRzLCBjZWxscywgb3IgYm90aC4gWW91IG1heSBhbHNvIHBy b21vdGUgKGkuZS4gY29weSkgYWxsIGV2ZW50LWxldmVsIGNsYXNzZXMgdGhhdCBvY2N1ciBp biBhIGRheSB0byB0aGUgY2VsbCBsZXZlbCBzbyB5b3UgY2FuIGNvbG91ciB0aGUgY2VsbCBi YXNlZCBvbiB0aGUgZXZlbnRzIHRoYXQgaXQgY29udGFpbnMuIFVzZSBhbnkgb2YgPGNvZGU+ ZXZlbnQ8L2NvZGU+LCA8Y29kZT5jZWxsPC9jb2RlPiwgb3IgPGNvZGU+Y2VsbHBsdXM8L2Nv ZGU+IChmb3IgY29weWluZyB1bmlxdWUgZXZlbnQgY2xhc3NlcyB0byB0aGUgY2VsbCkuIE5v dGUgeW91IHNob3VsZCBub3QgdXNlIDxjb2RlPmNlbGw8L2NvZGU+IGFuZCA8Y29kZT5jZWxs cGx1czwvY29kZT4gdG9nZXRoZXIgYmVjYXVzZSB0aGUgbGF0dGVyIG92ZXJyaWRlcyB0aGUg Zm9ybWVyLiBEZWZhdWx0OiA8Y29kZT5jZWxsLCBldmVudDwvY29kZT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3NwcmVmaXhlczwvc3Bhbj4gOiBhIGNvbW1hLXNlcGFy YXRlZCBsaXN0IG9mIHVwIHRvIHR3byBwcmVmaXhlcyB0byBhcHBseSB0byB5b3VyIGNsYXNz IG5hbWVzLiBUaGUgZmlyc3QgcHJlZml4IGlzIGFwcGxpZWQgdG8gY2VsbC1sZXZlbCBjbGFz c2VzIChhbmQgZmxhZ3MpIGFuZCB0aGUgc2Vjb25kIHByZWZpeCBpcyBhcHBsaWVkIHRvIGV2 ZW50IGNsYXNzZXMgKHNlZSA8Y29kZT5ldmVudGNsYXNzZXM8L2NvZGU+KS4gSWYgeW91IG9u bHkgc3BlY2lmeSBvbmUgcHJlZml4LCBpdCB3aWxsIGJlIHVzZWQgZm9yIGJvdGguIElmIHlv dSB1c2UgPGNvZGU+Y2xhc3NwcmVmaXhlcz0mcXVvdDsmcXVvdDs8L2NvZGU+IHRoZW4gbm8g cHJlZml4ZXMgd2lsbCBiZSB1c2VkIGF0IGFsbC4gRGVmYXVsdDogPGNvZGU+c21kX2NhbF8s IHNtZF9jYWxfZXZfPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFz czwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSBvZiB0aGUgY2FsZW5kYXIgdGFibGUgaXRzZWxm LiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5yb3djbGFz czwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSBvZiBlYWNoIHRhYmxlIHJvdy4gRGVmYXVsdDog dW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2VsbGNsYXNzPC9zcGFuPiA6 IHRoZSBjbGFzcyBuYW1lIG9mIGVhY2ggdGFibGUgY2VsbC4gRGVmYXVsdDogdW5zZXQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZW1wdHljbGFzczwvc3Bhbj4gOiB0aGUgY2xh c3MgbmFtZSBvZiBhbnkgY2VsbHMgdGhhdCBkb24mIzgyMTc7dCBjb250YWluIGEgZGF5IG51 bWJlciAoaS5lLiB0aGUgYmxhbmsgY2VsbHMgYXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgYSBt b250aCkuIERlZmF1bHQ6IDxjb2RlPmVtcHR5PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5pc293ZWVrY2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgb2YgZWFj aCBjZWxsIGNvbnRhaW5pbmcgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2Vl ay4gRGVmYXVsdDogPGNvZGU+d2VlazwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+bmF2Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgb2YgdGhlIHByZXYvbmV4 dCBtb250aCBuYXYgYXJyb3dzLiBJZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IGlzIHVzZWQs IHRoZSBmaXJzdCBpdGVtIHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9mIHRoZSBw cmV2aW91cyBtb250aCwgdGhlIDJuZCBpdGVtIG9mIHRoZSBuZXh0IG1vbnRoLiBJZiBhIHNp bmdsZSB2YWx1ZSBpcyB1c2VkLCBib3RoIGNsYXNzIG5hbWVzIHdpbGwgYmUgdGhlIHNhbWUu IERlZmF1bHQ6IDxjb2RlPm5hdnByZXYsIG5hdm5leHQ8L2NvZGU+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPm15Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgb2YgYm90 aCB0aGUgbW9udGggYW5kIHllYXIgaW4gdGhlIGNhbGVuZGFyIGhlYWRlciAoZWl0aGVyIHRo ZSA8Y29kZT4mbHQ7c3BhbiZndDs8L2NvZGU+IG9yIDxjb2RlPiZsdDtzZWxlY3QmZ3Q7PC9j b2RlPiB0YWdzKS4gSWYgPGNvZGU+bXl3cmFwdGFnPC9jb2RlPiBpcyB1c2VkLCB0aGUgY2xh c3MgaXMgYXBwbGllZCB0byB0aGUgd3JhcHRhZyBpbnN0ZWFkLiBEZWZhdWx0OiB1bnNldDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ldmVudGNsYXNzZXM8L3NwYW4+IDogYSBj b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBpdGVtcyB0byBhZGQgYXMgY2xhc3NlcyB0byBlYWNo IGV2ZW50IChlYWNoIHByZWZpeGVkIHdpdGggdGhlIGV2ZW50IHByZWZpeCkuIEl0IGRlZmF1 bHRzIHRvIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiBzbyBpdCBhZGRzIHRoZSBDYXRlZ29yeTEg YW5kIDIgbmFtZXMgYXMgY2xhc3MgaWRlbnRpZmllcnMgdG8gZWFjaCBldmVudC48ZGl2IGNs YXNzPSJicmVhayI+SWYgeW91IHdpc2ggdG8gZXh0ZW5kIG9yIGFsdGVyIHRoaXMsIGdpdmUg YSBsaXN0IG9mIGZpZWxkcyB0aGF0IHlvdSB3YW50IHRvIGFwcGx5IHRvIHRoZSBldmVudCAo ZS5nLiA8Y29kZT5ldmVudGNsYXNzZXM9JnF1b3Q7SUQsIEF1dGhvcklELCBjdXN0b21fNSZx dW90OzwvY29kZT4gd291bGQgYWRkIHRocmVlIGNsYXNzZXMgdG8gZWFjaCBldmVudCBjb3Jy ZXNwb25kaW5nIHRvIHRoZSBldmVudCYjODIxNztzIElELCBpdHMgYXV0aG9yIChsb2dpbikg bmFtZSBhbmQgdGhlIGNvbnRlbnRzIG9mIGN1c3RvbV81KS4gSWYgeW91IHVzZSA8Y29kZT5j ZWxscGx1czwvY29kZT4sIHRoZXNlIGNsYXNzZXMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGNl bGwgbGV2ZWwuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPlNvbWUgc3BlY2lhbCBuYW1lcyBl eGlzdDogPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+IHJldHVybnMgYm90aCBDYXRlZ29yeTEgYW5k IENhdGVnb3J5MiAoaWYgc2V0KTsgPGNvZGU+Z2NhdDwvY29kZT4gd2lsbCByZXR1cm4gdGhl IGN1cnJlbnQgJiM4MjE2O2dsb2JhbCYjODIxNzsgY2F0ZWdvcnkgKGlmIGZpbHRlcmluZyBi eSBjYXRlZ29yeSk7IDxjb2RlPmF1dGhvcjwvY29kZT4gcmV0dXJucyB0aGUgYXV0aG9yIElE IChpZiBmaWx0ZXJpbmcgYnkgYXV0aG9yKTsgPGNvZGU+c2VjdGlvbjwvY29kZT4gZ2l2ZXMg dGhlIGN1cnJlbnQgc2VjdGlvbjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5ldmVudHdyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnLCB3aXRob3V0IGl0cyBi cmFja2V0cywgdG8gd3JhcCBlYWNoIGV2ZW50IHdpdGguIERlZmF1bHQ6IDxjb2RlPnNwYW48 L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm15d3JhcHRhZzwvc3Bhbj4g OiB0aGUgKFgpSFRNTCB0YWcsIHdpdGhvdXQgaXRzIGJyYWNrZXRzLCB0byB3cmFwIGFyb3Vu ZCA8ZW0+Ym90aDwvZW0+IG1vbnRoICsgeWVhciBkcm9wZG93biBzZWxlY3QgbGlzdHMgYW5k IHN1Ym1pdCBidXR0b24gKGl0IHdyYXBzIHRoZSBsb3QsIGNvbWJpbmVkKS4gRGVmYXVsdDog dW5zZXQ8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNlbGxmb3JtIj5Vc2luZyBhIDxjb2RlPmNl bGxmb3JtPC9jb2RlPiB3aXRoIHJlcGxhY2VtZW50IHZhcmlhYmxlczwvaDI+CgoJPHA+SWYg eW91IGRvbiYjODIxNzt0IGxpa2UgdGhlIGxheW91dCBvZiB0aGUgZGVmYXVsdCBjZWxsLCB5 b3UgY2FuIGRvIGl0IHlvdXJzZWxmIHdpdGggdGhlIDxjb2RlPmNlbGxmb3JtPC9jb2RlPiBh dHRyaWJ1dGUuIFRoZSBjZWxscyBhcmUgZ2VuZXJhdGVkIDxlbT5sYXN0PC9lbT4sIHNvIGJ5 IHRoZSB0aW1lIHRoZSBwbHVnaW4gcmVhY2hlcyB0aGlzIGF0dHJpYnV0ZSwgYWxsIGV2ZW50 cyBoYXZlIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQgYnkgYW55IG9mIHlvdXIgZm9ybXMvY29u dGFpbmVycy48L3A+CgoJPHA+VG8gYnVpbGQgeW91ciBvd24gY2VsbHMgeW91IG9mdGVuIG5l ZWQgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgZXZlbnRzIHRoYXQgZmFsbCBvbiBhIHBhcnRp Y3VsYXIgZGF5OyBvciB0aGUgd2VlaywgbW9udGggb3IgZGF5IG51bWJlcnMsIGV0Yy4gU28g JiM4MjEyOyBpbiBhZGRpdGlvbiB0byB5b3VyIHVzdWFsIG1hcmt1cCBhbmQgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyAmIzgyMTI7IHlvdSBtYXkgYWxzbyBpbnNlcnQg YW55IG9mIHRoZSBmb2xsb3dpbmcgJiM4MjE2O3JlcGxhY2VtZW50cyYjODIxNzsgdG8gaGF2 ZSB0aGUgcmVsZXZhbnQgdmFsdWUgaW5zZXJ0ZWQgYXQgdGhhdCBwbGFjZSBpbiB0aGUgY2Vs bDo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT57ZGF5fTwvY29kZT4gOiBjdXJyZW50IGRheSAo YXMgYSBudW1iZXIgZnJvbSAxIHRvIDMxKTwvbGk+CgkJPGxpPjxjb2RlPnt3ZWVrZGF5fTwv Y29kZT4gOiBjdXJyZW50IHdlZWtkYXkgYXMgYSB3b3JkIGluIHRoZSBsb2NhbCBsYW5ndWFn ZSwgb3IgZnJvbSB5b3VyIDxjb2RlPmRheWZvcm1hdDwvY29kZT4gbGlzdDwvbGk+CgkJPGxp Pjxjb2RlPnt3ZWVrfTwvY29kZT4gOiBjdXJyZW50IDxzcGFuIGNsYXNzPSJjYXBzIj5JU088 L3NwYW4+IHdlZWsgbnVtYmVyPC9saT4KCQk8bGk+PGNvZGU+e21vbnRofTwvY29kZT4gOiBj dXJyZW50IG1vbnRoIChhcyBhIG51bWJlciBmcm9tIDEgdG8gMTIpPC9saT4KCQk8bGk+PGNv ZGU+e21vbnRobmFtZX08L2NvZGU+IDogbW9udGggbmFtZSBpbiB0aGUgbG9jYWwgbGFuZ3Vh Z2UsIG9yIGZyb20geW91ciA8Y29kZT5tb250aGZvcm1hdDwvY29kZT4gbGlzdDwvbGk+CgkJ PGxpPjxjb2RlPnt5ZWFyfTwvY29kZT4gOiBjdXJyZW50IHllYXIgKDQgZGlnaXRzKTwvbGk+ CgkJPGxpPjxjb2RlPntzaG9ydHllYXJ9PC9jb2RlPiA6IGN1cnJlbnQgeWVhciAoMiBkaWdp dHMpPC9saT4KCQk8bGk+PGNvZGU+e2lzb3llYXJ9PC9jb2RlPiA6IGN1cnJlbnQgPHNwYW4g Y2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4geWVhciAoNCBkaWdpdHMpPC9saT4KCQk8bGk+PGNv ZGU+e3Nob3J0aXNveWVhcn08L2NvZGU+IDogY3VycmVudCA8c3BhbiBjbGFzcz0iY2FwcyI+ SVNPPC9zcGFuPiB5ZWFyICgyIGRpZ2l0cyk8L2xpPgoJCTxsaT48Y29kZT57ZXZlbnRzfTwv Y29kZT4gOiBhbGwgZXZlbnRzIGZvciB0aGUgZGF5PC9saT4KCQk8bGk+PGNvZGU+e3N0YW5k YXJkfTwvY29kZT4gOiBvbmx5IHN0YW5kYXJkIGV2ZW50czwvbGk+CgkJPGxpPjxjb2RlPnty ZWN1cmZpcnN0fTwvY29kZT4gLyA8Y29kZT57cmVjdXJ9PC9jb2RlPiA6IHRoZSBjaG9zZW4g dHlwZSBvZiByZWN1cnJpbmcgZXZlbnQ8L2xpPgoJCTxsaT48Y29kZT57YWxscmVjdXJ9PC9j b2RlPiA6IGFsbCByZWN1cnJpbmcgZXZlbnRzIGZvciB0aGUgZGF5PC9saT4KCQk8bGk+PGNv ZGU+e211bHRpZmlyc3R9PC9jb2RlPiAvIDxjb2RlPnttdWx0aX08L2NvZGU+IC8gPGNvZGU+ e211bHRpcHJldn08L2NvZGU+IC8gPGNvZGU+e211bHRpbGFzdH08L2NvZGU+IDogdGhlIGNo b3NlbiB0eXBlIG9mIG11bHRpIGV2ZW50PC9saT4KCQk8bGk+PGNvZGU+e2FsbG11bHRpfTwv Y29kZT4gOiBhbGwgbXVsdGkgZXZlbnRzIGZvciB0aGUgZGF5PC9saT4KCQk8bGk+PGNvZGU+ e2NhbmNlbH08L2NvZGU+IDogb25seSBjYW5jZWxsZWQgZXZlbnRzPC9saT4KCQk8bGk+PGNv ZGU+e2V4dHJhfTwvY29kZT4gOiBvbmx5IGV4dHJhIGV2ZW50czwvbGk+Cgk8L3VsPgoKCTxo MiBpZD0ic2l6ZWRpZmYiPkRpZmZlcmVuY2VzIGJldHdlZW4gbGFyZ2UgYW5kIHNtYWxsIGNh bGVuZGFyczwvaDI+CgoJPHA+Tm90IGEgbG90ISBCdXQgdGhlcmUgYXJlIHNvbWUgc3VidGxl dGllczo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT5jZWxsZm9ybTwvY29kZT4gY2Fubm90IGJl IHVzZWQgb24gYSBzbWFsbCBjYWxlbmRhcjwvbGk+CgkJPGxpPkJ5IGRlZmF1bHQsIG5vIGV2 ZW50cyBhcmUgcGxhY2VkIGluIHRoZSBzbWFsbCBjYWxlbmRhci4gWW91IGNhbiBhZGQgdGhl bSB5b3Vyc2VsZiBpZiB5b3Ugd2lzaCBiZWNhdXNlIHlvdSBjYW4gdXNlIHRoZSBzYW1lIGZv cm0vY29udGFpbmVyIG1lY2hhbmlzbSBhcyB0aGUgbGFyZ2UgY2FsZW5kYXI8L2xpPgoJCTxs aT5UaGUgb25seSB0aGluZyByZW5kZXJlZCBpbiBhIHNtYWxsIGNhbGVuZGFyIGNlbGwgaXMg dGhlIGh5cGVybGlua2VkIGRhdGUgYW5kIGFueSA8YSBocmVmPSIjbmFtaW5nIj5mbGFnczwv YT4gc28geW91IGNhbiBzdHlsZSB0aGUgYm94ZXM8L2xpPgoJCTxsaT48Y29kZT5jbGFzc2xl dmVsczwvY29kZT4gYXJlIGlnbm9yZWQ6IGV2ZXJ5dGhpbmcgaXMgYXV0b21hdGljYWxseSBh c3NpZ25lZCBhdCB0aGUgY2VsbCBsZXZlbCAoaS5lLiA8Y29kZT5jZWxscGx1czwvY29kZT4g aXMgc2V0KTwvbGk+CgkJPGxpPjxjb2RlPmV2ZW50Y2xhc3NlczwvY29kZT4gYXJlIHN0aWxs IGhvbm91cmVkIGlmIHlvdSB3aXNoIHRvIHVzZSBhIDxjb2RlPmZvcm08L2NvZGU+IHRvIHBy b2Nlc3MgdGhlbSB5b3Vyc2VsZjwvbGk+CgkJPGxpPlRoZSBzbWFsbCBjYWxlbmRhciBvdXRw dXRzIHllYXItbW9udGgtZGF5LXRpdGxlIG9yIG1lc3N5IHBlcm1saW5rcyBvbmx5PC9saT4K CTwvdWw+CgoJPHA+QXNpZGUgZnJvbSB0aGF0IHRoZXkmIzgyMTc7cmUgcHJldHR5IG11Y2gg aWRlbnRpY2FsLjwvcD4KCgk8aDIgaWQ9ImlmY2FsIj5UYWc6IDxjb2RlPiZsdDt0eHA6c21k X2lmX2NhbCZndDs8L2NvZGU+PC9oMj4KCgk8cD5UaGlzIGNvbmRpdGlvbmFsIHRhZyBhbGxv d3MgeW91ICYjODIxMjsgaW5zaWRlIHlvdXIgY29udGFpbmVyL2Zvcm1zICAmIzgyMTI7IHRv IHRlc3QgY2VydGFpbiBjb25kaXRpb25zIG9mIHRoZSBjdXJyZW50IGV2ZW50L2NlbGwuIEZv ciBlbmhhbmNlZCBjb25kaXRpb25hbCBjaGVja2luZyAocGVyaGFwcyBpbiBjb25qdW5jdGlv biB3aXRoIDxhIGhyZWY9IiNjYWxub3ciPnNtZF9jYWxfbm93PC9hPiksIGNvbnNpZGVyIHRo ZSBzbWRfaWYgcGx1Z2luLjwvcD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0c2lmY2Fs Ij5BdHRyaWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mbGFn PC9zcGFuPiA6IHRoZSBjZWxsIG9yIGV2ZW50IGZsYWcocykgeW91IHdhbnQgdG8gdGVzdCwg ZWFjaCBzZXBhcmF0ZWQgYnkgYSBjb21tYS4gQ2hvb3NlIGZyb206IDxjb2RlPmV2ZW50PC9j b2RlPiwgPGNvZGU+c3RhbmRhcmQ8L2NvZGU+LCA8Y29kZT5yZWN1cmZpcnN0PC9jb2RlPiwg PGNvZGU+cmVjdXI8L2NvZGU+LCA8Y29kZT5tdWx0aWZpcnN0PC9jb2RlPiwgPGNvZGU+bXVs dGlsYXN0PC9jb2RlPiwgPGNvZGU+bXVsdGk8L2NvZGU+LCA8Y29kZT5tdWx0aXByZXY8L2Nv ZGU+LCA8Y29kZT5jYW5jZWw8L2NvZGU+LCA8Y29kZT5vbWl0PC9jb2RlPiwgPGNvZGU+ZXh0 cmE8L2NvZGU+LCA8Y29kZT5ob2xzPC9jb2RlPiwgPGNvZGU+dG9kYXk8L2NvZGU+LCBvciB0 aGUgc3BlY2lhbCBmbGFnIDxjb2RlPlNNRF9BTlk8L2NvZGU+IHdoaWNoIHdpbGwgdHJpZ2dl ciBpZiB0aGUgY2VsbCBvciBldmVudCBjb250YWlucyBhbnkgb2YgdGhlIGFib3ZlLiBEZWZh dWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jYWxpZDwvc3Bhbj4g OiB0aGUgY2FsZW5kYXIgSUQgeW91IHdpc2ggdG8gY2hlY2sgZm9yIGEgbWF0Y2guIERlZmF1 bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnllYXI8L3NwYW4+IDog dGhlIHllYXIgdGhlIGN1cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVmYXVsdDogdW5zZXQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aXNveWVhcjwvc3Bhbj4gOiB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4geWVhciB0aGUgY3VycmVudCBjZWxsIGZhbGxzIGlu LiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tb250aDwv c3Bhbj4gOiB0aGUgbW9udGggbnVtYmVyICgxLTEyKSB0aGF0IHRoZSBjdXJyZW50IGNlbGwg ZmFsbHMgaW4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PndlZWs8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsg bnVtYmVyIHRoYXQgdGhlIGN1cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVmYXVsdDogdW5zZXQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGF5PC9zcGFuPiA6IHRoZSBkYXkgbnVt YmVyIHRoZSBjdXJyZW50IGNlbGwgZmFsbHMgaW4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxvZ2ljPC9zcGFuPiA6IHdoZXRoZXIgeW91IHdhbnQg dG8gY2hlY2sgaWYgPGVtPmFsbDwvZW0+IHRlc3RzIHlvdSBub21pbmF0ZWQgYXJlIHRydWUg aW4gdGhlIGN1cnJlbnQgY2VsbCAoPGNvZGU+bG9naWM9JnF1b3Q7YW5kJnF1b3Q7PC9jb2Rl Pikgb3IgPGVtPmF0IGxlYXN0IG9uZTwvZW0+IG9mIHRoZSB0ZXN0cyBpcyB0cnVlICg8Y29k ZT5sb2dpYz0mcXVvdDtvciZxdW90OzwvY29kZT4pLiBEZWZhdWx0OiA8Y29kZT5vcjwvY29k ZT48L2xpPgoJPC91bD4KCgk8cD4mIzgyMTY7QW5kJiM4MjE3OyBsb2dpYyBpcyBnb29kIGZv ciBjaGVja2luZyBpZiB0aGUgY2VsbCBpcyBvZiBhIGNlcnRhaW4gdHlwZSA8c3BhbiBjbGFz cz0iY2FwcyI+QU5EPC9zcGFuPiBpcyBsYXRlciB0aGFuIHRoZSAxNXRoIG9mIHRoZSBtb250 aCwgZm9yIGV4YW1wbGUuPC9wPgoKCTxwPlJ1ZGltZW50YXJ5IGNvbXBhcmF0b3JzIGNhbiBi ZSBhcHBsaWVkIHRvIHRoZSA8Y29kZT4oaXNvKXllYXI8L2NvZGU+LCA8Y29kZT5tb250aDwv Y29kZT4sIDxjb2RlPndlZWs8L2NvZGU+IGFuZCA8Y29kZT5kYXk8L2NvZGU+IGF0dHJpYnV0 ZXMuIE5vcm1hbGx5IHRoZSB2YWx1ZSB5b3Ugc3VwcGx5IHdpbGwgYmUgdGVzdGVkIGZvciBh biBleGFjdCBtYXRjaCBidXQgaWYgeW91IHByZWZpeCBpdCB3aXRoIG9uZSBvZiB0aGUgZm9s bG93aW5nIGNoYXJhY3RlciBzZXF1ZW5jZXMgdGhlbiB0aGUgYmVoYXZpb3VyIGNoYW5nZXM6 PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+Jmd0OzwvY29kZT4gdGVzdHMgaWYgYXR0cmlidXRl IGlzIDxlbT5ncmVhdGVyIHRoYW48L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUuZy4gPGNvZGU+ eWVhcj0mcXVvdDsmZ3Q7MjAwOCZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+Jmd0 Oz08L2NvZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+Z3JlYXRlciB0aGFuIG9yIGVx dWFsIHRvPC9lbT4gdGhlIGdpdmVuIHZhbHVlIChlLmcuIDxjb2RlPm1vbnRoPSZxdW90OyZn dDs9NyZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+Jmx0OzwvY29kZT4gdGVzdHMg aWYgYXR0cmlidXRlIGlzIDxlbT5sZXNzIHRoYW48L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUu Zy4gPGNvZGU+ZGF5PSZxdW90OyZsdDsxNSZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PGNv ZGU+Jmx0Oz08L2NvZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+bGVzcyB0aGFuIG9y IGVxdWFsIHRvPC9lbT4gdGhlIGdpdmVuIHZhbHVlIChlLmcuIDxjb2RlPm1vbnRoPSZxdW90 OyZsdDs9NSZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+ITwvY29kZT4gdGVzdHMg aWYgYXR0cmlidXRlIGlzIDxlbT5ub3Q8L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUuZy4gPGNv ZGU+ZGF5PSZxdW90OyExNSZxdW90OzwvY29kZT4pPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJj YWxpbmZvIj5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2NhbF9pbmZvIC8mZ3Q7PC9jb2RlPjwv aDI+CgoJPHA+SW5zaWRlIHlvdXIgY29udGFpbmVyL2Zvcm1zLCB1c2UgdGhpcyB0YWcgdG8g b3V0cHV0IGNlcnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgZXZlbnQuPC9w PgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRzY2FsaW5mbyI+QXR0cmlidXRlczwvaDM+ CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dHlwZTwvc3Bhbj4gOiB0aGUgdHlw ZShzKSBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byByZXR1cm4sIGVhY2ggc2VwYXJhdGVk IGJ5IGEgY29tbWEuIENob29zZSBmcm9tOiA8Y29kZT5mbGFnPC9jb2RlPiwgPGNvZGU+Y2Fs aWQ8L2NvZGU+LCA8Y29kZT4oaXNvKXllYXI8L2NvZGU+IC8gPGNvZGU+bW9udGg8L2NvZGU+ IC8gPGNvZGU+d2VlazwvY29kZT4gLyA8Y29kZT5kYXk8L2NvZGU+LCA8Y29kZT5zPC9jb2Rl PiAoY3VycmVudCBzZWN0aW9uKSAvIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiAvIDxjb2RlPmF1 dGhvcjwvY29kZT4gKG9yIDxjb2RlPnJlYWxuYW1lPC9jb2RlPiksIDxjb2RlPmFydGljbGU8 L2NvZGU+IChpZCBvZiB0aGUgY3VycmVudGx5IHZpZXdlZCBhcnRpY2xlKSwgb3IgYW55IG90 aGVyIGFydGljbGUgdmFyaWFibGUgc3VjaCBhcyA8Y29kZT5zZWN0aW9uPC9jb2RlPiAodGhl IGN1cnJlbnQgYXJ0aWNsZSYjODIxNztzIHNlY3Rpb24pLCA8Y29kZT5hdXRob3JpZDwvY29k ZT4sIDxjb2RlPmFydGljbGVfaW1hZ2U8L2NvZGU+LCBldGM8ZGl2IGNsYXNzPSJicmVhayI+ SWYgdXNpbmcgdGhlIDxjb2RlPmh0bWw8L2NvZGU+IGF0dHJpYnV0ZSwgeW91IG1heSBvcHRp b25hbGx5IHNwZWNpZnkgdGhlIG5hbWUgeW91IHdhbnQgdGhlIHZhcmlhYmxlIHRvIGFwcGVh ciBhcyBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gc3RyaW5nLiBUaGUg dmFyaWFibGVzIGFsbCB0YWtlIG9uIHNlbnNpYmxlIGRlZmF1bHRzIChlLmcuICYjODIxNjtz ZWN0aW9uJiM4MjE3OyBiZWNvbWVzIDxjb2RlPj9zPSZsdDtzZWN0aW9uIG5hbWUmZ3Q7PC9j b2RlPiwgJiM4MjE2O2NhdGVnb3J5MSYjODIxNzsgYmVjb21lcyA8Y29kZT4/Yz0mbHQ7Y2F0 ZWdvcnkxIG5hbWUmZ3Q7PC9jb2RlPiwgZXRjKSBidXQgaWYsIHNheSwgeW91IHdhbnRlZCBj YXRlZ29yeTEgdG8gYmUga25vd24gYXMgPGNvZGU+dGhlX2NhdDwvY29kZT4geW91IGNvdWxk IHdyaXRlIDxjb2RlPiZsdDt0eHA6c21kX2NhbF9pbmZvIHR5cGU9JnF1b3Q7Y2F0Z2Vvcnk6 dGhlX2NhdCZxdW90OyBodG1sPSZxdW90OzEmcXVvdDsgLyZndDs8L2NvZGU+LiBZb3Ugd291 bGQgdGhlbiBzZWUgPGNvZGU+P3RoZV9jYXQ9Jmx0O2NhdGVnb3J5MSBuYW1lJmd0OzwvY29k ZT48L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+am9pbjwvc3Bhbj4gOiB0 aGUgY2hhcmFjdGVycyB5b3Ugd2FudCB0byB1c2UgdG8gc2VwYXJhdGUgZWFjaCBpdGVtIHlv dSBhc2tlZCBmb3IuIE5vdGUgaXQgaXMgdGhlIGNoYXJhY3RlcnMgPGVtPmJldHdlZW48L2Vt PiBlYWNoIGl0ZW0gc28gdGhlIHZlcnkgZmlyc3QgZW50cnkgd2lsbCA8c3Ryb25nPm5vdDwv c3Ryb25nPiBoYXZlIHRoZSA8Y29kZT5qb2luPC9jb2RlPiBpbiBmcm9udCBvZiBpdCAoc2Vl IDxjb2RlPmpvaW5fcHJlZml4PC9jb2RlPikuIERlZmF1bHQ6IGEgc3BhY2U8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+am9pbl9wcmVmaXg8L3NwYW4+IDogdGhlIHN0cmluZyB5 b3Ugd2FudCB0byBwdXQgaW4gZnJvbnQgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHJldHVy bmVkIGxpc3QuIElmIHlvdSBkbyBub3Qgc3BlY2lmeSB0aGlzIGF0dHJpYnV0ZSBpdCBkZWZh dWx0cyB0byA8Y29kZT5TTURfQVVUTzwvY29kZT4gd2hpY2ggdHJpZXMgdG8gYmUgY2xldmVy OgoJPHVsPgoJCTxsaT5pZiB1c2luZyA8Y29kZT50eXBlPSZxdW90O2ZsYWcmcXVvdDs8L2Nv ZGU+IHRoZSBqb2luX3ByZWZpeCBpcyBzZXQgdG8gdGhlIHNhbWUgYXMgPGNvZGU+am9pbjwv Y29kZT4uIFRodXMgd2l0aCA8Y29kZT5qb2luPSZxdW90OyBjYWxfJnF1b3Q7PC9jb2RlPiB5 b3UgbWlnaHQgZ2V0IDxjb2RlPiBjYWxfbXVsdGkgY2FsX3RvZGF5IGNhbF9ob2xzPC9jb2Rl PjwvbGk+CgkJPGxpPmlmIHVzaW5nIDxjb2RlPmh0bWw9JnF1b3Q7MSZxdW90OzwvY29kZT4g dGhlIGpvaW5fcHJlZml4IGlzIHNldCB0byBhIHF1ZXN0aW9uIG1hcmssIHRodXM6IDxjb2Rl PnR5cGU9JnF1b3Q7bW9udGgseWVhcixjYXRlZ29yeSZxdW90OyBodG1sPSZxdW90OzEmcXVv dDs8L2NvZGU+IG1pZ2h0IHJlbmRlciA8Y29kZT4/bT0xMiZhbXA7eT0yMDA4JmFtcDtjPWdp Z3M8L2NvZGU+LCB3aGljaCBjYW4gYmUgcHV0IHN0cmFpZ2h0IG9uIHRoZSBlbmQgb2YgYW4g YW5jaG9yPC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmh0bWw8 L3NwYW4+IDogSWYgc2V0IHRvIDxjb2RlPjE8L2NvZGU+LCByZXR1cm5zIG5vdCBvbmx5IHRo ZSB2YWx1ZXMgeW91IHNwZWNpZmllZCBidXQgdGhlaXIgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4gdmFyaWFibGUgbmFtZXMgYXMgd2VsbCwgZ2l2aW5nIHlvdSB0aGUgZW50aXJl IHN0cmluZyBhcyBhIHZhbGlkIHNldCBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiBwYXJhbWV0ZXJzIHdoaWNoIGNhbiBiZSBhZGRlZCB0byBhbiBhbmNob3IuIEl0IG92ZXJy aWRlcyB0aGUgPGNvZGU+am9pbjwvY29kZT4gYXR0cmlidXRlIGFuZCBzZXRzIGl0IHRvIGFu IGFtcGVyc2FuZC4gRGVmYXVsdDogMC48ZGl2IGNsYXNzPSJicmVhayI+VGhpcyBhdHRyaWJ1 dGUgaXMgdXNlZnVsIGlmIHlvdSBhcmUgYnVpbGRpbmcgeW91ciBvd24gY29udGVudCBpbnNp ZGUgZWFjaCBjZWxsIHZpYSBhIDxjb2RlPmZvcm08L2NvZGU+IGFuZCB3aXNoIHRvIG1haW50 YWluIHRoZSBjdXJyZW50IHNlYXJjaCBlbnZpcm9ubWVudC4gSWYgeW91IGFsbG93IHBlb3Bs ZSB0byBmaWx0ZXIgZXZlbnRzIGJ5IGNhdGVnb3J5IG9yIGF1dGhvciB5b3UgY2FuIHVzZSB0 aGlzIHRvIHJldHVybiB0aGUgJiM4MjE2O2N1cnJlbnQmIzgyMTc7IHN0YXRlIG9mIGNlcnRh aW4gdmFyaWFibGVzIHNvIHlvdSBjYW4gcGFzcyB0aGVtIHRvIHRoZSBuZXh0IHBhZ2UgYW5k IG1haW50YWluIHN0YXRlPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmVz Y2FwZTwvc3Bhbj4gOiBlc2NhcGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGVu dGl0aWVzIHN1Y2ggYXMgPGNvZGU+Jmx0OzwvY29kZT4sIDxjb2RlPiZndDs8L2NvZGU+IGFu ZCA8Y29kZT4mYW1wOzwvY29kZT4gZm9yIHBhZ2UgdmFsaWRhdGlvbiBwdXJwb3Nlcy4gU2V0 IHRvIDxjb2RlPmVzY2FwZT0mcXVvdDsmcXVvdDs8L2NvZGU+IHRvIHR1cm4gaXQgb2ZmLiBE ZWZhdWx0OiA8Y29kZT5odG1sPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iY2FsY2xh c3MiPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2NsYXNzIC8mZ3Q7PC9jb2RlPjwvaDI+ CgoJPHA+SW5zaWRlIHlvdXIgY29udGFpbmVyL2Zvcm1zLCB1c2UgdGhpcyB0YWcgdG8gYWRk IGEgbGlzdCBvZiBjbGFzc2VzIHRvIHRoZSBjdXJyZW50IGNlbGwvZXZlbnQuIFZlcnkgdXNl ZnVsIGlmIGJ1aWxkaW5nIGNlbGxzIHlvdXJzZWxmIGJlY2F1c2UgaW5zaWRlIGEgPGEgaHJl Zj0iI2lmY2FsIj5jb25kaXRpb25hbDwvYT4gdGFnIHlvdSBjb3VsZCBhZGQgcGFydGljdWxh ciBjbGFzcyBuYW1lcyBiYXNlZCBvbiBzb21lIHZhbHVlIGluIGEgY2VsbC48L3A+CgoJPGgz IGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNjYWxjbGFzcyI+QXR0cmlidXRlczwvaDM+CgoJPHVs PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmFtZTwvc3Bhbj4gOiBhIGNvbW1hLXNlcGFy YXRlZCBsaXN0IG9mIGNsYXNzbmFtZXMgdG8gYWRkIHRvIHRoZSBjdXJyZW50IGNlbGwvZXZl bnQuIFRoZXNlIGFyZSA8c3Ryb25nPm5vdDwvc3Ryb25nPiBzdWJqZWN0IHRvIGFueSA8Y29k ZT5jbGFzc3ByZWZpeGVzPC9jb2RlPiBzbyB3aWxsIGFsd2F5cyBhcHBlYXIgZXhhY3RseSBh cyB5b3Ugd3JpdGUgdGhlbTwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iY2Fsbm93Ij5UYWc6IDxj b2RlPiZsdDt0eHA6c21kX2NhbF9ub3cgLyZndDs8L2NvZGU+PC9oMj4KCgk8cD5SZXR1cm4g dGhlIGN1cnJlbnQgZGF0ZS90aW1lLCBmb3JtYXR0ZWQgaG93ZXZlciB5b3UgcGxlYXNlLiBV c2VmdWwgZm9yIGV4dHJhY3RpbmcgcGFydHMgb2YgdGhlIGN1cnJlbnQgc3lzdGVtIHRpbWVz dGFtcCB0byBjb21wYXJlIHRoaW5ncyB2aWEgb3RoZXIgY29uZGl0aW9uYWwgcGx1Z2lucyBv ciB0aGUgPGNvZGU+Jmx0O3R4cDpzbWRfaWZfY2FsJmd0OzwvY29kZT4gdGFnLjwvcD4KCgk8 aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0c2NhbG5vdyI+QXR0cmlidXRlczwvaDM+CgoJPHVs PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybWF0PC9zcGFuPiA6IHRoZSB3YXkgeW91 IHdhbnQgdGhlIGRhdGUvdGltZSByZXByZXNlbnRlZC4gVXNlIGFueSB2YWxpZCA8YSBocmVm PSJodHRwOi8vdWsyLnBocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCk8L2E+IHN0cmluZy4g RGVmYXVsdHMgdG8gdGhlIGRhdGUgZm9ybWF0IHlvdSBzZXQgaW4gQmFzaWMgUHJlZnM8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bm93PC9zcGFuPiA6IGlmIHlvdSBkb24mIzgy MTc7dCB3YW50IHRoZSB0aW1lIHRvIGJlLCB1bW0sICYjODIxNjtub3cmIzgyMTc7IHlvdSBj YW4gc3RhdGUgd2hhdCB0aW1lICYjODIxNjtub3cmIzgyMTc7IGlzISBVc2UgYW55IHN0YW5k YXJkIGRhdGUvdGltZSBmb3JtYXQuICBEZWZhdWx0OiB0aGUgdGltZSBhdCB3aGljaCB5b3Ug Y2FsbCB0aGUgdGFnLjxkaXYgY2xhc3M9ImJyZWFrIj5Zb3UgbWF5IGFsc28gdXNlIHRoZSBj b2RlcyA8Y29kZT4/ZGF5PC9jb2RlPiwgPGNvZGU+P21vbnRoPC9jb2RlPiBvciA8Y29kZT4/ eWVhcjwvY29kZT4gaW4geW91ciB0aW1lIHN0cmluZyB3aGljaCB3aWxsIGRvIG9uZSBvZiB0 d28gdGhpbmdzOgoJPHVsPgoJCTxsaT5yZXBsYWNlIHRoZSBjb2RlcyB3aXRoIHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBwYXJhbWV0ZXJzIDxjb2RlPmQ9PC9jb2RlPiwg PGNvZGU+bT08L2NvZGU+IG9yIDxjb2RlPnk9PC9jb2RlPiwgaWYgdGhleSBhcmUgYmVpbmcg dXNlZDwvbGk+CgkJPGxpPnVzZSB0aGUgY3VycmVudCBkYXksIG1vbnRoIG9yIHllYXIgKGku ZS4gdGhlIHBhcnRzIG9mIHRvZGF5JiM4MjE3O3MgZGF0ZSk8YnIgLz4KPC9kaXY+PC9saT4K CTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9mZnNldDwvc3Bhbj4gOiBh biBvZmZzZXQgaW50byB0aGUgZnV0dXJlIHRoYXQgeW91IHdpc2ggdG8gYXBwbHkgdG8gPGNv ZGU+bm93PC9jb2RlPi4gZS5nLiA8Y29kZT4yIG1vbnRoczwvY29kZT4uIFNlZSA8YSBocmVm PSIjZWc2Ij5FeGFtcGxlIDY8L2E+IGZvciBhIHByYWN0aWNhbCBhcHBsaWNhdGlvbiBvZiB0 aGlzIGF0dHJpYnV0ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5nbXQ8L3NwYW4+ IDogcmV0dXJuIGVpdGhlciBsb2NhbCB0aW1lICg8Y29kZT4wPC9jb2RlPikgYWNjb3JkaW5n IHRvIHRoZSB0aW1lIHpvbmUgc2V0IGluIEJhc2ljIFByZWZzLCBvciA8c3BhbiBjbGFzcz0i Y2FwcyI+R01UPC9zcGFuPiB0aW1lICg8Y29kZT4xPC9jb2RlPikuIERlZmF1bHQ6IDA8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFuZzwvc3Bhbj4gOiBhbiA8c3BhbiBjbGFz cz0iY2FwcyI+SVNPPC9zcGFuPiBsYW5ndWFnZSBjb2RlIHRoYXQgZm9ybWF0cyB0aW1lIHN0 cmluZ3Mgc3VpdGFibGUgZm9yIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgKG9yIGxvY2FsZSkg YXMgZGVmaW5lZCBieSA8YSBocmVmPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lT T182MzkiPjxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IDYzOTwvYT4uIERlZmF1bHQ6 IHVuc2V0IChpLmUuIHVzZSB0aGUgdmFsdWUgYXMgc3RhdGVkIGluIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IHByZWZzKTwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iYXJ0ZXYiPlRh ZzogPGNvZGU+Jmx0O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCAvJmd0OzwvY29kZT48L2gyPgoK CTxwPldoZW4geW91IGNyZWF0ZSBldmVudHMsIHRoZXkgcmVhbGx5IG9ubHkgZXhpc3Qgb25j ZSBhcyBhIHNpbmdsZSBhcnRpY2xlOyB0aGUgcmVwZXRpdGlvbiBpcyBhIHRyaWNrLiBUaHVz IHRoZSBidWlsdC1pbiBhcnRpY2xlIHRhZ3Mgb25seSBzaG93IHRoZSBzaW5nbGUsIHJlYWwg YXJ0aWNsZXMuPC9wPgoKCTxwPlRoaXMgdGFnICYjODIxMjsgc2ltaWxhciBpbiBmdW5jdGlv biB0byA8Y29kZT4mbHQ7dHhwOmFydGljbGVfY3VzdG9tIC8mZ3Q7PC9jb2RlPiAmIzgyMTI7 IGFsbG93cyB5b3UgdG8gc2VlIHJlY3VycmluZyBhcnRpY2xlcyBhcyBpZiB0aGV5IHdlcmUg JiM4MjE2O3JlYWwmIzgyMTc7IGFydGljbGVzIGluIHRoZSBkYXRhYmFzZS4gSW5zaWRlIHRo ZSB0YWcmIzgyMTc7cyA8Y29kZT5mb3JtPC9jb2RlPiBvciBjb250YWluZXIgeW91IGNhbiB1 c2UgYWxsIGV4aXN0aW5nIGFydGljbGUgdGFncyB0byBkaXNwbGF5IGFueSBpbmZvcm1hdGlv biB5b3UgbGlrZSBhYm91dCBlYWNoICYjODIxNjt2aXJ0dWFsJiM4MjE3OyBhcnRpY2xlLjwv cD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0c2FydGV2Ij5BdHRyaWJ1dGVzPC9oMz4K Cgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdGVwZmllbGQ8L3NwYW4+IDogc2Ft ZSBhcyBpbiBzbWRfY2FsZW5kYXI6IHRoZSBJRCBvZiB0aGUgZmllbGQgdGhhdCBjb250YWlu cyBldmVudCByZXBldGl0aW9ucy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+c2tpcGZpZWxkPC9zcGFuPiA6IHNhbWUgYXMgaW4gc21kX2NhbGVuZGFy OiB0aGUgSUQgb2YgdGhlIGZpZWxkIHRoYXQgY29udGFpbnMgdGhlIGxpc3Qgb2YgZXZlbnQg Y2FuY2VsbGF0aW9uIGRhdGVzLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5vbWl0ZmllbGQ8L3NwYW4+IDogc2FtZSBhcyBpbiBzbWRfY2FsZW5kYXI6 IHRoZSBJRCBvZiB0aGUgZmllbGQgdGhhdCBjb250YWlucyB0aGUgbGlzdCBvZiBldmVudCBv bWlzc2lvbiBkYXRlcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+ZXh0cmFmaWVsZDwvc3Bhbj4gOiBzYW1lIGFzIGluIHNtZF9jYWxlbmRhcjogdGhl IElEIG9mIHRoZSBmaWVsZCB0aGF0IGNvbnRhaW5zIHRoZSBsaXN0IG9mIGFkZGl0aW9uYWwg ZGF0ZXMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnR5 cGU8L3NwYW4+IDogdGhlIHR5cGVzIG9mIGV2ZW50IHRvIGRpc3BsYXkuIERlZmF1bHQ6IDxj b2RlPnN0YW5kYXJkLCByZWN1ciwgbXVsdGk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnNlY3Rpb248L3NwYW4+IDogcmVzdHJpY3QgdGhlIGV2ZW50cyB0byBhIGxp c3Qgb2Ygc2VjdGlvbnMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmNhdGVnb3J5PC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBldmVudHMgdG8gYSBsaXN0 IG9mIGNhdGVnb3JpZXMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmF1dGhvcjwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRzIHRvIGEgbGlzdCBv ZiBhdXRob3IgbG9naW4gbmFtZXMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnJlYWxuYW1lPC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBldmVudHMgdG8g YSBsaXN0IG9mIGF1dGhvciBSZWFsIE5hbWVzIChub3RlOiBhZGRzIG9uZSBleHRyYSBxdWVy eSkuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlkPC9z cGFuPiA6IHJlc3RyaWN0IHRoZSBldmVudHMgdG8gYSBsaXN0IG9mIGFydGljbGUgSURzLiBE ZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdGF0dXM8L3Nw YW4+IDogcmVzdHJpY3QgdGhlIGV2ZW50cyB0byB0aGlzIGxpc3Qgb2YgYXJ0aWNsZSBzdGF0 dXMuIERlZmF1bHQ6IDxjb2RlPmxpdmU8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmV4cGlyZWQ8L3NwYW4+IDogZGVmaW5pdGl2ZWx5IGhpZGUgKDApIG9yIHNob3cg KDEpIGV4cGlyZWQgZXZlbnRzLiBMZWF2ZSBibGFuayB0byB1c2UgdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5UWFA8L3NwYW4+IEFkdmFuY2VkIFByZWZlcmVuY2UgJiM4MjE2O1B1Ymxpc2gg ZXhwaXJlZCBhcnRpY2xlcyYjODIxNzs8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ dGltZTwvc3Bhbj4gOiBvbmx5IHNob3cgZXZlbnRzIGluIHRoaXMgdGltZSBmcmFtZS4gQ2hv b3NlIGZyb20gPGNvZGU+YW55PC9jb2RlPiwgPGNvZGU+ZnV0dXJlPC9jb2RlPiBvciA8Y29k ZT5wYXN0PC9jb2RlPi4gRGVmYXVsdDogPGNvZGU+YW55PC9jb2RlPjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5tb250aDwvc3Bhbj4gOiBvbmx5IHNob3cgZXZlbnRzIHRoYXQg b2NjdXIgaW4gdGhlIGdpdmVuIDxzcGFuIGNsYXNzPSJjYXBzIj5ZWVlZPC9zcGFuPi1tbS4g RGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZnJvbTwvc3Bh bj4gOiBvbmx5IHNob3cgZXZlbnRzIGZyb20gdGhpcyBzdGFydCBkYXRlLiBDYW4gYmUgYW55 IHZhbGlkIGRhdGUgZm9ybWF0LiBEZWZhdWx0OiB1bnNldCAoaS5lLiBhbGwgZGF0ZXMpPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRvPC9zcGFuPiA6IG9ubHkgc2hvdyBldmVu dHMgdXAgdG8gdGhpcyBlbmQgZGF0ZS4gQ2FuIGJlIGFueSB2YWxpZCBkYXRlIGZvcm1hdC4g RGVmYXVsdDogdW5zZXQgKGkuZS4gYWxsIGRhdGVzKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5zb3J0PC9zcGFuPiA6IG9yZGVyIHRoZSBldmVudHMgYnkgdGhpcyBjb2x1bW4u IFRoZSBtb3N0IHVzZWZ1bCB2YWx1ZSBpcyB0aGUgZGVmYXVsdDogPGNvZGU+UG9zdGVkIGFz YzwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiBw YXNzIGVhY2ggbWF0Y2hpbmcgZXZlbnQgdG8gdGhlIGdpdmVuIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IGZvcm0uIERlZmF1bHQ6IHVuc2V0LiBOb3RlIHRoYXQgdXNpbmcgdGhl IGNvbnRhaW5lciBvdmVycmlkZXMgdGhpcyBhdHRyaWJ1dGUsIGFuZCBpZiB5b3Ugc3BlY2lm eSBuZWl0aGVyIGEgZm9ybSBub3IgY29udGFpbmVyLCB5b3Ugd2lsbCBzZWUgYSBsaXN0IG9m IGFydGljbGUgcG9zdGVkIGRhdGVzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBh Z2luZzwvc3Bhbj4gOiB1bmxpa2UgYXJ0aWNsZV9jdXN0b20sIGV2ZW50cyBmcm9tIHRoZSBz bWRfYXJ0aWNsZV9ldmVudCB0YWcgbWF5IGJlIHBhZ2VkIHVzaW5nIDxjb2RlPiZsdDt0eHA6 b2xkZXIgLyZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7dHhwOm5ld2VyIC8mZ3Q7PC9jb2Rl Pi4gSWYgeW91IHdpc2ggdG8gc2hvdyBhbiBldmVudCBsaXN0IG9uIHRoZSBzYW1lIHBhZ2Ug YXMgYSBzdGFuZGFyZCBhcnRpY2xlIGxpc3QsIHRoZSBvbGRlci9uZXdlciB0YWdzIHdpbGwg bmF2aWdhdGUgYm90aCBsaXN0cyBzaW11bHRhbmVvdXNseSBzbyB5b3UgbWF5IG5lZWQgdG8g dHVybiBwYWdpbmcgb24gKDEpIG9yIG9mZiAoMCkuIERlZmF1bHQ6IDE8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+b2Zmc2V0PC9zcGFuPiA6IGJlZ2luIGRpc3BsYXlpbmcgZXZl bnRzIGZyb20gdGhpcyBwb3NpdGlvbiwgaW5zdGVhZCBvZiBmcm9tIHRoZSBzdGFydCBvZiB0 aGUgbGlzdCBvZiBldmVudHMuIERlZmF1bHQ6IDA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+bGltaXQ8L3NwYW4+IDogb25seSBzaG93IHRoaXMgbWFueSBldmVudHMgbWF4aW11 bSA8c3Ryb25nPnBlciBwYWdlPC9zdHJvbmc+LCBpLmUuIHRoZSBudW1iZXIgb2YgZXZlbnRz IHRvIGRpc3BsYXksIHdoZXRoZXIgdGhleSBjb21lIGZyb20gb25lICYjODIxNjtyZWFsJiM4 MjE3OyBhcnRpY2xlIG9yIG1hbnkuIERlZmF1bHQ6IDEwPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmV2ZW50bGltaXQ8L3NwYW4+IDogb25seSBzaG93IHRoaXMgbWFueSBldmVu dHMgbWF4aW11bSwgPHN0cm9uZz5wZXIgZXZlbnQ8L3N0cm9uZz4uIFNvIGlmIHlvdSBoYXZl IGEgd2Vla2x5IHJlcGVhdGVkIGV2ZW50IHRoYXQgbGFzdHMgZm9yIGZvdXIgbW9udGhzIGFu ZCB5b3Ugc2V0IDxjb2RlPmV2ZW50bGltaXQ9JnF1b3Q7NiZxdW90OzwvY29kZT4geW91IHdp bGwgb25seSBzZWUgYSBtYXhpbXVtIG9mIDYgZXZlbnRzIGZyb20gZXZlcnkgYXJ0aWNsZSBj b250YWluaW5nIHJlcGV0aXRpb24uIFRoZSByYW5nZSAoc3RhcnQgYW5kIGVuZCBkYXRlKSBp cyBkZXRlcm1pbmVkIGJ5IG90aGVyIHBsdWdpbiBhdHRyaWJ1dGVzLiBEZWZhdWx0OiAxMDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYWdlYnk8L3NwYW4+IDogZXNvdGVyaWMg cGFnaW5nIGZlYXR1cmUsIGlkZW50aWNhbCB0byA8Y29kZT4mbHQ7dHhwOmFydGljbGUgLyZn dDs8L2NvZGU+LiBEZWZhdWx0OiBzYW1lIGFzIDxjb2RlPmxpbWl0PC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wZ29ubHk8L3NwYW4+IDogc2V0IHRvIDxjb2RlPjE8 L2NvZGU+IHRvIHBlcmZvcm0gdGhlIHBhZ2luZyBhY3Rpb24gd2l0aG91dCBkaXNwbGF5aW5n IGFueXRoaW5nLiBQcm9iYWJseSB1c2VsZXNzLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB3 aXRob3V0IGJyYWNrZXRzIHRvIHdyYXAgdGhlIGxpc3QgaW4uIERlZmF1bHQ6IHVuc2V0PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1M IHRhZyB0byBzZXBhcmF0ZSBlYWNoIGl0ZW0gd2l0aC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnLiBEZWZh dWx0OiB1bnNldDwvbGk+Cgk8L3VsPgoKCTxwPkl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IHRo aXMgdGFnIGV4ZWN1dGVzIGluIDMtcGhhc2VzOjwvcD4KCgk8b2w+CgkJPGxpPlByZS1maWx0 ZXI6IGFsbCBldmVudHMgdGhhdCBtYXRjaCA8Y29kZT50eXBlPC9jb2RlPiwgPGNvZGU+Y2F0 ZWdvcnk8L2NvZGU+LCA8Y29kZT5zZWN0aW9uPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2Rl PiwgPGNvZGU+c3RhdHVzPC9jb2RlPiwgPGNvZGU+aWQ8L2NvZGU+LCBhbmQgPGNvZGU+ZXhw aXJlZDwvY29kZT4gYXJlIGV4dHJhY3RlZDwvbGk+CgkJPGxpPlRpbWUtZmlsdGVyOiBhbnkg JiM4MjIwO3RpbWUtYmFzZWQmIzgyMjE7IGF0dHJpYnV0ZXMgYXJlIHRoZW4gYXBwbGllZCB0 byB0aGUgYWJvdmUgbGlzdC4gQXQgdGhpcyBwb2ludCwgYW55IDxjb2RlPmV4dHJhZmllbGQ8 L2NvZGU+LCA8Y29kZT5zdGVwZmllbGQ8L2NvZGU+LCA8Y29kZT5vbWl0ZmllbGQ8L2NvZGU+ LCBvciA8Y29kZT5za2lwZmllbGQ8L2NvZGU+IGFyZSBjYWxjdWxhdGVkIHRvIGZpbmQgcmVw ZWF0ZWQgZGF0ZXMgKHVwIHRvIGFzIG1hbnkgYXMgPGNvZGU+ZXZlbnRsaW1pdDwvY29kZT4g YWxsb3dzIG9yIHRoZSBjYWxjdWxhdGlvbiBleGNlZWRzIHRoZSBldmVudCYjODIxNztzIGV4 cGlyeSB0aW1lKS4gVGhlIGF0dHJpYnV0ZXMgPGNvZGU+dGltZTwvY29kZT4sIDxjb2RlPm1v bnRoPC9jb2RlPiwgPGNvZGU+ZnJvbTwvY29kZT4sIGFuZCA8Y29kZT50bzwvY29kZT4gYXJl IHVzZWQgdG8gcmVmaW5lIHRoZSBmaWx0cmF0aW9uIGhlcmU8L2xpPgoJCTxsaT5PdXRwdXQ6 IHdoYXRldmVyIHRoZSBwcmV2aW91cyBwaGFzZXMgaGF2ZSBsZWZ0IGJlaGluZCBpcyBzdWJq ZWN0IHRvIGFueSA8Y29kZT5wYWdpbmc8L2NvZGU+LCA8Y29kZT5vZmZzZXQ8L2NvZGU+IGFu ZCA8Y29kZT5saW1pdDwvY29kZT4geW91IG1heSBoYXZlIHNwZWNpZmllZCwgdGhlbiB3cmFw cGVkIGFuZCBkaXNwbGF5ZWQ8L2xpPgoJPC9vbD4KCgk8aDIgaWQ9ImRhdGVzIj5EYXRlcywg Z290Y2hhcyBhbmQgaWRpb3N5bmNyYWNpZXM8L2gyPgoKCTxwPklmIHRoZXJlIHdhcyBvbmUg Z2xvYmFsIHRpbWUgem9uZSB0aGUgd29ybGQgd291bGQgYmUgc2ltcGxlci4gU2FkbHksIHdl IGFsbCBsaXZlIGluIGRpZmZlcmVudCBwbGFjZXMgYW5kIHRoZSBJbnRlcm5ldCBCZWF0IGhh c24mIzgyMTc7dCByZWFsbHkgdGFrZW4gb2ZmLiBFdmVuIG1vcmUgc2FkbHksIGNlcnRhaW4g dXBwZXIgZWNoZWxvbnMgb2YgcG93ZXIgZGVjcmVlIHRoYXQgdHdpY2UgYSB5ZWFyIHNvbWUg Y291bnRyaWVzIG11c3QgYWx0ZXIgdGhlaXIgY2xvY2tzIHRvIFNhdmUgRGF5bGlnaHQgKHdo YXRldmVyIHRoYXQgbWVhbnMpLjwvcD4KCgk8cD48c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9z cGFuPiBkb2VzIGl0cyBiZXN0IHRvIHNoaWVsZCB5b3UgZnJvbSB0aGlzIG1heWhlbSBieSBh bGxvd2luZyB5b3UgdG8gc3BlY2lmeSB5b3VyIGxvY2FsZSwgdGltZSBvZmZzZXQgZnJvbSA8 c3BhbiBjbGFzcz0iY2FwcyI+R01UPC9zcGFuPiwgYW5kIHdoZW4gPHNwYW4gY2xhc3M9ImNh cHMiPkRTVDwvc3Bhbj4gYXBwbGllcyBpbiB5b3VyIHRpbWUgem9uZSAobm90IGZvcmdldHRp bmcgdGhlIHRpbWUgem9uZSBvZiB5b3VyIHNlcnZlciBpZiBpdCBoYXBwZW5zIHRvIGJlIG5v d2hlcmUgbmVhciB5b3UpLiBBbmQgdGhlcmVpbiBsaWVzIHRoZSBydWIuPC9wPgoKCTxwPkZv ciBhIGNhbGVuZGFyIHN5c3RlbSwgdGhpcyBpcyBhbm5veWluZyBiZWNhdXNlIHdoZW4geW91 IHNheSB0aGF0IGFuIGV2ZW50IGlzIGdvaW5nIHRvIG9jY3VyIGF0IDhwbSBpbiBzaXggbW9u dGhzJiM4MjE3OyB0aW1lLCBwZXNreSBEYXlsaWdodCBTYXZpbmdzIG1heSB0aGVuIGJlIGlu IGVmZmVjdCBhbmQgeW91ciBldmVudCB3aWxsIGFwcGVhciBhbiBob3VyICYjODIxNjtvZmYm IzgyMTc7IChpdCBtYXkgbG9vayB3cm9uZyBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlIGFzIHdl bGwgYXMgaW4geW91ciBjYWxlbmRhciwgZGVwZW5kaW5nIG9uIHRoZSBzZXR0aW5ncykuPC9w PgoKCTxwPkFsc28sIGlmIHlvdXIgc2VydmVyIG9yIHlvdXIgb2ZmaWNlIGlzIHJlbG9jYXRl ZCBhbmQgeW91IGhhdmUgdG8gYWRqdXN0IHRpbWUgem9uZSwgYWxsIHlvdXIgYmVhdXRpZnVs bHkgY3JhZnRlZCBkYXRlcyB3aWxsIGJlIHNoaWZ0ZWQuIFdlbGwsIHRoZXkmIzgyMTc7cmUg bm90IGFjdHVhbGx5IGNoYW5nZWQgaW4gdGhlIGRhdGFiYXNlIHVubGVzcyB5b3UgZWRpdCBh biBhcnRpY2xlIGFuZCByZS1zYXZlIGl0LCBidXQgdGhleSA8ZW0+YXBwZWFyPC9lbT4gdG8g aGF2ZSBzaGlmdGVkIGJlY2F1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gaXMg dHJ5aW5nIHRvIHNoaWVsZCB5b3UgZnJvbSB0aW1lIGJ1cmVhdWNyYWN5IGluIGEgd29ybGQg Z29uZSBtYWQuPC9wPgoKCTxwPlVuZm9ydHVuYXRlbHkgdGhlcmUgaXMgbGl0dGxlIHdlIGNh biBkbyBhYm91dCB0aGlzIGF0IHRoZSBtb21lbnQgdW50aWwgdGhlIHdheSBkYXRlcyBhcmUg aGFuZGxlZCBpbiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBpcyBjaGFuZ2VkLiBC dXQgdGhlcmUgYXJlIHNvbWUgc2V0dGluZ3MgdGhhdCB5b3UgY2FuIHBsYXkgd2l0aCB0byB0 cnkgYW5kIG1ha2Ugc2Vuc2Ugb2YgaXQgYWxsLiBOYW1lbHkgdGhlIDxjb2RlPmdtdDwvY29k ZT4gYXR0cmlidXRlIGluIGFueSBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiYj ODIxNztzIGRhdGUtYmFzZWQgdGFncyBzdWNoIGFzIDxjb2RlPiZsdDt0eHA6cG9zdGVkIC8m Z3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3R4cDpleHBpcmVzIC8mZ3Q7PC9jb2RlPi4gU29t ZXRpbWVzIGZpZGRsaW5nIHdpdGggdGhhdCBhbmQgdGhlIHRpbWUgem9uZS9EU1QgZmxhZ3Mg d2lsbCBoZWxwLiBPdGhlciB0aW1lcyB5b3UmIzgyMTc7bGwgZ2V0IGluIGEgcmlnaHQgb2xk IG1lc3MuPC9wPgoKCTxwPklmIGFsbCB0aGF0IGZhaWxzLCB0aGUgY29uZGl0aW9uYWwgdGFn IG1heSBiZSBhYmxlIHRvIGhlbHAgeW91IGNvbXBhcmUgY2VydGFpbiBkYXRlcyBhbmQgYXBw bHkgZGlmZmVyZW50IGF0dHJpYnV0ZXMgZGVwZW5kaW5nIG9uIHRoZSBkYXkgb2YgdGhlIHll YXIuIEZhaWxpbmcgdGhhdCwganVzdCB1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPkdNVDwvc3Bh bj4gYW5kIHJlZnVzZSB0byBvYnNlcnZlIDxzcGFuIGNsYXNzPSJjYXBzIj5EU1Q8L3NwYW4+ IDotKTwvcD4KCgk8aDIgY2xhc3M9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+CgoJPGgzIGlk PSJlZzEiPkV4YW1wbGUgMTwvaDM+CgoJPHA+VGhlIGJlYXV0eSBvZiB0aGUgcGx1Z2luIGlz IHRoYXQgeW91IGhhdmUgdGhlIGVudGlyZSBhcnNlbmFsIG9mIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IHRhZ3MgYXZhaWxhYmxlIHRvIHlvdSBpZiB5b3UgY2hvb3NlIHRvIHVz ZSBhIDxjb2RlPmZvcm08L2NvZGU+LiBUaHVzIHlvdSBjYW4gc2V0IHRoZSBhcnRpY2xlJiM4 MjE3O3Mgc3RhcnQgYW5kIGVuZCBkYXRlcyB0byB0aGUgc2FtZSBkYXkgYW5kIHNldCB0aGUg c3RhcnQgYW5kIGVuZCB0aW1lcyB0byBpbmRpY2F0ZSB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0 aGUgZXZlbnQuIFlvdSBjYW4gdGhlbiB1c2Ugc3RhbmRhcmQgPGNvZGU+Jmx0O3R4cDpwb3N0 ZWQgLyZndDs8L2NvZGU+IG9yIDxjb2RlPiZsdDt0eHA6ZXhwaXJlcyAvJmd0OzwvY29kZT4g dGFncyB3aXRoIHZhcmlvdXMgPGNvZGU+Zm9ybWF0PC9jb2RlPiBzdHJpbmdzIHRvIHJlbmRl ciB0aGUgZXZlbnQmIzgyMTc7cyBjcml0ZXJpYS48L3A+CgoJPHA+U2ltaWxhcmx5IHlvdSBj YW4gdXNlIDxjb2RlPiZsdDt0eHA6ZXhjZXJwdCAvJmd0OzwvY29kZT4gYW5kIDxjb2RlPiZs dDt0eHA6dGl0bGUgLyZndDs8L2NvZGU+IG9yIG9mIGNvdXJzZSBhbnkgY3VzdG9tIGZpZWxk cyB0byBzaG93IGFzIG11Y2ggb3IgYXMgbGl0dGxlIGRldGFpbCBhcyB5b3UgbGlrZSBpbiB0 aGUgY2FsZW5kYXIgY2VsbC48L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7dHhwOnNtZF9jYWxlbmRhciBzZWN0aW9uPSZxdW90O2V2ZW50cyZxdW90 OyZndDsKJmx0O2RpdiZndDsKICAgRXZlbnQ6ICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4 cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7YnIgLyZndDsmbHQ7 dHhwOmV4Y2VycHQgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7ZXZ0 aW1lJnF1b3Q7Jmd0OwogICBTdGFydDogJmx0O3R4cDpwb3N0ZWQgZm9ybWF0PSZxdW90OyVI OiVNJnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0OwombHQ7ZGl2IGNsYXNzPSZxdW90O2V2dGlt ZSZxdW90OyZndDsKICAgRW5kOiAmbHQ7dHhwOmV4cGlyZXMgZm9ybWF0PSZxdW90OyVIOiVN JnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0OwombHQ7L3R4cDpzbWRfY2FsZW5kYXImZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyPC9oMz4KCgk8cD5Vc2luZyB0 aGUgY29uZGl0aW9uYWwgdGFnIHlvdSBjYW4gdGFrZSBhY3Rpb24gaWYgY2VydGFpbiBldmVu dHMgY29udGFpbiBwYXJ0aWN1bGFyIGZsYWdzLiBUaGlzIGV4YW1wbGUgYWxzbyBzaG93IGEg Y29tcGxldGVseSB1c2VsZXNzIG1hbm5lciBvZiBlbXBsb3lpbmcgPGNvZGU+Jmx0O3R4cDpz bWRfY2FsX25vdyAvJmd0OzwvY29kZT4uPC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+VGltZSBpczogJmx0O3R4cDpzbWRfY2FsX25vdyBmb3JtYXQ9JnF1 b3Q7JVQmcXVvdDsgLyZndDsKJmx0O3R4cDpzbWRfY2FsZW5kYXIgZm9ybT0mcXVvdDtldmZv cm0mcXVvdDsKICAgICBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9tXzMmcXVvdDsgc2tpcGZpZWxk PSZxdW90O2N1c3RvbV82JnF1b3Q7CiAgICAgc3BhbmZvcm09JnF1b3Q7bXVsdGlzJnF1b3Q7 IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JbiBmb3JtIDxjb2RlPmV2Zm9ybTwvY29kZT46 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpz bWRfaWZfY2FsIGZsYWc9JnF1b3Q7cmVjdXImcXVvdDsmZ3Q7CiAgJmx0O3R4cDpwZXJtbGlu ayZndDsoUkVDVVIpJmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0Owog ICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6dGl0bGUgLyZndDsmbHQ7L3R4cDpwZXJt bGluayZndDsKICAgJmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7bXVsdGlmaXJzdCZx dW90OyZndDsKICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cmlnaHQmcXVvdDsmZ3Q7JmFt cDtsYXF1bzstLSZsdDsvc3BhbiZndDsKICAgJmx0Oy90eHA6c21kX2lmX2NhbCZndDsKICAg Jmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7cmVjdXJmaXJzdCZxdW90OyZndDsKICAg ICAgJmx0O3NwYW4mZ3Q7T25lIG9mIG1hbnkuLi4mbHQ7L3NwYW4mZ3Q7CiAgICZsdDsvdHhw OnNtZF9pZl9jYWwmZ3Q7CiZsdDsvdHhwOnNtZF9pZl9jYWwmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5BbmQgaW4gZm9ybSA8Y29kZT5tdWx0aXM8L2NvZGU+OjwvcD4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmX2NhbCBmbGFnPSZx dW90O211bHRpLCBtdWx0aXByZXYmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7 LS0mYW1wO3JhcXVvOy0tJmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiZsdDsvdHhwOnNtZF9pZl9j YWwmZ3Q7CiZsdDt0eHA6c21kX2lmX2NhbCBmbGFnPSZxdW90O211bHRpbGFzdCZxdW90OyZn dDsKICAgJmx0O3R4cDpwZXJtbGluayZndDsKICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7 bGVmdCZxdW90OyZndDstLSZhbXA7cmFxdW87Jmx0Oy9zcGFuJmd0OyBFTkQgJmx0O3R4cDp0 aXRsZSAvJmd0OwogICAmbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0Oy90eHA6c21kX2lmX2Nh bCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGljZSB0aGF0IDxjb2RlPm11bHRpZmlyc3Q8 L2NvZGU+IGlzIHRlc3RlZCBpbnNpZGUgdGhlIHNhbWUgZm9ybSBhcyBzdGFuZGFyZCBldmVu dHMuIFRoaXMgaXMgYmVjYXVzZSBvbmx5IDxlbT5jb250aW51YXRpb24gc3Bhbm5lZCBjZWxs czwvZW0+IGFyZSBwYXNzZWQgdG8gdGhlIDxjb2RlPnNwYW5mb3JtPC9jb2RlPjsgdGhlIGZp cnN0IGV2ZW50IG9mIGEgc3Bhbm5lZCBncm91cCBpcyBqdXN0IGxpa2UgYW55IHN0YW5kYXJk IGV2ZW50LiBTaW1pbGFybHksIGlmIHlvdSBoYWQgYmVlbiB1c2luZyA8Y29kZT5yZWN1cmZv cm08L2NvZGU+IHRoZSBmaXJzdCBldmVudCBvZiB0aGUgcmVjdXJyaW5nIHNldCB3b3VsZCBi ZSBwcm9jZXNzZWQgaW4gdGhlIHVzdWFsIGZvcm0vY29udGFpbmVyIGFuZCBldmVyeSBzdWJz ZXF1ZW50IGV2ZW50IHdvdWxkIGJlIHBhc3NlZCB0byB0aGUgZGVkaWNhdGVkIGZvcm0uPC9w PgoKCTxoMyBpZD0iZWczIj5FeGFtcGxlIDM8L2gzPgoKCTxwPllvdSBjb3VsZCB1c2UgdGhl IGNhbGVuZGFyIHRhZ3MgdG8gb3V0cHV0IHZhcmlvdXMgcGllY2VzIG9mIGZsYWcgaW5mb3Jt YXRpb24gdG8gYnVpbGQgeW91ciBvd24gY2xhc3MgbmFtZXMuIFRoaXMgZXhhbXBsZSBhbHNv IGRlbW9uc3RyYXRlcyB0aGUgPGNvZGU+aHRtbDwvY29kZT4gYXR0cmlidXRlIG9mIDxjb2Rl PiZsdDt0eHA6c21kX2NhbF9pbmZvIC8mZ3Q7PC9jb2RlPiB0byBidWlsZCB1cCBhIHF1ZXJ5 IHN0cmluZyB0aGF0IGlzIHBhc3NlZCBhbG9uZyB3aXRoIGFuIGV2ZW50JiM4MjE3O3MgPGNv ZGU+Y2F0ZWdvcnkxPC9jb2RlPiB3aGVuIGEgdmlzaXRvciBjbGlja3MgdGhlIGFuY2hvci48 L3A+CgoJPHA+VGhpcyBhbGxvd3MgeW91ciBzaXRlIHZpc2l0b3JzIHRvIGZpbHRlciBldmVu dHMgYnkgY2F0ZWdvcnkgd2hpbGUgcmV0YWluaW5nIHRoZSBhYmlsaXR5IHRvIHNob3cgdGhl IGNhbGVuZGFyIGZvciB0aGUgY3VycmVudCBtb250aC95ZWFyIGFuZCBzZWN0aW9uIHRoZXkg YXJlIHZpZXdpbmcgaW5zdGVhZCBvZiBkcm9wcGluZyBiYWNrIHRvIHRoZSBjdXJyZW50IG1v bnRoL3llYXIgbGlrZSBvdGhlciBjYWxlbmRhciBzeXN0ZW1zIG9mdGVuIGRvLjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2NhbGVu ZGFyIGlzb3dlZWtzPSZxdW90O1dFRUsjJnF1b3Q7CiAgICAgeWVhcndpZHRoPSZxdW90OzAs MiZxdW90OyBzZWxlY3Q9JnF1b3Q7eWVhciwgbW9udGgmcXVvdDsKICAgICBzdGVwZmllbGQ9 JnF1b3Q7Y3VzdG9tXzEmcXVvdDsgc2tpcGZpZWxkPSZxdW90O2N1c3RvbV8yJnF1b3Q7CiAg ICAgc2hvd3NraXBwZWQ9JnF1b3Q7MSZxdW90OyBleHBpcmVkPSZxdW90OzEmcXVvdDsmZ3Q7 CiAgICZsdDtzcGFuIGNsYXNzPSZxdW90OyZsdDt0eHA6c21kX2NhbF9pbmZvIGpvaW49JnF1 b3Q7IGNhbF8mcXVvdDsgLyZndDsmcXVvdDsmZ3Q7CiAgICAgICZsdDt0eHA6cGVybWxpbmsm Z3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAgICAmbHQ7 YSBocmVmPSZxdW90Oz9jPSZsdDt0eHA6Y2F0ZWdvcnkxCiAgICAgICAgIC8mZ3Q7JmFtcDsm bHQ7dHhwOnNtZF9jYWxfaW5mbyB0eXBlPSZxdW90O3MsIHllYXIsCiAgICAgICAgIG1vbnRo LCBjYWxpZCZxdW90OyBodG1sPSZxdW90OzEmcXVvdDsgam9pbl9wcmVmaXg9JnF1b3Q7JnF1 b3Q7CiAgICAgICAgIC8mZ3Q7JnF1b3Q7Jmd0OyZsdDt0eHA6Y2F0ZWdvcnkxIHRpdGxlPSZx dW90OzEmcXVvdDsgLyZndDsmbHQ7L2EmZ3Q7CiAgICZsdDsvc3BhbiZndDsKJmx0Oy90eHA6 c21kX2NhbGVuZGFyJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2hhdCBpcyBhbHNvIHVzZWZ1 bCBhYm91dCB0aGUgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2luZm8gLyZndDs8L2NvZGU+IHRh ZyBpcyB0aGF0IGlmIGEgcGFydGljdWxhciB2YWx1ZSBpcyBub3Qgc2V0IGl0IHdpbGwgPGVt Pm5vdDwvZW0+IGJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuPC9wPgoKCTxoMyBpZD0iZWc0 Ij5FeGFtcGxlIDQ8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O2gyJmd0O1VwY29taW5nIEV2ZW50cyZsdDsvaDImZ3Q7CiZsdDt0eHA6c21kX2Fy dGljbGVfZXZlbnQgc3RlcGZpZWxkPSZxdW90O2N1c3RvbV8xJnF1b3Q7CiAgICAgd3JhcHRh Zz0mcXVvdDtkbCZxdW90OyB0aW1lPSZxdW90O2Z1dHVyZSZxdW90OyBldmVudGxpbWl0PSZx dW90OzUmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OwogICAgICZsdDtk dCZndDsmbHQ7dHhwOnBvc3RlZCBmb3JtYXQ9JnF1b3Q7JUIgJVkmcXVvdDsgLyZndDsmbHQ7 L2R0Jmd0OwogICAmbHQ7L3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICZsdDtkZCZndDsKICAg ICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlLyZndDsmbHQ7L3R4cDpwZXJt bGluayZndDsKICAgICAgJmx0O3R4cDpwb3N0ZWQgLyZndDsKICAgJmx0Oy9kZCZndDsKJmx0 Oy90eHA6c21kX2FydGljbGVfZXZlbnQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IGxp c3RzIHRoZSBuZXh0IDUgdXBjb21pbmcgJiM4MjEyOyByZWN1cnJpbmcgJiM4MjEyOyBldmVu dHMsIHBsdXMgYW55IHN0YW5kYXJkIGFuZCBzcGFubmVkIGV2ZW50cywgZm9ybWF0dGluZyB0 aGVtIGFzIGEgZGVmaW5pdGlvbiBsaXN0LiBJZiB5b3UgYWRkIHBhZ2luYXRpb24gdGFncyB5 b3UgY2FuIGZsaXAgdGhyb3VnaCBhbGwgdGhlIGV2ZW50czsgdGhleSB3aWxsIGJlIGRpc3Bs YXllZCAxMCBhdCBhIHRpbWUgb24gZWFjaCBwYWdlIChpZiB5b3Ugd2FudCB0byBrZWVwIHRy YWNrIG9mIHdoaWNoIHBhZ2UgeW91IGFyZSBvbiBhcyB5b3UgZmxpcCB0aHJvdWdoIGEgY2Fs ZW5kYXIgdGhhdCBpcyBpbiBhIHNpZGViYXIsIGFkZCA8Y29kZT5wZzwvY29kZT4gdG8gdGhl IDxjb2RlPm1haW50YWluPC9jb2RlPiBhdHRyaWJ1dGUgaW4geW91ciBjYWxlbmRhcikuPC9w PgoKCTxwPk5vdGUgdGhlIGh5cGVybGlua2VkIHRpdGxlIHNob3duIGhlcmUgd2lsbCBkaXNw bGF5IHRoZSAmIzgyMTY7cmVhbCYjODIxNzsgYXJ0aWNsZSB3aGVuIGNsaWNrZWQuIElmIHlv dSB3YW50ZWQgdG8gYWxsb3cgcGVvcGxlIHRvIGJvb2sgYW4gZXZlbnQgb24geW91ciBpbmRp dmlkdWFsIGFydGljbGUsIHRyeSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6aWZfaW5kaXZpZHVhbF9hcnRpY2xlJmd0OwogJmx0 O3R4cDphcnRpY2xlIGxpbWl0PSZxdW90OzEmcXVvdDsmZ3Q7CiAgJmx0O2gzJmd0OyZsdDt0 eHA6dGl0bGUgLyZndDsmbHQ7L2gzJmd0OwogICZsdDt0eHA6Ym9keSAvJmd0OwogICZsdDtw Jmd0O1BsZWFzZSBjaG9vc2UgYSBkYXRlIHRvIGJvb2s6Jmx0Oy9wJmd0OwogICZsdDtzZWxl Y3QmZ3Q7CiAgJmx0O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCBzdGVwZmllbGQ9JnF1b3Q7Y3Vz dG9tXzEmcXVvdDsKICAgIHR5cGU9JnF1b3Q7cmVjdXImcXVvdDsgaWQ9JiMzOTsmbHQ7dHhw OmFydGljbGVfaWQgLyZndDsmIzM5OyZndDsKICAgICZsdDtvcHRpb24KICAgICB2YWx1ZT0m IzM5OyZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDslRy0lbS0lZCZxdW90Oy8mZ3Q7JiMz OTsmZ3Q7CiAgICAgICZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDslbSAlZCwgJEcmcXVv dDsgLyZndDsKICAgICZsdDsvb3B0aW9uJmd0OwogICZsdDsvdHhwOnNtZF9hcnRpY2xlX2V2 ZW50Jmd0OwogICZsdDsvc2VsZWN0Jmd0OwogJmx0Oy90eHA6YXJ0aWNsZSZndDsKJmx0Oy90 eHA6aWZfaW5kaXZpZHVhbF9hcnRpY2xlJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2l0aCBz b21lIGN1bm5pbmcgeW91IGNvdWxkIGV2ZW4gYWRkIHRoZSAmIzgyMTY7dmlydHVhbCYjODIx NzsgZGF0ZSB0aGF0IHRoZXkgY2hvc2UgaW4geW91ciBvcmlnaW5hbCBhcnRpY2xlX2V2ZW50 IGxpc3QgYW5kIHBhc3MgaXQgYXMgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2 YXJpYWJsZSB0byB5b3VyIGluZGl2aWR1YWwgYXJ0aWNsZSB3aGVyZSB5b3UgY291bGQgcmVh ZCB0aGUgdmFsdWUgYW5kIHByZS1zZWxlY3QgdGhlIGRhdGUgZm9yIHRoZSB2aXN0b3IuPC9w PgoKCTxoMyBpZD0iZWc1Ij5FeGFtcGxlIDU8L2gzPgoKCTxwPkhvdyBhYm91dCBiZWluZyBh YmxlIHRvIG91dHB1dCB5b3VyIGV2ZW50cyBpbiBpQ2FsIGZvcm1hdCBzbyBvdGhlciBwZW9w bGUgY2FuIHN5bmMgdGhlaXIgY2FsZW5kYXJzIHRvIHlvdXJzPyBQdXQgdGhpcyBpbiBhIG5l dyBQYWdlIHRlbXBsYXRlIGluIGl0cyBvd24gU2VjdGlvbjo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5CRUdJTjpWQ0FMRU5EQVIKVkVSU0lPTjoyLjAK WC1XUi1DQUxOQU1FOkdpZ3MgQ2FsZW5kYXIKUFJPRElEOi0vL0FwcGxlIENvbXB1dGVyLCBJ bmMvL2lDYWwgMS41Ly9FTgpYLVdSLVRJTUVaT05FOkV1cm9wZS9Mb25kb24KJmx0O3R4cDpz bWRfYXJ0aWNsZV9ldmVudCBmb3JtPSZxdW90O2ljc2l0ZW0mcXVvdDsgdGltZT0mcXVvdDth bnkmcXVvdDsKc2VjdGlvbj0mcXVvdDtnaWdzJnF1b3Q7IGxpbWl0PSZxdW90OzEwMDAmcXVv dDsmZ3Q7CiBCRUdJTjpWRVZFTlQKIERUU1RBUlQ6Jmx0O3R4cDpwb3N0ZWQgZm9ybWF0PSZx dW90OyVZJW0lZFQlSCVpJXMmcXVvdDsgLyZndDsKIERURU5EOiZsdDt0eHA6ZXhwaXJlcyBm b3JtYXQ9JnF1b3Q7JVklbSVkVCVIJWklcyZxdW90OyAvJmd0OwogU1VNTUFSWTombHQ7dHhw OnRpdGxlIC8mZ3Q7CiBFTkQ6VkVWRU5UCiZsdDsvdHhwOnNtZF9hcnRpY2xlX2V2ZW50Jmd0 OwpFTkQ6VkNBTEVOREFSCjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IHdpbGwgb3V0cHV0IGFu IGlDYWwtZm9ybWF0dGVkIGdpZyBsaXN0IChyZXBlYXRlZCBvciBvdGhlcndpc2UpLiBJZiB5 b3UgZ290IGZyZWFreSB3aXRoIGl0IGFuZCBhZGRlZCBzb21lIGNvbmRpdGlvbmFsIGxvZ2lj IGluc2lkZSB0aGUgdGVtcGxhdGUgeW91IGNvdWxkIGV2ZW4gcmVhZCBpbiA8c3BhbiBjbGFz cz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZXMgYW5kIHBsdWcgdGhlbSBpbi4gVGh1cyB5 b3UgY291bGQgbGluayB0byBpdCBkaXJlY3RseSBvZmYgdGhlIGNhbGVuZGFyIGl0c2VsZiwg cGFzcyBpbiB0aGUgc2VjdGlvbiwgY2F0ZWdvcnkgb3IgZXZlbnQgaW5mbyBhbmQgaGF2ZSBh IGN1c3RvbWlzZWQgaUNhbCBzdHJlYW0gcHVtcGVkIG91dCBvZiBUZXh0cGF0dGVybi48L3A+ CgoJPHA+VGhhbmtzIHRvIHdvb2YgZm9yIGJyaW5naW5nIHRoZSBvcmlnaW5hbCA8YSBocmVm PSJodHRwOi8vZGUtb25saW5lLmNvLnVrLzIwMDYvMDUvMDUvdGV4dHBhdHRlcm4tYW5kLWlj YWwiPkRhdmlkIEVtZXJ5PC9hPiBhcnRpY2xlIHRvIG15IGF0dGVudGlvbi48L3A+CgoJPGgz IGlkPSJlZzYiPkV4YW1wbGUgNjwvaDM+CgoJPHA+VXNpbmcgdGhlIDxjb2RlPm5vdzwvY29k ZT4gYW5kIDxjb2RlPm9mZnNldDwvY29kZT4gYXR0cmlidXRlcyBvZiA8Y29kZT4mbHQ7dHhw OnNtZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPiB5b3UgY2FuIGVmZmVjdGl2ZWx5IHNldCAmIzgy MTY7bm93JiM4MjE3OyB0byBiZSBhbnkgdGltZSB5b3UgbGlrZSBhbmQgbWFrZSBjYWxjdWxh dGlvbnMgYmFzZWQgb24gYSBwYXJ0aWN1bGFyIGRhdGUuPC9wPgoKCTxwPlBsdWdnaW5nIHRo ZSA8Y29kZT4/bW9udGg8L2NvZGU+IGFuZCA8Y29kZT4/eWVhcjwvY29kZT4gY29kZXMgaW4g YWxsb3dzIHlvdSB0byBtYWtlIDxjb2RlPiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQgLyZn dDs8L2NvZGU+IHRyYWNrIHRoZSBjYWxlbmRhci4gU28geW91IGNhbiBhdXRvbWF0aWNhbGx5 IHNob3cgb25seSB0aGUgZXZlbnRzIHRoYXQgb2NjdXIgaW4gdGhlIG1vbnRoIHRoZSB2aXNp dG9yIGlzIGJyb3dzaW5nIHZpYSB0aGUgY2FsZW5kYXI6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfY2FsZW5kYXIgc3RlcGZpZWxk PSZxdW90O2N1c3RvbV8xJnF1b3Q7IC8mZ3Q7CiZsdDtoMiZndDtFdmVudHMgdGhpcyBtb250 aCZsdDsvaDImZ3Q7CiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQgc3RlcGZpZWxkPSZxdW90 O2N1c3RvbV8xJnF1b3Q7CiAgICAgZnJvbT0mIzM5OyZsdDt0eHA6c21kX2NhbF9ub3cgbm93 PSZxdW90OzAxLT9tb250aC0/eWVhciZxdW90OyAvJmd0OyYjMzk7CiAgICAgdG89JiMzOTsm bHQ7dHhwOnNtZF9jYWxfbm93IG5vdz0mcXVvdDs/bW9udGgtP3llYXImcXVvdDsKICAgICAg ICBvZmZzZXQ9JnF1b3Q7MSBtb250aCZxdW90OyAvJmd0OyYjMzk7IHRpbWU9JnF1b3Q7YW55 JnF1b3Q7IHdyYXB0YWc9JnF1b3Q7dWwmcXVvdDsmZ3Q7CiZsdDtsaSZndDsmbHQ7dHhwOnBl cm1saW5rJmd0OyZsdDtiJmd0OyZsdDt0eHA6dGl0bGUvJmd0OyZsdDsvYiZndDsmbHQ7L3R4 cDpwZXJtbGluayZndDsKJmx0O2JyLyZndDsmbHQ7dHhwOnBvc3RlZCAvJmd0OyZsdDsvbGkm Z3Q7CiZsdDsvdHhwOnNtZF9hcnRpY2xlX2V2ZW50Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ PC9kaXY+PC9wPgo8IS0tICoqKiBCRUdJTiBQTFVHSU4gQ1NTICoqKiAtLT4KPHN0eWxlIHR5 cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVs cCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5l dyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNz bWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRv dHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBt YXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5r LCAjc21kX2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6ICMwMGM7IHRleHQtZGVjb3JhdGlvbjog bm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFw eDt9CiNzbWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1 ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1 ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZv bnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBj ZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNr OyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBz YW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMDc5OyBmb250OiBib2xkIDEy cHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBw eCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVy bGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJp ZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zv cm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBj b2xvcjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVy OjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1h bGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9o ZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9o ZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLnJlcXVpcmVk IHtjb2xvcjpyZWQ7fQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIwcHggNXB4IDMwcHg7 IH0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+CjwhLS0g KioqIEVORCBQTFVHSU4gQ1NTICoqKiAtLT4KIjtzOjM6Im1kNSI7czozMjoiZmEyMzkzY2Mw NjIyZmNhYmRlZjc5MGZlYmFlY2IxMjQiO30=