# Name: smd_gallery v0.62 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJzbWRfZ2FsbGVyeSI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC42MiI7czoxMToiZGVzY3JpcHRpb24iO3M6 Njk6IkEobm90aGVyKSB0aHVtYm5haWwgZ2FsbGVyeS9zbGlkZXNob3cgY3JlYXRvciB3aXRo IHVucmVhbCBmbGV4aWJpbGl0eSI7czo0OiJjb2RlIjtzOjM3NTc1OiJyZXF1aXJlX3BsdWdp bignc21kX2xpYicpOw0KDQovLyBNTFAgc3VwcG9ydA0KZ2xvYmFsICRzbWRfZ2FsbExhbmc7 DQokc21kX2dhbGxTdHIgPSBhcnJheSgNCgknbmF2Zmlyc3QnID0+ICdGaXJzdCcsDQoJJ25h dmxhc3QnID0+ICdMYXN0JywNCgknbmF2cHJldicgPT4gJyZsYXF1bzsnLA0KCSduYXZuZXh0 JyA9PiAnJnJhcXVvOycsDQopOw0KJHNtZF9nYWxsTGFuZyA9IG5ldyBzbWRfTUxQKCdzbWRf Z2FsbGVyeScsICdzbWRfZ2FsbCcsICRzbWRfZ2FsbFN0cik7DQoNCmZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXIsICRkYXRlZm9ybWF0LCAkc21kX2dhbGxMYW5nLCAkbDEwbl9sYW5n dWFnZTsNCg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJ J2NvbHVtbnMnID0+ICcnLA0KCQknZGVsaW0nID0+ICcsJywNCgkJJ3BhcmFtZGVsaW0nID0+ ICc6JywNCgkJJ2NvbGxhdGVkZWxpbScgPT4gJywnLA0KCQknc3RyaWN0ZmllbGRzJyA9PiAn MCcsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2NvdW50Zm9ybScgPT4gJycsDQoJCSdjb3VudHBv cycgPT4gJ2Fib3ZlJywNCgkJJ2lkJyA9PiAnJywNCgkJJ25hbWUnID0+ICcnLA0KCQknY2F0 ZWdvcnknID0+ICcnLA0KCQknYXNwZWN0JyA9PiAnJywNCgkJJ2F1dGhvcicgPT4gJycsDQoJ CSdkaW1lbnNpb25zJyA9PiAnJywNCgkJJ2V4dGVuc2lvbicgPT4gJycsDQoJCSdkaXJlY3Rv cnknID0+ICcnLA0KCQknbWF0Y2gnID0+ICcnLA0KCQknc3VibGV2ZWwnID0+ICcwJywNCgkJ J2VzY2FwZScgPT4gJ2FsdCwgdGl0bGUsIGNhcHRpb24nLA0KCQknc29ydCcgPT4gJycsDQoJ CSdvZmZzZXQnID0+ICcwJywNCgkJJ2xpbWl0JyA9PiAnMCcsDQoJCSdtYXhsaW1pdCcgPT4g Jzk5OTk5JywNCgkJJ2dyb3VwbGltaXQnID0+ICc5OTk5OScsDQoJCSd0aHVtYmxpbWl0JyA9 PiAnOTk5OTknLA0KCQkndGh1bWJvZmZzZXQnID0+ICcwJywNCgkJJ3RodW1iJyA9PiAnMDox JywNCgkJJ3RodW1ic2l6ZScgPT4gJycsDQoJCSdpbWdzaXplJyA9PiAnJywNCgkJJ29uY2hh bmdlJyA9PiAnY2F0ZWdvcnknLA0KCQknb25jaGFuZ2V3cmFwdGFnJyA9PiAnJywNCgkJJ29u Y2hhbmdlY2xhc3MnID0+ICcnLA0KCQknb2JqZWN0Zm9ybScgPT4gJycsDQoJCSdncm91cHRh ZycgPT4gJycsDQoJCSdncm91cGNsYXNzJyA9PiAnJywNCgkJJ3RleHQnID0+ICcnLA0KCQkn Zm9ybWF0JyA9PiAkZGF0ZWZvcm1hdCwNCgkJJ2dtdCcgPT4gJycsDQoJCSdsYW5nJyA9PiAn JywNCgkJJ2NvbGxhdGUnID0+ICcnLA0KCQknY29tYm8nID0+ICcnLA0KCQkncGFnaW5nJyA9 PiAnMCcsDQoJCSdwYWdlZm9ybScgPT4gJycsDQoJCSdwYWdlcG9zJyA9PiAnYmVsb3cnLA0K CQknbmF2d3JhcHRhZycgPT4gJ3VsJywNCgkJJ25hdmJyZWFrJyA9PiAnbGknLA0KCQknbmF2 Y2xhc3MnID0+ICdzbWRfZ2FsbGVyeV9uYXYnLA0KCQknZW1wdHljbGFzcycgPT4gJ2VtcHR5 JywNCgkJJ2dhbGxlcnlpZCcgPT4gJz80OjYnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdo dG1sX2lkJyA9PiAnJywNCgkJJ2JyZWFrJyA9PiAnJywNCgkJJ2NsYXNzJyA9PiAnJywNCgkJ J2JyZWFrY2xhc3MnID0+ICcnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0K DQoJLy8gQ2F0ZWdvcnkgcmVsaWVzIG9uIHdoZXRoZXIgaWQgaGFzIGJlZW4gc3BlY2lmaWVk IG9yIG5vdC4NCgkvLyBsQXR0cygpIHdvbid0IGxldCB1cyBoYW5kbGUgdGhpcyBsb2dpYyBz byBpdCBoYXMgdG8gYmUgZG9uZSBtYW51YWxseQ0KCSRhdHRlbXB0TWF0Y2ggPSAoZW1wdHko JGNhdGVnb3J5KSAmJiBlbXB0eSgkaWQpICYmIGVtcHR5KCRuYW1lKSkgPyBmYWxzZSA6IHRy dWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQoJGNhdGVnb3J5KSA/IGRvU2xhc2goJGNhdGVnb3J5 KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4dFsnYyddOiAnJyk7DQoJJHNvcnQgPSAoJHNvcnQp ID8gJHNvcnQgOiAoICgkaWQpID8gJ2lkJyA6ICdjYXRlZ29yeScgKTsNCg0KCS8vICoqIExP T0tVUCBUQUJMRVMNCgkvLyAkZmllbGRNYXAgaG9sZHMgZGF0YWJhc2UgY29sdW1uIGFzIGtl eSwgYW5kIHJlcGxhY2VtZW50IGlkZW50aWZpZXIgYXMgdmFsdWUuDQoJLy8gQWRkaXRpb25h bCBjb2xzIGNvcGllZCB0byAkZXh0cmFNYXAgZm9yIGl0ZXJhdGlvbiB3aGlsZSBjcmVhdGlu ZyByZXBsYWNlbWVudHMuDQoJLy8gVXNlIGFycmF5X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVl IGV4aXN0cyBhbmQgcmV0dXJuIGNvcnJlY3Qga2V5IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJy YXkgcmVmcy4NCgkkZmllbGRNYXAgPSBhcnJheSgpOw0KCSRleHRyYU1hcCA9IGFycmF5KCk7 DQoJJGNvcmVDb2xzID0gYXJyYXkoIm5hbWUiLCAiaWQiLCAiYWx0IiwgImNhcHRpb24iLCAi Y2F0ZWdvcnkiLCAiYXV0aG9yIiwgImRhdGUiLCAiZXh0IiwgInc6d2lkdGgiLCAiaDpoZWln aHQiLCAidGh1bWJfdzp0aHVtYl93aWR0aCIsICJ0aHVtYl9oOnRodW1iX2hlaWdodCIsICJ0 aHVtYm5haWw6aGFzdGh1bWIiKTsNCgkkbWxwRmllbGRzID0gYXJyYXkoImFsdCIsICJjYXB0 aW9uIik7IC8vIE1hbnVhbGx5IGNyZWF0ZSB0aGUgTUxQIGNvbHVtbiBuYW1lcywgc2luY2Ug dXNpbmcgZ2V0Um93cygpIGxhdGVyIGRvZXMgbm90LiBDYXRlZ29yeSB0aXRsZSBhbHNvIGhh cyB0aGUgc2FtZSB0cmVhdG1lbnQNCgkkdGhpc2xhbmcgPSAoaXNzZXQoJGwxMG5fbGFuZ3Vh Z2VbJ2xvbmcnXSkpID8gJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSA6IExBTkc7DQoJJGRmbHRf dGJsID0gUEZYLiJ0eHBfaW1hZ2UiOw0KCSRjb2x1bW5zID0gZG9fbGlzdCgkY29sdW1ucyk7 DQoJZm9yZWFjaCAoYXJyYXlfbWVyZ2UoJGNvcmVDb2xzLCAkY29sdW1ucykgYXMgJGNvbGlu Zm8pIHsNCgkJJGNvbGJpdCA9IGRvX2xpc3QoJGNvbGluZm8sICI6Iik7DQoJCSRjb2x0Ymwg PSBkb19saXN0KCRjb2xiaXRbMF0sICIuIik7DQoNCgkJaWYgKCRjb2xiaXRbMF0gPT0gJycp IGNvbnRpbnVlOw0KDQoJCWlmIChjb3VudCgkY29sdGJsKSA+IDEpIHsNCgkJCSR0YmwgPSAk Y29sdGJsWzBdOw0KCQkJJGNvbG5hbWUgPSAkY29sdGJsWzFdOw0KCQl9IGVsc2Ugew0KCQkJ JHRibCA9ICRkZmx0X3RibDsNCgkJCSRjb2xuYW1lID0gJGNvbHRibFswXTsNCgkJfQ0KCQkk Y29saWQgPSAoY291bnQoJGNvbGJpdCkgPiAxKSA/ICRjb2xiaXRbMV0gOiAkY29sbmFtZTsN CgkJJGZpZWxkTWFwWygoJHRibCk/JHRibC4nLic6JycpLiggKGlzc2V0KCRsMTBuX2xhbmd1 YWdlWydsb25nJ10pICYmIGluX2FycmF5KCRjb2xuYW1lLCAkbWxwRmllbGRzKSkgPyBfbDEw bl9tYWtlX2ZpZWxkX25hbWUoJGNvbG5hbWUsICR0aGlzbGFuZykuICcgQVMgJy4kY29sbmFt ZSAgOiAkY29sbmFtZSApXSA9ICRjb2xpZDsNCgkJaWYgKCFpbl9hcnJheSgkY29saW5mbywg JGNvcmVDb2xzKSkgew0KCQkJJGV4dHJhTWFwWyRjb2xuYW1lXSA9ICRjb2xpZDsNCgkJfQ0K CX0NCgkkZmllbGRNYXAgPSBhcnJheV91bmlxdWUoJGZpZWxkTWFwKTsNCg0KCS8vIEhhbmRs ZSBmb3JtcyBhbmQgc2V0IGEgZGVmYXVsdCB0YWcgaWYgbm9uZSBzcGVjaWZpZWQNCgkkdGhp bmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6IGZldGNoX2Zvcm0oJGZvcm0pOw0KCSR0 aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ICc8YSBocmVmPSJ7dXJsfSIgYWx0PSJ7YWx0fSI+ PHR4cDppbWFnZSBpZD0ie2lkfSIgLz48L2E+JyA6ICR0aGluZzsNCgkkb2JqZWN0Zm9ybSA9 IChlbXB0eSgkb2JqZWN0Zm9ybSkpID8gJycgOiBmZXRjaF9mb3JtKCRvYmplY3Rmb3JtKTsN Cg0KCS8vIENvdW50aW5nDQoJJGNvdW50UG9zQWxsb3dlZCA9IGFycmF5KCJhYm92ZSIsICJi ZWxvdyIpOw0KCSRjb3VudHBvc25zID0gYXJyYXkoKTsNCgkkY291bnRpbmcgPSAwOw0KCWlm ICgkY291bnRmb3JtKSB7DQoJCSRjb3VudGluZyA9IDE7DQoJCSRjb3VudGZvcm0gPSBkb19s aXN0KCRjb3VudGZvcm0sICRkZWxpbSk7DQoJCSRjb3VudHBvcyA9IHN0cl9yZXBsYWNlKCdz bWRfJywgJycsICRjb3VudHBvcyk7IC8vIEZvciBjb252ZW5pZW5jZQ0KCQkkY291bnRwb3Mg PSBkb19saXN0KCRjb3VudHBvcywgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvdW50cG9zIGFz ICRjb3VudGl0ZW0pIHsNCgkJCSRjb3VudHBvc25zW10gPSAoaW5fYXJyYXkoJGNvdW50aXRl bSwgJGNvdW50UG9zQWxsb3dlZCkpID8gJGNvdW50aXRlbSA6ICRjb3VudFBvc0FsbG93ZWRb MF07DQoJCX0NCgl9DQoNCgkvLyBQYWdpbmcgaW5pdA0KCSRwYWdlUG9zQWxsb3dlZCA9IGFy cmF5KCJiZWxvdyIsICJhYm92ZSIpOw0KCSRwYWdlb3V0ID0gYXJyYXkoKTsNCglpZiAoJHBh Z2Vmb3JtKSB7DQoJCSRwYWdpbmcgPSAxOw0KCQkkcGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRw YWdlZm9ybSk7DQoJCSRwYWdlcG9zID0gc3RyX3JlcGxhY2UoJ3NtZF8nLCAnJywgJHBhZ2Vw b3MpOw0KCQkkcGFnZXBvcyA9IGRvX2xpc3QoJHBhZ2Vwb3MsICRkZWxpbSk7DQoJCWZvcmVh Y2ggKCRwYWdlcG9zIGFzICRwYWdlaXRlbSkgew0KCQkJJHBhZ2VvdXRbXSA9IChpbl9hcnJh eSgkcGFnZWl0ZW0sICRwYWdlUG9zQWxsb3dlZCkpID8gJHBhZ2VpdGVtIDogJHBhZ2VQb3NB bGxvd2VkWzBdOw0KCQl9DQoJfQ0KDQoJLy8gb25jaGFuZ2UgdmVyaWZpY2F0aW9uDQoJJG9u Y2hhbmdlID0gZG9fbGlzdCgkb25jaGFuZ2UsICRkZWxpbSk7DQoJJG9uY2hhbmdlID0gKCRv bmNoYW5nZVswXSA9PSAiIikgPyBhcnJheSgpIDogJG9uY2hhbmdlOw0KCSRyZXNldE9wdHMg PSAkcmVzZXRGb3JtcyA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJG9uY2hhbmdlIGFzICRyZXNl dE9wdCkgew0KCQkkcmVzZXRQYXJ0cyA9IGRvX2xpc3QoJHJlc2V0T3B0LCAkcGFyYW1kZWxp bSk7DQoNCgkJaWYgKGNvdW50KCRyZXNldFBhcnRzKSA+IDEpIHsNCgkJCWlmICgkcmVzZXRQ YXJ0c1swXSA9PSAnc21kX2V2ZXJ5Jykgew0KCQkJCSRyZXNldE9wdHNbJHJlc2V0UGFydHNb MF0uJHBhcmFtZGVsaW0uJHJlc2V0UGFydHNbMV1dID0gIiI7DQoJCQl9IGVsc2Ugew0KCQkJ CSRyZXNldEZvcm1zWyRyZXNldFBhcnRzWzBdXSA9ICRyZXNldFBhcnRzWzFdOw0KCQkJCSRy ZXNldE9wdHNbJHJlc2V0UGFydHNbMF1dID0gIiI7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkk cmVzZXRPcHRzWyRyZXNldFBhcnRzWzBdXSA9ICIiOw0KCQl9DQoJfQ0KDQoJLy8gRXNjYXBp bmcNCgkkc3BjID0gKCRzdHJpY3RmaWVsZHMpID8gMCA6IDE7DQoJJGVzY2FwZXMgPSBkb19s aXN0KCRlc2NhcGUsICRkZWxpbSk7DQoJZm9yZWFjaCAoJGVzY2FwZXMgYXMgJGlkeCA9PiAk dmFsKSB7DQoJCWlmICgkdmFsID09ICcnKSB7DQoJCQl1bnNldCgkZXNjYXBlc1skaWR4XSk7 DQoJCX0NCgl9DQoNCgkvLyBUaGUgZ2FsbGVyeSBpZGVudGlmaWVyIGlzIHVzZWQgZm9yIGtl ZXBpbmcgdHJhY2sgb2YgbmV4dC9wcmV2IHRodW1ibmFpbCBwYWdlIGxpbmtzDQoJJGdhbGxJ RCA9ICcnOw0KCWlmICgkZ2FsbGVyeWlkID09ICcnIHx8IHN1YnN0cigkZ2FsbGVyeWlkLDAs MSkgPT0gIj8iKSB7DQoJCS8vIEdlbmVyYXRlIGEgKGZhaXJseSBsaWtlbHkpIHVuaXF1ZSBJ RCBmb3IgdGhpcyBnYWxsZXJ5IGluc3RhbmNlDQoJCSRnYWxsVG1wID0gbWQ1KCRjYXRlZ29y eS4kaWQuJGRpcmVjdG9yeS4kbWF0Y2guJHN1YmxldmVsLiRzb3J0LiRsaW1pdC4kbWF4bGlt aXQpOw0KCQlsaXN0KCRnYWxsTGVuLCAkZ2FsbFNraXApID0gZXhwbG9kZSgiOiIsIHN1YnN0 cigkZ2FsbGVyeWlkLDEpKTsNCgkJJGdhbGxMZW4gPSAgKGVtcHR5KCRnYWxsTGVuKSkgPyAi NCIgOiAkZ2FsbExlbjsNCgkJJGdhbGxTa2lwID0gIChlbXB0eSgkZ2FsbFNraXApKSA/ICIx IiA6ICRnYWxsU2tpcDsNCgkJZm9yICgkaWR4ID0gMCwgJGNudCA9IDA7ICRjbnQgPCAkZ2Fs bExlbjsgJGNudCsrLCAkaWR4ID0gKCgkaWR4KyRnYWxsU2tpcCkgJSBzdHJsZW4oJGdhbGxU bXApKSkgew0KCQkJJGdhbGxJRCAuPSAkZ2FsbFRtcFskaWR4XTsNCgkJfQ0KCX0gZWxzZSB7 DQoJCSRnYWxsSUQgPSAkZ2FsbGVyeWlkOw0KCX0NCgkkZ2FsbElEID0gInNtZF9nbHJ5XyIu JGdhbGxJRDsgLy8gQXZvaWQgKGFscmVhZHkgaW5jcmVkaWJseSB1bmxpa2VseSkgbmFtZXNw YWNlIGNsYXNoZXMNCg0KCS8vIFNldCB1cCB0aGUgdmFyaWFibGVzIGZyb20gdGhlIHRodW1i IG9wdGlvbi4NCgkvLyBEb24ndCB1c2UgcGFyYW1kZWxpbSBoZXJlIG9yIHRoZSBkZWZhdWx0 IG9wdGlvbiBicmVha3MNCgkkdGh1bWJPcHRzID0gZG9fbGlzdCgkdGh1bWIsICI6Iik7DQoJ aWYgKGNvdW50KCR0aHVtYk9wdHMpID09IDEpIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0 c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJtb2QgPSAidCI7DQoJfSBlbHNlIHsN CgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1 bWJtb2QgPSAoJHRodW1iT3B0c1sxXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCX0NCg0KCS8vIFRo ZSBtYW5uZXIgb2Ygb2J0YWluaW5nIGZpbGVzIGRpZmZlcnMgaWYgdXNpbmcgZGlyZWN0b3J5 IHZzIGNhdGVnb3J5L2lkDQoJJHJzID0gYXJyYXkoKTsNCglpZiAoJGRpcmVjdG9yeSkgew0K CQkkcnMgPSBzbWRfZG9EaXJlY3RvcnkoJGRpcmVjdG9yeSwgMCwgJHN1YmxldmVsLCAkbWF0 Y2gsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJGFsbEltYWdlcywgJG51bVBhZ2VzLCAkdGh1 bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRv ZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGltaXQgPSAoJGxpbWl0PT0wKSA/ICRtYXhsaW1p dCA6ICRsaW1pdDsNCgkJJHBvc3RPcmRlciA9IGFycmF5KCk7DQoJCSRmaXhlZE9yZGVyID0g MDsNCgkJJHJhbmRzb3J0ID0gZmFsc2U7DQoJfSBlbHNlIHsNCgkJLy8gUHJvY2VzcyBjYXRl Z29yaWVzL0lEcyBhbmQgbWFrZSB1cCB0aGUgY3J1eCBvZiB0aGUgd2hlcmUgY2xhdXNlLg0K CQkvLyBDbGF1c2Ugb3JkZXIgPSBJRHMgT1IgY2F0cyBBTkQgIWNhdHMgQU5EICFJRHMNCgkJ JGNsYXVzZVtdID0gJzE9MSc7DQoJCSRjbGF1c2VPUiA9IGFycmF5KCk7DQoNCgkJLy8gU3Vy cm91bmQgZWFjaCBlbnRyeSBpbiB0aGUgSUQgbGlzdCB3aXRoIHF1b3RlcyBhbmQgbWFrZSBh biBTUUwgImluIiBsaXN0DQoJCSRzdWJpbmZvID0gKCRzdWJsZXZlbCkgPyAiaW1hZ2U6Ii4k c3VibGV2ZWwgOiAnJzsNCgkJbGlzdCgkaWRpbmMsICRpZGV4YykgPSBzbWRfZG9MaXN0KCRp ZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJG5hbWluYywgJG5h bWV4YykgPSBzbWRfZG9MaXN0KCRuYW1lLCBmYWxzZSwgJycsIGZhbHNlLCAkZGVsaW0sICRz cGMpOw0KCQlsaXN0KCRjYXRpbmMsICRjYXRleGMpID0gc21kX2RvTGlzdCgkY2F0ZWdvcnks IGZhbHNlLCAkc3ViaW5mbywgdHJ1ZSwgJGRlbGltLCAkc3BjKTsNCgkJaWYgKCRpZGluYykg ew0KCQkJJGNsYXVzZU9SW10gPSBQRlguJ3R4cF9pbWFnZS5pZCBJTiAoJy5pbXBsb2RlKCIs IiwgJGlkaW5jKS4nKSc7DQoJCX0NCgkJaWYgKCRuYW1pbmMpIHsNCgkJCSRuYW1saXN0ID0g YXJyYXkoJ3JlZ2V4JyA9PiBhcnJheSgpLCAnZXhhY3QnID0+IGFycmF5KCkpOw0KCQkJZm9y ZWFjaCAoJG5hbWluYyBhcyAkdGhlTmFtZSkgew0KCQkJCSRuYW1lYml0cyA9IGRvX2xpc3Qo JHRoZU5hbWUsICRwYXJhbWRlbGltKTsNCgkJCQkkbmFtZWJpdHNbMV0gPSAoaXNzZXQoJG5h bWViaXRzWzFdKSAmJiBhcnJheV9rZXlfZXhpc3RzKCRuYW1lYml0c1sxXSwgJG5hbWxpc3Qp KSA/ICRuYW1lYml0c1sxXSA6ICdleGFjdCc7DQoJCQkJJG5hbWxpc3RbJG5hbWViaXRzWzFd XVtdID0gJG5hbWViaXRzWzBdOw0KCQkJfQ0KCQkJaWYgKCRuYW1saXN0WydleGFjdCddKSB7 DQoJCQkJJGNsYXVzZU9SW10gPSBQRlguInR4cF9pbWFnZS5uYW1lIElOICgnIi5pbXBsb2Rl KCInLCciLCAkbmFtbGlzdFsnZXhhY3QnXSkuIicpIjsNCgkJCX0NCgkJCWZvcmVhY2ggKCRu YW1saXN0WydyZWdleCddIGFzICRyZSkgew0KCQkJCSRjbGF1c2VPUltdID0gUEZYLiJ0eHBf aW1hZ2UubmFtZSBSRUdFWFAgJyIucHJlZ19xdW90ZSgkcmUpLiInIjsNCgkJCX0NCgkJfQ0K CQlpZiAoJGNhdGluYykgew0KCQkJJGNsYXVzZU9SW10gPSBQRlguJ3R4cF9pbWFnZS5jYXRl Z29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYykuJyknOw0KCQl9DQoJCWlmICghZW1w dHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0gJyAoJy5pbXBsb2RlKCIgT1IgIiwg JGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoNCgkJJGNsYXVzZSA9IGltcGxvZGUoIiBBTkQgIiwg JGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMpID8gJyBBTkQgJy5QRlguJ3R4cF9p bWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRjYXRleGMpLicpJyA6ICcn Ow0KCQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBBTkQgJy5QRlguJ3R4cF9pbWFnZS5pZCBO T1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4YykuJyknIDogJyc7DQoNCgkJaWYgKCRuYW1l eGMpIHsNCgkJCSRuYW1saXN0ID0gYXJyYXkoJ3JlZ2V4JyA9PiBhcnJheSgpLCAnZXhhY3Qn ID0+IGFycmF5KCkpOw0KCQkJZm9yZWFjaCAoJG5hbWV4YyBhcyAkdGhlTmFtZSkgew0KCQkJ CSRuYW1lYml0cyA9IGRvX2xpc3QoJHRoZU5hbWUsICRwYXJhbWRlbGltKTsNCgkJCQkkbmFt ZWJpdHNbMV0gPSAoaXNzZXQoJG5hbWViaXRzWzFdKSAmJiBhcnJheV9rZXlfZXhpc3RzKCRu YW1lYml0c1sxXSwgJG5hbWxpc3QpKSA/ICRuYW1lYml0c1sxXSA6ICdleGFjdCc7DQoJCQkJ JG5hbWxpc3RbJG5hbWViaXRzWzFdXVtdID0gJG5hbWViaXRzWzBdOw0KCQkJfQ0KCQkJaWYg KCRuYW1saXN0WydleGFjdCddKSB7DQoJCQkJJGNsYXVzZSAuPSAiIEFORCAiLlBGWC4idHhw X2ltYWdlLm5hbWUgTk9UIElOICgnIi5pbXBsb2RlKCInLCciLCAkbmFtbGlzdFsnZXhhY3Qn XSkuIicpIjsNCgkJCX0NCgkJCWZvcmVhY2ggKCRuYW1saXN0WydyZWdleCddIGFzICRyZSkg ew0KCQkJCSRjbGF1c2UgLj0gIiBBTkQgIi5QRlguInR4cF9pbWFnZS5uYW1lIE5PVCBSRUdF WFAgJyIucHJlZ19xdW90ZSgkcmUpLiInIjsNCgkJCX0NCgkJfQ0KDQoJCS8vIElmIGEgY2F0 ZWdvcnkvaWQgb3B0aW9uIHdhcyBjaG9zZW4gYW5kIHRoZXkgbWF0Y2hlZCBub3RoaW5nLCB1 c2UgYSBib2d1cyBjYXRlZ29yeSB0aGF0IHNob3VsZCBub3QgZXhpc3QuDQoJCS8vIFRoaXMg ZW5zdXJlcyB0aGF0IHRoZSBwbHVnaW4gZG9lcyB0aGUgZXhwZWN0ZWQgdGhpbmcgb2YgbWF0 Y2hpbmcgbm90aGluZyBpbiB0aGUgZXZlbnQgaXQgZmluZHMgbm90aGluZy4NCgkJaWYgKCRj bGF1c2UgPT0gIjE9MSIgJiYgJGF0dGVtcHRNYXRjaCkgew0KCSAgCQkkY2xhdXNlID0gUEZY Lid0eHBfaW1hZ2UuY2F0ZWdvcnkgPSAic21kXycgLm10X3JhbmQoKS4gJyInOw0KCQl9DQoN CgkJJGNsYXVzZSA9ICcoJy5zdHJfcmVwbGFjZSgnU01EX0VNUFRZJywgJycsICRjbGF1c2Up LicpJzsNCg0KCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJZWNobyAiKysgSU5DTFVERUQvRVhD TFVERUQgSURzLCBOQU1FcyBBTkQgQ0FUcyArKyI7DQoJCQlpZiAoJGlkaW5jKSBkbXAoJGlk aW5jKTsNCgkJCWlmICgkaWRleGMpIGRtcCgkaWRleGMpOw0KCQkJaWYgKCRuYW1pbmMpIGRt cCgkbmFtaW5jKTsNCgkJCWlmICgkbmFtZXhjKSBkbXAoJG5hbWV4Yyk7DQoJCQlpZiAoJGNh dGluYykgZG1wKCRjYXRpbmMpOw0KCQkJaWYgKCRjYXRleGMpIGRtcCgkY2F0ZXhjKTsNCgkJ fQ0KDQoJCS8vIEZpbHRlciBieSBhc3BlY3QgcmF0aW8NCgkJaWYgKCRhc3BlY3QpIHsNCgkJ CSRhc3BlY3RzID0gZG9fbGlzdCgkYXNwZWN0LCAkZGVsaW0pOw0KDQoJCQkvLyBDb21wYXJl IGZ1bGxzaXplIG9yIHRodW1ibmFpbCBhc3BlY3QgcmF0aW9zDQoJCQkkZmxkbW9kID0gKCRm dWxsbW9kKSA9PSAndCcgPyAndGh1bWJfJyA6ICcnOw0KCQkJJHdmbGQgPSBQRlguJ3R4cF9p bWFnZS4nLiRmbGRtb2QuJ3cnOw0KCQkJJGhmbGQgPSBQRlguJ3R4cF9pbWFnZS4nLiRmbGRt b2QuJ2gnOw0KDQoJCQkkY2xhdXNlT1IgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCAoJGFzcGVj dHMgYXMgJHJhdGlvKSB7DQoJCQkJc3dpdGNoKCRyYXRpbykgew0KCQkJCQljYXNlICdwb3J0 cmFpdCc6DQoJCQkJCQkkY2xhdXNlT1JbXSA9ICRoZmxkLiAnID4gJy4gJHdmbGQ7DQoJCQkJ CQlicmVhazsNCgkJCQkJY2FzZSAnbGFuZHNjYXBlJzoNCgkJCQkJCSRjbGF1c2VPUltdID0g JHdmbGQuICcgPiAnLiAkaGZsZDsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICdzcXVhcmUn Og0KCQkJCQkJJGNsYXVzZU9SW10gPSAkaGZsZC4gJyA9ICcuICR3ZmxkOw0KCQkJCQkJYnJl YWs7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKCFlbXB0eSgkY2xhdXNlT1IpKSB7DQoJCQkJJGNs YXVzZSAuPSAnIEFORCAnLiR3ZmxkLicgPiAwIEFORCAnLiRoZmxkLicgPiAwIEFORCAoJy5p bXBsb2RlKCIgT1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQkJfQ0KCQl9DQoNCgkJLy8gRmls dGVyIGJ5IGF1dGhvcg0KCQlpZiAoJGF1dGhvcikgew0KCQkJJGF1dGhvcnMgPSBkb19saXN0 KCRhdXRob3IsICRkZWxpbSk7DQoJCQkkY2xhdXNlIC49ICIgQU5EICIgLiBQRlguInR4cF9p bWFnZS5hdXRob3IgSU4gKCciLmltcGxvZGUoIicsJyIsICRhdXRob3JzKS4iJykiOw0KCQl9 DQoNCgkJLy8gRmlsdGVyIGJ5IGV4dGVuc2lvbg0KCQlpZiAoJGV4dGVuc2lvbikgew0KCQkJ JGV4dGVuc2lvbnMgPSBkb19saXN0KCRleHRlbnNpb24sICRkZWxpbSk7DQoJCQlmb3JlYWNo ICgkZXh0ZW5zaW9ucyBhcyAkaWR4ID0+ICRleHQpIHsNCgkJCQkkZXh0ZW5zaW9uc1skaWR4 XSA9ICIuIi4kZXh0Ow0KCQkJfQ0KCQkJJGNsYXVzZSAuPSAiIEFORCAiIC4gUEZYLiJ0eHBf aW1hZ2UuZXh0IElOICgnIi5pbXBsb2RlKCInLCciLCAkZXh0ZW5zaW9ucykuIicpIjsNCgkJ fQ0KDQoJCS8vIEZpbHRlciBieSBkaW1lbnNpb25zDQoJCWlmICgkZGltZW5zaW9ucykgew0K CQkJJGRpbUFsbG93ID0gYXJyYXkoJz0nLCAnPicsICc8JywgJz49JywgJzw9Jyk7DQoJCQkk ZGltcyA9IGRvX2xpc3QoJGRpbWVuc2lvbnMsICRkZWxpbSk7DQoNCgkJCS8vIENvbXBhcmUg ZnVsbHNpemUgb3IgdGh1bWJuYWlsIGFzcGVjdCByYXRpb3MNCgkJCSRmbGRtb2QgPSAoJGZ1 bGxtb2QpID09ICd0JyA/ICd0aHVtYl8nIDogJyc7DQoJCQkkd2ZsZCA9IFBGWC4ndHhwX2lt YWdlLicuJGZsZG1vZC4ndyc7DQoJCQkkaGZsZCA9IFBGWC4ndHhwX2ltYWdlLicuJGZsZG1v ZC4naCc7DQoNCgkJCSR3ZGltID0gJGRpbXNbMF07DQoJCQkkaGRpbSA9IChpc3NldCgkZGlt c1sxXSkpID8gJGRpbXNbMV0gOiAnJzsNCg0KCQkJJHdkaW12YWwgPSBwcmVnX3JlcGxhY2Uo Jy9bXjAtOV0vJywgJycsICR3ZGltKTsNCgkJCSRoZGltdmFsID0gcHJlZ19yZXBsYWNlKCcv W14wLTldLycsICcnLCAkaGRpbSk7DQoJCQkkd2RpbW9wID0gcHJlZ19yZXBsYWNlKCcvWzAt OV0vJywgJycsICR3ZGltKTsNCgkJCSR3ZGltb3AgPSBpbl9hcnJheSgkd2RpbW9wLCAkZGlt QWxsb3cpID8gJHdkaW1vcCA6ICc9JzsNCgkJCSRoZGltb3AgPSBwcmVnX3JlcGxhY2UoJy9b MC05XS8nLCAnJywgJGhkaW0pOw0KCQkJJGhkaW1vcCA9IGluX2FycmF5KCRoZGltb3AsICRk aW1BbGxvdykgPyAkaGRpbW9wIDogJz0nOw0KCQkJJGNsYXVzZSAuPSAoKCR3ZGltKSA/ICcg QU5EICcgLiAkd2ZsZCAuICR3ZGltb3AgLiAkd2RpbXZhbCA6ICcnKSAuICgoJGhkaW0pID8g JyBBTkQgJyAuICRoZmxkIC4gJGhkaW1vcCAuICRoZGltdmFsIDogJycpOw0KCQl9DQoNCgkJ Ly8gQ29udmVydCB0aGUgc29ydCBpbnRvIGEgdmFsaWQgc29ydGluZyBoaWVyYXJjaHkuDQoJ CS8vIE5vdGUgdGhhdCByYW5kb20gaXMgYSBzcGVjaWFsIGNhc2UgYW5kIHRoZSBmb2xsb3dp bmcgcnVsZXMgYXBwbHk6DQoJCS8vICAxKSBBbnl0aGluZyBhcHBlYXJpbmcgYmVmb3JlIHJh bmRvbSBpcyBwYXNzZWQgdG8gdGhlIGRhdGFiYXNlIHF1ZXJ5IGZvciBvcmRlcmluZw0KCQkv LyAgMikgQXMgc29vbiBhcyByYW5kb20gaXMgZW5jb3VudGVyZWQsIHRoZSByZXN0IG9mIHRo ZSBzb3J0IHN0cmluZyBpcyBpZ25vcmVkLg0KCQkvLyAgICAgVGhlIHJlc3VsdHNldCB3aWxs IGJlIHNvcnRlZCByYW5kb21seSBpbnN0ZWFkDQoJCS8vICAzKSBJZiByYW5kb20gYXBwZWFy cyBmaXJzdCBpbiB0aGUgbGlzdCwgdGhlIGRhdGEgaXMgcmV0cmlldmVkIHJhbmRvbWx5IHRo ZW4gdGhlDQoJCS8vICAgICByZW1haW5pbmcgb3B0aW9ucyBzb3J0IHRoZSByZXN1bHRzZXQN CgkJJGNsYXVzZVNvcnQgPSBhcnJheSgpOw0KCQkkcG9zdE9yZGVyID0gYXJyYXkoKTsNCgkJ JHJ1bGUgPSAic3FsIjsNCgkJJHBvc3RQcmVmaXggPSAiU09SVF8iOw0KCQkkZml4ZWRPcmRl ciA9ICRyYW5kc29ydCA9IGZhbHNlOw0KCQkkc29ydCA9IGRvX2xpc3QoJHNvcnQsICRkZWxp bSk7DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkc29ydCk7ICRpZHgrKykgew0K CQkJJHNvcnRfZGlyID0gZXhwbG9kZSgnICcsICRzb3J0WyRpZHhdKTsNCgkJCSRkaXJlY3Rp b24gPSAkY29sUmVmID0gJyc7DQoJCQlpZiAoY291bnQoJHNvcnRfZGlyKSA8PSAxKSB7DQoJ CQkJJHNvcnRfZGlyWzFdID0gImFzYyI7DQoJCQl9DQoJCQlpZiAoJHJ1bGUgPT0gInNxbCIp IHsNCgkJCQkkZGlyZWN0aW9uID0gKCRzb3J0X2RpclsxXSA9PSAiZGVzYyIpID8gJyBkZXNj JyA6ICcgYXNjJzsNCgkJCX0gZWxzZSB7DQoJCQkJJGRpcmVjdGlvbiA9ICgkc29ydF9kaXJb MV0gPT0gImRlc2MiKSA/ICRwb3N0UHJlZml4LidERVNDJyA6ICRwb3N0UHJlZml4LidBU0Mn Ow0KCQkJfQ0KDQoJCQlzd2l0Y2ggKCRzb3J0X2RpclswXSkgew0KCQkJCWNhc2UgJ3JhbmRv bSc6DQoJCQkJCSRydWxlID0gInBvc3QiOw0KCQkJCQlpZiAoJGlkeCA9PSAwKSB7DQoJCQkJ CQkkY2xhdXNlU29ydFtdID0gJ3JhbmQoKSc7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkcmFu ZHNvcnQgPSB0cnVlOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2ZpeGVkJzoN CgkJCQkJLy8gJ2ZpeGVkJyBvbmx5IHdvcmtzIG9uIGlkcyBvciBjYXRlZ29yaWVzDQoJCQkJ CSRmaXhlZE9yZGVyID0gKCRpZCA9PSAnJyAmJiAkY2F0ZWdvcnkgPT0gJycpID8gZmFsc2Ug OiB0cnVlOw0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJCQkkY29sUmVmID0gYXJy YXlfc2VhcmNoKCRzb3J0X2RpclswXSwgJGZpZWxkTWFwKTsNCgkJCQkJJGNvbE5hbWUgPSAk ZmllbGRNYXBbJGNvbFJlZl07DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJaWYgKCRydWxlID09 ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJJGNsYXVzZVNvcnRb XSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlmICgh JHJhbmRzb3J0KSB7DQoJCQkJCWlmICgkY29sUmVmICE9ICcnKSB7DQoJCQkJCQkkcG9zdE9y ZGVyW10gPSBhcnJheSgiY29sIiA9PiAkY29sTmFtZSwgInNvcnQiID0+ICRkaXJlY3Rpb24p Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJaWYgKGNvdW50KCRjbGF1c2VTb3J0 KSA+IDApIHsNCgkJCSRjbGF1c2UgLj0gJyBPUkRFUiBCWSAnIC4gaW1wbG9kZSgiLCIsJGNs YXVzZVNvcnQpOw0KCQl9DQoJCWlmICgkZGVidWcgPiAwKSB7DQoJCQllY2hvICIrKyBXSEVS RSBDTEFVU0UgKysiOw0KCQkJZG1wKCRjbGF1c2UpOw0KCQl9DQoJCS8vIFRoZSBkYXRhYmFz ZSBmaWVsZHMgcmVxdWlyZWQNCgkJJGZpZWxkcyA9IGltcGxvZGUoIiwiLCBhcnJheV9rZXlz KCRmaWVsZE1hcCkpOw0KCQkkY1RpdGxlID0gKGlzc2V0KCRsMTBuX2xhbmd1YWdlWydsb25n J10pKSA/IF9sMTBuX21ha2VfZmllbGRfbmFtZSgndGl0bGUnLCAkdGhpc2xhbmcpIDogJ3Rp dGxlJzsNCg0KCQkkcnMgPSBnZXRSb3dzKCINCgkJCVNFTEVDVCBESVNUSU5DVCAkZmllbGRz DQoJCQlGUk9NICIuUEZYLiJ0eHBfaW1hZ2UNCgkJCVdIRVJFICRjbGF1c2UNCgkJCUxJTUlU IDAsICRtYXhsaW1pdA0KCQkiLCAkZGVidWcpOw0KCQlsaXN0KCRhbGxJbWFnZXMsICRudW1Q YWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwg JGxpbWl0LCAkb2Zmc2V0LCAkcGFnaW5nKTsNCgl9DQoNCg0KCS8vIElzIHBvc3Qtb3JkZXJp bmcgcmVxdWlyZWQ/IERvIGl0DQoJaWYgKCRyYW5kc29ydCkgew0KCQlzaHVmZmxlKCRycyk7 DQoJfSBlbHNlIGlmIChjb3VudCgkcG9zdE9yZGVyKSA+IDApIHsNCgkJLy8gVHJhbnNsYXRl IHRoZSByb3dzIGludG8gY29sdW1ucyB0aGF0IGNhbiBiZSBzb3J0ZWQNCgkJZm9yZWFjaCgk cnMgYXMgJGtleSA9PiAkcm93KSB7DQoJCQlmb3JlYWNoICgkcm93IGFzICRpZGVudGlmaWVy ID0+ICRpdGVtKSB7DQoJCQkJJHZhcm5hbWUgPSAiY29sXyIuJGlkZW50aWZpZXI7DQoJCQkJ JHskdmFybmFtZX1bJGtleV0gPSAkaXRlbTsNCgkJCX0NCgkJfQ0KDQoJCS8vIE1ha2UgdXAg YW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVjdXRlIGl0Lg0KCQkvLyBUaGUg bmVjZXNzYXJ5IGV2aWwoKSBpcyBiZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkgY29s cyB0aGVyZSB3aWxsIGJlIGluIHRoZSBhcnJheQ0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwg Y291bnQoJHBvc3RPcmRlcik7ICRpZHgrKykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNvbF8n LiRwb3N0T3JkZXJbJGlkeF1bJ2NvbCddOw0KCQkJJHNvcnRhcmdzW10gPSAkcG9zdE9yZGVy WyRpZHhdWydzb3J0J107DQoJCX0NCgkJJHNvcnRpdCA9ICdhcnJheV9tdWx0aXNvcnQoJy5p bXBsb2RlKCIsICIsJHNvcnRhcmdzKS4nLCAkcnMpOyc7DQoJCWV2YWwoJHNvcnRpdCk7DQoJ fQ0KDQoJLy8gSXMgZml4ZWQtb3JkZXIgb3V0cHV0IGRlc2lyZWQ/IElmIHNvLCByZS1vcmRl ciB0aGUgJHJzDQoJaWYgKCRmaXhlZE9yZGVyKSB7DQoJCSRvcmRlcmVkUlMgPSBBcnJheSgp Ow0KCQkkaWdub3JlTGlzdCA9IEFycmF5KCk7DQoJCSRyZW1haW5pbmdSUyA9IEFycmF5KCk7 DQoNCgkJLy8gU3VjayBvdXQgdGhlIGZpeGVkIGl0ZW1zIGZpcnN0LiBJRHMgdGhlbiBjYXRl Z29yaWVzDQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkaWRpbmMpOyAkaWR4Kysp IHsNCgkJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoJGlkICYmIGRvUXVvdGUo JHJvd1snaWQnXSkgPT0gJGlkaW5jWyRpZHhdKSB7DQoJCQkJCSRvcmRlcmVkUlNbXSA9ICRy b3c7DQoJCQkJCSRpZ25vcmVMaXN0W10gPSAkcm93WydpZCddOw0KCQkJCQlicmVhazsNCgkJ CQl9DQoJCQl9DQoJCX0NCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRjYXRpbmMp OyAkaWR4KyspIHsNCgkJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoJGNhdGVn b3J5ICYmIGRvUXVvdGUoJHJvd1snY2F0ZWdvcnknXSkgPT0gJGNhdGluY1skaWR4XSkgew0K CQkJCQkkb3JkZXJlZFJTW10gPSAkcm93Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0gJHJvd1sn aWQnXTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gVGFjayBvbiB0aGUgcmVtYWluaW5nIHJv d3MNCgkJaWYgKCRycykgew0KCQkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICgh aW5fYXJyYXkoJHJvd1snaWQnXSwgJGlnbm9yZUxpc3QpKSB7DQoJCQkJCSRyZW1haW5pbmdS U1tdID0gJHJvdzsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJJHJzID0gYXJyYXlfbWVyZ2UoJG9y ZGVyZWRSUywgJHJlbWFpbmluZ1JTKTsNCgl9DQoNCgkvLyBHcmFiIHRoZSBwb3J0aW9uIG9m IHRoZSByZWNvcmQgc2V0IGFjdHVhbGx5IHJlcXVpcmVkIHRvIGl0ZXJhdGUgb3Zlcg0KCWlm ICgkcnMpIHsNCgkJJHJzID0gYXJyYXlfc2xpY2UoJHJzLCAkb2Zmc2V0LCAoKCRkaXJlY3Rv cnkpID8gJGRpcmxpbWl0IDogKCgkbGltaXQ9PTApID8gJG1heGxpbWl0IDogJGxpbWl0KSkp Ow0KCX0NCg0KCS8vIFByZXBhcmUgZml4ZWQgdGh1bWJzaXplcw0KCSR0aHVtYldpZHRoID0g JHRodW1iSGVpZ2h0ID0gJyc7DQoJJHRodW1iV1VuaXRzID0gJHRodW1iSFVuaXRzID0gJyc7 DQoJaWYgKCR0aHVtYnNpemUpIHsNCgkJJHRodW1iU2l6ZXMgPSBkb19saXN0KCR0aHVtYnNp emUsICRkZWxpbSk7DQoJCSR1bml0cyA9IHByZWdfcmVwbGFjZSgnL1swLTldLycsICcnLCAk dGh1bWJTaXplc1swXSk7DQoJCWlmIChjb3VudCgkdGh1bWJTaXplcykgPT0gMSkgew0KCQkJ JHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSBwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywg JycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICR0aHVtYkhVbml0cyA9 ICgkdW5pdHMgPT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0KCQl9IGVsc2Ugew0K CQkJJHRodW1iV2lkdGggPSBwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICR0aHVtYlNp emVzWzBdKTsNCgkJCSR0aHVtYkhlaWdodCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAn JywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHRodW1iV1VuaXRzID0gKCR1bml0cyA9PSAnJyAm JiAkdGh1bWJXaWR0aCAhPSAnJykgPyAkdGh1bWJXVW5pdHMgOiAkdW5pdHM7DQoJCQkkdW5p dHMgPSBwcmVnX3JlcGxhY2UoJy9bMC05XS8nLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJ JHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAnJyAmJiAkdGh1bWJIZWlnaHQgIT0gJycpID8g JHRodW1iSFVuaXRzIDogJHVuaXRzOw0KCQl9DQoJfQ0KDQoJLy8gUHJlcGFyZSBmaXhlZCBp bWFnZSBzaXplcw0KCSRpbWFnZVdpZHRoID0gJGltYWdlSGVpZ2h0ID0gJyc7DQoJJGltYWdl V1VuaXRzID0gJGltYWdlSFVuaXRzID0gJyc7DQoJaWYgKCRpbWdzaXplKSB7DQoJCSRpbWFn ZVNpemVzID0gZG9fbGlzdCgkaW1nc2l6ZSwgJGRlbGltKTsNCgkJJHVuaXRzID0gcHJlZ19y ZXBsYWNlKCcvWzAtOV0vJywgJycsICRpbWFnZVNpemVzWzBdKTsNCgkJaWYgKGNvdW50KCRp bWFnZVNpemVzKSA9PSAxKSB7DQoJCQkkaW1hZ2VXaWR0aCA9ICRpbWFnZUhlaWdodCA9IHBy ZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJGltYWdlU2l6ZXNbMF0pOw0KCQkJJGltYWdl V1VuaXRzID0gJGltYWdlSFVuaXRzID0gKCR1bml0cyA9PSAnJykgPyAkaW1hZ2VXVW5pdHMg OiAkdW5pdHM7DQoJCX0gZWxzZSB7DQoJCQkkaW1hZ2VXaWR0aCA9IHByZWdfcmVwbGFjZSgn L1teMC05XS8nLCAnJywgJGltYWdlU2l6ZXNbMF0pOw0KCQkJJGltYWdlSGVpZ2h0ID0gcHJl Z19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkaW1hZ2VTaXplc1sxXSk7DQoJCQkkaW1hZ2VX VW5pdHMgPSAoJHVuaXRzID09ICcnICYmICRpbWFnZVdpZHRoICE9ICcnKSA/ICRpbWFnZVdV bml0cyA6ICR1bml0czsNCgkJCSR1bml0cyA9IHByZWdfcmVwbGFjZSgnL1swLTldLycsICcn LCAkaW1hZ2VTaXplc1sxXSk7DQoJCQkkaW1hZ2VIVW5pdHMgPSAoJHVuaXRzID09ICcnICYm ICRpbWFnZUhlaWdodCAhPSAnJykgPyAkaW1hZ2VIVW5pdHMgOiAkdW5pdHM7DQoJCX0NCgl9 DQoNCgkvLyBDb2xsYXRpb24gZGVmZXJzIHBhcnNpbmcgdGhlIGZvcm0gZm9yIGVhY2ggcmV0 dXJuZWQgaXRlbS4NCgkvLyBJbnN0ZWFkIGl0IG91dHB1dHMgdGhlIGRhdGEgYXMgYSBsaXN0 IGF0IHRoZSBlbmQgKGl0ZW1zIG1heSBiZSBpbmRpdmlkdWFsbHkgcXVvdGVkIG9yIGV4dHJh Y3RlZCBpZiByZXF1aXJlZCkNCgkvL1RPRE8gOiBBZGQgQUxXQVlTIHN3aXRjaCBhcyBhIHNo b3J0Y3V0IHRvIHNwZWNpZnkgdGhhdCBhbGwgbWF0Y2hpbmcgaXRlbXMgKHJlZ2FyZGxlc3Mg b2YgIzEsICMyLCAjMyBldGMpIGFyZSB0byBiZSBxdW90ZWQNCglpZiAoJGNvbGxhdGUpIHsN CgkJJGRibFF1b3RlID0gJHNnbFF1b3RlID0gYXJyYXkoJ1NNRE5PTkUnKTsNCgkJJGNvbGxh dGVPcHRzID0gZG9fbGlzdCgkY29sbGF0ZSwgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbGxh dGVPcHRzIGFzICRvcHRpb24pIHsNCgkJCSRpbmRleGVzID0gZG9fbGlzdCgkb3B0aW9uLCAk cGFyYW1kZWxpbSk7DQoJCQkkY29sVHlwZSA9IGFycmF5X3NoaWZ0KCRpbmRleGVzKTsNCgkJ CS8vIFN1cHBseWluZyAncXVvdGUnIG9uIGl0cyBvd24gd2lsbCBlbXB0eSB0aGUgcmVsZXZh bnQgYXJyYXksIGltcGx5aW5nICJBTEwiIGZpZWxkcyBhcmUgdG8gYmUgcXVvdGVkDQoJCQlz d2l0Y2ggKCRjb2xUeXBlKSB7DQoJCQkJY2FzZSAic2dscXVvdGUiOg0KCQkJCQkkc2dsUXVv dGUgPSAkaW5kZXhlczsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiZGJscXVvdGUiOg0KCQkJ CWNhc2UgInF1b3RlIjoNCgkJCQkJJGRibFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFr Ow0KCQkJfQ0KCQl9DQoJfQ0KDQoJLy8gQ29tYm9zIGFyZSB1c2VyLWRlZmluZWQgY29tYmlu YXRpb25zIG9mIHJlcGxhY2VtZW50IG1vZGlmaWVycyAoZS5nLiBpZGV4dDoge2lkfXtleHR9 LCAuLi4NCgkkY29tYm9zID0gYXJyYXkoKTsNCglpZiAoJGNvbWJvKSB7DQoJCSRjb21ibyA9 IGRvX2xpc3QoJGNvbWJvLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29tYm8gYXMgJG5ld0Rl Zikgew0KCQkJbGlzdCgkZGVmUGFydHMsICR1bndhbnRlZCkgPSBzbWRfZG9MaXN0KCRuZXdE ZWYsIGZhbHNlLCAnJywgZmFsc2UsICRwYXJhbWRlbGltLCAkc3BjKTsNCgkJCSRkZWZOYW1l ID0gInsiLmFycmF5X3NoaWZ0KCRkZWZQYXJ0cykuIn0iOw0KCQkJJGNvbWJvc1skZGVmTmFt ZV0gPSAkZGVmUGFydHNbMF07DQoJCX0NCgl9DQoJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJZWNo byAiKysgQ09NQk9zICsrIjsNCgkJZG1wKCRjb21ib3MpOw0KCX0NCgkvLyBDb25zdHJ1Y3Qg dGhlIG91dHB1dA0KCSR0aHVtYm91dCA9IGFycmF5KCk7DQoJJGdyb3Vwb3V0ID0gYXJyYXko KTsNCgkkbmF2b3V0ID0gYXJyYXkoKTsNCgkkb3V0ID0gYXJyYXkoKTsNCgkkY29sbGF0aW9u cyA9IGFycmF5KCk7DQoJJGNoSWRlbnRpZmllciA9ICJvbmNoYW5nZSI7DQoNCglpZiAoJGRl YnVnID4gMikgew0KCQllY2hvICIrKyBSRUNPUkQgU0VUICsrIjsNCgkJZG1wKCRycyk7DQoJ fQ0KCWlmICgkZGVidWcgPiAzKSB7DQoJCWVjaG8gIisrIEFWQUlMQUJMRSAnPycgVkFSUyAr KyI7DQoJCWlmICgkcHJldGV4dCkgZG1wKCRwcmV0ZXh0KTsNCgkJaWYgKCR0aGlzYXJ0aWNs ZSkgZG1wKCR0aGlzYXJ0aWNsZSk7DQoJfQ0KDQoJaWYoJHJzKSB7DQoJCSRpZHggPSAwOw0K CQkkY3RyID0gMTsNCgkJJHRodW1iSWR4ID0gMDsNCgkJJHRodW1iQ3RyID0gMTsNCgkJJG51 bUltYWdlcyA9IGNvdW50KCRycyk7DQoJCSRyZXBhZ2VtZW50cyA9IGFycmF5KCk7DQoNCgkJ Ly8gU2V0IHVwIHRoZSBwYWdpbmcgZmVhdHVyZXMgaWYgcmVxdWlyZWQNCgkJaWYgKCgkbGlt aXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCQkkbmV4dCA9ICgkbnVtUGFnZXMgPiAxICYmICR0 aHVtUGFnZSAhPSAkbnVtUGFnZXMpOw0KCQkJJHByZXYgPSAoJG51bVBhZ2VzID4gMSAmJiAk dGh1bVBhZ2UgPiAxKTsNCgkJCSRwcmV2UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsn cmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlLTEpOw0KCQkJJG5leHRQYWdlID0g c21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBh Z2UrMSk7DQoJCQkkdGhpc1BhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3Rf dXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZSk7DQoJCQkkZmlyc3RQYWdlID0gc21kX2FkZFFT VmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAxKTsNCgkJCSRsYXN0UGFn ZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJG51 bVBhZ2VzKTsNCg0KCQkJLy8gTGFiZWxzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIHJlcGxh Y2VtZW50IHRhZyBhZnRlciBhIHBhcmFtZGVsaW0uDQoJCQkvLyAnZWFybGllcicgYW5kICds YXRlcicgZG9uJ3QgaGF2ZSBsYWJlbHMuIEFueXRoaW5nIHNwZWNpZmllZCBhZnRlciBwYXJh bWRlbGltIGlzIHRoZSBtYXggbnVtYmVyIG9mIHBhZ2VzIHRvIHNob3c7IGVtcHR5ID0gYWxs IHBhZ2VzDQoJCQkkbGFiZWwgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICRzbWRf Z2FsbExhbmctPmdUeHQoJ25hdmZpcnN0JyksDQoJCQkJCSd7bmF2cHJldn0nID0+ICRzbWRf Z2FsbExhbmctPmdUeHQoJ25hdnByZXYnKSwNCgkJCQkJJ3tuYXZlYXJsaWVyfScgPT4gJycs DQoJCQkJCSd7bmF2dGhpc30nID0+ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZ0aGlzdXJsfScg PT4gJHRodW1QYWdlLA0KCQkJCQkne25hdmxhdGVyfScgPT4gJycsDQoJCQkJCSd7bmF2bmV4 dH0nID0+ICRzbWRfZ2FsbExhbmctPmdUeHQoJ25hdm5leHQnKSwNCgkJCQkJJ3tuYXZsYXN0 fScgPT4gJHNtZF9nYWxsTGFuZy0+Z1R4dCgnbmF2bGFzdCcpLA0KCQkJCSk7DQoNCgkJCSRs YWJlbFJFID0gJy9ceyhuYXZbYS16XSspJy4kcGFyYW1kZWxpbS4nKC4rPylcfS8nOw0KCQkJ JG51bUxhYmVscyA9IHByZWdfbWF0Y2hfYWxsKCRsYWJlbFJFLCAkcGFnZWZvcm0sICRsYWJl bHMpOw0KDQoJCQlmb3IgKCRsYWJlbEN0ciA9IDA7ICRsYWJlbEN0ciA8ICRudW1MYWJlbHM7 ICRsYWJlbEN0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7Jy4kbGFiZWxzWzFdWyRsYWJl bEN0cl0uJ30nOw0KCQkJCSRsYWJlbFskZmllbGRuYW1lXSA9ICRsYWJlbHNbMl1bJGxhYmVs Q3RyXTsNCgkJCQkkcGFnZWZvcm0gPSBzdHJfcmVwbGFjZSgkbGFiZWxzWzBdWyRsYWJlbEN0 cl0sICd7Jy4kbGFiZWxzWzFdWyRsYWJlbEN0cl0uJ30nLCAkcGFnZWZvcm0pOw0KCQkJfQ0K DQoJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBMQUJFTFMgKysi Ow0KCQkJCWRtcCgkbGFiZWwpOw0KCQkJfQ0KDQoJCQkvLyBHZW5lcmF0ZSAnZWFybGllcicg YW5kICdsYXRlcicgbGlzdHMNCgkJCSRudW1FYXJsaWVyID0gaW50dmFsKCRsYWJlbFsne25h dmVhcmxpZXJ9J10pOw0KCQkJJG51bUxhdGVyID0gaW50dmFsKCRsYWJlbFsne25hdmxhdGVy fSddKTsNCgkJCSRudW1FYXJsaWVyID0gKCRudW1FYXJsaWVyICYmICgkdGh1bVBhZ2UtJG51 bUVhcmxpZXIgPiAxKSkgPyAkbnVtRWFybGllciA6ICR0aHVtUGFnZS0xOw0KCQkJJG51bUxh dGVyID0gKCRudW1MYXRlciAmJiAoJHRodW1QYWdlKyRudW1MYXRlciA8ICRudW1QYWdlcykp ID8gJG51bUxhdGVyIDogJG51bVBhZ2VzLSR0aHVtUGFnZTsNCgkJCSRuYXZFYXJsaWVyID0g JG5hdkxhdGVyID0gYXJyYXkoKTsNCgkJCWZvciAoJGNvZCA9ICR0aHVtUGFnZS0kbnVtRWFy bGllcjsgJGNvZCA8ICR0aHVtUGFnZTsgJGNvZCsrKSB7DQoJCQkJJG5hdkVhcmxpZXJbXSA9 ICc8YSBocmVmPSInLnNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdh bGxJRCwgJGNvZCkuJyI+Jy4kY29kLic8L2E+JzsNCgkJCX0NCgkJCWZvciAoJGNvZCA9ICR0 aHVtUGFnZSsxOyAkY29kIDw9ICR0aHVtUGFnZSskbnVtTGF0ZXI7ICRjb2QrKykgew0KCQkJ CSRuYXZMYXRlcltdID0gJzxhIGhyZWY9Iicuc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1 ZXN0X3VyaSddLCAkZ2FsbElELCAkY29kKS4nIj4nLiRjb2QuJzwvYT4nOw0KCQkJfQ0KCQkJ JG5hdkVhcmxpZXIgPSBkb1dyYXAoJG5hdkVhcmxpZXIsICcnLCAkbmF2YnJlYWssICcnKTsN CgkJCSRuYXZMYXRlciA9IGRvV3JhcCgkbmF2TGF0ZXIsICcnLCAkbmF2YnJlYWssICcnKTsN Cg0KCQkJLy8gTWFrZSB1cCB0aGUgcmVwYWdlbWVudHMgYXJyYXkgZm9yIHBhZ2Vmb3JtDQoJ CQkkcmVwYWdlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICgoJHByZXYp ID8gZG9UYWcoJzxhIGhyZWY9IicuJGZpcnN0UGFnZS4nIj4nLiRsYWJlbFsne25hdmZpcnN0 fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdmZpcnN0fSddLCAk bmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2cHJldn0nID0+ICgoJHByZXYp ID8gZG9UYWcoJzxhIGhyZWY9IicuJHByZXZQYWdlLiciPicuJGxhYmVsWyd7bmF2cHJldn0n XS4nPC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZwcmV2fSddLCAkbmF2 YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2ZWFybGllcn0nID0+ICRuYXZFYXJs aWVyLA0KCQkJCQkne25hdnRoaXN9JyA9PiBkb1RhZygkbGFiZWxbJ3tuYXZ0aGlzfSddLCAk bmF2YnJlYWssICdjdXJyZW50ICcuJGVtcHR5Y2xhc3MpLA0KCQkJCQkne25hdnRoaXN1cmx9 JyA9PiBkb1RhZygnPGEgaHJlZj0iJy4kdGhpc1BhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZ0aGlz dXJsfSddLic8L2E+JywgJG5hdmJyZWFrLCAnY3VycmVudCcpLA0KCQkJCQkne25hdmxhdGVy fScgPT4gJG5hdkxhdGVyLA0KCQkJCQkne25hdm5leHR9JyA9PiAoKCRuZXh0KSA/IGRvVGFn KCc8YSBocmVmPSInLiRuZXh0UGFnZS4nIj4nLiRsYWJlbFsne25hdm5leHR9J10uJzwvYT4n LCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2bmV4dH0nXSwgJG5hdmJyZWFrLCAk ZW1wdHljbGFzcykpLA0KCQkJCQkne25hdmxhc3R9JyA9PiAoKCRuZXh0KSA/IGRvVGFnKCc8 YSBocmVmPSInLiRsYXN0UGFnZS4nIj4nLiRsYWJlbFsne25hdmxhc3R9J10uJzwvYT4nLCAk bmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2bGFzdH0nXSwgJG5hdmJyZWFrLCAkZW1w dHljbGFzcykpLA0KCQkJCQkne25hdnRoaXNwYWdldXJsfScgPT4gJHRoaXNQYWdlLA0KCQkJ CQkne25hdm5leHRwYWdldXJsfScgPT4gKCgkbmV4dCkgPyAkbmV4dFBhZ2UgOiAnJyksDQoJ CQkJCSd7bmF2cHJldnBhZ2V1cmx9JyA9PiAoKCRwcmV2KSA/ICRwcmV2UGFnZSA6ICcnKSwN CgkJCQkJJ3tuYXZmaXJzdHBhZ2V1cmx9JyA9PiAkZmlyc3RQYWdlLA0KCQkJCQkne25hdmxh c3RwYWdldXJsfScgPT4gJGxhc3RQYWdlLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51 bUltYWdlcywNCgkJCQkJJ3t0b3RhbHBhZ2VzfScgPT4gJG51bVBhZ2VzLA0KCQkJCQkne21h eGltYWdlc30nID0+ICRhbGxJbWFnZXMsDQoJCQkJKTsNCg0KCQkJCS8vIFBlcmZvcm0gZXNj YXBpbmcgaGVyZSwganVzdCBwcmlvciB0byBvdXRwdXQNCgkJCQlpZiAoJGVzY2FwZXMpIHsN CgkJCQkJZm9yZWFjaCAoJHJlcGFnZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsN CgkJCQkJCWlmIChpbl9hcnJheSh0cmltKCRkZWZOYW1lLCAie30iKSwgJGVzY2FwZXMpKSB7 DQoJCQkJCQkJJHJlcGFnZW1lbnRzWyRkZWZOYW1lXSA9IGh0bWxzcGVjaWFsY2hhcnMoJGRl ZlZhbCwgRU5UX1FVT1RFUyk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQkvLyBQ ZXJmb3JtIHRoZSBzdWJzdGl0dXRpb25zDQoJCQkJJG5hdm91dFtdID0gcGFyc2Uoc3RydHIo JHBhZ2Vmb3JtLCAkcmVwYWdlbWVudHMpKTsNCgkJfQ0KDQoJCS8vIEZvciBldmVyeSBpbWFn ZSBpbiB0aGUgZ2FsbGVyeS4uLg0KCQlmb3JlYWNoKCRycyBhcyAka2V5ID0+ICRyb3cpIHsN CgkJCWlmICgkZGlyZWN0b3J5KSB7DQoJCQkJJHVybFBhdGggPSAkcm93WydwYXRoJ10uJy8n Ow0KCQkJfSBlbHNlIHsNCgkJCQkkdXJsUGF0aCA9IGh1LiRpbWdfZGlyLicvJzsNCgkJCQkk cm93WydjYXRlZ29yeV90aXRsZSddID0gZmV0Y2hfY2F0ZWdvcnlfdGl0bGUoJHJvd1snY2F0 ZWdvcnknXSwgJ2ltYWdlJyk7DQoJCQl9DQoJCQkkdGhlVGh1bWIgPSAkdXJsUGF0aCAuICRy b3dbJ2lkJ10gLiAkdGh1bWJtb2QgLiAkcm93WydleHQnXTsNCgkJCSRmdWxsU2l6ZSA9ICR1 cmxQYXRoIC4gJHJvd1snaWQnXSAuICRmdWxsbW9kIC4kcm93WydleHQnXTsNCg0KCQkJLy8g RG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGh1bWIgY291bnRlciB0aGlzIHRpbWU/DQoJCQlm b3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlp ZiAoc3RycG9zKCRyZXNldE9wdCwgJ3NtZF9ldmVyeScpID09PSAwKSB7DQoJCQkJCSRpdGVy ID0gZXhwbG9kZSgkcGFyYW1kZWxpbSwgJHJlc2V0T3B0KTsNCgkJCQkJJGl0ZXIgPSAoY291 bnQoJGl0ZXIpID4gMSkgPyAkaXRlclsxXSA6IDA7DQoJCQkJCWlmICgkdGh1bWJJZHggJSAk aXRlciA9PSAwKSB7DQoJCQkJCQkkdGh1bWJJZHggPSAwOw0KCQkJCQkJJHRodW1iQ3RyID0g MTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSBpZiAoJHJvd1skcmVzZXRPcHRdICE9ICRyZXNldFZh bCkgew0KCQkJCQkkdGh1bWJJZHggPSAwOw0KCQkJCQkkdGh1bWJDdHIgPSAxOw0KCQkJCQli cmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIE92ZXJyaWRlIHRodW1ic2l6ZSAvIGltZ3Np emUgaWYgcmVxdWlyZWQNCgkJCWlmICgkdGh1bWJzaXplKSB7DQoJCQkJJHRoZVRodW1iV2lk dGggPSBlbXB0eSgkdGh1bWJXaWR0aCkgPyAkcm93Wyd0aHVtYl93J10gOiAkdGh1bWJXaWR0 aDsNCgkJCQkkdGhlVGh1bWJIZWlnaHQgPSBlbXB0eSgkdGh1bWJIZWlnaHQpID8gJHJvd1sn dGh1bWJfaCddIDogJHRodW1iSGVpZ2h0Ow0KCQkJCSR0aGVUaHVtYldVbml0cyA9ICR0aHVt YldVbml0czsNCgkJCQkkdGhlVGh1bWJIVW5pdHMgPSAkdGh1bWJIVW5pdHM7DQoJCQl9IGVs c2Ugew0KCQkJCSR0aGVUaHVtYldpZHRoID0gJHJvd1sndGh1bWJfdyddOw0KCQkJCSR0aGVU aHVtYkhlaWdodCA9ICRyb3dbJ3RodW1iX2gnXTsNCgkJCQkkdGhlVGh1bWJXVW5pdHMgPSAk dGhlVGh1bWJIVW5pdHMgPSAnJzsNCgkJCX0NCg0KCQkJaWYgKCRpbWdzaXplKSB7DQoJCQkJ JHRoZUltYWdlV2lkdGggPSBlbXB0eSgkaW1hZ2VXaWR0aCkgPyAkcm93Wyd3J10gOiAkaW1h Z2VXaWR0aDsNCgkJCQkkdGhlSW1hZ2VIZWlnaHQgPSBlbXB0eSgkaW1hZ2VIZWlnaHQpID8g JHJvd1snaCddIDogJGltYWdlSGVpZ2h0Ow0KCQkJCSR0aGVJbWFnZVdVbml0cyA9ICRpbWFn ZVdVbml0czsNCgkJCQkkdGhlSW1hZ2VIVW5pdHMgPSAkaW1hZ2VIVW5pdHM7DQoJCQl9IGVs c2Ugew0KCQkJCSR0aGVJbWFnZVdpZHRoID0gJHJvd1sndyddOw0KCQkJCSR0aGVJbWFnZUhl aWdodCA9ICRyb3dbJ2gnXTsNCgkJCQkkdGhlSW1hZ2VXVW5pdHMgPSAkdGhlSW1hZ2VIVW5p dHMgPSAnJzsNCgkJCX0NCg0KCQkJLy8gQ29uc3RydWN0IHRoZSByZXBsYWNlbWVudCBhcnJh eQ0KCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5KA0KCQkJCQkne2lkfScgPT4gJHJvd1snaWQn XSwNCgkJCQkJJ3tuYW1lfScgPT4gJHJvd1snbmFtZSddLA0KCQkJCQkne2V4dH0nID0+ICRy b3dbJ2V4dCddLA0KCQkJCQkne2NhdGVnb3J5fScgPT4gJHJvd1snY2F0ZWdvcnknXSwNCgkJ CQkJJ3tjYXRlZ29yeV90aXRsZX0nID0+ICgoaXNzZXQoJHJvd1snY2F0ZWdvcnlfdGl0bGUn XSkgJiYgJHJvd1snY2F0ZWdvcnlfdGl0bGUnXSAhPT0gZmFsc2UpID8gJHJvd1snY2F0ZWdv cnlfdGl0bGUnXSA6ICcnKSwNCgkJCQkJJ3thdXRob3J9JyA9PiAkcm93WydhdXRob3InXSwN CgkJCQkJJ3toYXN0aHVtYn0nID0+IChpc3NldCgkcm93Wyd0aHVtYm5haWwnXSkgPyAkcm93 Wyd0aHVtYm5haWwnXSA6IDApLA0KCQkJCQkne3VybH0nID0+ICRmdWxsU2l6ZSwNCgkJCQkJ J3t0aHVtYnVybH0nID0+ICR0aGVUaHVtYiwNCgkJCQkJJ3tpbWFnZXBhdGh9JyA9PiAkdXJs UGF0aCwNCgkJCQkJJ3tpbWFnZWRlZn0nID0+IGJhc2VuYW1lKCRmdWxsU2l6ZSksDQoJCQkJ CSd7dGh1bWJkZWZ9JyA9PiBiYXNlbmFtZSgkdGhlVGh1bWIpLA0KCQkJCQkne2FsdH0nID0+ ICRyb3dbJ2FsdCddLA0KCQkJCQkne3RpdGxlfScgPT4gJHJvd1snY2FwdGlvbiddLA0KCQkJ CQkne2NhcHRpb259JyA9PiAkcm93WydjYXB0aW9uJ10sDQoJCQkJCSd7dGh1bWJ3aWR0aH0n ID0+ICR0aGVUaHVtYldpZHRoLA0KCQkJCQkne3RodW1iaGVpZ2h0fScgPT4gJHRoZVRodW1i SGVpZ2h0LA0KCQkJCQkne3RodW1id3VuaXRzfScgPT4gJHRoZVRodW1iV1VuaXRzLA0KCQkJ CQkne3RodW1iaHVuaXRzfScgPT4gJHRoZVRodW1iSFVuaXRzLA0KCQkJCQkne3dpZHRofScg PT4gJHRoZUltYWdlV2lkdGgsDQoJCQkJCSd7aGVpZ2h0fScgPT4gJHRoZUltYWdlSGVpZ2h0 LA0KCQkJCQkne3d1bml0c30nID0+ICR0aGVJbWFnZVdVbml0cywNCgkJCQkJJ3todW5pdHN9 JyA9PiAkdGhlSW1hZ2VIVW5pdHMsDQoJCQkJCSd7ZGF0ZX0nID0+ICgoJGZvcm1hdCkgPyBz YWZlX3N0cmZ0aW1lKCRmb3JtYXQsIHN0cnRvdGltZSgkcm93WydkYXRlJ10pLCAkZ210LCAk bGFuZykgOiAkcm93WydkYXRlJ10pLA0KCQkJCQkne2dhbGxlcnlpZH0nID0+ICRnYWxsSUQs DQoJCQkJCSd7aW5kZXh9JyA9PiAkaWR4LA0KCQkJCQkne2NvdW50ZXJ9JyA9PiAkY3RyLA0K CQkJCQkne3RodW1iaW5kZXh9JyA9PiAkdGh1bWJJZHgsDQoJCQkJCSd7dGh1bWJjb3VudGVy fScgPT4gJHRodW1iQ3RyLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51bUltYWdlcywN CgkJCQkJJ3ttYXhpbWFnZXN9JyA9PiAkYWxsSW1hZ2VzLA0KCQkJCSk7DQoNCgkJCS8vIEFk ZCBhbnkgY3VzdG9tIGNvbHVtbnMNCgkJCWZvcmVhY2ggKCRleHRyYU1hcCBhcyAkZUNvbCA9 PiAkZVZhbCkgew0KCQkJCSRyZXBsYWNlbWVudHNbJ3snLiRlVmFsLid9J10gPSAkcm93WyRl Q29sXTsNCgkJCX0NCg0KCQkJLy8gQXBwZW5kIGFueSBjaGFuZ2VkIGl0ZW1zIHRoYXQgYXJl IHJlcXVpcmVkDQoJCQkkZW5kdGFnID0gZmFsc2U7DQoJCQlmb3JlYWNoICgkcmVzZXRPcHRz IGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlpZiAoc3RycG9zKCRyZXNldE9w dCwgJ3NtZF9ldmVyeScpID09PSAwKSB7DQoJCQkJCSRpdGVyID0gZXhwbG9kZSgkcGFyYW1k ZWxpbSwgJHJlc2V0T3B0KTsNCgkJCQkJJGl0ZXIgPSAoY291bnQoJGl0ZXIpID4gMSkgPyAk aXRlclsxXSA6IDA7DQoJCQkJCWlmICgkdGh1bWJDdHIgJSAkaXRlciA9PT0gMCB8fCAkY3Ry ID09ICRudW1JbWFnZXMpIHsNCgkJCQkJCSRlbmR0YWcgPSB0cnVlOw0KCQkJCQl9DQoJCQkJ fSBlbHNlIHsNCgkJCQkJJHJlcGxhY2VtZW50c1sneycuJGNoSWRlbnRpZmllci4kcGFyYW1k ZWxpbS4kcmVzZXRPcHQuJ30nXSA9ICgkdGh1bWJJZHggPT0gMCkgPyAoKGlzc2V0KCRyZXNl dEZvcm1zWyRyZXNldE9wdF0pKSA/IHN0cnRyKHBhcnNlX2Zvcm0oJHJlc2V0Rm9ybXNbJHJl c2V0T3B0XSksICRyZXBsYWNlbWVudHMpIDogZG9UYWcoJHJvd1skcmVzZXRPcHRdLCAkb25j aGFuZ2V3cmFwdGFnLCAkb25jaGFuZ2VjbGFzcykpIDogJyc7DQoJCQkJCS8vIERvIGEgc25l YWt5ICh5dWspIGxvb2thaGVhZC4gV291bGQgbG92ZSB0byBmaW5kIGEgYmV0dGVyIHdheSB0 byBkbyB0aGlzDQoJCQkJCWlmIChpc3NldCgkcnNbJGtleSsxXSkpIHsNCgkJCQkJCS8vIGNh dGVnb3J5X3RpdGxlIGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIG5leHQgcm93ICh5ZXQpIHNv IHBvcHVsYXRlIGl0IGlmIHJlcXVpcmVkLi4uIGJsZXVyZ2ghDQoJCQkJCQlpZiAoJHJlc2V0 T3B0ID09ICdjYXRlZ29yeV90aXRsZScpIHsNCgkJCQkJCQkkcnNbJGtleSsxXVskcmVzZXRP cHRdID0gKGlzc2V0KCRyc1ska2V5KzFdWydjYXRlZ29yeSddKSAmJiAhZW1wdHkoJHJzWyRr ZXkrMV1bJ2NhdGVnb3J5J10pKSA/IGZldGNoX2NhdGVnb3J5X3RpdGxlKCRyc1ska2V5KzFd WydjYXRlZ29yeSddLCAnaW1hZ2UnKSA6ICcnOw0KCQkJCQkJfQ0KCQkJCQkJaWYoaXNzZXQo JHJzWyRrZXkrMV1bJHJlc2V0T3B0XSkgJiYgKCRyc1ska2V5KzFdWyRyZXNldE9wdF0gIT0g JHJvd1skcmVzZXRPcHRdKSkgew0KCQkJCQkJCSRlbmR0YWcgPSB0cnVlOw0KCQkJCQkJfQ0K CQkJCQl9IGVsc2Ugew0KCQkJCQkJJGVuZHRhZyA9IHRydWU7IC8vIExhc3QgaW1hZ2UNCgkJ CQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJJHJlcGxhY2VtZW50c1sne2dyb3VwdGFnZW5kfSdd ID0gKCRncm91cHRhZyAmJiAkZW5kdGFnKSA/ICc8LycgLiAkZ3JvdXB0YWcgLiAnPicgOiAn JzsNCgkJCSRyZXBsYWNlbWVudHNbJ3tncm91cHRhZ3N0YXJ0fSddID0gKCRncm91cHRhZyAm JiAkdGh1bWJJZHggPT0gMCkgPyAnPCcgLiAkZ3JvdXB0YWcgLiAoKCRncm91cGNsYXNzKSA/ ICcgY2xhc3M9IicuJGdyb3VwY2xhc3MuJyInIDogJycpIC4gJz4nIDogJyc7DQoNCgkJCS8v IEFwcGVuZCBhbnkgY29tYm9zDQoJCQlmb3JlYWNoICgkY29tYm9zIGFzICRkZWZOYW1lID0+ ICRuZXdEZWYpIHsNCgkJCQlpZiAoIWFycmF5X2tleV9leGlzdHMoJGRlZk5hbWUsICRyZXBs YWNlbWVudHMpKSB7DQoJCQkJCSRyZXBsYWNlbWVudHNbJGRlZk5hbWVdID0gc3RydHIoJG5l d0RlZiwgJHJlcGxhY2VtZW50cyk7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBTb2xvcyBhcmUg aXRlbXMgaW4gdGhlIG91dHB1dCBmb3JtIHRoYXQgcmVxdWlyZSBkZXRhaWxzIGZyb20gYSBz cGVjaWZpYyByb3cuIFVzZWZ1bCBvbmx5IGluIGNvbGxhdGlvbg0KCQkJLy8gbW9kZSwgdGhl eSBhcmUgYWRkZWQgdG8gdGhlIHJlcGxhY2VtZW50cyBhcnJheSBvbiBhbiBhcy1uZWVkZWQg YmFzaXMgdG8gc2F2ZSBzcGFjZS90aW1lDQoJCQkkc29sb1JFID0gJy9ceyhbYS16MC05XSsp IycuJGN0ci4nXH0vJzsNCgkJCSRudW1Tb2xvcyA9IHByZWdfbWF0Y2hfYWxsKCRzb2xvUkUs ICR0aGluZywgJHNvbG9zKTsNCgkJCWZvciAoJHNvbG9DdHIgPSAwOyAkc29sb0N0ciA8ICRu dW1Tb2xvczsgJHNvbG9DdHIrKykgew0KCQkJCSRmaWVsZG5hbWUgPSAneycuJHNvbG9zWzFd WyRzb2xvQ3RyXS4nIycuJGN0ci4nfSc7DQoJCQkJJGdyYWJmaWVsZCA9ICd7Jy4kc29sb3Nb MV1bJHNvbG9DdHJdLid9JzsNCgkJCQkkcmVwbGFjZW1lbnRzWyRmaWVsZG5hbWVdID0gJHJl cGxhY2VtZW50c1skZ3JhYmZpZWxkXTsNCgkJCX0NCg0KCQkJLy8gUGVyZm9ybSBlc2NhcGlu ZyBvbiB0aGUgcmVwbGFjZW1lbnRzLg0KCQkJLy8gTm90ZSB0aGUgcmVwYWdlbWVudHMgaGF2 ZSBhbHJlYWR5IGJlZW4gZXNjYXBlZCBzbyB3aGVuL2lmIHRoZXkgYXJlIGNvbWJpbmVkIHdp dGggdGhlIHJlcGxhY2VtZW50cywNCgkJCS8vIHRoZSBlc2NhcGluZyBpcyBub3QgZG9uZSB0 d2ljZQ0KCQkJaWYgKCRlc2NhcGVzKSB7DQoJCQkJZm9yZWFjaCAoJHJlcGxhY2VtZW50cyBh cyAkZGVmTmFtZSA9PiAkZGVmVmFsKSB7DQoJCQkJCWlmIChpbl9hcnJheSh0cmltKCRkZWZO YW1lLCAie30iKSwgJGVzY2FwZXMpKSB7DQoJCQkJCQkkcmVwbGFjZW1lbnRzWyRkZWZOYW1l XSA9IGh0bWxzcGVjaWFsY2hhcnMoJGRlZlZhbCwgRU5UX1FVT1RFUyk7DQoJCQkJCX0NCgkJ CQl9DQoJCQl9DQoNCgkJCS8vIEFkZCB0aGUgbmF2aWdhdGlvbiBpdGVtcyBpZiB0aGV5J3Jl IGRlZmluZWQNCgkJCWlmIChjb3VudCgkcmVwYWdlbWVudHMpID4gMCkgew0KCQkJCSRyZXBs YWNlbWVudHMgPSBhcnJheV9tZXJnZSgkcmVwYWdlbWVudHMsICRyZXBsYWNlbWVudHMpOw0K CQkJfQ0KDQoJCQkvLyBJcyBhIHRodW1iL3RleHQgb2JqZWN0IHJlcXVpcmVkIHRoaXMgdGlt ZT8NCgkJCSRvYmplY3QgPSAnJzsNCgkJCWlmICgkdGh1bWJJZHggPj0gJHRodW1ib2Zmc2V0 ICYmICR0aHVtYklkeCA8ICR0aHVtYm9mZnNldCskdGh1bWJsaW1pdCkgew0KCQkJCSRvYmpl Y3QgPSAoJG9iamVjdGZvcm0pID8gcGFyc2Uoc3RydHIoJG9iamVjdGZvcm0sICRyZXBsYWNl bWVudHMpKSA6ICgoJHRleHQpID8gJHRleHQgOiAnPGltZyBzcmM9IicuJHRoZVRodW1iLici JyAuKCgkcm93WydhbHQnXSkgPyAnIGFsdD0iJy4kcm93WydhbHQnXS4nIicgOiAnJykgLigo JHRoZVRodW1iV2lkdGgpID8gJyB3aWR0aD0iJy4kdGhlVGh1bWJXaWR0aC4kdGhlVGh1bWJX VW5pdHMuJyInIDogJycpIC4oKCR0aGVUaHVtYkhlaWdodCkgPyAnIGhlaWdodD0iJy4kdGhl VGh1bWJIZWlnaHQuJHRoZVRodW1iSFVuaXRzLiciJyA6ICcnKSAuJyAvPicpOw0KCQkJfQ0K CQkJJHJlcGxhY2VtZW50c1sne29iamVjdH0nXSA9ICRvYmplY3Q7DQoNCgkJCWlmICgkZGVi dWcgPiAwKSB7DQoJCQkJZWNobyAiKysgUkVQTEFDRU1FTlRTIDogSU1BR0UgIi4kY3RyLiIg KysiOw0KCQkJCWRtcCgkcmVwbGFjZW1lbnRzKTsNCgkJCX0NCg0KCQkJLy8gQ2hlY2sgaWYg Y291bnRmb3JtIGlzIHRvIGJlIGNhbGxlZA0KCQkJJGNvdW50cHJlID0gJGNvdW50cG9zdCA9 IGFycmF5KCk7DQoJCQlpZiAoJGNvdW50aW5nKSB7DQoJCQkJZm9yZWFjaCAoJGNvdW50Zm9y bSBhcyAkY291bnRsaXN0KSB7DQoJCQkJCSRwb3NvdmVyID0gYXJyYXkoKTsNCgkJCQkJJGNv dW50bGlzdCA9IHN0cnRyKCRjb3VudGxpc3QsICRyZXBsYWNlbWVudHMpOyAvLyBSZXBsYWNl IGFueSB7fSB2YXJzIHdpdGggdGhlaXIgcmVhbCB2YWx1ZXMNCgkJCQkJJGNvdW50bGlzdCA9 IGRvX2xpc3QoJGNvdW50bGlzdCwgJHBhcmFtZGVsaW0pOw0KCQkJCQlpZiAoJGRwb3M9YXJy YXlfc2VhcmNoKCdzbWRfYWJvdmUnLCAkY291bnRsaXN0KSkgew0KCQkJCQkJJHBvc292ZXJb XSA9ICJhYm92ZSI7DQoJCQkJCQl1bnNldCgkY291bnRsaXN0WyRkcG9zXSk7DQoJCQkJCX0N CgkJCQkJaWYgKCRkcG9zPWFycmF5X3NlYXJjaCgnc21kX2JlbG93JywgJGNvdW50bGlzdCkp IHsNCgkJCQkJCSRwb3NvdmVyW10gPSAiYmVsb3ciOw0KCQkJCQkJdW5zZXQoJGNvdW50bGlz dFskZHBvc10pOw0KCQkJCQl9DQoJCQkJCSRjb3VudGxpc3QgPSBhcnJheV9tZXJnZSgkY291 bnRsaXN0KTsgLy8gcmUtaW5kZXgNCg0KCQkJCQkkcG9zb3ZlciA9IChlbXB0eSgkcG9zb3Zl cikpID8gJGNvdW50cG9zbnMgOiAkcG9zb3ZlcjsNCgkJCQkJJGRpdmJ5ID0gZmFsc2U7DQoJ CQkJCWlmICgkY291bnRsaXN0WzBdID09ICdzbWRfZXZlcnknKSB7DQoJCQkJCQkkZGl2Ynkg PSB0cnVlOw0KCQkJCQkJYXJyYXlfc2hpZnQoJGNvdW50bGlzdCk7DQoJCQkJCX0NCgkJCQkJ JG51bWZvcm1zID0gY291bnQoJGNvdW50bGlzdCk7DQoJCQkJCSRjYWxsZm9ybSA9IGZldGNo X2Zvcm0oJGNvdW50bGlzdFskbnVtZm9ybXMtMV0pOw0KCQkJCQl1bnNldCgkY291bnRsaXN0 WyRudW1mb3Jtcy0xXSk7DQoJCQkJCSRvcmxvZ2ljID0gJGFuZGxvZ2ljID0gYXJyYXkoKTsN Cg0KCQkJCQkvLyBDaGVjayBpZiBhbnkgdmFsdWUgaXMgYSByYW5nZSBhbmQgZXhwYW5kIGl0 IGlmIHNvDQoJCQkJCSRmdWxsY291bnRsaXN0ID0gYXJyYXkoKTsNCgkJCQkJZm9yZWFjaCAo JGNvdW50bGlzdCBhcyAkY3VzdGNvdW50KSB7DQoJCQkJCQlpZiAocHJlZ19tYXRjaCgnL14o XGQrKVwtKFxkKykkLycsICRjdXN0Y291bnQpKSB7DQoJCQkJCQkJbGlzdCgkbG8sICRoaSkg PSBleHBsb2RlKCItIiwgJGN1c3Rjb3VudCwgMik7DQoJCQkJCQkJJGZ1bGxjb3VudGxpc3Qg Kz0gcmFuZ2UoJGxvLCAkaGkpOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkkZnVsbGNvdW50 bGlzdFtdID0gJGN1c3Rjb3VudDsNCgkJCQkJCX0NCgkJCQkJfQ0KDQoJCQkJCSRjb3VudGxp c3QgPSAkZnVsbGNvdW50bGlzdDsNCgkJCQkJZm9yZWFjaCAoJGNvdW50bGlzdCBhcyAkY3Vz dGNvdW50KSB7DQoJCQkJCQkkc2hvd3ZhbCA9IChzdHJwb3MoJGN1c3Rjb3VudCwgIiEiKSA9 PT0gMCkgPyBmYWxzZSA6IHRydWU7Ly8gTmVnYXRpdmUgbG9naWMgcmVxdWlyZWQNCgkJCQkJ CSRjdXN0Y291bnQgPSBzdHJfcmVwbGFjZSgnIScsICcnLCAkY3VzdGNvdW50KTsNCgkJCQkJ CWlmICgkc2hvd3ZhbCkgew0KCQkJCQkJCSRvcmxvZ2ljW10gPSBlbXB0eSgkY3VzdGNvdW50 KSB8fCAoKCRkaXZieSkgPyAoKCRjdHIgJSAkY3VzdGNvdW50ID09PSAwKSA/IHRydWUgOiBm YWxzZSkgOiAoKCRjdXN0Y291bnQgPT0gJGN0cikgPyB0cnVlIDogZmFsc2UpKTsNCgkJCQkJ CX0gZWxzZSB7DQoJCQkJCQkJJGFuZGxvZ2ljW10gPSAoJGN1c3Rjb3VudCA9PSAkY3RyKSA/ IGZhbHNlIDogdHJ1ZTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQlpZiAoaW5fYXJyYXkoJzEn LCAkb3Jsb2dpYykgJiYgIWluX2FycmF5KCcwJywgJGFuZGxvZ2ljKSkgew0KCQkJCQkJaWYg KGluX2FycmF5KCJhYm92ZSIsICRwb3NvdmVyKSkgew0KCQkJCQkJCSRjb3VudHByZVtdID0g cGFyc2Uoc3RydHIoJGNhbGxmb3JtLCAkcmVwbGFjZW1lbnRzKSk7DQoJCQkJCQl9DQoJCQkJ CQlpZiAoaW5fYXJyYXkoImJlbG93IiwgJHBvc292ZXIpKSB7DQoJCQkJCQkJJGNvdW50cG9z dFtdID0gcGFyc2Uoc3RydHIoJGNhbGxmb3JtLCAkcmVwbGFjZW1lbnRzKSk7DQoJCQkJCQl9 DQoJCQkJCX0NCiAgICAgICAgICAgIH0NCgkJCX0NCg0KCQkJaWYgKCRkZWJ1ZyA+IDAgJiYg KCRjb3VudHByZSB8fCAkY291bnRwb3N0KSkgew0KCQkJCWVjaG8gIisrIENPVU5UIEZPUk0g VFJJR0dFUkVEICsrIjsNCgkJCQlpZiAoJGNvdW50cHJlKSB7DQoJCQkJCWRtcCgkY291bnRw cmUpOw0KCQkJCX0NCgkJCQlpZiAoJGNvdW50cG9zdCkgew0KCQkJCQlkbXAoJGNvdW50cG9z dCk7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBJbiBjb2xsYXRlIG1vZGUgdGhlIGZvcm0gaXMg b25seSBwYXJzZWQgYXQgdGhlIGVuZDogYnVpbGQgYSBjb2xsb3NhbCBtdWx0aS1kaW1lbnNp b24gYXJyYXkgb2YgYWxsIGl0ZW1zIGhlcmUNCgkJCWlmICgkY29sbGF0ZSkgew0KCQkJCWZv cmVhY2ggKCRyZXBsYWNlbWVudHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZhbCkgew0KCQkJCQkk Y29sbGF0aW9uc1skZGVmTmFtZV1bXSA9ICRkZWZWYWw7DQoJCQkJfQ0KCQkJfSBlbHNlIHsN CgkJCQlpZiAoJGNvdW50aW5nKSB7DQoJCQkJCSR0aHVtYm91dCA9IGFycmF5X21lcmdlKCR0 aHVtYm91dCwgJGNvdW50cHJlKTsNCgkJCQl9DQoNCgkJCQlpZiAoJHRodW1iSWR4IDwgJGdy b3VwbGltaXQpIHsNCgkJCQkJJHRodW1ib3V0W10gPSBwYXJzZShzdHJ0cigkdGhpbmcsICRy ZXBsYWNlbWVudHMpKTsNCgkJCQl9DQoJCQkJaWYgKCRjb3VudGluZykgew0KCQkJCQkkdGh1 bWJvdXQgPSBhcnJheV9tZXJnZSgkdGh1bWJvdXQsICRjb3VudHBvc3QpOw0KCQkJCX0NCgkJ CX0NCg0KCQkJLy8gS2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCB2YWx1ZXMgc28gd2Uga25v dyBpZiB0aGV5IGNoYW5nZSBuZXh0IHRpbWUNCgkJCWZvcmVhY2ggKCRyZXNldE9wdHMgYXMg JHJlc2V0T3B0ID0+ICRyZXNldFZhbCkgew0KCQkJCWlmIChzdHJwb3MoJHJlc2V0T3B0LCAn c21kX2V2ZXJ5JykgPT09IGZhbHNlKSB7DQoJCQkJCSRyZXNldE9wdHNbJHJlc2V0T3B0XSA9 ICRyb3dbJHJlc2V0T3B0XTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkcmVzZXRPcHRzWyRyZXNl dE9wdF0gPSAkdGh1bWJDdHI7DQoJCQkJfQ0KCQkJfQ0KCQkJJHRodW1iSWR4Kys7DQoJCQkk dGh1bWJDdHIrKzsNCgkJCSRpZHgrKzsNCgkJCSRjdHIrKzsNCgkJfQ0KCQlpZiAoJGNvbGxh dGUpIHsNCgkJCWZvcmVhY2ggKCRjb2xsYXRpb25zIGFzICRpdGVtID0+ICRsaXN0KSB7DQoJ CQkJLy8gUXVvdGUgdGhlIGxpc3RzIGlmIHJlcXVpcmVkDQoJCQkJJGxpc3QgPSAoZW1wdHko JGRibFF1b3RlKSB8fCBpbl9hcnJheSgkaXRlbSwgJGRibFF1b3RlKSkgPyBkb0FycmF5KCRs aXN0LCAnc21kX2RvRGJsUXVvdGUnKSA6ICRsaXN0Ow0KCQkJCSRsaXN0ID0gKGVtcHR5KCRz Z2xRdW90ZSkgfHwgaW5fYXJyYXkoJGl0ZW0sICRzZ2xRdW90ZSkpID8gZG9BcnJheSgkbGlz dCwgJ2RvUXVvdGUnKSA6ICRsaXN0Ow0KCQkJCSRjb2xsYXRpb25zWyRpdGVtXSA9IGltcGxv ZGUoJGNvbGxhdGVkZWxpbSwgJGxpc3QpOw0KCQkJfQ0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsN CgkJCQllY2hvICIrKyBDT0xMQVRJT05TICsrIjsNCgkJCQlkbXAoJGNvbGxhdGlvbnMpOw0K CQkJfQ0KCQkJJHRodW1ib3V0W10gPSBwYXJzZShzdHJ0cigkdGhpbmcsICRjb2xsYXRpb25z KSk7DQoJCX0NCg0KCQkvLyBUYWNrIG9uIHRoZSBwYWdpbmcgZnJvbSBlYXJsaWVyIGlmIGl0 J3MgdG8gZ28gYWZ0ZXJ3YXJkcw0KCQlpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsN CgkJCWlmICgkZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgUEFHSU5HIFJFUExBQ0VNRU5U UyArKyI7DQoJCQkJZG1wKCRyZXBhZ2VtZW50cyk7DQoJCQl9DQoJCX0NCgl9DQoNCgkvLyBB ZGQgdGhlIHBhZ2luZyB0byB0aGUgb3V0cHV0IGlmIGl0J3MgdG8gZ28gYWJvdmUgdGhlIHRo dW1icw0KCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQlpZiAoaW5fYXJyYXko ImFib3ZlIiwgJHBhZ2VvdXQpKSB7DQoJCQkkb3V0W10gPSBkb1dyYXAoJG5hdm91dCwgJG5h dndyYXB0YWcsICcnLCAkbmF2Y2xhc3MpOw0KCQl9DQoJfQ0KDQoJJG91dFtdID0gZG9XcmFw KCR0aHVtYm91dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzLCAkYnJlYWtjbGFzcywgJycs ICcnLCAkaHRtbF9pZCk7DQoNCglpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJ aWYgKGluX2FycmF5KCJiZWxvdyIsICRwYWdlb3V0KSkgew0KCQkJJG91dFtdID0gZG9XcmFw KCRuYXZvdXQsICRuYXZ3cmFwdGFnLCAnJywgJG5hdmNsYXNzKTsNCgkJfQ0KCX0NCg0KCWlm ICgkZGVidWcgPiAyKSB7DQoJCWVjaG8gIisrIEZJTkFMIE9VVFBVVCArKyI7DQoJCWRtcCgk b3V0KTsNCgl9DQoNCglyZXR1cm4gam9pbigiICIsICRvdXQpOw0KfQ0KDQovLyBXb3JrIG91 dCB3aGljaCBwYWdlIHRoaXMgZ2FsbGVyeSBpcyBvbiBhbmQgcmV0dXJuIHRoZSByZWxldmFu dCBpbmZvDQpmdW5jdGlvbiBzbWRfZ2V0UGFnZSgkcnMsICRnYWxsSUQsICRsaW1pdCwgJG9m ZnNldCwgJHBhZ2luZykgew0KCSRudW1UaHVtcyA9IGNvdW50KCRycykgLSAkb2Zmc2V0Ow0K CWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQkkbnVtUGFnZXMgPSAoJG51bVRo dW1zID4gMCkgPyBjZWlsKCRudW1UaHVtcy8kbGltaXQpIDogMTsNCgkJJHRodW1QYWdlID0g KCFncHMoJGdhbGxJRCkpID8gMSA6IGdwcygkZ2FsbElEKTsNCgkJJG9mZnNldCA9ICgoJHRo dW1QYWdlIC0gMSkgKiAkbGltaXQpICsgJG9mZnNldDsNCgl9IGVsc2Ugew0KCQkvLyBObyBw YWdpbmcgcmVxdWlyZWQNCgkJJG51bVBhZ2VzID0gMTsNCgkJJHRodW1QYWdlID0gMTsNCgl9 DQoJcmV0dXJuIGFycmF5KCRudW1UaHVtcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZz ZXQpOw0KfQ0KDQovLyBSZWFkIHRoZSBnaXZlbiBkZWxpbWl0ZWQgZGlyZWN0b3JpZXMgYW5k IGdldCBhbGwgZmlsZXMgdGhhdCBtYXRjaC4NCi8vIEdvIGRvd24gYXMgbWFueSBzdWJkaXIg bGV2ZWxzIGFzIGdpdmVuIGluIHRoZSAkc3ViIHBhcmFtZXRlcg0KZnVuY3Rpb24gc21kX2Rv RGlyZWN0b3J5KCRsc3QsICRsdmw9MCwgJHN1Yj0wLCAkbWF0Y2g9IiIsICRkbG09IiwiLCAk c3BjPTEsICRjdHI9MCkgew0KCWxpc3QoJGRpcmluYywgJGRpcmV4YykgPSBzbWRfZG9MaXN0 KCRsc3QsIGZhbHNlLCAkc3ViLCBmYWxzZSwgJGRsbSwgJHNwYyk7DQoJbGlzdCgkbWF0Y2hp bmMsICRtYXRjaGV4YykgPSBzbWRfZG9MaXN0KCRtYXRjaCwgZmFsc2UsICcnLCBmYWxzZSwg JGRsbSwgJHNwYyk7DQoJJG1hdGNoaW5jID0gIi4qIiAuKCgkbWF0Y2hpbmMpID8gIigiIC5p bXBsb2RlKCJ8IiwkbWF0Y2hpbmMpLiIpKy4qIiA6ICIiKTsNCgkkbWF0Y2hleGMgPSAoJG1h dGNoZXhjKSA/ICIuKigiIC5pbXBsb2RlKCJ8IiwkbWF0Y2hleGMpLiIpKy4qIiA6ICJzbWRf Z2xyeV8iLm10X3JhbmQoKTsNCg0KCSRzdWIgPSAoZW1wdHkoJHN1YikpID8gMCA6ICRzdWI7 DQoJJHN1YiA9IChzdHJ0b2xvd2VyKCRzdWIpPT0iYWxsIikgPyA5OTk5OSA6ICRzdWI7DQoJ JGZpbGVMaXN0ID0gYXJyYXkoKTsNCglmb3JlYWNoICgkZGlyaW5jIGFzICRkaXIpIHsNCgkJ aWYgKCRoYW5kbGUgPSBAb3BlbmRpcigkZGlyKSkgew0KCQkJd2hpbGUgKCgkZmlsZSA9IEBy ZWFkZGlyKCRoYW5kbGUpKSAhPT0gZmFsc2UpIHsNCgkJCQkkZnVsbHBhdGggPSAkZGlyLkRT LiRmaWxlOw0KCQkJCWlmIChwcmVnX21hdGNoKCIvIi4kbWF0Y2hpbmMuIi8iLCAkZnVsbHBh dGgpICYmICFwcmVnX21hdGNoKCIvIi4kbWF0Y2hleGMuIi8iLCAkZnVsbHBhdGgpKSB7DQoJ CQkJCWlmIChpc19kaXIoJGZ1bGxwYXRoKSkgew0KCQkJCQkJaWYgKCgkZmlsZSA9PSAiLiIp IHx8ICgkZmlsZT09ICIuLiIpIHx8IChpbl9hcnJheSgkZmlsZSwgJGRpcmV4YykpIHx8ICgk bHZsID49ICRzdWIpKSB7DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9IGVsc2Ugew0KCQkJ CQkJCS8vIFJlY3Vyc2UgdGhlIHN1YmRpci4gTm90ZSB0aGF0IHRoZSAnIScgaXMgdGVtcG9y YXJpbHkgYWRkZWQgYmFjayB0byBlYWNoIGRpcmV4YyBpdGVtDQoJCQkJCQkJJHRtcCA9ICRk aXJleGM7IC8vIERvbid0IG92ZXJ3cml0ZSB0aGUgb3JpZ2luYWwgYXJyYXkNCgkJCQkJCQlh cnJheV91bnNoaWZ0KCR0bXAsICRmdWxscGF0aCk7DQoJCQkJCQkJJHN1YkZpbGVzID0gc21k X2RvRGlyZWN0b3J5KGltcGxvZGUoJGRsbS4iISIsICR0bXApLCAkbHZsKzEsICRzdWIsICRt YXRjaCwgJGRsbSwgJHNwYywgJGN0cik7DQoJCQkJCQkJJGZpbGVMaXN0ID0gYXJyYXlfbWVy Z2UoJGZpbGVMaXN0LCAkc3ViRmlsZXMpOw0KCQkJCQkJCSRjdHIgKz0gY291bnQoJHN1YkZp bGVzKTsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0NCgkJCQkJfSBlbHNlIHsNCgkJCQkJ CSRmaWxlc3RhdCA9IHN0YXQoJGZ1bGxwYXRoKTsNCgkJCQkJCSRpbWdzaXplID0gZ2V0aW1h Z2VzaXplKCRmdWxscGF0aCk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ3BhdGgnXSA9ICRk aXI7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ25hbWUnXSA9IGJhc2VuYW1lKCRmdWxscGF0 aCk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2lkJ10gPSBwcmVnX3JlcGxhY2UoJy9cLi4r JC8nLCAnJywgJGZpbGUpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydhbHQnXSA9ICcnOw0K CQkJCQkJJGZpbGVMaXN0WyRjdHJdWydjYXB0aW9uJ10gPSAnJzsNCgkJCQkJCSRwYXJ0cyA9 IGV4cGxvZGUoRFMsICRkaXIpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydjYXRlZ29yeSdd ID0gKGNvdW50KCRwYXJ0cykgPiAxKSA/IGVuZCgkcGFydHMpIDogJyc7DQoJCQkJCQkkZmls ZUxpc3RbJGN0cl1bJ2F1dGhvciddID0gc3RydmFsKCRmaWxlc3RhdFsndWlkJ10pOw0KCQkJ CQkJJGZpbGVMaXN0WyRjdHJdWydkYXRlJ10gPSBzdHJmdGltZSgiJVktJW0tJWQgJUg6JU06 JVMiLCAkZmlsZXN0YXRbJ2N0aW1lJ10pOw0KCQkJCQkJJHBhcnRzID0gZXhwbG9kZSgiLiIs ICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnZXh0J10gPSAoY291bnQoJHBhcnRz KSA+IDEpID8gIi4iLmVuZCgkcGFydHMpIDogJyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1b J3cnXSA9IChpc19hcnJheSgkaW1nc2l6ZSkpID8gc3RydmFsKCRpbWdzaXplWzBdKSA6ICcn Ow0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydoJ10gPSAoaXNfYXJyYXkoJGltZ3NpemUpKSA/ IHN0cnZhbCgkaW1nc2l6ZVsxXSkgOiAnJzsNCgkJCQkJfQ0KCQkJCQkkY3RyKys7DQoJCQkJ fQ0KCQkJfQ0KCQl9DQoJCWlmICgkaGFuZGxlKSB7DQoJCQlAY2xvc2VkaXIoJGhhbmRsZSk7 DQoJCX0NCgl9DQoJcmV0dXJuICRmaWxlTGlzdDsNCn0iO3M6NDoidHlwZSI7czoxOiIwIjtz OjU6Im9yZGVyIjtzOjE6IjUiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo0OiJoZWxwIjtzOjYx MzI4OiI8ZGl2IGlkPSJzbWRfaGVscCI+CgoJPGgxIGlkPSJ0b3AiPnNtZF9nYWxsZXJ5PC9o MT4KCgk8aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5TdXBw b3J0cyBhbGwgY3VycmVudCBhbmQgKHByb2JhYmx5KSBmdXR1cmUgZ2FsbGVyeSBzY3JpcHRz IGluY2x1ZGluZyB0aHVtYnBvcCwgcm9sbG92ZXIsIHRvb2x0aXAsIGxpZ2h0Ym94LCBsaXRl Ym94LCBzbGltYm94LCBtb29uYm94LCB0aGlja2JveCwgc2xpZGVzaG93LCBmYW5jeXpvb20s IGV0YzwvbGk+CgkJPGxpPlB1bGwgaW1hZ2VzIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IGRhdGFiYXNlIHRoYXQgbWF0Y2ggY2F0ZWdvcmllcywgSURzLCBhdXRo b3IsIGV4dGVuc2lvbiBvciBwYXJ0aWN1bGFyIGRpbWVuc2lvbnMgLyBhc3BlY3QgcmF0aW9z PC9saT4KCQk8bGk+VXNlIGFydGljbGUgZmllbGRzIHRvIGhvbGQgbGlzdHMgb2YgaW1hZ2Ug Y2F0ZWdvcmllcy9JRHMgZm9yIGFydGljbGUtc3BlY2lmaWMgZ2FsbGVyaWVzPC9saT4KCQk8 bGk+TXVsdGktbGV2ZWwgc3ViLWNhdGVnb3J5IHN1cHBvcnQ8L2xpPgoJCTxsaT5HYWxsZXJ5 IGxheW91dCBpcyBkZWZpbmVkIGluIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g Zm9ybS9jb250YWluZXI8L2xpPgoJCTxsaT5EaXJlY3QtYWNjZXNzIHBhZ2luYXRpb24gaXMg c3VwcG9ydGVkIGFuZCB0aGUgbGF5b3V0IG9mIHBhZ2luZyBmZWF0dXJlcyBjYW4gYmUgY29u dHJvbGxlZCBieSBhIHNlY29uZCBmb3JtPC9saT4KCQk8bGk+VXNlcyBhIHRhZy1yZXBsYWNl bWVudCBzeXN0ZW0gbGlrZSB0aGUgd2V0X2Zvcl9lYWNoX2ltYWdlIHBsdWdpbjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+IHN1cHBvcnQ8L2xpPgoJPC91bD4K Cgk8aDIgaWQ9ImF1dGhvciI+QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3Rl ZmRhd3Nvbi5jb20vY29udGFjdCI+U3RlZiBEYXdzb248L2E+LiBGb3Igb3RoZXIgc29mdHdh cmUgYnkgbWUsIG9yIHRvIG1ha2UgYSBkb25hdGlvbiwgc2VlIHRoZSA8YSBocmVmPSJodHRw Oi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LjwvcD4KCgk8aDIgaWQ9 Imluc3RhbGwiPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFz cz0icmVxdWlyZWQiPlJlcXVpcmVzIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IDQu Mi4wKyBhbmQgc21kX2xpYiB2MC4zNis8L3A+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBm cm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTU3 L3NtZF9nYWxsZXJ5Ij50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgc29mdHdhcmUgcGFn ZSBhYm92ZSwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUg dGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVy bi5jb20vdmlld3RvcGljLnBocD9pZD0yNjQ4MiI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9y ZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhl IHBsdWdpbi48L3A+CgoJPHA+VG8gcmVtb3ZlIHRoZSBwbHVnaW4sIHNpbXBseSBkZWxldGUg aXQgZnJvbSB0aGUgQWRtaW4tJmd0O1BsdWdpbnMgdGFiLiBJZiBubyBvdGhlciBwbHVnaW5z IGFyZSB1c2luZyBzbWRfbGliIHlvdSBtYXkgc2FmZWx5IGRlbGV0ZSB0aGF0IHRvby48L3A+ CgoJPGgyIGlkPSJ1c2FnZSI+T3ZlcnZpZXc8L2gyPgoKCTxwPlRoZSBnZW5lcmFsIGlkZWEg aXMgdGhhdCB0aGlzIHBsdWdpbiBhY3RzIGFzIGEgZmxleGlibGUgaW1hZ2UgZmlsdGVyOyBu b3RoaW5nIG1vcmUuIFRoZSBwbHVnaW4gb3B0aW9ucyBnb3Zlcm4gd2hpY2ggaW1hZ2VzIGFy ZSBwdWxsZWQgb3V0IG9mIHRoZSBkYXRhYmFzZSBhbmQgdGhleSBhcmUgc29ydGVkIGludG8g d2hhdGV2ZXIgb3JkZXIgeW91IGxpa2UuPC9wPgoKCTxwPkFmdGVyIHRoYXQsIGVhY2ggaW1h Z2UgJiM4MjEyOyBvbmUgYnkgb25lICYjODIxMjsgaGFzIGFsbCBpdHMgYXR0cmlidXRlcyBw YXNzZWQgdGhyb3VnaCB0aGUgY29udGFpbmVyIG9yIDxjb2RlPmZvcm08L2NvZGU+IG9mIHlv dXIgY2hvaWNlOyB5b3Ugc2ltcGx5IGNob29zZSB0byBkaXNwbGF5IHdoaWNoZXZlciBpbWFn ZSBhdHRyaWJ1dGVzIHlvdSBsaWtlIGluIHRoaXMgZm9ybS4gVGhpcyBtZWFucyBhbnkgaW1h Z2UgYXR0cmlidXRlcyBjYW4gYmUgJiM4MjIwO2luamVjdGVkJiM4MjIxOyBkaXJlY3RseSBp bnRvIGFueSBtYXJrdXA7IGl0IGNvdWxkIGJlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IHRhZ3MsIGl0IGNvdWxkIGJlIGNvbnRlbnQsIGl0IGNvdWxkIGJlIGphdmFzY3JpcHQs IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+OyBhbnl0aGluZy48L3A+CgoJPHA+ UGFnaW5hdGlvbiB3b3JrcyB0aGUgc2FtZSB3YXksIGFsbG93aW5nIHlvdSB0byBzcGVjaWZ5 IGhvdyB1c2VycyBjYW4gc3RlcCB0aHJvdWdoIHlvdXIgaW1hZ2UgZ2FsbGVyaWVzLjwvcD4K Cgk8cD5UaGVyZSBpcyBhbHNvIGEgc3BlY2lhbCAmIzgyMjA7Y29sbGF0ZSYjODIyMTsgbW9k ZSB0aGF0IGFsbG93cyB5b3UgdG8gY29sbGVjdCBhbGwgaW1hZ2UgYXR0cmlidXRlcyB0b2dl dGhlciBpbnRvIGEgc2VyaWVzIG9mIGJpZyBsb25nIGxpc3RzIDxlbT53aXRob3V0PC9lbT4g Y2FsbGluZyB0aGUgZm9ybSBldmVyeSB0aW1lLiBUaGUgZm9ybS9jb250YWluZXIgaXMgdGhl biBvbmx5IHByb2Nlc3NlZCBvbmNlIGF0IHRoZSBlbmQuPC9wPgoKCTxwPkJldHdlZW4gdGhl c2UgdHdvIG1vZGVzIHlvdSBzaG91bGQgYmUgYWJsZSB0byByZWFsaXNlIGFueSBnYWxsZXJ5 aW5nIHNvbHV0aW9uOyBub3cgYW5kIGluIGZ1dHVyZS48L3A+CgoJPGgyIGNsYXNzPSJ0YWcg IiBpZD0ic21kX2dhbGxlcnkiPnNtZF9nYWxsZXJ5PC9oMj4KCgk8cCBjbGFzcz0idGFnLXN1 bW1hcnkiPlBsYWNlIG9uZSBvciBtb3JlIHNtZF9nYWxsZXJ5IHRhZ3MgaW4gYW4gYXJ0aWNs ZSwgcGFnZSBvciBmb3JtLCBhbmQgc3VwcGx5IGFueSBvZiB0aGUgZm9sbG93aW5nIG9wdGlv bnMgdG8gY29uZmlndXJlIGl0LiBUaGUgYXR0cmlidXRlcyBhcmUgZ3JvdXBlZCBieSBmdW5j dGlvbiB0byBtYWtlIGl0IGVhc2llciBvbiB5b3VyIGV5ZXMgLyBzYW5pdHkuPC9wPgoKCTxo MyBpZD0iYXR0cmlidXRlcyI+QXR0cmlidXRlczwvaDM+CgoJPGg0PkZpbHRlcnM8L2g0PgoK CTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlkPC9zcGFuPiA6IGxpc3Qgb2YgaW1h Z2UgSURzIHRvIGRpc3BsYXkuIE1heSBiZSBpbnRlZ2VycyBvciByYW5nZXMsIGZvciBleGFt cGxlIDxjb2RlPmlkPSZxdW90OzUsIDQyLCA4LTExJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFi IGltYWdlcyA1LCA4LCA5LCAxMCwgMTEgYW5kIDQyLiBVc2UgJiM4MjE2OyEmIzgyMTc7IGlu IGZyb250IG9mIGEgbnVtYmVyIG9yIHJhbmdlIHRvIGV4Y2x1ZGUgdGhvc2UgaW1hZ2VzLiBV c2UgJiM4MjE2Oz8mIzgyMTc7IGFuZCB0aGUgbmFtZSBvZiBhIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IGZpZWxkIHRvIHJlYWQgdGhlIGxpc3Qgb2YgaW1hZ2UgSURzIGZyb20g dGhhdCBmaWVsZCwgZS5nLiA8Y29kZT5pZD0/YXJ0aWNsZV9pbWFnZSZxdW90OzwvY29kZT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmFtZTwvc3Bhbj4gOiBsaXN0IG9mIGlt YWdlIG5hbWVzIHRvIGRpc3BsYXkuIFlvdSBjYW4gZWl0aGVyIHNwZWNpZnkgZXhhY3QgbWF0 Y2hlcywgZS5nLiA8Y29kZT5uYW1lPSZxdW90O2xpb24uanBnLCB0aWdlci5qcGcmcXVvdDs8 L2NvZGU+IG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGVzIGJ5IGFwcGVuZGluZyA8Y29k ZT46cmVnZXg8L2NvZGU+IHRvIHRlcm1zLiBGb3IgZXhhbXBsZSwgPGNvZGU+bmFtZT0mcXVv dDtsaW9uOnJlZ2V4JnF1b3Q7PC9jb2RlPiB3b3VsZCBtYXRjaCBsaW9uLmpwZywgbGlvbmVz cy5qcGcgYW5kIG1lZ2FsaW9uLmpwZy4gQWx0ZXJuYXRpdmVseSwgPGNvZGU+bmFtZT0mcXVv dDtebGlvbjpyZWdleCZxdW90OzwvY29kZT4gd291bGQgb25seSBtYXRjaCBpbWFnZXMgdGhh dCBzdGFydCB3aXRoICYjODIxNjtsaW9uJiM4MjE3Oy4gVXNlICYjODIxNjshJiM4MjE3OyBp biBmcm9udCBvZiBuYW1lcyB0byBleGNsdWRlIHRob3NlIGltYWdlcy4gVXNlICYjODIxNjs/ JiM4MjE3OyBhbmQgdGhlIG5hbWUgb2YgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBmaWVsZCB0byByZWFkIHRoZSBsaXN0IG9mIGltYWdlIG5hbWVzL3JlZ2V4ZXMgZnJvbSB0 aGF0IGZpZWxkLCBlLmcuIDxjb2RlPm5hbWU9P2ZpbGVuYW1lcyZxdW90OzwvY29kZT4gdG8g cmVhZCB0aGVtIGZyb20gYSBjdXN0b20gZmllbGQgb2YgdGhhdCBuYW1lLjxkaXYgY2xhc3M9 ImJyZWFrIj5JZiB5b3Ugd2FudCB0byBuZWdhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24sIHRo aW5ncyBtYXkgZ2V0IHRyaWNreSBpZiB5b3UgYXJlIHVzaW5nIG1ldGEgY2hhcmFjdGVyczsg aW4gdGhpcyBjYXNlIGl0IGlzIGJldHRlciB0byBzZXQgeW91ciByZWd1bGFyIGV4cHJlc3Np b24gdXAgaW4sIHNheSwgYSB0eHA6dmFyaWFibGUgKG9yIGFuIGFydGljbGUgZmllbGQpIGFu ZCB1c2UgPGNvZGU+bmFtZT0mcXVvdDshdmFyX25hbWU6cmVnZXgmcXVvdDs8L2NvZGU+Ljwv ZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5Zb3UgY2FuIG1peCBleGFjdCBtYXRjaGVzIGFuZCBy ZWdleCBtYXRjaGVzIGluIHRoZSBzYW1lIDxjb2RlPm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBp ZiB5b3Ugd2lzaC4gVGhlIGNvbG9uIGNhbiBiZSBhbHRlcmVkIHdpdGggPGNvZGU+cGFyYW1k ZWxpbTwvY29kZT4gJiM4MjEyOyB0aGlzIGlzIHNvbWV0aW1lcyBuZWNlc3NhcnkgaWYgeW91 IGFyZSB1c2luZyBjaGFyYWN0ZXIgY2xhc3NlcyBzdWNoIGFzIDxjb2RlPltbOmRpZ2l0Ol1d PC9jb2RlPiBpbiB5b3VyIHJlZ3VsYXIgZXhwcmVzc2lvbi48L2Rpdj48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Y2F0ZWdvcnk8L3NwYW4+IDogbGlzdCBvZiBpbWFnZSBjYXRl Z29yaWVzIHRvIGRpc3BsYXkuIFlvdSBtYXkgc3BlY2lmeSBmaXhlZC1uYW1lIGNhdGVnb3Jp ZXMgKGUuZy4gJiM4MjIwO2FuaW1hbHMmIzgyMjE7KSBvciBhJiM4MjE3Oz8mIzgyMTc7IGZv bGxvd2VkIGJ5IGFuIGFydGljbGUgZmllbGQgbmFtZS4gZS5nLiA8Y29kZT5jYXRlZ29yeT0m cXVvdDthbmltYWxzLCBhcnQtP3RoaXNpZCZxdW90OzwvY29kZT4gd291bGQgZ3JhYiBhbGwg aW1hZ2VzIGZyb20gY2F0ZWdvcnkgJiM4MjIwO2FuaW1hbHMmIzgyMjE7IGFuZCBjYXRlZ29y eSAmIzgyMjA7YXJ0LTQyJiM4MjIxOyAoYXNzdW1pbmcgdGhlIGN1cnJlbnQgYXJ0aWNsZSBo YXMgYW4gaWQgb2YgNDIpLiBVc2UgJiM4MjE2OyEmIzgyMTc7IHRvIDxlbT5leGNsdWRlPC9l bT4gdGhlIGdpdmVuIGNhdGVnb3J5IG9yIGZpZWxkLjxkaXYgY2xhc3M9ImJyZWFrIj5GaWVs ZHMgbWF5IHRoZW1zZWx2ZXMgY29udGFpbiBsaXN0cyBvZiBjYXRlZ29yaWVzLiBUaGUgJiM4 MjE2Oz8mIzgyMTc7IGZpZWxkIG5hbWVzIG1heSBiZSBjb21iaW5lZCAoZS5nLiA/cy0/YXJ0 aWNsZV9pbWFnZSkgYnV0IGJlIGF3YXJlIHRoYXQgY3VzdG9tIGZpZWxkIG5hbWVzIG1heSBj b250YWluIHNwYWNlcyBpZiA8Y29kZT5zdHJpY3RmaWVsZHM9JnF1b3Q7MCZxdW90OzwvY29k ZT48L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3VibGV2ZWw8L3NwYW4+ IDogYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBob3cgbWFueSAmIzgyMTY7bGV2ZWxzJiM4 MjE3OyBkb3duIHRvIHRyYXZlcnNlIGVhY2ggbWF0Y2hpbmcgY2F0ZWdvcnkuIDxjb2RlPnN1 YmxldmVsPSZxdW90OzAmcXVvdDs8L2NvZGU+ICh0aGUgZGVmYXVsdCkgaXMgb25seSB0aGUg dG9wLWxldmVsOyAxID0gdG9wLWxldmVsIHBsdXMgdGhlIDFzdCBzdWItY2F0OyAyID0gdG9w LWxldmVsIHBsdXMgdGhlIG5leHQgMiBzdWItY2F0cywgYW5kIHNvIG9uLiA8Y29kZT5zdWJs ZXZlbD0mcXVvdDthbGwmcXVvdDs8L2NvZGU+IGlzIGFsbCBzdWItY2F0czwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5hdXRob3I8L3NwYW4+IDogZmlsdGVyIGltYWdlcyBieSB0 aGlzIGxpc3Qgb2YgYXV0aG9yIGxvZ2luIG5hbWVzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmV4dGVuc2lvbjwvc3Bhbj4gOiBmaWx0ZXIgaW1hZ2VzIGJ5IHRoaXMgbGlzdCBv ZiBmaWxlIGV4dGVuc2lvbnMgKHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90KTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5hc3BlY3Q8L3NwYW4+IDogZmlsdGVyIGltYWdlcyBieSB0 aGlzIGxpc3Qgb2YgYXNwZWN0IHJhdGlvcy4gQ2hvb3NlIGZyb20gYW55IG9mIDxjb2RlPnBv cnRyYWl0PC9jb2RlPiwgPGNvZGU+bGFuZHNjYXBlPC9jb2RlPiBvciA8Y29kZT5zcXVhcmU8 L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRpbWVuc2lvbnM8L3NwYW4+ IDogZmlsdGVyIGltYWdlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gZGltZW5zaW9ucy4gU3BlY2lm eSB1cCB0byB0d28gdmFsdWVzLiBUaGUgZmlyc3QgaXMgdGhlIHdpZHRoIGFuZCB0aGUgc2Vj b25kIGlzIHRoZSBoZWlnaHQuIElmIHlvdSB3aXNoIHRvIHNwZWNpZnkgbWluaW11bSBvciBt YXhpbXVtIGRpbWVuc2lvbnMsIGFkZCA8Y29kZT4mZ3Q7PC9jb2RlPiwgPGNvZGU+Jmd0Oz08 L2NvZGU+LCA8Y29kZT4mbHQ7PC9jb2RlPiBvciA8Y29kZT4mbHQ7PTwvY29kZT4gYmVmb3Jl IHRoZSB2YWx1ZS4gRm9yIGV4YW1wbGUsIDxjb2RlPmRpbWVuc2lvbnM9JnF1b3Q7Jmd0Oz0x MDI0LCAmZ3Q7PTc2OCZxdW90OzwvY29kZT4gd291bGQgb25seSBzaG93IGltYWdlcyBncmVh dGVyIHRoYW4gb3IgZXF1YWwgdG8gMTAyNCAmIzIxNTsgNzY4IHBpeGVsczwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5zb3J0PC9zcGFuPiA6IHJlLW9yZGVyIHRoZSBpbWFnZXMg YnkgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+ICh0aGUgZGVmYXVsdCksIDxjb2RlPm5hbWU8L2Nv ZGU+LCA8Y29kZT5kYXRlPC9jb2RlPiwgPGNvZGU+aWQ8L2NvZGU+ICh0aGUgZGVmYXVsdCBp ZiB1c2luZyBhbiBpZCksIGZpbGUgPGNvZGU+ZXh0PC9jb2RlPmVuc2lvbiwgPGNvZGU+YWx0 PC9jb2RlPiwgPGNvZGU+Y2FwdGlvbjwvY29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxj b2RlPndpZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNvZGU+dGh1bWJfd2lk dGg8L2NvZGU+LCA8Y29kZT50aHVtYl9oZWlnaHQ8L2NvZGU+LCA8Y29kZT5oYXN0aHVtYjwv Y29kZT4gaW4gZWl0aGVyIDxjb2RlPmFzYzwvY29kZT5lbmRpbmcgb3IgPGNvZGU+ZGVzYzwv Y29kZT5lbmRpbmcgb3JkZXIuIFR3byBzcGVjaWFsIGNhc2VzIGV4aXN0OiA8Y29kZT5maXhl ZDwvY29kZT4gbWFpbnRhaW5zIHRoZSBvcmRlciB5b3Ugc3BlY2lmaWVkIGluIHRoZSBpZCBh bmQvb3IgY2F0ZWdvcnkgYXR0cmlidXRlLCB3aGlsZSA8Y29kZT5yYW5kb208L2NvZGU+IHNo dWZmbGVzIHRoZSBvcmRlci48ZGl2IGNsYXNzPSJicmVhayI+Tm90ZSB0aGF0IGlmIDxjb2Rl PnJhbmRvbTwvY29kZT4gYXBwZWFycyBhcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCwg cmFuZG9tIGltYWdlcyB3aWxsIGJlIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdGhl eSB3aWxsIHRoZW4gYmUgc29ydGVkIGFjY29yZGluZyB0byB0aGUgb3JkZXIgbGlzdGVkIGFm dGVyIGl0LiBJZiA8Y29kZT5yYW5kb208L2NvZGU+IGFwcGVhcnMgYW55d2hlcmUgZWxzZSBp biB0aGUgbGlzdCwgYW55IHNvcnQgaXRlbXMgYmVmb3JlIGl0IHdpbGwgZGV0ZXJtaW5lIHRo ZSBvcmRlciBvZiBkYXRhIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSByZXN1 bHRzIHdpbGwgdGhlbiBiZSBvcmRlcmVkIHJhbmRvbWx5LiBJbiB0aGUgMm5kIGNhc2UsIGFu eSBpdGVtcyBsaXN0ZWQgYWZ0ZXIgJiM4MjE2O3JhbmRvbSYjODIxNzsgd2lsbCBiZSBpZ25v cmVkLCBidXQgPGNvZGU+Zml4ZWQ8L2NvZGU+IGlzIHN0aWxsIGhvbm91cmVkPC9kaXY+PC9s aT4KCTwvdWw+CgoJPGg0PkxpbWl0cyAvIG9mZnNldHMgLyBzaXplczwvaDQ+CgoJPHVsPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGltaXQ8L3NwYW4+IDogdGhlIG1heGltdW0gbnVt YmVyIG9mIGltYWdlcyB0byBzaG93IDxlbT5wZXIgcGFnZTwvZW0+LiAwICh0aGUgZGVmYXVs dCkgb3Igb21pdHRlZCA9IHVubGltaXRlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5tYXhsaW1pdDwvc3Bhbj4gOiB0aGUgYWJzb2x1dGUgbWF4aW11bSBudW1iZXIgb2YgaW1h Z2UgdG8gcHVsbCBmcm9tIHRoZSBkYXRhYmFzZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gMDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlz IG1hbnkgaW1hZ2VzIGFuZCBzdGFydCBkaXNwbGF5aW5nIHRoZW0gdGhlcmVhZnRlcjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aHVtYmxpbWl0PC9zcGFuPiA6IHRoZSBtYXhp bXVtIG51bWJlciBvZiB0aHVtYm5haWxzIHRvIHNob3cuIDAgb3Igb21pdHRlZCA9IGFsbCB0 aHVtYnMuIE5vdGUgdGhhdCB0aGlzIGRpZmZlcnMgZnJvbSBsaW1pdDsgeW91IGNhbiBsYXVu Y2ggYSAyMC1pbWFnZSBnYWxsZXJ5IGJ1dCBvbmx5IHNob3cgMSB0aHVtYm5haWwgb24gdGhl IHBhZ2UuIEJlIGF3YXJlIHRoYXQgaWYgeW91IGFyZSBzaG93aW5nIG11bHRpcGxlIGNhdGVn b3JpZXMgZnJvbSBhIHNpbmdsZSB0YWcsIHlvdSB3aWxsIHNlZSA8Y29kZT50aHVtYmxpbWl0 PC9jb2RlPiB0aHVtYm5haWxzIDxlbT5hdCBlYWNoIGNoYW5nZSBpbiBjYXRlZ29yeTwvZW0+ LiBJZiB5b3UgZG9uJiM4MjE3O3Qgd2FudCB0aGlzLCBzZXQgPGNvZGU+b25jaGFuZ2U8L2Nv ZGU+IHRvIHNvbWV0aGluZyBlbHNlLiBTZWUgdGhlIDxjb2RlPntvYmplY3R9PC9jb2RlPiA8 YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50IHRhZzwvYT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Z3JvdXBsaW1pdDwvc3Bhbj4gOiB0aGUgbWF4aW11bSBudW1i ZXIgb2YgaW1hZ2VzIHRvIHB1dCBvbiB0aGUgcGFnZSwgPGVtPnBlciBncm91cDwvZW0+LiBB IGdyb3VwIGlzIGNvbnNpZGVyZWQgYW55IHNldCBvZiBpbWFnZXMgKGUuZy4gYWxsIGltYWdl cyBmcm9tIG9uZSBjYXRlZ29yeSkgc28gdGhpcyBjYW4gYmUgdXNlZCB0byBvbmx5IGRpc3Bs YXkgTiBpbWFnZXMgYXQgZWFjaCBjaGFuZ2UgaW4gY2F0ZWdvcnkuIEEgY29uY3JldGUgZXhh bXBsZSBpcyBkaXNwbGF5aW5nIGEgdGh1bWJuYWlsIHRoYXQgbGF1bmNoZXMgYSBnYWxsZXJ5 IHNob3dpbmcgdGhlIDUgbW9zdCByZWNlbnQgd29ya3MgZnJvbSBlYWNoIGF1dGhvci4gV2l0 aG91dCA8Y29kZT50aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsgZ3JvdXBsaW1pdD0mcXVvdDs1 JnF1b3Q7PC9jb2RlPiB0aGUgbnVtYmVyIG9mIGltYWdlcyBpbiB0aGUgZ3JvdXAgd291bGQg YmUgdW5saW1pdGVkLiBTZWUgPGEgaHJlZj0iI2VnMTIiPmV4YW1wbGUgMTI8L2E+IGZvciBt b3JlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1ib2Zmc2V0PC9zcGFuPiA6 IHNraXAgdGhpcyBtYW55IHRodW1icyBiZWZvcmUgZGlzcGxheWluZyA8Y29kZT50aHVtYmxp bWl0PC9jb2RlPiB0aHVtYm5haWxzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRo dW1ic2l6ZTwvc3Bhbj4gOiB0YWtlcyBvbmUgb3IgdHdvIGNvbW1hLXNlcGFyYXRlZCBudW1i ZXJzIHRvIHNwZWNpZnkgd2lkdGggYW5kL29yIGhlaWdodCBvZiBhbGwgeW91ciBnYWxsZXJ5 IHRodW1ibmFpbHMuIFRoZSBkZWZhdWx0IGlzIGluIHBpeGVscyBpZiB5b3UgZG9uJiM4MjE3 O3Qgc3BlY2lmeSB1bml0cy4gTWlzc2luZyBvdXQgb25lIG9yIHRoZSBvdGhlciBwYXJhbWV0 ZXIgKGkuZS4gaGF2aW5nIGFuICYjODIyMDtlbXB0eSYjODIyMTsgcGFyYW1ldGVyIGJlZm9y ZSBvciBhZnRlciB0aGUgY29tbWEpIHdpbGwgb25seSBzZXQgb25lIG9mIHRoZSBkaW1lbnNp b25zLiBVc2UgYSBzaW5nbGUgdmFsdWUgdG8gbWFrZSBzcXVhcmUgdGh1bWJzLiBJZiB5b3Ug b21pdCBlaXRoZXIgb3IgYm90aCwgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgd2lsbCBiZSBy ZWFkIGZyb20gdGhlIGRhdGFiYXNlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlt Z3NpemU8L3NwYW4+IDogaWRlbnRpY2FsIHRvIDxjb2RlPnRodW1ic2l6ZTwvY29kZT4gYnV0 IGZvciB0aGUgZnVsbCBzaXplIGltYWdlczwvbGk+Cgk8L3VsPgoKCTxoND5Gb3JtcyBhbmQg cGFnaW5nPC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFu PiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gbGF5 b3V0IHlvdXIgbWF0Y2hpbmcgaW1hZ2VzLiBXaXRob3V0IHRoaXMgYXR0cmlidXRlIHRoZSBw bHVnaW4gYWN0cyBhcyBhIGNvbnRhaW5lciB0YWcuIFdpdGhvdXQgYSBjb250YWluZXIsIHRo ZSBwbHVnaW4gZGlzcGxheXMgZWFjaCBmdWxsLXNpemUgaW1hZ2UsIGh5cGVybGlua2VkPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vmb3JtPC9zcGFuPiA6IHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF5 b3V0IG9mIHlvdXIgcGFnaW5nIG5hdmlnYXRpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+cGFnaW5nPC9zcGFuPiA6IHN3aXRjaCBwYWdpbmcgb24gd2l0aG91dCBoYXZpbmcg dG8gc3BlY2lmeSBhIHBhZ2Vmb3JtLiBXaGVuIHRoaXMgaXMgdXNlZCwgYWxsIDxhIGhyZWY9 IiNyZXBfcGFnaW5nIj5wYWdlIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGJlY29tZSBhdmFpbGFi bGUgaW4gdGhlIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNlbWVudCB0 YWdzPC9hPiBhcyB3ZWxsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vwb3M8 L3NwYW4+IDogdGhlIHBvc2l0aW9uIG9mIHRoZSBwYWdpbmcgYmxvY2suIE9wdGlvbnMgYXJl IDxjb2RlPmJlbG93PC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5hYm92ZTwvY29kZT4s IG9yIGJvdGggb2YgdGhlbSBzZXBhcmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9iamVjdGZvcm08L3NwYW4+IDogdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5IHRoZSBsYXlv dXQgb2YgeW91ciA8Y29kZT57b2JqZWN0fTwvY29kZT4gcmVwbGFjZW1lbnQgdGFnLiBZb3Ug Y2FuIHVzZSBhbGwgdGhlIHN0YW5kYXJkIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVy eSByZXBsYWNlbWVudCB0YWdzPC9hPiB3aXRoIHRoZSBleGNlcHRpb24gb2YgPGNvZGU+e29i amVjdH08L2NvZGU+IGl0c2VsZiEgVXNlcyBhIGh5cGVybGlua2VkIGltYWdlIGlmIG5vIGZv cm0gaXMgc3BlY2lmaWVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvdW50Zm9y bTwvc3Bhbj4gOiBsaXN0IG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm1z IHRvIHVzZSB3aGVuIGNlcnRhaW4gbnVtYmVyZWQgaW1hZ2VzIGFyZSByZWFjaGVkLiBTZWUg PGEgaHJlZj0iI2NvdW50Zm9ybSI+Y291bnQgZm9ybXM8L2E+IGFuZCA8YSBocmVmPSIjZWcx MCI+ZXhhbXBsZSAxMDwvYT4uIFRoaXMgaGFzIG5vIGVmZmVjdCBpbiBjb2xsYXRlIG1vZGU8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y291bnRwb3M8L3NwYW4+IDogZGVmYXVs dCBwb3NpdGlvbiBvZiB0aGUgPGNvZGU+Y291bnRmb3JtPC9jb2RlPnMuIEVpdGhlciA8Y29k ZT5hYm92ZTwvY29kZT4gKHRoZSBkZWZhdWx0KSwgPGNvZGU+YmVsb3c8L2NvZGU+LCBvciBi b3RoIG9mIHRoZW0gc2VwYXJhdGVkIGJ5IDxjb2RlPmRlbGltPC9jb2RlPi4gQ2FuIGJlIG92 ZXJyaWRkZW4gb24gYSBwZXItZm9ybSBiYXNpczwvbGk+Cgk8L3VsPgoKCTxoND5Hcm91cGlu ZyBpbWFnZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9uY2hhbmdl PC9zcGFuPiA6IGEgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvICYjODIyMDt3YXRjaCYjODIyMTsu IEl0IHRlbGxzIHRoZSBwbHVnaW4gdGhhdCB5b3Ugd2FudCB0byBiZSBub3RpZmllZCB3aGVu IGl0ZW1zIGluIHRoaXMgbGlzdCBjaGFuZ2UgY29tcGFyZWQgdG8gdGhlIHByZXZpb3VzIGlt YWdlLiBVbmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB0aGlzIHNob3VsZCBiZSB0aGUgc2Ft ZSBhcyB5b3VyIDxjb2RlPnNvcnQ8L2NvZGU+IHBhcmFtZXRlciBvciB5b3UgbWF5IGdldCBz b21lIGZyZWFreSByZXN1bHRzISBJdCBkZWZhdWx0cyB0byA8Y29kZT5jYXRlZ29yeTwvY29k ZT4uPGRpdiBjbGFzcz0iYnJlYWsiPlRoaXMgaXMgdmVyeSB1c2VmdWwgZm9yIHNwbGl0dGlu ZyBnYWxsZXJpZXMgYXQgZXZlcnkgY2hhbmdlIGluIGNhdGVnb3J5IGFuZCBkaXNwbGF5aW5n IHRoZSBjYXRlZ29yeSB0aXRsZSBhYm92ZSBlYWNoIGdyb3VwLiBJdGVtcyB5b3Ugd2F0Y2gg YXJlIGFkZGVkIHRvIHRoZSBsaXN0IG9mIHJlcGxhY2VtZW50IHRhZ3MgYW5kIGFyZSBhdmFp bGFibGUgYnkgcHV0dGluZyAmIzgyMjA7b25jaGFuZ2U6JiM4MjIxOyBpbiBmcm9udCBvZiB0 aGVpciBuYW1lIChlLmcuIDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeX08L2NvZGU+ICYjODIx Mjsgc2VlIDxhIGhyZWY9IiNlZzYiPmV4YW1wbGUgNjwvYT4gZm9yIG1vcmUpLiBUaGUgY29s b24gZGVsaW1pdGVyIGNhbiBiZSBjaGFuZ2VkIHdpdGggPGNvZGU+cGFyYW1kZWxpbTwvY29k ZT4uPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPllvdSBjYW4gYWxzbyBlbGVjdCB0byBkZWZl ciBwcm9jZXNzaW5nIG9mIG9uY2hhbmdlIGV2ZW50cyB0byBhIGZvcm0uIFRvIGRvIHNvLCBz cGVjaWZ5IGEgZm9ybSBhZnRlciB5b3VyIHdhdGNoIGl0ZW0gbGlrZSB0aGlzIDxjb2RlPmNh dGVnb3J5X3RpdGxlOm15X2Zvcm08L2NvZGU+LiBJbiBteV9mb3JtIHlvdSBjYW4gcHV0IGFu eSBtYXJrdXAgYW5kIHJlcGxhY2VtZW50IHRhZ3MuIFNlZSA8YSBocmVmPSIjZWcxMSI+ZXhh bXBsZSAxMTwvYT4gZm9yIG1vcmUuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPkFub3RoZXIg d2F5IG9mIHVzaW5nIHRoaXMgYXR0cmlidXRlIGlzIHdpdGggdGhlIHNwZWNpYWwgcHJlZml4 IDxjb2RlPnNtZF9ldmVyeTpuPC9jb2RlPiB3aGljaCB3aWxsIHRyaWdnZXIgYSBncm91cCBj aGFuZ2UgZXZlcnkgTnRoIGltYWdlLiBOb3RlIGl0IGNhbiYjODIxNzt0IGJlIHVzZWQgdG8g d2F0Y2ggc3BlY2lmaWMgdGhpbmdzIGluIHRoaXMgbW9kZTsgaXQgaXMgb25seSB1c2VkIHRv IHRyaWdnZXIgPGNvZGU+Z3JvdXB0YWc8L2NvZGU+IGNoYW5nZXM8L2Rpdj48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+b25jaGFuZ2V3cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClI VE1MIHRhZyB0byBzdXJyb3VuZCBhbnkgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGVsZW1lbnRz IHlvdSBhcmUgd2F0Y2hpbmcsIGUuZy4gPGNvZGU+b25jaGFuZ2V3cmFwdGFnPSZxdW90O2gz JnF1b3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbmNoYW5nZWNs YXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBu YW1lIHRybyBhcHBseSB0byB0aGUgd3JhcHRhZyBvZiBhbnkgb25jaGFuZ2UgZWxlbWVudHMg eW91IGFyZSB3YXRjaGluZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ncm91cHRh Zzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gbWFrZSBhdmFpbGFibGUgYXMgYSByZXBs YWNlbWVudCBzbyB5b3UgY2FuIHdyYXAgZ3JvdXBzIG9mIGVsZW1lbnRzIGF0IGVhY2ggPGNv ZGU+b25jaGFuZ2U8L2NvZGU+LiBEZWZhdWx0OiB1bnNldC4gU2VlIDxhIGhyZWY9IiNlZzYi PmV4YW1wbGVzIDY8L2E+IGZvciBtb3JlIG9uIHRoZSA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9j b2RlPiAvIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPiByZXBsYWNlbWVudCB0YWdzPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdyb3VwY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgYXBwbGllZCB0byBhbnkgPGNv ZGU+Z3JvdXB0YWc8L2NvZGU+PC9saT4KCTwvdWw+CgoJPGg0PlRhZy9jbGFzcy9mb3JtYXR0 aW5nIGF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndy YXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUg Z2FsbGVyeSwgZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O2RpdiZxdW90OzwvY29kZT48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YnJlYWs8L3NwYW4+IDogdGhlIChYKUhUTUwg dGFnIHRvIHN1cnJvdW5kIGVhY2ggdGh1bWJuYWlsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFu PiBjbGFzcyBuYW1lIGFwcGxpZWQgdG8gdGhlIDxjb2RlPndyYXB0YWc8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFrY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgYXBwbGllZCB0byB0aGUgPGNv ZGU+YnJlYWs8L2NvZGU+IGVsZW1lbnRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pmh0bWxfaWQ8L3NwYW4+IDogdGhlIG5hbWUgb2YgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhU TUw8L3NwYW4+IDxjb2RlPmlkPC9jb2RlPiBhdHRyaWJ1dGUgdG8gYXBwbHkgdG8gdGhlIHdy YXB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2d3JhcHRhZzwvc3Bhbj4g OiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSA8Y29kZT5wYWdlZm9y bTwvY29kZT4sIGUuZy4gPGNvZGU+d3JhcHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+LiBE ZWZhdWx0OiA8Y29kZT51bDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ bmF2YnJlYWs8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIGVhY2ggaXRl bSB3aXRoaW4gdGhlIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPi4gRGVmYXVsdDogPGNvZGU+bGk8 L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdmNsYXNzPC9zcGFuPiA6 IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIG9mIHRoZSBu YXZpZ2F0aW9uIHdyYXB0YWcuIERlZmF1bHQ6IDxjb2RlPnNtZF9nYWxsZXJ5X25hdjwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZW1wdHljbGFzczwvc3Bhbj4gOiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBvZiB0aGUgbmF2 aWdhdGlvbiBpdGVtcyB0aGF0IGFyZSA8ZW0+bm90PC9lbT4gbGlua3MuIERlZmF1bHQ6IDxj b2RlPmVtcHR5PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtYXQ8 L3NwYW4+ICg8c3BhbiBjbGFzcz0icmVxdWlyZWQiPm9ubHkgaWYgdXNpbmcgPGNvZGU+e2Rh dGV9PC9jb2RlPjwvc3Bhbj4pIDogYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIGRhdGUgZm9y bWF0IHVzZWQuIENhbiB0YWtlIGFueSA8YSBocmVmPSJodHRwOi8vdWsucGhwLm5ldC9zdHJm dGltZSI+c3RyZnRpbWUoKTwvYT4gdmFsdWVzLiBEZWZhdWx0cyB0byB0aGUgZGF0ZSBzeXN0 ZW0gYXMgc2V0IGluIHRoZSBzaXRlJiM4MjE3O3MgcHJlZnM8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+bGFuZzwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBp ZiB1c2luZyA8Y29kZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiBzZXRzIHRoZSBsYW5ndWFn ZSBjb2RlIG9mIHRoZSBkYXRlIGZvcm1hdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5nbXQ8L3NwYW4+ICg8c3BhbiBjbGFzcz0icmVxdWlyZWQiPm9ubHkgaWYgdXNpbmcgPGNv ZGU+e2RhdGV9PC9jb2RlPjwvc3Bhbj4pIDogcmV0dXJucyBlaXRoZXIgbG9jYWwgdGltZSBh Y2NvcmRpbmcgdG8gdGhlIHNldCB0aW1lIHpvbmUgcHJlZmVyZW5jZXMgKDApLCBvciA8c3Bh biBjbGFzcz0iY2FwcyI+R01UPC9zcGFuPiB0aW1lICgxKS4gRGVmYXVsdDogMDwvbGk+Cgk8 L3VsPgoKCTxoND5QbHVnaW4gY3VzdG9taXNhdGlvbjwvaDQ+CgoJPHVsPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+ZGVsaW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgZm9y IHNwZWNpZnlpbmcgYXR0cmlidXRlIGxpc3RzLiBEZWZhdWx0IGlzIGNvbW1hICgsKTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYXJhbWRlbGltPC9zcGFuPiA6IGNoYW5nZSB0 aGUgZGVsaW1pdGVyIGZvciBzcGVjaWZ5aW5nIGludGVyLXBhcmFtZXRlciBhdHRyaWJ1dGVz LiBEZWZhdWx0IGlzIGNvbG9uICg6KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5j b2xsYXRlPC9zcGFuPiA6IHN3aXRjaCB0aGUgcGx1Z2luIGludG8gPGEgaHJlZj0iI2NvbGxh dGVfbW9kZSI+Y29sbGF0ZSBtb2RlPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5jb2xsYXRlZGVsaW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgYmV0d2VlbiBl YWNoIGNvbGxhdGVkIGl0ZW0uIERlZmF1bHQgaXMgY29tbWEgKCwpPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmNvbWJvPC9zcGFuPiA6IHNwZWNpZnkgeW91ciBvd24gPGEgaHJl Zj0iI2NvbWJvcyI+Y3VzdG9tIHJlcGxhY2VtZW50IHRhZ3M8L2E+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmVzY2FwZTwvc3Bhbj4gOiBsaXN0IG9mIHJlcGxhY2VtZW50IHZh cmlhYmxlIG5hbWVzIHRvICYjODIxNjtlc2NhcGUmIzgyMTc7LCBpbiBvdGhlciB3b3JkcyBj b252ZXJ0IGFueSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFncyB0byB0aGVp ciBjaGFyYWN0ZXIgZW50aXR5IGVxdWl2YWxlbnRzLiBTZXQgdG8gPGNvZGU+ZXNjYXBlPSZx dW90OyZxdW90OzwvY29kZT4gdG8gdHVybiB0aGlzIGZlYXR1cmUgb2ZmLiBZb3UgY2FuIGVz Y2FwZSB5b3VyIG93biBjb21ib3MuIERlZmF1bHQ6IDxjb2RlPmFsdCwgdGl0bGUsIGNhcHRp b248L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN0cmljdGZpZWxkczwv c3Bhbj4gOiB3aGVuIHVzaW5nICYjODIxNjs/JiM4MjE3OyBvciAmIzgyMTY7ISYjODIxNzsg ZmllbGRzLCBzcGFjZXMgYXJlIGFsbG93ZWQgaW4gZmllbGQgbmFtZXMuIFNldCA8Y29kZT5z dHJpY3RmaWVsZHM9JnF1b3Q7MSZxdW90OzwvY29kZT4gdG8gZm9yYmlkIHNwYWNlcy4gRGVm YXVsdDogMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5nYWxsZXJ5aWQ8L3NwYW4+ IDogdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMgeW91IHNob3VsZCBuZXZlciBuZWVkIHRo aXMuIEVhY2ggZ2FsbGVyeSBpcyBhc3NpZ25lZCBhIHVuaXF1ZSBJRCBiYXNlZCBvbiB0aGUg c3VwcGxpZWQgYXR0cmlidXRlcyBzbyB5b3UgbWF5IHVzZSBtb3JlIHRoYW4gb25lIGdhbGxl cnkgb24gYSBwYWdlIGFuZCBuYXZpZ2F0ZSB0aGVtIGluZGVwZW5kZW50bHkuIEluIHRoZSB1 bmxpa2VseSBldmVudCB0aGF0IHR3byBpZGVudGljYWwgSURzIGFyZSBnZW5lcmF0ZWQgeW91 IGNhbiBvdmVycmlkZSB0aGUgSUQgZm9yIGEgZ2FsbGVyeSBieSB1c2luZyB0aGlzIGF0dHJp YnV0ZS48ZGl2IGNsYXNzPSJicmVhayI+SW50ZXJuYWxseSB0aGUgcGx1Z2luIGdlbmVyYXRl cyBhIDMyLWNoYXJhY3RlciBoYXNoIHN0cmluZyBmb3IgZWFjaCB0YWcsIHRoZW4gcGlja3Mg YSA0LWNoYXIgY29kZSBmcm9tIHRoaXMgc3RyaW5nIChpdCB0YWtlcyBldmVyeSA2dGggY2hh cmFjdGVyIGJ5IGRlZmF1bHQpLiBZb3UgY2FuIHN1cHBseSBhIHVuaXF1ZSBmaXhlZCBzdHJp bmcgKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90O015R2FsJnF1b3Q7PC9jb2RlPikgb3Ig Z2l2ZSBpdCBhIHF1ZXN0aW9uIG1hcmsgYW5kIDIgbnVtYmVycyBzZXBhcmF0ZWQgYnkgYSBj b2xvbiAoZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7PzU6NCZxdW90OzwvY29kZT4pLiBU aGUgZmlyc3QgbnVtYmVyIGlzIHRoZSBsZW5ndGggb2YgdGhlIGZpbmFsIHN0cmluZyB0byBn ZW5lcmF0ZSwgdGhlIHNlY29uZCBudW1iZXIgaXMgaG93IG1hbnkgY2hhcmFjdGVycyB0byBz a2lwIGluIHRoZSAzMi1jaGFyIHN0cmluZyBlYWNoIHRpbWUgaXQgcGlja3Mgb25lLjwvZGl2 PjxkaXYgY2xhc3M9ImJyZWFrIj5JbiB0aGlzIGNhc2UgaXQgZ2VuZXJhdGVzIGEgNS1jaGFy YWN0ZXIgc3RyaW5nIGZyb20gdGhlIGNoYXJhY3RlcnMgaXQgZmluZHMgYXQgcG9zaXRpb25z IDEsNSw5LDEzLCBhbmQgMTcuIElmIHlvdSBvbWl0IHRoZSAybmQgbnVtYmVyIChlLmcuIDxj b2RlPmdhbGxlcnlpZD0mcXVvdDs/NiZxdW90OzwvY29kZT4pIGl0IHdpbGwgYXNzdW1lIGl0 JiM4MjE3O3MgYW4gaW5jcmVtZW50IG9mIDE8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+dGh1bWI8L3NwYW4+IDogdW5kZXIgbm9ybWFsIG9wZXJhdGlvbiwgdGh1bWJu YWlscyB1c2UgdGhlICYjODIxNjt0JiM4MjE3OyBpbWFnZSBpbiB5b3VyIDxjb2RlPmltYWdl czwvY29kZT4gZGlyZWN0b3J5IGFuZCB0aGUgZnVsbCBzaXplIHBpY3R1cmVzIGRvbiYjODIx Nzt0LiBJZiB5b3Ugd2lzaCB0byByZWRlZmluZSB0aGlzIHlvdSBtYXkgc3BlY2lmeSB1cCB0 byB0d28gdmFsdWVzIHNlcGFyYXRlZCBieSBhIGNvbG9uLiBUaGUgZmlyc3QgaW5kaWNhdGVz IHRoZSBzdGF0ZSBvZiB0aGUgZnVsbCBzaXplIGltYWdlLCBhbmQgdGhlIHNlY29uZCBpcyB0 aGUgc3RhdGUgb2YgdGhlIHRodW1ibmFpbDoKCTx1bD4KCQk8bGk+dGh1bWI9MDoxICYjODIx MjsgZnVsbHNpemUgPSByZWd1bGFyIGltYWdlIDogdGh1bWJuYWlsID0gdGh1bWI8L2xpPgoJ CTxsaT50aHVtYj0xOjAgJiM4MjEyOyBmdWxsc2l6ZSA9IHRodW1iIDogdGh1bWJuYWlsID0g cmVndWxhciBpbWFnZTwvbGk+CgkJPGxpPnRodW1iPTA6MCAob3IgdGh1bWI9MCkgJiM4MjEy OyBmdWxsc2l6ZSA9IHJlZ3VsYXIgaW1hZ2UgOiB0aHVtYm5haWwgPSByZWd1bGFyIGltYWdl PC9saT4KCQk8bGk+dGh1bWI9MToxIChvciB0aHVtYj0xKSAmIzgyMTI7IGZ1bGxzaXplID0g dGh1bWIgOiB0aHVtYm5haWwgPSB0aHVtYjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj50ZXh0PC9zcGFuPiA6IGRpc3BsYXkgdGhlIGdpdmVuIHRleHQgaW5z dGVhZCBvZiB0aHVtYm5haWxzLiBUaGUgdGV4dCBjYW4gY29udGFpbiA8Y29kZT4/PC9jb2Rl PiBhcnRpY2xlIGZpZWxkczwvbGk+Cgk8L3VsPgoKCTxoND5TcGVjaWFsIGF0dHJpYnV0ZXM8 L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvbHVtbnM8L3NwYW4+IDog Z2l2ZSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgY29sdW1ucyB5b3Ug d291bGQgbGlrZSB0byBwdWxsIGZyb20gdGhlIGRhdGFiYXNlLiBFYWNoIGl0ZW0geW91IHNw ZWNpZnkgaXMgc3BsaXQgaW50byB0aHJlZSBwYXJ0czogPGNvZGU+dGFibGUuY29sdW1uOnJl cGxhY2VtZW50IG5hbWU8L2NvZGU+LiBUaGUgb25seSBtYW5kYXRvcnkgcGFydCBpcyB0aGUg cmVwbGFjZW1lbnQgbmFtZSwgc2luY2UgPGNvZGU+dGFibGU8L2NvZGU+IGRlZmF1bHRzIHRv IHR4cF9pbWFnZSwgYW5kIHRoZSA8Y29kZT5jb2x1bW48L2NvZGU+IGRlZmF1bHRzIHRvIHRo ZSBzYW1lIG5hbWUgYXMgdGhlIHJlcGxhY2VtZW50IHlvdSBzcGVjaWZ5LjxkaXYgY2xhc3M9 ImJyZWFrIj5Gb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBjbm9faW1h Z2Vfb3JkZXIgcGx1Z2luIHlvdSBjb3VsZCB1c2UgPGNvZGU+Y29sdW1ucz0mcXVvdDtwb3Np dGlvbiZxdW90OzwvY29kZT4sIHNpbmNlIHRoZSBwbHVnaW4gYWRkcyB0aGUgJiM4MjE2O3Bv c2l0aW9uJiM4MjE3OyBjb2x1bW4gdG8gdHhwX2ltYWdlLiBZb3UgY291bGQgdGhlbiBzb3J0 IGJ5IDxjb2RlPnBvc2l0aW9uPC9jb2RlPiBhbmQgYWxzbyBkaXNwbGF5IHRoZSBpbWFnZSYj ODIxNztzIDxjb2RlPntwb3NpdGlvbn08L2NvZGU+LiBJZiB5b3Ugd2lzaGVkIHRvIHJlbmFt ZSB0aGUgdmFyaWFibGUgdG8sIHNheSwgPGNvZGU+aW1ncG9zPC9jb2RlPiB5b3Ugd291bGQg dXNlIDxjb2RlPmNvbHVtbnM9JnF1b3Q7cG9zaXRpb246aW1ncG9zJnF1b3Q7PC9jb2RlPi4g Tm90ZSB0aGF0IGlmIHlvdSBzcGVjaWZ5IHRoZSB0YWJsZSBuYW1lIHlvdSBtdXN0IGFsc28g aW5jbHVkZSB0aGUgdGFibGUgcHJlZml4IGlmIHlvdSBoYXZlIHVzZWQgb25lLjwvZGl2Pjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kaXJlY3Rvcnk8L3NwYW4+IDogKDxzcGFu IGNsYXNzPSJyZXF1aXJlZCI+ZXhwZXJpbWVudGFsPC9zcGFuPikgcmVhZCBpbWFnZXMgZnJv bSBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+cykgaW5zdGVhZCBvZiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0 YWJhc2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bWF0Y2g8L3NwYW4+IDogbGlt aXQgdGhlIGltYWdlcyBhbmQgZGlyZWN0b3JpZXMgY2hvc2VuIGluIDxjb2RlPmRpcmVjdG9y eTwvY29kZT4gbW9kZS4gR2l2ZSBhIGxpc3Qgb2Ygd29yZHMgdG8gaW5jbHVkZSBvciAhZXhj bHVkZSBhbmQgYW55IG1hdGNoaW5nIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHdpbGwgYmUgY2hv c2VuIG9yIGlnbm9yZWQsIHJlc3BlY3RpdmVseS4gVGhlIG1hdGNoIHRlcm1zIGFyZSBhdXRv bWF0aWNhbGx5IGFzc3VtZWQgdG8gYmUgJiM4MjIwO3dpbGQmIzgyMjE7IHNvIGFueSBwYXJ0 IG9mIHRoZSBmaWxlIG5hbWUgLyBwYXRoIHdpbGwgdHJpZ2dlciB0aGUgbWF0Y2g8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGVidWc8L3NwYW4+IDogdHVybiBvbiBkaWFnbm9z dGljcy4gVmFyeWluZyBsZXZlbHMgb2YgdmVyYm9zaXR5IGZyb20gMCAobm9uZSkgdG8gNCAo YSBsb3QpPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJnYWxsZXJ5X2Zvcm0iPkdhbGxlcnkgZm9y bTwvaDI+CgoJPHA+VGhlIDxjb2RlPmZvcm08L2NvZGU+IGlzIHdoZXJlIHlvdSBkZXNpZ24g d2hhdCBldmVyeSB0aHVtYm5haWwgd2lsbCBsb29rIGxpa2Ugb24gdGhlIHNjcmVlbi4gWW91 IGRvIHRoaXMgYnkgc3BlY2lmeWluZyA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4g bWFya3VwIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MgYXMgbm9ybWFs LiBJbiBrZXkgcGxhY2VzIHdoZXJlIHlvdSB3YW50LCBmb3IgZXhhbXBsZSwgYW4gaW1hZ2Ug SUQgLyBhbHQgdGFnIC8gaW1hZ2Ugd2lkdGggdG8gYmUgZGlzcGxheWVkLCB5b3Ugc3BlY2lm eSBzcGVjaWFsIHJlcGxhY2VtZW50IHRhZ3MsIGRldGFpbGVkIGJlbG93LiBUaGVzZSBhcmUg cmVwbGFjZWQgZm9yIGVhY2ggaW1hZ2UgaW4gdHVybiwgdGh1cyBidWlsZGluZyB1cCB0aGUg Z2FsbGVyeS48L3A+CgoJPHA+SW4gY29sbGF0ZSBtb2RlLCB0aGUgaW1hZ2UgZGV0YWlscyBh cmUgaW5zdGVhZCBtYWRlIGludG8gbGlzdHMuIFRoZSBmb3JtIGlzIG9ubHkgcHJvY2Vzc2Vk IG9uY2UgYW5kIHRoZSByZXBsYWNlbWVudCB0YWdzIG91dHB1dCB0aGUgZW50aXJlIGxpc3Qu PC9wPgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJyZXBfZ2FsbGVyeSI+UmVwbGFjZW1lbnQg dGFnczogZ2FsbGVyeTwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2lk fTwvc3Bhbj4gOiBpbWFnZSBJRCAob3IsIGluIGRpcmVjdG9yeSBtb2RlLCB0aGUgZmlsZW5h bWUgd2l0aG91dCBpdHMgZXh0ZW5zaW9uKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57bmFtZX08L3NwYW4+IDogZnVsbCBpbWFnZSBmaWxlbmFtZSBhcyBkZWZpbmVkIGluIHRo ZSBkYXRhYmFzZSwgdXN1YWxseSBpbmNsdWRpbmcgZXh0ZW5zaW9uPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPntleHR9PC9zcGFuPiA6IGZpbGUgZXh0ZW5zaW9uLCBpbmNsdWRp bmcgZG90PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntjYXRlZ29yeX08L3NwYW4+ IDogaW1hZ2UgY2F0ZWdvcnkgbmFtZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 Y2F0ZWdvcnlfdGl0bGV9PC9zcGFuPiA6IGltYWdlIGNhdGVnb3J5IHRpdGxlPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnthdXRob3J9PC9zcGFuPiA6IHdobyB1cGxvYWRlZCB0 aGUgaW1hZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3VybH08L3NwYW4+IDog PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gb2YgdGhlIGZ1bGxzaXplIGltYWdlPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYnVybH08L3NwYW4+IDogPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gb2YgdGhlIHRodW1ibmFpbDwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57aW1hZ2VwYXRofTwvc3Bhbj4gOiBkaXJlY3RvcnkgdGhlIGlt YWdlIGlzIGluPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpbWFnZWRlZn08L3Nw YW4+IDoganVzdCB0aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhlIGltYWdlIChlLmcuIDUuanBn KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJkZWZ9PC9zcGFuPiA6IGp1 c3QgdGhlIGZpbGUgbmFtZSBwYXJ0IG9mIHRoZSB0aHVtYm5haWwgKGUuZy4gNXQuanBnKTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57YWx0fTwvc3Bhbj4gOiBhbHQgdGV4dDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGl0bGV9IG9yIHtjYXB0aW9ufTwvc3Bh bj4gOiBjYXB0aW9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntkYXRlfTwvc3Bh bj4gOiBpbWFnZSB1cGxvYWQgZGF0ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 d2lkdGh9PC9zcGFuPiA6IGltYWdlIHdpZHRoPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntoZWlnaHR9PC9zcGFuPiA6IGltYWdlIGhlaWdodDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj57d3VuaXRzfTwvc3Bhbj4gOiBpbWFnZSB3aWR0aCB1bml0cyAoZS5nLiBw eCwgJSwgZW0sIGV0Yy4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntodW5pdHN9 PC9zcGFuPiA6IGltYWdlIGhlaWdodCB1bml0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj57dGh1bWJ3aWR0aH08L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmhlaWdodH08L3NwYW4+IDogdGh1bWJuYWlsIGhl aWdodDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJ3dW5pdHN9PC9zcGFu PiA6IHRodW1ibmFpbCB3aWR0aCB1bml0cyAoZS5nLiBweCwgJSwgZW0sIGV0Yy4pPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmh1bml0c308L3NwYW4+IDogdGh1bWJu YWlsIGhlaWdodCB1bml0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aGFzdGh1 bWJ9PC9zcGFuPiA6IGlmIHRoZSBpbWFnZSBoYXMgYW4gYXNzb2NpYXRlZCB0aHVtYm5haWwg b3Igbm90PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntnYWxsZXJ5aWR9PC9zcGFu PiA6IGdhbGxlcnkgaWQgdGhhdCB5b3Ugb3IgdGhlIHBsdWdpbiBhc3NpZ25lZDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57b2JqZWN0fTwvc3Bhbj4gOiBhIHNwZWNpYWwgaXRl bSBjb250YWluaW5nIGVpdGhlciB0aGUgPGNvZGU+dGV4dDwvY29kZT4gT1IgdGhlIGltYWdl IHRhZyBvZiB0aGUgY29ycmVzcG9uZGluZyB0aHVtYm5haWwsIGJ1dCA8ZW0+b25seTwvZW0+ IGlmIDxjb2RlPnRodW1ibGltaXQ8L2NvZGU+IGFsbG93cyBpdC4gZS5nLiBpZiA8Y29kZT50 aHVtYmxpbWl0PSZxdW90OzEmcXVvdDs8L2NvZGU+IHRoaXMgdmFyaWFibGUgaXMgb25seSBz ZXQgZm9yIHRoZSBmaXJzdCB0aHVtYm5haWwgaW4gdGhlIGxpc3Q7IGV2ZXJ5IG90aGVyIHRp bWUgaXQgaXMgZW1wdHk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2NvdW50ZXJ9 PC9zcGFuPiA6IGltYWdlIGNvdW50ZXIsIHN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50 aW5nIGVhY2ggdGltZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aW5kZXh9PC9z cGFuPiA6IGluZGV4IGNvdW50ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3Qg bXVjaCB1c2UpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmNvdW50ZXJ9 PC9zcGFuPiA6IHRodW1ibmFpbCBpbWFnZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEuIE5v dGUgaXQgaXMgJiM4MjE2O3Jlc2V0JiM4MjE3OyB3aGVuZXZlciBhbiBlbGVtZW50IGdpdmVu IGluIDxjb2RlPm9uY2hhbmdlPC9jb2RlPiBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIGl0 ZW08L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaW5kZXh9PC9zcGFuPiA6 IGluZGV4IGNvdW50ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1 c2UpLiBJdCBpcyByZXNldCBsaWtlIDxjb2RlPnt0aHVtYmNvdW50ZXJ9PC9jb2RlPjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRvdGFs IG51bWJlciBvZiBpbWFnZXMgbWF0Y2hlZCBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+e21heGltYWdlc308L3NwYW4+IDogYWJzb2x1dGUgbWF4aW11bSBu dW1iZXIgb2YgaW1hZ2VzIGFjcm9zcyBhbGwgcGFnZXM8L2xpPgoJPC91bD4KCgk8cD5JbiBh ZGRpdGlvbiwgaWYgZWl0aGVyIDxjb2RlPnBhZ2luZz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBv ciA8Y29kZT5wYWdlZm9ybTwvY29kZT4gaGF2ZSBiZWVuIHNwZWNpZmllZCwgYWxsIHRoZSA8 YSBocmVmPSIjcmVwX3BhZ2luZyI+cGFnaW5nIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGFyZSBh dmFpbGFibGUgdG9vLiBJZiB0aG9zZSBhcmVuJiM4MjE3O3QgZW5vdWdoLCB5b3UgY2FuIDxh IGhyZWY9IiNjb21ib3MiPmNyZWF0ZSB5b3VyIG93bjwvYT4gYnkgZ3JvdXBpbmcgY29tYmlu YXRpb25zIG9mIHRoZSBhYm92ZSwgb3B0aW9uYWxseSB3aXRoIGFydGljbGUgdmFyaWFibGVz IHN1Y2ggYXMgPGNvZGU+P2V4Y2VycHQ8L2NvZGU+LCA8Y29kZT4/a2V5d29yZHM8L2NvZGU+ LCA8Y29kZT4/YXJ0aWNsZV9pbWFnZTwvY29kZT4sIGV0Yy48L3A+CgoJPHA+T3RoZXIgdGFn cyBhcmUgYWRkZWQgZGVwZW5kaW5nIGlmIHlvdSBhcmUgd2F0Y2hpbmcgZm9yIDxjb2RlPm9u Y2hhbmdlPC9jb2RlPiBlbGVtZW50cywgb3IgaWYgeW91IGhhdmUgc3BlY2lmaWVkIGEgPGNv ZGU+Z3JvdXB0YWc8L2NvZGU+LiBJZiB5b3UgYWRkZWQgPGNvZGU+b25jaGFuZ2U9JnF1b3Q7 YXV0aG9yLCBjYXRlZ29yeSZxdW90OzwvY29kZT4gdGhlbiBldmVyeSB0aW1lIHRoZSBhdXRo b3Igb3IgY2F0ZWdvcnkgY2hhbmdlZCBjb21wYXJlZCB0byB0aGUgcHJldmlvdXMgaW1hZ2Us IG9uZSBvciB0d28gbmV3IHJlcGxhY2VtZW50IHRhZ3Mgd291bGQgYmVjb21lIGF2YWlsYWJs ZTsgbmFtZWx5IDxjb2RlPntvbmNoYW5nZTphdXRob3J9PC9jb2RlPiBhbmQgPGNvZGU+e29u Y2hhbmdlOmNhdGVnb3J5KTwvY29kZT4uIFVzaW5nIG9uY2hhbmdlIHdpdGggPGNvZGU+c21k X2V2ZXJ5PC9jb2RlPiBkb2VzIDxlbT5ub3Q8L2VtPiBhZGQgYSBuZXcgcmVwbGFjZW1lbnQg dGFnIGFzIGl0IGlzIG1lcmVseSB1c2VkIHRvIGNvdW50LjwvcD4KCgk8cD5JZiB5b3UgdXNl ZCA8Y29kZT5ncm91cHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+IGFzIHdlbGwsIHlvdSB3 b3VsZCBiZSBnaXZlbiB0d28gbmV3IHJlcGxhY2VtZW50IHRhZ3MgbGFiZWxsZWQgPGNvZGU+ Z3JvdXB0YWdzdGFydDwvY29kZT4gYW5kIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPi4gU2Vl IDxhIGhyZWY9IiNlZzYiPmV4YW1wbGUgNjwvYT4gZm9yIGRldGFpbHMuPC9wPgoKCTxoMiBp ZD0icGFnaW5nX2Zvcm0iPlBhZ2luZyBmb3JtPC9oMj4KCgk8cD5BZGQgZ2FsbGVyeSBuYXZp Z2F0aW9uIHRvIHlvdXIgcGFnZS4gV29ya3MgaW4gYSBzaW1pbGFyIG1hbm5lciB0byB0aGUg PGEgaHJlZj0iI2dhbGxlcnlfZm9ybSI+Z2FsbGVyeSBmb3JtPC9hPjogYSBzZXJpZXMgb2Yg cmVwbGFjZW1lbnQgdGFncyBnb3Zlcm4gd2hpY2ggZ2FsbGVyeSBuYXZpZ2F0aW9uIGl0ZW1z IGFyZSBhdmFpbGFibGUuIFlvdSBjb3VsZCBjaG9vc2UgdG8gb25seSBzaG93IG5leHQvcHJl di4gT3IgcGVyaGFwcyAxc3QgcGFnZS9sYXN0IHBhZ2UuIE9yIG51bWJlcmVkIHBhZ2UgbGlu a3MuPC9wPgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJyZXBfcGFnaW5nIj5SZXBsYWNlbWVu dCB0YWdzOiBwYWdpbmc8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntu YXZmaXJzdH08L3NwYW4+IDogZmlyc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwO0Zp cnN0JiM4MjIxOyAvIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+KTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2cHJldn08L3NwYW4+IDogcHJldmlvdXMgcGFnZSAo ZGVmYXVsdCBsYWJlbDogJiM4MjIwOyZsYXF1bzsmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNh cHMiPk1MUDwvc3Bhbj4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZlYXJs aWVyfTwvc3Bhbj4gOiBhbnkgcGFnZSBudW1iZXJzIGJlZm9yZSB0aGUgY3VycmVudCBwYWdl PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlzdXJsfTwvc3Bhbj4gOiBj dXJyZW50IHBhZ2Ugd2l0aCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmsg dG8gaXRzZWxmPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlzfTwvc3Bh bj4gOiBjdXJyZW50IHBhZ2Ugd2l0aG91dCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IGxpbms8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxhdGVyfTwvc3Bh bj4gOiBhbnkgcGFnZSBudW1iZXJzIGFmdGVyIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e25hdm5leHR9PC9zcGFuPiA6IG5leHQgcGFnZSAoZGVm YXVsdCBsYWJlbDogJiM4MjIwOyZyYXF1bzsmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMi Pk1MUDwvc3Bhbj4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZsYXN0fTwv c3Bhbj4gOiBsYXN0IHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYjODIyMDtMYXN0JiM4MjIxOyAv IDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj57bmF2Zmlyc3RwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNh cHMiPlVSTDwvc3Bhbj4gdG8gZmlyc3QgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj57bmF2cHJldnBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiB0byBwcmV2aW91cyBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntuYXZ0aGlzcGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IHRvIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57bmF2bmV4dHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiB0byBuZXh0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25h dmxhc3RwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gdG8gbGFzdCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0b3RhbGlt YWdlc308L3NwYW4+IDogdG90YWwgbnVtYmVyIG9mIGltYWdlcyBtYXRjaGVkIG9uIHRoZSBj dXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RvdGFscGFnZXN9 PC9zcGFuPiA6IHRvdGFsIG51bWJlciBvZiBwYWdlcyBpbiB0aGlzIGNvbGxlY3Rpb248L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e21heGltYWdlc308L3NwYW4+IDogYWJzb2x1 dGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIGFjcm9zcyBhbGwgcGFnZXM8L2xpPgoJPC91 bD4KCgk8cD5UaGUgY3VycmVudCBwYWdlIGhhcyBhIGZpeGVkIGNsYXNzIG9mICYjODIxNjtj dXJyZW50JiM4MjE3OyBhbmQgZWFjaCBpdGVtIGlzLCBieSBkZWZhdWx0LCBhIDxjb2RlPiZs dDtsaSZndDs8L2NvZGU+IGZvciBlYXN5IHN0eWxpbmcuIEN1c3RvbSBsYWJlbHMgYXJlIGRl ZmluZWQgZGlyZWN0bHkgaW4gdGhlIGZvcm0gaXRzZWxmOyBmb3IgZXhhbXBsZSB0byBsYWJl bCB0aGUgbGluayB0aGF0IHRha2VzIHVzZXJzIHRvIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBn YWxsZXJ5IGFzICYjODIyMDsxc3QmIzgyMjE7LCB1c2U6PC9wPgoKCTxwPjxjb2RlPntuYXZm aXJzdDoxc3R9PC9jb2RlPjwvcD4KCgk8cD5XaXRoIHRoaXMgc3ludGF4IHlvdSBjYW4gbGFi ZWwgbmF2Zmlyc3QsIG5hdmxhc3QsIG5hdnByZXYsIG5hdm5leHQgYW5kIG5hdnRoaXMgKHRo ZSAmIzgyMTY7OiYjODIxNzsgZGVsaW1pdGVyIGluIHRoaXMgY2FzZSBpcyBzcGVjaWZpZWQg YnkgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4pLiBZb3UgY2FuIHVzZSB0aGlzIG1lY2hhbmlz bSB0byByZWFkIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+IHNuaXBwZXRzLCBlLmc6 PC9wPgoKCTxwPjxjb2RlPntuYXZmaXJzdDojI2ZpcnN0TGFiZWwjI308L2NvZGU+PC9wPgoK CTxwPllvdSBhcmUgbm90IGxpbWl0ZWQgdG8gdGV4dCBsYWJlbHMuIEltYWdlcyBjb3VsZCBi ZSB1c2VkOjwvcD4KCgk8cD48Y29kZT57bmF2bGFzdDogJmx0O2ltZyBzcmM9JnF1b3Q7aW1h Z2VzL2xhc3QucG5nJnF1b3Q7IC8mZ3Q7fTwvY29kZT48L3A+CgoJPHA+WW91IGNhbiBvdmVy cmlkZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZCBieSBuYXZlYXJsaWVyIGFuZCBu YXZsYXRlciBieSBzcGVjaWZ5aW5nIGEgY29sb24gYW5kIGEgbnVtYmVyLiBTbyB0byBvbmx5 IHNob3cgMiBpdGVtcyB0byB0aGUgbGVmdCBvZiB0aGUgY3VycmVudCBwYWdlIGFuZCAzIGl0 ZW1zIHRvIHRoZSByaWdodCwgdXNlIDxjb2RlPntuYXZlYXJsaWVyOjJ9IHtuYXZsYXRlcjoz fTwvY29kZT4gaW4geW91ciBmb3JtLiBJZiB5b3Ugd2VyZSBvbiBwYWdlIDkgb2YgMTUsIHtu YXZlYXJsaWVyOjR9IHtuYXZsYXRlcjozfSB3b3VsZCBzaG93IDxjb2RlPiZsdDsmbHQ7IDUg NiA3IDggOSAxMCAxMSAxMiAmZ3Q7Jmd0OzwvY29kZT48L3A+CgoJPHA+Q3VycmVudGx5IDxj b2RlPntuYXZlYXJsaWVyfTwvY29kZT4gYW5kIDxjb2RlPntuYXZsYXRlcn08L2NvZGU+IG9u bHkgZGlzcGxheSBhcmFiaWMgbnVtZXJhbHMuIEFueSBpZGVhcyBvbiBob3cgdG8gb2ZmZXIg b3RoZXIgY2hhcmFjdGVyIHNldHMgZ3JlYXRseSBhcHByZWNpYXRlZC48L3A+CgoJPGgyIGlk PSJjb3VudGZvcm0iPkNvdW50IGZvcm1zPC9oMj4KCgk8cD5Tb21ldGltZXMgaXQmIzgyMTc7 cyBoYW5keSB0byBiZSBhYmxlIHRvIHRha2UgYWN0aW9uIG9ubHkgd2hlbiBjZXJ0YWluIGlt YWdlcyBhcmUgcmVhY2hlZDsgZm9yIGV4YW1wbGU6PC9wPgoKCTx1bD4KCQk8bGk+b25seSBk aXNwbGF5IHNvbWV0aGluZyBvbiB0aGUgZmlyc3Qgb3IgbGFzdCBpbWFnZTwvbGk+CgkJPGxp PnN0YXJ0IGEgbmV3IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiAmIzgyMTY7cm93 JiM4MjE3OyBldmVyeSAzcmQgaW1hZ2U8L2xpPgoJCTxsaT5icmVhayB5b3VyIGdhbGxlcnkg dXAgd2l0aCBhbiBhZHZlcnQ8L2xpPgoJPC91bD4KCgk8cD5UaGlzIGNhbiBiZSBkb25lIHdp dGggc21kX2lmIGJ1dCBzaW5jZSBpdCBpcyBzdWNoIGEgY29tbW9uIGZlYXR1cmUsIHRoZSBw bHVnaW4gaGFzIHRoZSBhYmlsaXR5IGJ1aWx0IGluLiBBbGwgcmVwbGFjZW1lbnQgdGFncyBh cmUgYXZhaWxhYmxlIHdpdGhpbiB5b3VyIGNvdW50Zm9ybXMgc28geW91IGNhbiBkbyBzb21l IHByZXR0eSBuZWF0IHN0dWZmLiBJdCBpcyBiZXN0IGV4cGxhaW5lZCBieSBleGFtcGxlOjwv cD4KCgk8dWw+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDsxOmdhbF9oZWFkJnF1b3Q7 PC9jb2RlPiA6IHRoaXMgd291bGQgb3V0cHV0IHRoZSBmb3JtIDxlbT5nYWxfaGVhZDwvZW0+ IG9ubHkgd2hlbiB0aGUgZmlyc3QgaW1hZ2UgaXMgZGlzcGxheWVkPC9saT4KCQk8bGk+PGNv ZGU+Y291bnRmb3JtPSZxdW90O3t0b3RhbGltYWdlc306Z2FsX2Zvb3QmcXVvdDs8L2NvZGU+ IDogdGhpcyB3b3VsZCBvdXRwdXQgdGhlIGZvcm0gPGVtPmdhbF9mb290PC9lbT4gb25seSB3 aGVuIHRoZSBsYXN0IGltYWdlIGlzIGRpc3BsYXllZDwvbGk+CgkJPGxpPjxjb2RlPmNvdW50 Zm9ybT0mcXVvdDsxOmdhbF9oZWFkLCB7dG90YWxpbWFnZXN9OmdhbF9mb290JnF1b3Q7PC9j b2RlPiA6IGRvIGJvdGggb2YgdGhlIGFib3ZlPC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3Jt PSZxdW90OzE6Z2FsX2hlYWQsIHt0b3RhbGltYWdlc306Z2FsX2Zvb3Q6c21kX2JlbG93JnF1 b3Q7PC9jb2RlPiA6IHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBleGFtcGxlLCBidXQgcHV0 IHRoZSBjb250ZW50cyBiZWxvdyB0aGUgbGFzdCBpbWFnZSAoYnkgZGVmYXVsdCwgYWxsIG91 dHB1dCBhcHBlYXJzIGFib3ZlIHRoZSBnaXZlbiBpbWFnZSk8L2xpPgoJCTxsaT48Y29kZT5j b3VudGZvcm09JnF1b3Q7NDo5OnNtZF9iZWxvdzpnYWxfYWQmcXVvdDs8L2NvZGU+IDogb3V0 cHV0IDxlbT5nYWxfYWQ8L2VtPiBhZnRlciB0aGUgNHRoIGFuZCA5dGggaW1hZ2VzIG9ubHk8 L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7NC05OnNtZF9iZWxvdzpnYWxfYWQm cXVvdDs8L2NvZGU+IDogb3V0cHV0IDxlbT5nYWxfYWQ8L2VtPiBhZnRlciB0aGUgNHRoLCA1 dGgsIDZ0aCwgN3RoLCA4dGggYW5kIDl0aCBpbWFnZXMgb25seTwvbGk+CgkJPGxpPjxjb2Rl PmNvdW50Zm9ybT0mcXVvdDtzbWRfZXZlcnk6MzpnYWxfcm93JnF1b3Q7PC9jb2RlPiA6IG91 dHB1dCA8ZW0+Z2FsX3JvdzwvZW0+IGJlZm9yZSBldmVyeSAzcmQgaW1hZ2U8L2xpPgoJCTxs aT48Y29kZT5jb3VudGZvcm09JnF1b3Q7c21kX2V2ZXJ5OjI6ITg6Z2FsX3JvdyZxdW90Ozwv Y29kZT4gOiBvdXRwdXQgPGVtPmdhbF9yb3c8L2VtPiBiZWZvcmUgZXZlcnkgZXZlbiBpbWFn ZSBidXQgbm90IG9uIHRoZSA4dGggaW1hZ2U8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09 JnF1b3Q7OmdhbF9yb3cmcXVvdDs8L2NvZGU+IDogdXNlIGFuIGVtcHR5IGZpcnN0IHZhbHVl IHRvIG91dHB1dCA8ZW0+Z2FsX3JvdzwvZW0+IGJlZm9yZSBldmVyeSBpbWFnZS4gVGhpcyBt YXkgc2VlbSB1c2VsZXNzLCBidXQgaXQgbWVhbnMgeW91IGNhbiB1c2UgdHdvLCB0aHJlZSwg Zm91ciYjODIzMDsgZm9ybXMgKG9yIGFueSBudW1iZXIgb2YgZm9ybXMgYW5kIHRoZSBjb250 YWluZXIpIHNpbXVsdGFuZW91c2x5IHRvIGl0ZXJhdGUgb3ZlciB0aGUgc2FtZSBnYWxsZXJ5 LiBPciB1c2UgdGhlIHNhbWUgZm9ybSBhdCBkaWZmZXJlbnQgZnJlcXVlbmNpZXMuIEdldCBj cmVhdGl2ZSE8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7OiE1OmdhbF9yb3c6 c21kX2JlbG93JnF1b3Q7PC9jb2RlPiA6IGFnYWluLCBtaXNzaW5nIG91dCB0aGUgZmlyc3Qg dmFsdWUgd2lsbCBvdXRwdXQgZ2FsX3JvdyBhZnRlciBldmVyeSBpbWFnZSwgYnV0IHRoaXMg dGltZSBza2lwcGluZyB0aGUgNXRoIGltYWdlPC9saT4KCTwvdWw+CgoJPHA+VGhlIDxjb2Rl Piw8L2NvZGU+IGFuZCA8Y29kZT46PC9jb2RlPiBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHRo ZSA8Y29kZT5kZWxpbTwvY29kZT4gYW5kIDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+IGF0dHJp YnV0ZXMsIHJlc3BlY3RpdmVseS48L3A+CgoJPHA+VGhlcmUgYXJlIGEgZmV3IHJ1bGVzIHdo ZW4gdXNpbmcgdGhlIGNvdW50Zm9ybTo8L3A+CgoJPHVsPgoJCTxsaT5udW1iZXJzIG11c3Qg YXBwZWFyIGJlZm9yZSB0aGUgZm9ybSBuYW1lPC9saT4KCQk8bGk+dGhlIGZvcm0gbmFtZSBp cyB1c3VhbGx5IHRoZSBsYXN0IGl0ZW0gaW4gdGhlIGNvbG9uLXNlcGFyYXRlZCBsaXN0LCB0 aG91Z2ggeW91IGNhbiBwdXQgPGNvZGU+c21kX2Fib3ZlPC9jb2RlPiBvciA8Y29kZT5zbWRf YmVsb3c8L2NvZGU+IGxhc3QgaWYgeW91IHdpc2g8L2xpPgoJCTxsaT48Y29kZT5zbWRfZXZl cnk8L2NvZGU+IG9ubHkgYWZmZWN0cyB0aGUgdmFsdWUgdGhhdCA8ZW0+aW1tZWRpYXRlbHk8 L2VtPiBmb2xsb3dzIGl0LCBlLmcuIDxjb2RlPmNvdW50Zm9ybT0mcXVvdDtzbWRfZXZlcnk6 NTo3OjEyOm15X2FkJnF1b3Q7PC9jb2RlPiB3aWxsIG91dHB1dCA8ZW0+bXlfYWQ8L2VtPiBh dCBldmVyeSA1dGggaW1hZ2UsIGFzIHdlbGwgYXMgPGVtPm9ubHk8L2VtPiBvbiB0aGUgN3Ro IGFuZCAxMnRoIGltYWdlcy4gVGh1cyB0aGUgc2VxdWVuY2Ugd291bGQgYmUgNSwgNywgMTAs IDEyLCAxNSwgMjAsIDI1LCAzMCYjODIzMDs8L2xpPgoJCTxsaT5pZiB1c2luZyA8Y29kZT5z bWRfZXZlcnk8L2NvZGU+LCBpdCA8c3Ryb25nPm11c3Q8L3N0cm9uZz4gYXBwZWFyIGFzIHRo ZSBmaXJzdCBpdGVtLiBGb3IgZXhhbXBsZSA8Y29kZT5jb3VudGZvcm09JnF1b3Q7NDp0aGVf Zm91cnRoLCA2OnNtZF9ldmVyeTo1Om15X2FkJnF1b3Q7PC9jb2RlPiBpcyBpbnZhbGlkLCBi dXQgPGNvZGU+Y291bnRmb3JtPSZxdW90OzQ6dGhlX2ZvdXJ0aCwgc21kX2V2ZXJ5OjU6Njpt eV9hZCZxdW90OzwvY29kZT4gaXMgT0s8L2xpPgoJPC91bD4KCgk8cD5TZWUgPGEgaHJlZj0i I2VnMTAiPmV4YW1wbGUgMTA8L2E+IGZvciBtb3JlLjwvcD4KCgk8aDIgaWQ9ImNvbWJvcyI+ Q29tYm9zPC9oMj4KCgk8cD5JZiB0aGUgYnVpbHQtaW4gPGEgaHJlZj0iI3JlcF9nYWxsZXJ5 Ij5yZXBsYWNlbWVudCB0YWdzPC9hPiBhcmVuJiM4MjE3O3QgZW5vdWdoIGZvciB5b3VyIG5l ZWRzIG9yIHlvdSBmaW5kIHlvdXJzZWxmIHJlcGVhdGluZyB0aGUgc2FtZSBjb21iaW5hdGlv biBhbmQgd2FudCB0byBzYXZlIHlvdXJzZWxmIHNvbWUgdHlwaW5nLCB5b3UgY2FuIGRlZmlu ZSB5b3VyIG93bi4gVGhlIHN5bnRheCBpczo8L3A+CgoJPHA+PGNvZGU+Y29tYm89JnF1b3Q7 bmV3dGFnMTpkZWZpbml0aW9uLCBuZXd0YWcyOmRlZmluaXRpb24sIC4uLiZxdW90OzwvY29k ZT48L3A+CgoJPHA+JiM4MjE2O2RlZmluaXRpb24mIzgyMTc7IGNhbiBiZSBhbnkgZml4ZWQg dGV4dCwgYW55IGV4aXN0aW5nIHJlcGxhY2VtZW50IHRhZywgb3IgYW55ICYjODIxNjs/JiM4 MjE3OyBhcnRpY2xlIHZhcmlhYmxlIHNvIHlvdSBjYW4gZ2V0IHJlYWxseSB3aWxkIGhlcmUs IGZvciBleGFtcGxlOjwvcD4KCgk8cD48Y29kZT5jb21ibz0mcXVvdDtpbWdpbjpmb3VuZCBp biA/cyBbdGFnZ2VkIHdpdGggP2tleXdvcmRzLiBQaG90byBieSB7YXV0aG9yfV0mcXVvdDs8 L2NvZGU+PC9wPgoKCTxwPk9uY2UgZGVmaW5lZCwgPGNvZGU+e2ltZ2lufTwvY29kZT4gaXMg YXZhaWxhYmxlIHRvIHlvdXIgZ2FsbGVyeSA8Y29kZT5mb3JtPC9jb2RlPiBhbmQgbWlnaHQg YmUgcmVwbGFjZWQgd2l0aCAmIzgyMjA7Zm91bmQgaW4gem9vIFt0YWdnZWQgd2l0aCB6ZWJy YSwgYWZyaWNhLCBzdHJpcGVzLiBQaG90byBieSBCbG9rZV0mIzgyMjE7LiAkcHJldGV4dCBp cyBhbHNvIGF2YWlsYWJsZSBmb3IgdGhvc2UgZ2Vla3Mgd2hvIGtub3cgd2hhdCYjODIxNztz IGluIGl0ICh0ZW1wb3JhcmlseSB1c2UgPGNvZGU+ZGVidWc9JnF1b3Q7NCZxdW90OzwvY29k ZT4gdG8gdmlldyBhbGwgYXZhaWxhYmxlIGFydGljbGUgdmFyaWFibGVzKS48L3A+CgoJPHA+ T25lIHRoaW5nIHRvIHdhdGNoIG91dCBmb3IgaXMgdGhhdCB0aGUgc3BhY2UgY2hhcmFjdGVy IGlzbiYjODIxNzt0IG5lY2Vzc2FyaWx5IGEgZGVsaW1pdGVyIGZvciA8Y29kZT4/PC9jb2Rl PiB2YXJpYWJsZXMgKGJlY2F1c2UgY3VzdG9tIGZpZWxkcyBjYW4gaGF2ZSBzcGFjZXMgaW4g dGhlbSkuIFNvIDxjb2RlPmNvbWJvPSZxdW90O2RvZXNub3R3b3JrOj9zIGluID9jYXRlZ29y eTEmcXVvdDs8L2NvZGU+IHdpbGwgbG9vayBmb3IgYSB2YXJpYWJsZSBsYWJlbGxlZCAmIzgy MjA7cyBpbiYjODIyMTsgYW5kIG9uZSBjYWxsZWQgJiM4MjIwO2NhdGVnb3J5MSYjODIyMTsu IE9ubHkgb25lIG9mIHRob3NlIGV4aXN0cyEgQ2xldmVyIHVzZSBvZiBwYXJlbnRoZXNlcyBv ciBvdGhlciBwdW5jdHVhdGlvbiBjYW4gd29yayByb3VuZCB0aGlzLiBPciB1c2UgPGNvZGU+ c3RyaWN0ZmllbGRzPSZxdW90OzAmcXVvdDs8L2NvZGU+IHRvIHR1cm4gb2ZmIHRoZSB1c2Ug b2Ygc3BhY2VzIGluIGN1c3RvbSBmaWVsZCBuYW1lcy48L3A+CgoJPGgyIGlkPSJjb2xsYXRl X21vZGUiPkNvbGxhdGUgbW9kZTwvaDI+CgoJPHA+SWYgeW91IHdhbnQgdG8gZ2V0IDxlbT5y ZWFsbHk8L2VtPiBmdW5reSB5b3UgY2FuIHB1dCB0aGUgcGx1Z2luIGludG8gYSAybmQgbW9k ZSBjYWxsZWQgJiM4MjIwO2NvbGxhdGlvbiBtb2RlJiM4MjIxOy4gVGhpcyBtZWFucyB5b3Vy IGNob3NlbiBmb3JtIGlzIDxzdHJvbmc+bm90PC9zdHJvbmc+IGV4ZWN1dGVkIGZvciBldmVy eSBpbWFnZTsgaXQgaXMgb25seSB1c2VkIG9uY2UgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBs aXN0LCBhZnRlciBhbGwgdGhlIGltYWdlcyBoYXZlIGJlZW4gaW50ZXJuYWxseSAmIzgyMjA7 Y29sbGVjdGVkJiM4MjIxOy4gSW4gZWZmZWN0LCB0aGUgcGx1Z2luIGJ1aWxkcyB1cCBhIGdp YW50IGFycmF5IG9mIGFsbCBtYXRjaGluZyBpbWFnZXMgcmVhZHkgZm9yIHlvdSB0byBvdXRw dXQgdGhlbSBhbGwgaW4gb25lIGdvLiBUaGlzIGlzIHZlcnkgaGFuZHkgZm9yIGRvaW5nIHNs aWRlc2hvd3MgYW5kIGlzIGJlc3QgZXhwbGFpbmVkIGJ5IGV4YW1wbGU6PC9wPgoKCTxwPjxj b2RlPmNvbGxhdGU9JnF1b3Q7MSZxdW90OzwvY29kZT48L3A+CgoJPHA+c3dpdGNoZXMgY29s bGF0aW9uIG1vZGUgb24uIElmIHRoZSBwbHVnaW4gbWF0Y2hlZCA0IGltYWdlcyBhbmQgeW91 IHdlcmUgdG8gdXNlIHRoZSByZXBsYWNlbWVudCB0YWcgPGNvZGU+e25hbWV9PC9jb2RlPiBp biB5b3VyIGZvcm0gbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBpbWFnZXM6IHtuYW1lfQo8L2NvZGU+PC9wcmU+ CgoJPHA+eW91IG1pZ2h0IGdldCB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBpbWFnZXM6IGhlcm9uLmpwZyxwZW5ndWlu LmpwZyxlbXUuanBnLHB1ZmZpbi5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPlNvbWV0aW1lcyBp dCYjODIxNztzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIHB1dCBxdW90ZXMgYXJvdW5kIGVhY2gg aXRlbSBzbyB5b3UgY2FuIHRlbGwgY29sbGF0ZSBtb2RlIHRvIGRvIHRoYXQgaW5zdGVhZDo8 L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtxdW90ZTp7bmFtZX0mcXVvdDs8L2NvZGU+ PC9wPgoKCTxwPllvdSB3b3VsZCB0aGVuIGdldDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiAmcXVvdDtoZXJvbi5q cGcmcXVvdDssJnF1b3Q7cGVuZ3Vpbi5qcGcmcXVvdDssJnF1b3Q7ZW11LmpwZyZxdW90Oywm cXVvdDtwdWZmaW4uanBnJnF1b3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZGVsaW1pdGVy IChhIGNvbW1hIGluIHRoaXMgY2FzZSkgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUgPGNv ZGU+ZGVsaW08L2NvZGU+IGF0dHJpYnV0ZS4gWW91IG1heSB1c2UgPGNvZGU+c2dscXVvdGU8 L2NvZGU+IHRvIHdyYXAgc2luZ2xlIHF1b3RlcyByb3VuZCB0aGUgaXRlbXMsIG9yICYjODIy MDtkYmxxdW90ZSYjODIyMTsgYXMgYSBzeW5vbnltIGZvciAmIzgyMjA7cXVvdGUmIzgyMjE7 IGlmIHlvdSBwcmVmZXIuIFlvdSBjYW4gcXVvdGUgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBv bmNlIGJ5IHNwZWNpZnlpbmcgdGhlIGl0ZW1zIGFzIGEgZGVsaW1pdGVkIGxpc3Q6PC9wPgoK CTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7cXVvdGU6e25hbWV9OnthbHR9OntpbWdpbn0mcXVv dDs8L2NvZGU+PC9wPgoKCTxwPlllcywgeW91IGNhbiB1c2UgY29tYm9zISBUaGUgZGVsaW1p dGVyIHVzZWQgYmV0d2VlbiBpdGVtcyBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIDxjb2Rl PmNvbGxhdGVkZWxpbTwvY29kZT4gYXR0cmlidXRlLjwvcD4KCgk8cD5UaGUgc2Vjb25kIHNw ZWNpYWwgZmVhdHVyZSBvZiBjb2xsYXRpb24gbW9kZSBpcyB0aGF0IHlvdSBkbyBub3QgaGF2 ZSB0byBhbHdheXMgb3V0cHV0IHRoZSBlbnRpcmUgbGlzdC4gWW91IGNhbiBncmFiIGluZGl2 aWR1YWwgZW50aXRpZXMgZnJvbSB3aXRoaW4gdGhlIGludGVybmFsIGFycmF5IGJ5IHVzaW5n IHRoZSAmIzgyMTY7IyYjODIxNzsgbm90YXRpb24gdGh1czo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57bmFtZX0gbWlnaHQgb3V0cHV0ICZxdW90O2hl cm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZxdW90OywmcXVvdDtlbXUuanBnJnF1 b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsgKGFzIGJlZm9yZSkKe25hbWUjMX0gd291bGQg b25seSBvdXRwdXQgaGVyb24uanBnCntuYW1lIzN9IHdvdWxkIG9ubHkgb3V0cHV0IGVtdS5q cGcKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB3aGVuIHB1bGxpbmcgb3V0IGluZGl2 aWR1YWwgZW50cmllcyB0aGV5IDxzdHJvbmc+ZG8gbm90PC9zdHJvbmc+IGdldCBxdW90ZXMg YWRkZWQgdG8gdGhlbSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHlvdSB1c2VkIDxjb2RlPnF1 b3RlPC9jb2RlPiBvciBub3QuIFRoaXMgaXMgYmVjYXVzZSBpdCBpcyBhIHNpbmdsZSBpdGVt IHNvIHlvdSBjYW4gZWFzaWx5IHB1dCB0aGUgcXVvdGVzIGluIHRoZSBmb3JtIGl0c2VsZiAo dml6OiA8Y29kZT4mcXVvdDt7bmFtZSMyfSZxdW90OzwvY29kZT4pPC9wPgoKCTxwPk1lc3Np bmcgYXJvdW5kIHdpdGggcHVsbGluZyBvdXQgaW5kaXZpZHVhbCBpdGVtcyBhbmQgbGlzdHMg Y2FuIHlpZWxkIHNvbWUgdmVyeSBpbnRlcmVzdGluZyByZXN1bHRzIGFuZCBhbGxvd3Mgc29t ZSBjb21wbGV0ZWx5IHdhY2t5IGdhbGxlcmllcyB0byBiZSBnZW5lcmF0ZWQuIFRyeSBjb21i aW5pbmcgc21kX2dhbGxlcnkgdGFncyB3aXRoIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50 Jmd0OzwvY29kZT4gZm9yIGEgcmVhbCBtaW5kIHNjcmFtYmxlIDotKTwvcD4KCgk8aDIgaWQ9 ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+CgoJPHA+VGhlIGV4YW1wbGVzIGFsbCB1c2UgdGhl IGNsYXNzaWMgem9vIHdlYnNpdGUuIExldCYjODIxNztzIGdldCBzb21lIHBpY3R1cmVzIG91 dCBvZiB0aGUgZGF0YWJhc2UmIzgyMzA7PC9wPgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE6 IHNpbXBsZSAvIGxpZ2h0Ym94ZWQgZ2FsbGVyeTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90 O2FuaW1hbHMmcXVvdDsgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7IGZvcm09JnF1b3Q7Z2Fs bGVyeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxscyBvdXQgYWxs IHBpY3R1cmVzIGZyb20gdGhlIGFuaW1hbHMgY2F0ZWdvcnksIGluY2x1ZGluZyBhbGwgc3Vi LWNhdGVnb3JpZXMsIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUgZm9ybSBjYWxsZWQgJiM4MjE2 O2dhbGxlcnkmIzgyMTc7IGZvciBwcm9jZXNzaW5nLiBUaGUgZm9ybSBjb3VsZCBiZTo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGNsYXNz PSZxdW90O2FuaW1hZ2UmcXVvdDsgc3JjPSZxdW90O3t1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7 YWx0fSZxdW90OyAvJmd0OwombHQ7ZGl2IGNsYXNzPSZxdW90O2FjYXB0aW9uJnF1b3Q7Jmd0 O3t0aXRsZX0mbHQ7L2RpdiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgbWVhbnMsIGZv ciBldmVyeSBtYXRjaGVkIGltYWdlLCBzdWJzdGl0dXRlIGl0cyA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPiwgYWx0IGFuZCB0aXRsZSB0YWdzIGludG8gdGhlIHJlbGV2YW50IHBs YWNlcy4gVGh1cyB5b3UgZ2V0IGEgc2VyaWVzIG9mIGltYWdlcyBvbiB0aGUgcGFnZSwgd2hp Y2ggeW91IGNhbiBzdHlsZSBhY2NvcmRpbmdseS48L3A+CgoJPHA+Rm9yIGEgbW9yZSBmYW5j eSBvdXRwdXQgdXNpbmcsIHNheSwgc2xpbWJveCwgeW91IGNvdWxkIGxvYWQgdGhlIHJlbGV2 YW50IGxpYnJhcmllcyBhbmQgc3R5bGVzIGluIHRoZSA8Y29kZT4mbHQ7aGVhZCZndDs8L2Nv ZGU+IG9mIHlvdXIgcGFnZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNy Yz0mcXVvdDsvanMvbW9vdG9vbHMuanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtz Y3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9z bGltYm94LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7bGluayByZWw9JnF1b3Q7 c3R5bGVzaGVldCZxdW90OyB0eXBlPSZxdW90O3RleHQvY3NzJnF1b3Q7IGhyZWY9JnF1b3Q7 L2Nzcy9zbGltYm94LmNzcyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlbiB5 b3VyICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDthIHJlbD0mcXVvdDtsaWdodGJv eC17Y2F0ZWdvcnl9JnF1b3Q7IGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0m cXVvdDtBIHBpY3R1cmUgb2Yge2NhcHRpb259JnF1b3Q7Jmd0OwogJmx0O3R4cDp0aHVtYm5h aWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5Wb2lsYSEgVXNpbmcgdGhlIHNhbWUgc21kX2dhbGxlcnkgdGFnIHlvdSBoYXZlIGNo YW5nZWQgdGhlIHdheSB0aGUgZ2FsbGVyeSByZW5kZXJzIGZyb20gYSBzaW1wbGUgbGlzdCB0 byBhIGZ1bGwtZmVhdHVyZWQgc2xpbWJveC4gV2l0aCB2aXJ0dWFsbHkgdGhlIHNhbWUgZm9y bSB5b3UgY2FuIHN3aXRjaCB0aGUgb3V0cHV0IHRvIHRoaWNrYm94LCBsaWdodGJveCwgbGl0 ZWJveCwgbW9vbmJveCBvciB3aGF0ZXZlci15b3UtbGlrZS1ib3ggZGVwZW5kaW5nIG9uIHdo aWNoIGxpYnJhcmllcyB5b3UgbG9hZC4gRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZm9yIHlv dXIgZmF2b3VyaXRlIGVmZmVjdCBhbmQgcGx1ZyBpdCBpbnRvIHNtZF9nYWxsZXJ5LjwvcD4K Cgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiBsYXVuY2ggZnJvbSBvbmUgaW1hZ2U8L2gzPgoK CTxwPkEgY29tbW9uIHJlcXVlc3QgaXMgdG8gYmUgYWJsZSB0byAmIzgyMjA7bGF1bmNoJiM4 MjIxOyBhIHNsaW1ib3ggZ2FsbGVyeSBmcm9tIGEgc2luZ2xlIGltYWdlIG9yIHRleHQgbGlu ay4gVXNpbmcgYSBzaW5nbGUgaW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmlt YWxzJnF1b3Q7CiAgICAgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7CiAgICAgZm9ybT0mcXVv dDtnYWxsZXJ5JnF1b3Q7IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OyAvJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+VGhlIGZvcm0gd2lsbCB1c2UgdGhlIHNwZWNpYWwgPGNvZGU+e29iamVj dH08L2NvZGU+IHJlcGxhY2VtZW50IHRhZyBzbyBpdCBvbmx5IGRpc3BsYXlzIHRoZSB0aHVt Ym5haWwgaWYgdGhlIHZhbHVlIG9mIHRodW1ibGltaXQgaGFzIDxzdHJvbmc+bm90PC9zdHJv bmc+IGJlZW4gcmVhY2hlZDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gtc21kJnF1b3Q7IGhyZWY9JnF1b3Q7 e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yge3RpdGxlfSZxdW90 OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hhbmdlIHRo ZSBzdGFydCBpbWFnZSBieSBzcGVjaWZ5aW5nIDxjb2RlPnRodW1ib2Zmc2V0PC9jb2RlPiAm IzgyMTI7IG5vdGUgdGhpcyB3aWxsIGFsc28gc3RhcnQgdGhlIGxpZ2h0Ym94IGVmZmVjdCBm cm9tIHRoZSBpbWFnZSB5b3UgY2hvb3NlLiBJZiB5b3Ugd2FudCB0byBzdGFydCBvbiBhIHNw ZWNpZmljIGltYWdlIGluIHBvc2l0aW9uIDEsIHVzZSB0aGUgPGNvZGU+aWQ8L2NvZGU+IGF0 dHJpYnV0ZSB0byBicmluZyBpdCB0byB0aGUgdG9wIG9mIHRoZSBsaXN0LCBvciBjaGFuZ2Ug dGhlIHNvcnQgb3JkZXIuPC9wPgoKCTxwPklmIHlvdSB3YW50ZWQgdG8gbGF1bmNoIHRoZSBn YWxsZXJ5IGZyb20gYSB0ZXh0IGxpbmssIGFkZCBzb21ldGhpbmcgbGlrZSA8Y29kZT50ZXh0 PSZxdW90O0NsaWNrIHRvIHN0YXJ0IGxpZ2h0Ym94JnF1b3Q7PC9jb2RlPi48L3A+CgoJPGgz IGlkPSJlZzMiPkV4YW1wbGUgMzogcG9wdXAgZ2FsbGVyeTwvaDM+CgoJPHA+VG8gYWNoaWV2 ZSBhbiBlZmZlY3Qgc2ltaWxhciB0byByc3NfdGh1bWJwb3AsIGFkZCBhbiBpbWFnZSBhbmQg Y2FwdGlvbiBwbGFjZWhvbGRlciBvdXRzaWRlIHRoZSBjYWxsIHRvIHNtZF9nYWxsZXJ5LCB0 aGVuIGluY2x1ZGUgeW91ciBzbWRfZ2FsbGVyeSB0YWcgYXMgdXN1YWwuIFRoaXMgdGltZSB3 ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIGFsbCB0aGUgcGljdHVyZXMgZnJvbSB0aGUgY2F0 ZWdvcmllcyB1cCB0byB0d28gbGV2ZWxzIGJlbG93IGJvdGggJiM4MjIwO2FuaW1hbHMmIzgy MjE7LCBwbHVzIHdoaWNoZXZlciBjYXRlZ29yaWVzIGFyZSBsaXN0ZWQgaW4gPGNvZGU+bXlf Y3VzdG9tX2ZpZWxkPC9jb2RlPiBhbmQgdGhlIGltYWdlcyB3aXRoIElEcyAyNSwgMzgsIDM5 LCA0MCBhbmQgNDI6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdlcy9l bXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24mcXVv dDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7dHhwOnNtZF9nYWxsZXJ5IHN1YmxldmVsPSZxdW90 OzImcXVvdDsKICAgICBjYXRlZ29yeT0mcXVvdDthbmltYWxzLCA/bXlfY3VzdG9tX2ZpZWxk JnF1b3Q7CiAgICAgaWQ9JnF1b3Q7MjUsIDQyLCAzOC00MCZxdW90OyBmb3JtPSZxdW90O2dh bGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBnYWxsZXJ5IGZvcm0g bG9va3Mgc2NhcnkgYnV0IGlzIG9ubHkgYSB0aHVtYm5haWwgaW1hZ2Ugc3Vycm91bmRlZCBi eSBhIHNpbXBsZSBhbmNob3IgdGFnIHdpdGggdHdvIGFjdGlvbnMgYXNzaWduZWQgdG8gaXQ6 IGEgbW91c2VvdmVyIHRvIGNvcHkgdGhlIHBpY3R1cmUgYW5kIGNhcHRpb24gaW50byB0aGUg cGxhY2Vob2xkZXI7IGFuZCBhIG1vdXNlb3V0IHRvIHJlbW92ZSB0aGVtOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9JnF1b3Q7e3Vy bH0mcXVvdDsgdGl0bGU9JnF1b3Q7e3RpdGxlfSZxdW90OwogICAgIG9ubW91c2VvdmVyPSZx dW90O2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5Oykuc3JjID0g dGhpcy5ocmVmOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRp b24mIzM5OykuaW5uZXJIVE1MID0gdGhpcy50aXRsZTsgcmV0dXJuIGZhbHNlOyZxdW90Owog ICAgIG9ubW91c2VvdXQ9JnF1b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxs c2l6ZSYjMzk7KS5zcmMgPSAmIzM5Oy9pbWFnZXMvMTcuanBnJiMzOTs7CiAgICAgZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5lckhUTUwgPSAm IzM5OyYjMzk7OyByZXR1cm4gZmFsc2U7JnF1b3Q7Jmd0OwogICZsdDtpbWcgc3JjPSZxdW90 O3t0aHVtYnVybH0mcXVvdDsgYWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZsdDsvYSZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhlcmUgYXJlIG11Y2ggbmVhdGVyIHdheXMg b2YgZG9pbmcgdGhpcyAoZS5nLiB3aXRoIGpRdWVyeSkgYW5kIGl0JiM4MjE3O3Mgbm90IHJl Y29tbWVuZGVkIHRvIHVzZSB0aGlzIGZvcm0gaW4gYSBsaXZlIHNpdGUsIGJ1dCBpdCBnaXZl cyBhIGZsYXZvdXIgb2Ygd2hhdCBpcyBwb3NzaWJsZS48L3A+CgoJPGgzIGlkPSJlZzQiPkV4 YW1wbGUgNDogc2xpZGVzaG93PC9oMz4KCgk8cD5UaGlzIG9uZSB1c2VzIGNvbGxhdGUgbW9k ZSBidXQgaXMgbm90IG11Y2ggbW9yZSBkaWZmaWN1bHQgdG8gdW5kZXJzdGFuZC4gSW4geW91 ciA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IHNlY3Rpb246PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQv amF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZs dDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1 b3Q7IHNyYz0mcXVvdDsvanMvc2xpZGVzaG93LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIHRhZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgY2F0ZWdvcnk9JnF1 b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7CiAgY29tYm89 JnF1b3Q7aW1nbGlzdDp7aWR9e2V4dH0mcXVvdDsKICBjb2xsYXRlPSZxdW90O3F1b3RlOntp bWdsaXN0fTp7YWx0fSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxs cyBhbGwgcGljdHVyZXMgZnJvbSB0aGUgYmlyZHMgYW5kIGZpc2ggY2F0ZWdvcmllcy4gQWx0 aG91Z2ggdGVjaG5pY2FsbHkgdW5uZWNlc3NhcnksIGEgY29tYm8gaGFzIGJlZW4gZGVmaW5l ZCB0byBzaG93IGhvdyBpdCBjYW4gYmUgdXNlZC4gVGhpcyBjb21ibyBpcyBjYWxsZWQgPGNv ZGU+aW1nbGlzdDwvY29kZT4gYW5kIGlzIGRlZmluZWQgYXMgdGhlIGltYWdlJiM4MjE3O3Mg SUQgbnVtYmVyIHBsdXMgaXRzIGV4dGVuc2lvbi4gV2UgdXNlIHRoaXMgaW4gdGhlIGNvbGxh dGUgYXR0cmlidXRlIGFuZCB0ZWxsIGl0IHRvIHB1dCBkb3VibGUgcXVvdGVzIHJvdW5kIGV2 ZXJ5IGl0ZW0gaW4gJiM4MjE2O2ltZ2xpc3QmIzgyMTc7IGFuZCAmIzgyMTY7YWx0JiM4MjE3 Oy4gVGhlbiB3ZSBjYW4gcHV0IHRoZXNlIHZhbHVlcyBpbnRvIHRoZSBuZWNlc3NhcnkgamF2 YXNjcmlwdCBpbiB0aGUgPGNvZGU+Z2FsbGVyeTwvY29kZT4gZm9ybSB0byBnZW5lcmF0ZSB0 aGUgc2xpZGVzaG93OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDtkaXYgY2xhc3M9JnF1b3Q7c2xpZGVzaG93JnF1b3Q7IGlkPSZxdW90O3NsaWRl c2hvdzEmcXVvdDsmZ3Q7CiAmbHQ7aW1nIHNyYz0mcXVvdDsmbHQ7dHhwOnNpdGVfdXJsIC8m Z3Q7aW1hZ2VzL3tpZCMxfS5qcGcmcXVvdDsKICAgICBhbHQ9JnF1b3Q7e2FsdCMxfSZxdW90 OyB3aWR0aD0mcXVvdDt7d2lkdGgjMX0mcXVvdDsgaGVpZ2h0PSZxdW90O3toZWlnaHQjMX0m cXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CjwvY29kZT4KPGNvZGUgY2xhc3M9ImJsb2NrIj4m bHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OwpteVNob3cx ID0gbmV3IFNsaWRlc2hvdygmcXVvdDtzbGlkZXNob3cxJnF1b3Q7LAogIHsgaHU6ICZxdW90 OyZsdDt0eHA6c2l0ZV91cmwgLyZndDtpbWFnZXMvJnF1b3Q7LAogICAgaW1hZ2VzOiBbe2lt Z2xpc3R9XSwKICAgIGNhcHRpb25zOiBbe2FsdH1dLAogICAgY2xhc3NlczogWyZxdW90O3By ZXYmcXVvdDssJnF1b3Q7bmV4dCZxdW90OywmcXVvdDthY3RpdmUmcXVvdDtdLAogICAgdHlw ZTogJnF1b3Q7ZmFkZSZxdW90OwogIH0pOwombHQ7L3NjcmlwdCZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPk5vdGUgdGhhdCB0aGUgaW5pdGlhbCBwb3J0aW9uIChpbiB0aGUgZGl2IGFuZCBp bWcgdGFncykgdXNlcyB0aGUgJiM4MjE2OyMmIzgyMTc7IG5vdGF0aW9uIGJlY2F1c2Ugd2Ug b25seSB3YW50IHRvIGRpc3BsYXkgb25lIGltYWdlIHRvICYjODIyMDtzdGFydCYjODIyMTsg dGhlIHNsaWRlc2hvdy4gSW4gdGhpcyBjYXNlIHdlJiM4MjE3O3JlIHVzaW5nIHRoZSBmaXJz dCBpbWFnZSBpbiB0aGUgbGlzdCwgYnV0IHlvdSBjYW4gY2hhbmdlIHRoZSAjMSBmb3IgIzQy IGlmIHlvdSB3YW50ZWQgdG8gc2hvdyB0aGUgZm9ydHktc2Vjb25kIGltYWdlIGluc3RlYWQh IFRoZSBwYXJ0IGluIHRoZSBzY3JpcHQgdGFnIHVzZXMgdGhlIGZ1bGwsIHF1b3RlZCBsaXN0 cyBiZWNhdXNlIHRoYXQmIzgyMTc7cyB0aGUgZm9ybWF0IHRoZSBqYXZhc2NyaXB0IHJlcXVp cmVzLjwvcD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1OiBwYWdpbmF0aW9uPC9oMz4KCgk8 cD5UbyBhZGQgcGFnaW5nIHRvIGEgZ2FsbGVyeSB5b3UgdXNlIHRoZSA8Y29kZT5saW1pdDwv Y29kZT4gYXR0cmlidXRlIHRvIHNob3cgYSBudW1iZXIgb2YgdGh1bWJzIHBlciBwYWdlLiBG b3IgYSBwYWdlZCB0aHVtYnBvcCBnYWxsZXJ5IHRoYXQgc2hvd3MgZml2ZSB0aHVtYnMgcGVy IHBhZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O2ltZyBpZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5q cGcmcXVvdDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7 Jmx0Oy9zcGFuJmd0OwombHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1h bHMmcXVvdDsKICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgcGFnZWZvcm09JnF1b3Q7Z2Fs bGVyeV9uYXYmcXVvdDsKICBsaW1pdD0mcXVvdDs1JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5UaGUgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvcm0gaXMgaWRlbnRpY2FsIHRv IHRoZSBvbmUgaW4gPGEgaHJlZj0iI2VnNCI+ZXhhbXBsZSA0PC9hPiwgd2hpbGUgeW91ciBn YWxsZXJ5X25hdiBmb3JtIG1pZ2h0IGxvb2sgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9JnF1b3Q7dG90YWwm cXVvdDsmZ3Q7IyBvZiBwaWNzOiB7dG90YWxpbWFnZXN9Jmx0Oy9kaXYmZ3Q7CiAgICAge25h dmZpcnN0fSB7bmF2cHJldn0KICAgICB7bmF2ZWFybGllcn0ge25hdnRoaXN9IHtuYXZsYXRl cn0KICAgICB7bmF2bmV4dH0ge25hdmxhc3R9CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IG1p Z2h0IHJlbmRlciBzb21ldGhpbmcgc2ltaWxhciB0byB0aGlzIGJlbG93IHRoZSB0aHVtYnM6 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+IyBvZiBwaWNz OiAzOAogICAgIEZpcnN0ICZsdDsgMSAyIDMgNCA1IDYgNyA4ICZndDsgTGFzdAo8L2NvZGU+ PC9wcmU+CgoJPGgzIGlkPSJlZzYiPkV4YW1wbGUgNjogb25jaGFuZ2U8L2gzPgoKCTxwPklm IHlvdSB3YW50IHRvIHNpbXVsYXRlIG11bHRpcGxlIGdhbGxlcmllcyBmcm9tIG9uZSBzbWRf Z2FsbGVyeSB0YWcgeW91IGNhbiB1c2UgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IHRvICYjODIy MDt3YXRjaCYjODIyMTsgZm9yIHdoZW4gY2VydGFpbiBhdHRyaWJ1dGVzIG9mIGltYWdlcyBj aGFuZ2UgYW5kIGluc2VydCBzcGVjaWFsIHRhZ3MgPGVtPm9ubHkgd2hlbiBzb21ldGhpbmcg Y2hhbmdlczwvZW0+LiBJbiB0aGlzIHJlZ2FyZCBpdCBhY3RzIGxpa2UgYSBzb3VwZWQtdXAg dmVyc2lvbiBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiYjODIxNztzIGJ1aWx0 LWluIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gdGFnLjwvcD4KCgk8 cD5Zb3UgY2FuIHdhdGNoIHRoZSB1c3VhbCB0aGluZ3MgbGlrZSA8Y29kZT5jYXRlZ29yeTwv Y29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2RlPiwgPGNvZGU+ aGVpZ2h0PC9jb2RlPiwgPGNvZGU+ZXh0PC9jb2RlPmVuc2lvbiBhbmQgc28gb246PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2Fs bGVyeQogICAgIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7 Z2FsbGVyeSZxdW90OwogICAgIG9uY2hhbmdlPSZxdW90O2NhdGVnb3J5X3RpdGxlJnF1b3Q7 CiAgICAgb25jaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5TaW5jZSB0aGUgcGx1Z2luIG5vcm1hbGx5IHNvcnRzIGJ5IGNhdGVnb3J5LCB0 aGlzIHdpbGwgaGF2ZSB0aGUgZWZmZWN0IG9mIGFkZGluZyBvbmUgcmVwbGFjZW1lbnQgdGFn IDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX08L2NvZGU+IGF0IHRoZSB2ZXJ5IGJl Z2lubmluZyBvZiB0aGUgdGh1bWIgbGlzdCBhbmQgYWxzbyB3aGVuIHRoZSBjYXRlZ29yeSBz d2l0Y2hlcyBmcm9tICYjODIxNjtiaXJkcyYjODIxNzsgdG8gJiM4MjE2O2Zpc2gmIzgyMTc7 LiBUaHVzIHlvdXIgZ2FsbGVyeSBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX0KJmx0 O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5 fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhh dCB3b3VsZCBtYWtlIHR3byBsaWdodGJveGFibGUgc2V0cyBvZiB0aHVtYm5haWxzIHdpdGgg YSBoZWFkaW5nIDMgYWJvdmUgZWFjaCBncm91cCBjb250YWluaW5nIHRoZSBjYXRlZ29yeSB0 aXRsZS48L3A+CgoJPHA+Tm90ZSB0aGF0IGlmIHlvdSBhZGQgPGNvZGU+dGh1bWJsaW1pdD0m cXVvdDsxJnF1b3Q7PC9jb2RlPiB0byB0aGUgc21kX2dhbGxlcnkgdGFnIHlvdSBjYW4gc2hv dyBqdXN0IG9uZSB0aHVtYm5haWwgaW4gZWFjaCBncm91cCwgd2l0aCBoZWFkaW5ncyBhYm92 ZSBlYWNoIHRodW1iLiBWaXNpdG9ycyBjbGlja2luZyB0aGUgdGh1bWIgd2lsbCBsYXVuY2gg dGhlIGxpZ2h0Ym94IGFuZCBiZSBhYmxlIHRvIGJyb3dzZSB0aGUgcmVsZXZhbnQgY2F0ZWdv cnkuIElmIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXkgY2FuIG9ubHkgYnJvd3Nl IHNpeCBpbWFnZXMgaW4gZWFjaCBjYXRlZ29yeSBzZXQsIGFkZCA8Y29kZT5ncm91cGxpbWl0 PSZxdW90OzYmcXVvdDs8L2NvZGU+LjwvcD4KCgk8cD5BbiBleHRyYSBwYWlyIG9mIHJlcGxh Y2VtZW50IHRhZ3MgYXJlIGF2YWlsYWJsZSBpZiB5b3Ugd2lzaCB0byB3cmFwIHRoZSBvYmpl Y3RzIHRoZW1zZWx2ZXMgdG8gZ3JvdXAgdGhlbS4gVXNlIHRoZSA8Y29kZT5ncm91cHRhZzwv Y29kZT4gYW5kIDxjb2RlPmdyb3VwY2xhc3M8L2NvZGU+IGF0dHJpYnV0ZXMgdG8gc2V0IGl0 IHVwLCB0aGVuIHR3byBuZXcgcmVwbGFjZW1lbnQgdGFncyBjYWxsZWQgPGNvZGU+Z3JvdXB0 YWdzdGFydDwvY29kZT4gYW5kIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPiBiZWNvbWUgYXZh aWxhYmxlLiBUaGV5IGFyZSBjb25kaXRpb25hbCBhbmQgYXJlIG9ubHkgcG9wdWxhdGVkIHdo ZW4gdGhlIGF0dHJpYnV0ZXMgeW91IGFyZSB3YXRjaGluZy9zb3J0aW5nIGJ5IGNoYW5nZS4g VXNlIGl0IGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGlkPSZxdW90Oz9hcnRpY2xlX2ltYWdlJnF1 b3Q7CiAgICAgY2F0ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtn YWxsZXJ5JnF1b3Q7CiAgICAgb25jaGFuZ2U9JnF1b3Q7Y2F0ZWdvcnlfdGl0bGUmcXVvdDsK ICAgICBvbmNoYW5nZXdyYXB0YWc9JnF1b3Q7aDMmcXVvdDsKICAgICBncm91cHRhZz0mcXVv dDtkaXYmcXVvdDsgZ3JvdXBjbGFzcz0mcXVvdDtib3gmcXVvdDsgLyZndDsKPC9jb2RlPjwv cHJlPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+e29uY2hhbmdl OmNhdGVnb3J5X3RpdGxlfQp7Z3JvdXB0YWdzdGFydH0KJmx0O2EgaHJlZj0mcXVvdDt7dXJs fSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVj dH0KJmx0Oy9hJmd0Owp7Z3JvdXB0YWdlbmR9CjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIHRo YXQgeW91IGNhbiBtb3ZlIHRoZSA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiB0byBzdXJy b3VuZCB0aGUgPGNvZGU+b25jaGFuZ2U8L2NvZGU+ZCB0aXRsZSBpZiB5b3Ugd2lzaC48L3A+ CgoJPGgzIGlkPSJlZzciPkV4YW1wbGUgNzogc21kX2V2ZXJ5PC9oMz4KCgk8cD5Zb3UgY2Fu IGFsc28gdHJpZ2dlciBhbiBvbmNoYW5nZSBldmVudCBldmVyeSBudGggaW1hZ2U6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2Fs bGVyeSBjYXRlZ29yeT0mcXVvdDtmcm9udHBhZ2UmcXVvdDsKICAgICBsaW1pdD0mcXVvdDs5 JnF1b3Q7IHNvcnQ9JnF1b3Q7cmFuZG9tJnF1b3Q7CiAgICAgb25jaGFuZ2U9JnF1b3Q7c21k X2V2ZXJ5OjMmcXVvdDsKICAgICBncm91cHRhZz0mcXVvdDt1bCZxdW90OyBncm91cGNsYXNz PSZxdW90O3NsaWRlc2hvdyZxdW90OyZndDsKe2dyb3VwdGFnc3RhcnR9CiAgICZsdDtsaSZn dDsKICAgICAgJmx0O2EgaHJlZj0mcXVvdDsmbHQ7dHhwOnBlcm1saW5rIGlkPSZxdW90O3th bHR9JnF1b3Q7IC8mZ3Q7JnF1b3Q7Jmd0OwogICAgICAgICAmbHQ7aW1nIHNyYz0mcXVvdDt7 dGh1bWJ1cmx9JnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsKICAgICAgICAgJmx0O3Nw YW4mZ3Q7e3RpdGxlfSZsdDsvc3BhbiZndDsKICAgICAgJmx0Oy9hJmd0OwogICAmbHQ7L2xp Jmd0Owp7Z3JvdXB0YWdlbmR9CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0Owo8L2NvZGU+PC9w cmU+CgoJPGgzIGlkPSJlZzgiPkV4YW1wbGUgODogdW5jYXRlZ29yaXplZCBpbWFnZXM8L2gz PgoKCTxwPlNvbWV0aW1lcyB5b3UgbWlnaHQgd2lzaCB0byBleHRyYWN0IGltYWdlcyB0aGF0 IGRvIG5vdCBoYXZlIGEgY2F0ZWdvcnkgYXNzaWduZWQuIFlvdSBuZWVkIHRvIHVzZSB0aGUg c3BlY2lhbCB2YWx1ZSA8Y29kZT5TTURfRU1QVFk8L2NvZGU+IGZvciB0aGlzOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxl cnkgY2F0ZWdvcnk9JnF1b3Q7U01EX0VNUFRZLCBzaG9lcyZxdW90OyAvJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+WW91IGNhbiBhbHNvIG5lZ2F0ZSB0aGUgbG9naWMgc28geW91IGNhbiBl eHRyYWN0IGFsbCBpbWFnZXMgdGhhdCBoYXZlIHNvbWUgKGFueSkgY2F0ZWdvcnkgYXNzaWdu ZWQgdG8gdGhlbTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90OyFTTURfRU1QVFkmcXVvdDsg LyZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWc5Ij5FeGFtcGxlIDk6IHtvYmplY3R9 IGFuZCBvYmplY3Rmb3JtPC9oMz4KCgk8cD5UaGUgZGVmYXVsdCA8Y29kZT57b2JqZWN0fTwv Y29kZT4gb3V0cHV0cyBhIHNpbXBsZSBoeXBlcmxpbmtlZCB0aHVtYm5haWwuIElmIHlvdSB3 YW50IHNvbWV0aGluZyBhIGJpdCBtb3JlIGV4b3RpYywgbGlrZSBsYXVuY2hpbmcgYSBzaGFk b3dib3ggZWZmZWN0IGZyb20gYSBzaW5nbGUgdGh1bWJuYWlsIHRoYXQgYWxzbyBoYXMgdGhl IGNhcHRpb24gYmVuZWF0aCBpdCwgeW91IG5lZWQgdG8gY3VzdG9taXNlIHRoZSA8Y29kZT57 b2JqZWN0fTwvY29kZT4gdmlhIHRoZSA8Y29kZT5vYmplY3Rmb3JtPC9jb2RlPiBhdHRyaWJ1 dGUuIFB1dCBhIGxpc3Qgb2YgaW1hZ2UgSURzIGluIHlvdXIgYXJ0aWNsZSBpbWFnZSBmaWVs ZCBhbmQgdGhlbjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9nYWxsZXJ5IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OwogICAgIGlk PSZxdW90Oz9hcnRpY2xlX2ltYWdlJnF1b3Q7IHdyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7CiAg ICAgY2xhc3M9JnF1b3Q7dGh1bWJzJnF1b3Q7IG9iamVjdGZvcm09JnF1b3Q7bXlfb2JqJnF1 b3Q7CiAgICAgY29tYm89JnF1b3Q7YXJ0aWQ6P3RoaXNpZCZxdW90OyZndDsKICAmbHQ7YSBy ZWw9JnF1b3Q7c2hhZG93Ym94W3thcnRpZH1dOwogICAgIG9wdGlvbnM9e2NvdW50ZXJUeXBl OiYjMzk7c2tpcCYjMzk7LAogICAgIGNvbnRpbnVvdXM6dHJ1ZSwKICAgICBhbmltYXRlOmZh bHNlLAogICAgIGFuaW1TZXF1ZW5jZTomIzM5O3N5bmMmIzM5O30mcXVvdDsKICAgICBocmVm PSZxdW90O3t1cmx9JnF1b3Q7CiAgICAgdGl0bGU9JnF1b3Q7e2FsdH0mcXVvdDsmZ3Q7e29i amVjdH0mbHQ7L2EmZ3Q7CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+QW5kIGluIDxjb2RlPm15X29iajwvY29kZT4sIHlvdSBjb3VsZCBwdXQ6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDp0aHVtYm5h aWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0OyZsdDticiAvJmd0O3t0aXRsZX0KPC9jb2Rl PjwvcHJlPgoKCTxwPk5vdGljZSBob3cgdGhlIHJlcGxhY2VtZW50IHRhZ3Mgc3RpbGwgd29y ayBpbiB0aGUgPGNvZGU+b2JqZWN0Zm9ybTwvY29kZT4/IFRoaXMgYWxsb3dzIHlvdSB0byBi dWlsZCB1cCBhIGNvbXBsZXRlIGxheW91dCBmb3IgdGhlIGxhdW5jaGFibGUgdGh1bWJuYWls IGFuZCBoYXZlIGl0IG9ubHkgcmVuZGVyZWQgb25jZSBvbiB0aGUgcGFnZS4gVGhlIHJlc3Qg b2YgdGhlIGNvbnRhaW5lciBpbiB0aGlzIGV4YW1wbGUgcmVuZGVycyBhbGwgdGhlICYjODIy MDtoaWRkZW4mIzgyMjE7IGltYWdlcyBpbiB0aGUgc2hhZG93Ym94IGdhbGxlcnkuPC9wPgoK CTxoMyBpZD0iZWcxMCI+RXhhbXBsZSAxMDogPGNvZGU+Y291bnRmb3JtPC9jb2RlPjwvaDM+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9n YWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsKICAgICBjb3VudGZvcm09JnF1 b3Q7MTpnYWxfYTpzbWRfYWJvdmUsCiAgICAgICB7dG90YWxpbWFnZXN9OmdhbF9jLAogICAg ICAgc21kX2V2ZXJ5OjM6IXt0b3RhbGltYWdlc306Z2FsX2ImcXVvdDsKICAgICBjb3VudHBv cz0mcXVvdDtiZWxvdyZxdW90OyZndDsKJmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lk fSZxdW90OyAvJmd0OwombHQ7L3R4cDpzbWRfZ2FsbGVyeSZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPk5vdGUgdGhhdCA8Y29kZT5jb3VudHBvczwvY29kZT4gaXMgc2V0IHRvIDxjb2RlPmJl bG93PC9jb2RlPiBpbiB0aGlzIGV4YW1wbGUgc28gYWxsIG91dHB1dCBhcHBlYXJzIDxlbT5h ZnRlcjwvZW0+IHRoZSBnaXZlbiBpbWFnZXMuIElmIHlvdSBtYWRlIHRoZSBmb2xsb3dpbmcg dGhyZWUgZm9ybXMsIHlvdXIgdGFnIHdvdWxkIHNwbGl0IHRoZSBnYWxsZXJ5IGludG8gJiM4 MjE2O3Jvd3MmIzgyMTc7IG9mIDMgaW1hZ2VzOjwvcD4KCgk8cD5nYWxfYTogPGNvZGU+Jmx0 O2RpdiBjbGFzcz0mcXVvdDtuZXdyb3cmcXVvdDsmZ3Q7PC9jb2RlPjxiciAvPgpnYWxfYjog PGNvZGU+Jmx0Oy9kaXYmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtuZXdyb3cmcXVvdDsmZ3Q7 PC9jb2RlPjxiciAvPgpnYWxfYzogPGNvZGU+Jmx0Oy9kaXYmZ3Q7PC9jb2RlPjwvcD4KCgk8 cD5CcmVha2luZyB0aGUgPGNvZGU+Y291bnRmb3JtPC9jb2RlPiBhdHRyaWJ1dGUgZG93biBp bnRvIGl0cyBjb21wb25lbnRzLCB5b3UgY2FuIHNlZSB0aGF0OjwvcD4KCgk8dWw+CgkJPGxp Pjxjb2RlPjE6Z2FsX2E6c21kX2Fib3ZlPC9jb2RlPiBhZGRzIHRoZSAmIzgyMTY7bmV3cm93 JiM4MjE3OyBkaXYgYWJvdmUgdGhlIGZpcnN0IGltYWdlPC9saT4KCQk8bGk+PGNvZGU+e3Rv dGFsaW1hZ2VzfTpnYWxfYzwvY29kZT4gYWRkcyB0aGUgY2xvc2luZyBkaXYgYmVsb3cgdGhl IGxhc3QgaW1hZ2Ugb24gdGhpcyBwYWdlPC9saT4KCQk8bGk+PGNvZGU+c21kX2V2ZXJ5OjM6 IXt0b3RhbGltYWdlc306Z2FsX2I8L2NvZGU+IGFkZHMgYSBjbG9zaW5nIGFuZCB0aGVuIGFu IG9wZW5pbmcgZGl2IGFmdGVyIGV2ZXJ5IDNyZCBpbWFnZSwgPGVtPmV4Y2VwdDwvZW0+IG9u IHRoZSBsYXN0IGltYWdlLiBJZiB3ZSBkaWRuJiM4MjE3O3QgcHV0IHRoZSBleGNlcHRpb24g aW4sIGFuZCB5b3UgaGFkIDEyIHRodW1ibmFpbHMgaW4geW91ciBnYWxsZXJ5ICh3aGljaCBp cyBkaXZpc2libGUgYnkgMyEpIHlvdSB3b3VsZCBzZWUgdGhlIGNvbnRlbnRzIG9mIGdhbDIg YWZ0ZXIgdGhlIGxhc3QgaW1hZ2UgYXMgd2VsbDwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0iZWcx MSI+RXhhbXBsZSAxMTogVXNpbmcgYW4gb25jaGFuZ2UgZm9ybTwvaDM+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgICAg Y2F0ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtj YXRlZ29yeV90aXRsZTpvY19mb3JtJnF1b3Q7Jmd0Owp7b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0 bGV9CiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgcmVsPSZxdW90O2xpZ2h0Ym94LXtj YXRlZ29yeX0mcXVvdDsmZ3Q7CntvYmplY3R9CiZsdDsvYSZndDsKJmx0Oy90eHA6c21kX2dh bGxlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5hbmQgaW4gZm9ybSA8Y29kZT5vY19mb3Jt PC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4m bHQ7ZGl2IGlkPSZxdW90O3tjYXRlZ29yeX0mcXVvdDsKICAgY2xhc3M9JnF1b3Q7Y2F0ZWdv cnkmcXVvdDsmZ3Q7e2NhdGVnb3J5X3RpdGxlfSZsdDsvZGl2Jmd0Owo8L2NvZGU+PC9wcmU+ CgoJPGgzIGlkPSJlZzEyIj5FeGFtcGxlIDEyOiBQb3J0Zm9saW8gbGFuZGluZyBwYWdlPC9o Mz4KCgk8cD5IZXJlIHdlIHdpbGwgcmVuZGVyIGEgZ2FsbGVyeSBmb3IgZWFjaCBhcnRpc3Qg b24gYSBnYWxsZXJ5IHNpdGUuIEFycmFuZ2UgeW91ciBpbWFnZSBjYXRlZ29yaWVzIHNvIHRo ZXkgYXJlIGNoaWxkcmVuIG9mIGEgcGFyZW50IGltYWdlIGNhdGVnb3J5OjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPnBvcnRmb2xpbwogIHwtLSZndDsg bW9uZXQKICB8LS0mZ3Q7IHZhbl9nb2doCiAgfC0tJmd0OyB0dXJuZXIKICB8LS0mZ3Q7IGRh bGkKICB8LS0mZ3Q7IC4uLgo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlbiBvZiBjb3Vyc2UsIHVw bG9hZCB5b3VyIGltYWdlcyBhbmQgYXNzaWduIHRoZW0gdG8gdGhlIGFwcHJvcHJpYXRlIGFy dGlzdCBjYXRlZ29yeS48L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgICAgY2F0ZWdvcnk9JnF1b3Q7cG9ydGZvbGlv JnF1b3Q7IHN1YmxldmVsPSZxdW90OzEmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRl Z29yeV90aXRsZSZxdW90OwogICAgIG9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OyB0 aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsKICAgICBncm91cGxpbWl0PSZxdW90OzUmcXVvdDsg c29ydD0mcXVvdDtjYXRlZ29yeSBhc2MsIGRhdGUgZGVzYyZxdW90OwogICAgIG9iamVjdGZv cm09JnF1b3Q7ZnVsbF9saW5rJnF1b3Q7Jmd0Owp7b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9 CiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRl Z29yeX0mcXVvdDsmZ3Q7CntvYmplY3R9CiZsdDsvYSZndDsKJmx0Oy90eHA6c21kX2dhbGxl cnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JbiBGb3JtIDxjb2RlPmZ1bGxfbGluazwvY29k ZT46PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7c3BhbiZndDsKICAg U2VlICZsdDthIGhyZWY9JnF1b3Q7L2FydGlzdHMve2NhdGVnb3J5fSZxdW90OyZndDthbGwg aW1hZ2VzIGJ5IHtjYXRlZ29yeV90aXRsZX0mbHQ7L2EmZ3Q7LgombHQ7L3NwYW4mZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5UaGF0IHdpbGwgZ3JhYiBlYWNoIGFydGlzdCBjYXRlZ29yeSBh bmQgZGlzcGxheSBhIHRodW1ibmFpbCBvZiB0aGUgbW9zdCByZWNlbnQgd29yayBzdWJtaXR0 ZWQgYnkgZWFjaCBhdXRob3IgdW5kZXIgdGhlaXIgb3duIGhlYWRpbmcuIFdoZW4geW91IGNs aWNrIHRoZSB0aHVtYm5haWwgaXQgbGF1bmNoZXMgdGhlIGxpZ2h0Ym94IGdhbGxlcnkgYW5k IGFsbG93cyB5b3UgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgZml2ZSBtb3N0IHJlY2VudCBw aWN0dXJlcyBzdWJtaXR0ZWQuIEJlbmVhdGggdGhlIHRodW1ibmFpbCBpcyBhIGxpbmsgdG8g YW4gaW5kaXZpZHVhbCBhcnRpY2xlIHRoYXQgY291bGQgc2hvdyB0aGF0IGFydGlzdHMmIzgy MTc7cyBjb21wbGV0ZSB3b3JrcyBhbmQgYSBiaW8uPC9wPgoKCTxoMiBpZD0iY2hhbmdlbG9n Ij5DaGFuZ2Vsb2c8L2gyPgoKCTxwPkFsbCBhdmFpbGFibGUgdmVyc2lvbnMgYW5kIGNoYW5n ZXMgYXJlIGxpc3RlZCBoZXJlLjwvcD4KCgk8cD48c3Ryb25nPkJldGE8L3N0cm9uZz48L3A+ CgoJPHVsPgoJCTxsaT4xNCBGZWIgMDggfCAwLjEgfCBJbml0aWFsIHJlbGVhc2UgJiM4MjEx OyBIYXBweSBWYWxlbnRpbmVzIERheSA6LSk8L2xpPgoJCTxsaT4xOSBGZWIgMDggfCAwLjIg fCBBZGRlZCB7Z2FsbGVyeWlkfSAodGhhbmtzIHJsb2FkZXJybykgYW5kIHNvbWUgc2tlbGV0 b24gZG9jczwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+T2ZmaWNpYWw8L3N0cm9uZz48L3A+ CgoJPHVsPgoJCTxsaT4xMSBNYXIgMDggfCAwLjMgfCBPZmZpY2lhbCBwdWJsaWMgcmVsZWFz ZS4gRml4ZWQgc2lsbHkgZW1wdHkgZmllbGQgYnVnOyBhZGRlZCB7Y291bnRlcn0sIHtpbmRl eH0gYW5kIHRoZSB0b3RhbHMgKGFsbCB0aGFua3MgamFrb2IpPC9saT4KCQk8bGk+MTUgTWFy IDA4IHwgMC4zMSB8IEZpeGVkIGEgY291cGxlIG9mIHVuZGVmaW5lZCBpbmRleGVzIGFuZCBh ZGRlZCB7Y2F0ZWdvcnlfdGl0bGV9ICh0aGFua3MganN0dWJicyk8L2xpPgoJCTxsaT4xNyBN YXIgMDggfCAwLjMyIHwgRml4ZWQgYW5vdGhlciB1bmRlZmluZWQgaW5kZXggYW5kIHJlbW92 ZWQgYm9ndXMgY2FsbCB0byBzbWRfbGliIChib3RoIHRoYW5rcyBzZWN1bmRhcik8L2xpPgoJ CTxsaT4yMSBNYXIgMDggfCAwLjMzIHwgRGlkIHYwLjMxIHByb3Blcmx5LCBpbmNsdWRpbmcg dGFibGUgcHJlZml4ICh0aGFua3MgbmFyZG8pPC9saT4KCQk8bGk+MDEgQXByIDA4IHwgMC4z NCB8IEZpeGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5TUUw8L3NwYW4+IHBhcmVudGhlc2lzIGJ1 ZyA7IGFkZGVkIGVtcHR5Y2xhc3MgYW5kIHttYXhpbWFnZXN9ICh0aGFua3MgdGhlX2dob3N0 KTwvbGk+CgkJPGxpPjA4IEFwciAwOCB8IDAuNCB8IENoYW5nZWQgdGh1bWIgdG8gYWxsb3cg dGh1bWIvZnVsbHNpemUgc3dhcHBpbmcgOyBBZGRlZCB0aHVtYmNoYW5nZSwgdGh1bWJjaGFu Z2V3cmFwdGFnLCB0aHVtYmNoYW5nZWNsYXNzLCB7dGh1bWJpbmRleH0sIHt0aHVtYmNvdW50 ZXJ9IGFuZCB0aGUge2NoYW5nZWQ6Kn0gcmVwbGFjZW1lbnQgdGFncyAodGhhbmtzIGZ1bHMp PC9saT4KCQk8bGk+MjYgTWF5IDA4IHwgMC40MSB8IEZpeGVkIERpcmVjdG9yeSBzZXBhcmF0 b3IgKHRoYW5rcyBjdWRhKSA7IGFkZGVkIHJhdyBwYWdlIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+cyB0byB0aGUgbmF2IHJlcGxhY2VtZW50IGFycmF5IGFuZCBtYWRlIHRoZSBu YXYgYXJyYXkgYXZhaWxhYmxlIGluIHRoZSBzdGFuZGFyZCByZXBsYWNlbWVudHMgYXJyYXkg KHRoYW5rcyB2aXN1YWxwZW9wbGUpPC9saT4KCQk8bGk+MjcgTWF5IDA4IHwgMC40MiB8IEFk ZGVkIHBhZ2Vwb3MgYW5kIG1hZGUgcGFnZSBibG9ja3MgaW5kZXBlbmRlbnQgb2YgdGh1bWIg YmxvY2sgKHRoYW5rcyBkdWNoYW1wKTwvbGk+CgkJPGxpPjEwIEp1biAwOCB8IDAuNDMgfCBG aXhlZCBzb3J0PSYjODIyMDtmaXhlZCYjODIyMTsgd2hlbiB1c2luZyBsaW1pdCAodGhhbmtz IHJvYmluNzQ2KSA7IGFkZGVkIHBlci1ncm91cCBvbmNoYW5nZSB3cmFwcGluZyBhbmQgYWxs b3dlZCBmaXhlZCBzb3J0aW5nIG9mIGNhdGVnb3JpZXMgKHRoYW5rcyBqc3R1YmJzKSA7IGRl cHJlY2F0ZWQgdGh1bWJjaGFuZ2UqIGFuZCByZW5hbWVkIGFzIG9uY2hhbmdlKiA7IGZpeGVk ICRpZHggY291bnRlciBwcm9ibGVtPC9saT4KCQk8bGk+MTAgSnVuIDA4IHwgMC40NCB8IEF0 dGVtcHQgIzIgYXQgcGVyLWdyb3VwIG9uY2hhbmdlIHdyYXBwaW5nICh0aGFua3MgYWdhaW4g anN0dWJicyk8L2xpPgoJCTxsaT4xNCBKdWwgMDggfCAwLjQ1IHwgRml4ZWQgbGFjayBvZiBv dXRwdXQgd2hlbiBub3QgdXNpbmcgY2F0ZWdvcmllcyAodGhhbmtzIHJvYmluNzQ2KTwvbGk+ CgkJPGxpPjE2IE5vdiAwOCB8IDAuNDYgfCBBZGRlZCBjb2xsYXRlZGVsaW0gKHRoYW5rcyBj dXJpb3V6KSA7IGZpeGVkIChJIGhvcGUpIHRoZSBjYXRlZ29yeSAvIGlkIGJ1ZyBmcm9tIDAu NDQgYW5kIDAuNDUgKHRoYW5rcyByb2Jpbjc0Ni9uYXJkbyk8L2xpPgoJCTxsaT4xMyBGZWIg MDkgfCAwLjUgfCBSZXF1aXJlcyBzbWRfbGliIDsgYWRkZWQgPHNwYW4gY2xhc3M9ImNhcHMi Pk1MUDwvc3Bhbj4gc3VwcG9ydCAodGhhbmtzIG5ldC1jYXJ2ZXIpIDsgYWRkZWQgc3VwcG9y dCBmb3IgZGlzcGxheWluZyB1bmNhdGVnb3Jpc2VkIGltYWdlcyAodGhhbmtzIHh6YW1lbikg OyAmIzgyMTY7PyYjODIxNzsgdmFycyBleHBhbmRlZCB0byBsaW5rIC8gaW1hZ2UgLyBmaWxl IC8gPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gYW5kIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIDsgbmV3IGF0dHJpYnV0ZXM6IDxjb2RlPmVz Y2FwZTwvY29kZT4sIDxjb2RlPmh0bWxfaWQ8L2NvZGU+LCA8Y29kZT5mb3JtYXQ8L2NvZGU+ LCA8Y29kZT5nbXQ8L2NvZGU+LCA8Y29kZT5sYW5nPC9jb2RlPiAodGhhbmtzIG1hbmlxdWkp LCA8Y29kZT5zdHJpY3RmaWVsZHM8L2NvZGU+IDsgaW1wcm92ZWQgPGNvZGU+e29iamVjdH08 L2NvZGU+IHN1cHBvcnQgYW5kIGFkZGVkIDxjb2RlPm9iamVjdGZvcm08L2NvZGU+ICh0aGFu a3MgdHllL3J2dHVybmFnZSkgOyA8Y29kZT57dGl0bGV9PC9jb2RlPiA9PSA8Y29kZT57Y2Fw dGlvbn08L2NvZGU+IGF0IGxhc3QhIDsgcmVtb3ZlZCA8Y29kZT50aHVtYmNoYW5nZTwvY29k ZT4qIGF0dHJpYnV0ZXMgOyBpbXByb3ZlZCBzdXBwb3J0IGZvciB0YWJsZSBleHRlbnNpb25z ICh2aWEgdGhlIDxjb2RlPmNvbHVtbnM8L2NvZGU+IGF0dHJpYnV0ZTogdGhhbmtzIFJlZEZv eCkgOyBhZGRlZCA8Y29kZT5zbWRfZXZlcnk8L2NvZGU+IHN5bnRheCB0byA8Y29kZT5vbmNo YW5nZTwvY29kZT4gKHRoYW5rcyBqYWtvYikgOyBmaXhlZCBvZmZzZXQgYnVnICh0aGFua3Mg ZmVyYWdub2xpKTwvbGk+CgkJPGxpPjAxIE1hciAwOSB8IDAuNTEgfCBBZGRlZCA8Y29kZT5j b3VudGZvcm08L2NvZGU+IGFuZCA8Y29kZT5jb3VudHBvczwvY29kZT4gOyBmaXhlZCA8Y29k ZT57aGFzdGh1bWJ9PC9jb2RlPiB3YXJuaW5nPC9saT4KCQk8bGk+MTYgTm92IDA5IHwgMC41 MiB8IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IDQuMi4wIG9ubHkgOyBhZGRlZCBk YXRhYmFzZSB0aHVtYm5haWwgaGVpZ2h0IGFuZCB3aWR0aCBzdXBwb3J0IDsgYWRkZWQgPGNv ZGU+YXNwZWN0PC9jb2RlPiwgPGNvZGU+ZGltZW5zaW9uczwvY29kZT4sIDxjb2RlPmF1dGhv cjwvY29kZT4sIDxjb2RlPmV4dGVuc2lvbjwvY29kZT4gYW5kIDxjb2RlPmltZ3NpemU8L2Nv ZGU+IGF0dHJpYnV0ZXMgOyBmaXhlZCBxdW90ZSBwYXJzaW5nIGluIDxjb2RlPmVzY2FwZTwv Y29kZT4gYXR0cmlidXRlIGFuZCB3YXJuaW5nIHdoZW4gdXNpbmcgPGNvZGU+Zml4ZWQ8L2Nv ZGU+IHNvcnRpbmcgKGJvdGggdGhhbmtzIG1hbmlxdWkpPC9saT4KCQk8bGk+MDEgSmFuIDEw IHwgMC41MyB8IEFkZGVkIG9uY2hhbmdlIGZvcm0gY2FwYWJpbGl0eSAodGhhbmtzIE1hdHRE KTwvbGk+CgkJPGxpPjAxIEZlYiAxMCB8IDAuNTQgfCBNdWx0aXBsZSBpbWFnZXMgbm90IGRp c3BsYXllZCBpZiBtdWx0aXBsZSBjYXRlZ29yaWVzIGV4aXN0IHdpdGggdGhlIHNhbWUgbmFt ZSBhbmQgZGlmZmVyZW50IHRpdGxlPC9saT4KCQk8bGk+MDEgTWFyIDEwIHwgMC41NSB8IEFk ZGVkIDxjb2RlPm5hbWU8L2NvZGU+IGZpbHRlcmluZzwvbGk+CgkJPGxpPjEwIE1hciAxMCB8 IDAuNiB8IFNpbXBsaWZpZWQgcXVlcnkgdG8gZWxpbWluYXRlIGVycm9ycyB3aXRoIHVuY2F0 ZWdvcmlzZWQgaW1hZ2VzIGJlaW5nIG9taXR0ZWQgZnJvbSB0aGUgcmVzdWx0czsgYWxsb3dl ZCBjb3VudGZvcm0gcmFuZ2VzIDsgYWRkZWQgPGNvZGU+Z3JvdXBsaW1pdDwvY29kZT48L2xp PgoJCTxsaT4wMyBBcHIgMTAgfCAwLjYxIHwgQWRkZWQgPGNvZGU+YnJlYWtjbGFzczwvY29k ZT4gKHRoYW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDYgQXByIDEwIHwgMC42MiB8IEZp eGVkIDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX08L2NvZGU+IGFuZCA8Y29kZT57 Z3JvdXB0YWdlbmR9PC9jb2RlPiAodGhhbmtzIGphbik8L2xpPgoJPC91bD4KCgk8aDIgaWQ9 ImNyZWRpdHMiPkNyZWRpdHM8L2gyPgoKCTxwPlRoaXMgcGx1Z2luIHdvdWxkbiYjODIxNzt0 IGhhdmUgZXhpc3RlZCB3aXRob3V0IHRoZSBhd2Vzb21lIG1pbmQgb2YgUm9iZXJ0IFdldHps bWF5ci4gSGlzIHdldF9mb3JfZWFjaF9pbWFnZSBwbHVnaW4gaXMgdHJ1ZSBnZW5pdXM7IHRo aXMgc2ltcGx5IHN0YW5kcyBvbiB0aGUgc2hvdWxkZXJzIG9mIHRoYXQgaWRlYSBhbmQgcm9s bHMgaW4gYSBzb3VwZWQgdXAgdmVyc2lvbiBvZiB0aGUgdGh1bWJuYWlsIGdlbmVyYXRpb24g ZW5naW5lIGZyb20gc21kX3NsaW1ib3guIFRvIHRoYXQgZW5kLCB0aGUgcGx1Z2luIGlzIGFs c28gaW5kZWJ0ZWQgdG8gYW55b25lIHdobyBoYXMgcG9zdGVkIGZlYXR1cmVzIG9yIGJ1ZyBy ZXBvcnRzIHRvIG1lIG9yIHRoZSBzbWRfc2xpbWJveCB0aHJlYWQuIFlvdSYjODIxNztyZSBh bGwgbWFydmVsbG91cy48L3A+Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAq KiogLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0 OjEuNSA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUv MTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29s b3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1h bDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4Yzsg ZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0K I3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiAjMDBjOyB0 ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBw YWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0 aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRv bTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7 IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjog MDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206 IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6 IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzA3 OTsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzog MXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQt ZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHgg QXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAw IDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9u dC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3Jv dW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3 aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21k X2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5n Oi41ZW0gMDt9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3Nt ZF9oZWxwIC5yZXF1aXJlZCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVw eCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsg fQo8L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czozOiJtZDUi O3M6MzI6IjlmNWIwZWNiNDcwYTEwMDk2ZGEzNjdiOGM2NTZhYTllIjt9