# Name: smd_gallery v0.6 # 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 bi5jb20vIjtzOjc6InZlcnNpb24iO3M6MzoiMC42IjtzOjExOiJkZXNjcmlwdGlvbiI7czo2 OToiQShub3RoZXIpIHRodW1ibmFpbCBnYWxsZXJ5L3NsaWRlc2hvdyBjcmVhdG9yIHdpdGgg dW5yZWFsIGZsZXhpYmlsaXR5IjtzOjQ6ImNvZGUiO3M6MzcxNzk6InJlcXVpcmVfcGx1Z2lu KCdzbWRfbGliJyk7DQoNCi8vIE1MUCBzdXBwb3J0DQpnbG9iYWwgJHNtZF9nYWxsTGFuZzsN CiRzbWRfZ2FsbFN0ciA9IGFycmF5KA0KCSduYXZmaXJzdCcgPT4gJ0ZpcnN0JywNCgknbmF2 bGFzdCcgPT4gJ0xhc3QnLA0KCSduYXZwcmV2JyA9PiAnJmxhcXVvOycsDQoJJ25hdm5leHQn ID0+ICcmcmFxdW87JywNCik7DQokc21kX2dhbGxMYW5nID0gbmV3IHNtZF9NTFAoJ3NtZF9n YWxsZXJ5JywgJ3NtZF9nYWxsJywgJHNtZF9nYWxsU3RyKTsNCg0KZnVuY3Rpb24gc21kX2dh bGxlcnkoJGF0dHMsICR0aGluZz0nJykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRp Y2xlLCAkaW1nX2RpciwgJGRhdGVmb3JtYXQsICRzbWRfZ2FsbExhbmcsICRsMTBuX2xhbmd1 YWdlOw0KDQoJLy8gUGx1Z2luIG9wdGlvbnMNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkn Y29sdW1ucycgPT4gJycsDQoJCSdkZWxpbScgPT4gJywnLA0KCQkncGFyYW1kZWxpbScgPT4g JzonLA0KCQknY29sbGF0ZWRlbGltJyA9PiAnLCcsDQoJCSdzdHJpY3RmaWVsZHMnID0+ICcw JywNCgkJJ2Zvcm0nID0+ICcnLA0KCQknY291bnRmb3JtJyA9PiAnJywNCgkJJ2NvdW50cG9z JyA9PiAnYWJvdmUnLA0KCQknaWQnID0+ICcnLA0KCQknbmFtZScgPT4gJycsDQoJCSdjYXRl Z29yeScgPT4gJycsDQoJCSdhc3BlY3QnID0+ICcnLA0KCQknYXV0aG9yJyA9PiAnJywNCgkJ J2RpbWVuc2lvbnMnID0+ICcnLA0KCQknZXh0ZW5zaW9uJyA9PiAnJywNCgkJJ2RpcmVjdG9y eScgPT4gJycsDQoJCSdtYXRjaCcgPT4gJycsDQoJCSdzdWJsZXZlbCcgPT4gJzAnLA0KCQkn ZXNjYXBlJyA9PiAnYWx0LCB0aXRsZSwgY2FwdGlvbicsDQoJCSdzb3J0JyA9PiAnJywNCgkJ J29mZnNldCcgPT4gJzAnLA0KCQknbGltaXQnID0+ICcwJywNCgkJJ21heGxpbWl0JyA9PiAn OTk5OTknLA0KCQknZ3JvdXBsaW1pdCcgPT4gJzk5OTk5JywNCgkJJ3RodW1ibGltaXQnID0+ ICc5OTk5OScsDQoJCSd0aHVtYm9mZnNldCcgPT4gJzAnLA0KCQkndGh1bWInID0+ICcwOjEn LA0KCQkndGh1bWJzaXplJyA9PiAnJywNCgkJJ2ltZ3NpemUnID0+ICcnLA0KCQknb25jaGFu Z2UnID0+ICdjYXRlZ29yeScsDQoJCSdvbmNoYW5nZXdyYXB0YWcnID0+ICcnLA0KCQknb25j aGFuZ2VjbGFzcycgPT4gJycsDQoJCSdvYmplY3Rmb3JtJyA9PiAnJywNCgkJJ2dyb3VwdGFn JyA9PiAnJywNCgkJJ2dyb3VwY2xhc3MnID0+ICcnLA0KCQkndGV4dCcgPT4gJycsDQoJCSdm b3JtYXQnID0+ICRkYXRlZm9ybWF0LA0KCQknZ210JyA9PiAnJywNCgkJJ2xhbmcnID0+ICcn LA0KCQknY29sbGF0ZScgPT4gJycsDQoJCSdjb21ibycgPT4gJycsDQoJCSdwYWdpbmcnID0+ ICcwJywNCgkJJ3BhZ2Vmb3JtJyA9PiAnJywNCgkJJ3BhZ2Vwb3MnID0+ICdiZWxvdycsDQoJ CSduYXZ3cmFwdGFnJyA9PiAndWwnLA0KCQknbmF2YnJlYWsnID0+ICdsaScsDQoJCSduYXZj bGFzcycgPT4gJ3NtZF9nYWxsZXJ5X25hdicsDQoJCSdlbXB0eWNsYXNzJyA9PiAnZW1wdHkn LA0KCQknZ2FsbGVyeWlkJyA9PiAnPzQ6NicsDQoJCSd3cmFwdGFnJyA9PiAnJywNCgkJJ2h0 bWxfaWQnID0+ICcnLA0KCQknYnJlYWsnID0+ICcnLA0KCQknY2xhc3MnID0+ICcnLA0KCQkn ZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJLy8gQ2F0ZWdvcnkgcmVsaWVzIG9u IHdoZXRoZXIgaWQgaGFzIGJlZW4gc3BlY2lmaWVkIG9yIG5vdC4NCgkvLyBsQXR0cygpIHdv bid0IGxldCB1cyBoYW5kbGUgdGhpcyBsb2dpYyBzbyBpdCBoYXMgdG8gYmUgZG9uZSBtYW51 YWxseQ0KCSRhdHRlbXB0TWF0Y2ggPSAoZW1wdHkoJGNhdGVnb3J5KSAmJiBlbXB0eSgkaWQp ICYmIGVtcHR5KCRuYW1lKSkgPyBmYWxzZSA6IHRydWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQo JGNhdGVnb3J5KSA/IGRvU2xhc2goJGNhdGVnb3J5KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4 dFsnYyddOiAnJyk7DQoJJHNvcnQgPSAoJHNvcnQpID8gJHNvcnQgOiAoICgkaWQpID8gJ2lk JyA6ICdjYXRlZ29yeScgKTsNCg0KCS8vICoqIExPT0tVUCBUQUJMRVMNCgkvLyAkZmllbGRN YXAgaG9sZHMgZGF0YWJhc2UgY29sdW1uIGFzIGtleSwgYW5kIHJlcGxhY2VtZW50IGlkZW50 aWZpZXIgYXMgdmFsdWUuDQoJLy8gQWRkaXRpb25hbCBjb2xzIGNvcGllZCB0byAkZXh0cmFN YXAgZm9yIGl0ZXJhdGlvbiB3aGlsZSBjcmVhdGluZyByZXBsYWNlbWVudHMuDQoJLy8gVXNl IGFycmF5X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVlIGV4aXN0cyBhbmQgcmV0dXJuIGNvcnJl Y3Qga2V5IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJyYXkgcmVmcy4NCgkkZmllbGRNYXAgPSBh cnJheSgpOw0KCSRleHRyYU1hcCA9IGFycmF5KCk7DQoJJGNvcmVDb2xzID0gYXJyYXkoIm5h bWUiLCAiaWQiLCAiYWx0IiwgImNhcHRpb24iLCAiY2F0ZWdvcnkiLCAiYXV0aG9yIiwgImRh dGUiLCAiZXh0IiwgInc6d2lkdGgiLCAiaDpoZWlnaHQiLCAidGh1bWJfdzp0aHVtYl93aWR0 aCIsICJ0aHVtYl9oOnRodW1iX2hlaWdodCIsICJ0aHVtYm5haWw6aGFzdGh1bWIiKTsNCgkk bWxwRmllbGRzID0gYXJyYXkoImFsdCIsICJjYXB0aW9uIik7IC8vIE1hbnVhbGx5IGNyZWF0 ZSB0aGUgTUxQIGNvbHVtbiBuYW1lcywgc2luY2UgdXNpbmcgZ2V0Um93cygpIGxhdGVyIGRv ZXMgbm90LiBDYXRlZ29yeSB0aXRsZSBhbHNvIGhhcyB0aGUgc2FtZSB0cmVhdG1lbnQNCgkk dGhpc2xhbmcgPSAoaXNzZXQoJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSkpID8gJGwxMG5fbGFu Z3VhZ2VbJ2xvbmcnXSA6IExBTkc7DQoJJGRmbHRfdGJsID0gUEZYLiJ0eHBfaW1hZ2UiOw0K CSRjb2x1bW5zID0gZG9fbGlzdCgkY29sdW1ucyk7DQoJZm9yZWFjaCAoYXJyYXlfbWVyZ2Uo JGNvcmVDb2xzLCAkY29sdW1ucykgYXMgJGNvbGluZm8pIHsNCgkJJGNvbGJpdCA9IGRvX2xp c3QoJGNvbGluZm8sICI6Iik7DQoJCSRjb2x0YmwgPSBkb19saXN0KCRjb2xiaXRbMF0sICIu Iik7DQoNCgkJaWYgKCRjb2xiaXRbMF0gPT0gJycpIGNvbnRpbnVlOw0KDQoJCWlmIChjb3Vu dCgkY29sdGJsKSA+IDEpIHsNCgkJCSR0YmwgPSAkY29sdGJsWzBdOw0KCQkJJGNvbG5hbWUg PSAkY29sdGJsWzFdOw0KCQl9IGVsc2Ugew0KCQkJJHRibCA9ICRkZmx0X3RibDsNCgkJCSRj b2xuYW1lID0gJGNvbHRibFswXTsNCgkJfQ0KCQkkY29saWQgPSAoY291bnQoJGNvbGJpdCkg PiAxKSA/ICRjb2xiaXRbMV0gOiAkY29sbmFtZTsNCgkJJGZpZWxkTWFwWygoJHRibCk/JHRi bC4nLic6JycpLiggKGlzc2V0KCRsMTBuX2xhbmd1YWdlWydsb25nJ10pICYmIGluX2FycmF5 KCRjb2xuYW1lLCAkbWxwRmllbGRzKSkgPyBfbDEwbl9tYWtlX2ZpZWxkX25hbWUoJGNvbG5h bWUsICR0aGlzbGFuZykuICcgQVMgJy4kY29sbmFtZSAgOiAkY29sbmFtZSApXSA9ICRjb2xp ZDsNCgkJaWYgKCFpbl9hcnJheSgkY29saW5mbywgJGNvcmVDb2xzKSkgew0KCQkJJGV4dHJh TWFwWyRjb2xuYW1lXSA9ICRjb2xpZDsNCgkJfQ0KCX0NCgkkZmllbGRNYXAgPSBhcnJheV91 bmlxdWUoJGZpZWxkTWFwKTsNCg0KCS8vIEhhbmRsZSBmb3JtcyBhbmQgc2V0IGEgZGVmYXVs dCB0YWcgaWYgbm9uZSBzcGVjaWZpZWQNCgkkdGhpbmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0 aGluZyA6IGZldGNoX2Zvcm0oJGZvcm0pOw0KCSR0aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ ICc8YSBocmVmPSJ7dXJsfSIgYWx0PSJ7YWx0fSI+PHR4cDppbWFnZSBpZD0ie2lkfSIgLz48 L2E+JyA6ICR0aGluZzsNCgkkb2JqZWN0Zm9ybSA9IChlbXB0eSgkb2JqZWN0Zm9ybSkpID8g JycgOiBmZXRjaF9mb3JtKCRvYmplY3Rmb3JtKTsNCg0KCS8vIENvdW50aW5nDQoJJGNvdW50 UG9zQWxsb3dlZCA9IGFycmF5KCJhYm92ZSIsICJiZWxvdyIpOw0KCSRjb3VudHBvc25zID0g YXJyYXkoKTsNCgkkY291bnRpbmcgPSAwOw0KCWlmICgkY291bnRmb3JtKSB7DQoJCSRjb3Vu dGluZyA9IDE7DQoJCSRjb3VudGZvcm0gPSBkb19saXN0KCRjb3VudGZvcm0sICRkZWxpbSk7 DQoJCSRjb3VudHBvcyA9IHN0cl9yZXBsYWNlKCdzbWRfJywgJycsICRjb3VudHBvcyk7IC8v IEZvciBjb252ZW5pZW5jZQ0KCQkkY291bnRwb3MgPSBkb19saXN0KCRjb3VudHBvcywgJGRl bGltKTsNCgkJZm9yZWFjaCAoJGNvdW50cG9zIGFzICRjb3VudGl0ZW0pIHsNCgkJCSRjb3Vu dHBvc25zW10gPSAoaW5fYXJyYXkoJGNvdW50aXRlbSwgJGNvdW50UG9zQWxsb3dlZCkpID8g JGNvdW50aXRlbSA6ICRjb3VudFBvc0FsbG93ZWRbMF07DQoJCX0NCgl9DQoNCgkvLyBQYWdp bmcgaW5pdA0KCSRwYWdlUG9zQWxsb3dlZCA9IGFycmF5KCJiZWxvdyIsICJhYm92ZSIpOw0K CSRwYWdlb3V0ID0gYXJyYXkoKTsNCglpZiAoJHBhZ2Vmb3JtKSB7DQoJCSRwYWdpbmcgPSAx Ow0KCQkkcGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRwYWdlZm9ybSk7DQoJCSRwYWdlcG9zID0g c3RyX3JlcGxhY2UoJ3NtZF8nLCAnJywgJHBhZ2Vwb3MpOw0KCQkkcGFnZXBvcyA9IGRvX2xp c3QoJHBhZ2Vwb3MsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRwYWdlcG9zIGFzICRwYWdlaXRl bSkgew0KCQkJJHBhZ2VvdXRbXSA9IChpbl9hcnJheSgkcGFnZWl0ZW0sICRwYWdlUG9zQWxs b3dlZCkpID8gJHBhZ2VpdGVtIDogJHBhZ2VQb3NBbGxvd2VkWzBdOw0KCQl9DQoJfQ0KDQoJ Ly8gb25jaGFuZ2UgdmVyaWZpY2F0aW9uDQoJJG9uY2hhbmdlID0gZG9fbGlzdCgkb25jaGFu Z2UsICRkZWxpbSk7DQoJJG9uY2hhbmdlID0gKCRvbmNoYW5nZVswXSA9PSAiIikgPyBhcnJh eSgpIDogJG9uY2hhbmdlOw0KCSRyZXNldE9wdHMgPSAkcmVzZXRGb3JtcyA9IGFycmF5KCk7 DQoJZm9yZWFjaCAoJG9uY2hhbmdlIGFzICRyZXNldE9wdCkgew0KCQkkcmVzZXRQYXJ0cyA9 IGRvX2xpc3QoJHJlc2V0T3B0LCAkcGFyYW1kZWxpbSk7DQoNCgkJaWYgKGNvdW50KCRyZXNl dFBhcnRzKSA+IDEpIHsNCgkJCWlmICgkcmVzZXRQYXJ0c1swXSA9PSAnc21kX2V2ZXJ5Jykg ew0KCQkJCSRyZXNldE9wdHNbJHJlc2V0UGFydHNbMF0uJHBhcmFtZGVsaW0uJHJlc2V0UGFy dHNbMV1dID0gIiI7DQoJCQl9IGVsc2Ugew0KCQkJCSRyZXNldEZvcm1zWyRyZXNldFBhcnRz WzBdXSA9ICRyZXNldFBhcnRzWzFdOw0KCQkJCSRyZXNldE9wdHNbJHJlc2V0UGFydHNbMF1d ID0gIiI7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkkcmVzZXRPcHRzWyRyZXNldFBhcnRzWzBd XSA9ICIiOw0KCQl9DQoJfQ0KDQoJLy8gRXNjYXBpbmcNCgkkc3BjID0gKCRzdHJpY3RmaWVs ZHMpID8gMCA6IDE7DQoJJGVzY2FwZXMgPSBkb19saXN0KCRlc2NhcGUsICRkZWxpbSk7DQoJ Zm9yZWFjaCAoJGVzY2FwZXMgYXMgJGlkeCA9PiAkdmFsKSB7DQoJCWlmICgkdmFsID09ICcn KSB7DQoJCQl1bnNldCgkZXNjYXBlc1skaWR4XSk7DQoJCX0NCgl9DQoNCgkvLyBUaGUgZ2Fs bGVyeSBpZGVudGlmaWVyIGlzIHVzZWQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgbmV4dC9wcmV2 IHRodW1ibmFpbCBwYWdlIGxpbmtzDQoJJGdhbGxJRCA9ICcnOw0KCWlmICgkZ2FsbGVyeWlk ID09ICcnIHx8IHN1YnN0cigkZ2FsbGVyeWlkLDAsMSkgPT0gIj8iKSB7DQoJCS8vIEdlbmVy YXRlIGEgKGZhaXJseSBsaWtlbHkpIHVuaXF1ZSBJRCBmb3IgdGhpcyBnYWxsZXJ5IGluc3Rh bmNlDQoJCSRnYWxsVG1wID0gbWQ1KCRjYXRlZ29yeS4kaWQuJGRpcmVjdG9yeS4kbWF0Y2gu JHN1YmxldmVsLiRzb3J0LiRsaW1pdC4kbWF4bGltaXQpOw0KCQlsaXN0KCRnYWxsTGVuLCAk Z2FsbFNraXApID0gZXhwbG9kZSgiOiIsIHN1YnN0cigkZ2FsbGVyeWlkLDEpKTsNCgkJJGdh bGxMZW4gPSAgKGVtcHR5KCRnYWxsTGVuKSkgPyAiNCIgOiAkZ2FsbExlbjsNCgkJJGdhbGxT a2lwID0gIChlbXB0eSgkZ2FsbFNraXApKSA/ICIxIiA6ICRnYWxsU2tpcDsNCgkJZm9yICgk aWR4ID0gMCwgJGNudCA9IDA7ICRjbnQgPCAkZ2FsbExlbjsgJGNudCsrLCAkaWR4ID0gKCgk aWR4KyRnYWxsU2tpcCkgJSBzdHJsZW4oJGdhbGxUbXApKSkgew0KCQkJJGdhbGxJRCAuPSAk Z2FsbFRtcFskaWR4XTsNCgkJfQ0KCX0gZWxzZSB7DQoJCSRnYWxsSUQgPSAkZ2FsbGVyeWlk Ow0KCX0NCgkkZ2FsbElEID0gInNtZF9nbHJ5XyIuJGdhbGxJRDsgLy8gQXZvaWQgKGFscmVh ZHkgaW5jcmVkaWJseSB1bmxpa2VseSkgbmFtZXNwYWNlIGNsYXNoZXMNCg0KCS8vIFNldCB1 cCB0aGUgdmFyaWFibGVzIGZyb20gdGhlIHRodW1iIG9wdGlvbi4NCgkvLyBEb24ndCB1c2Ug cGFyYW1kZWxpbSBoZXJlIG9yIHRoZSBkZWZhdWx0IG9wdGlvbiBicmVha3MNCgkkdGh1bWJP cHRzID0gZG9fbGlzdCgkdGh1bWIsICI6Iik7DQoJaWYgKGNvdW50KCR0aHVtYk9wdHMpID09 IDEpIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0K CQkkdGh1bWJtb2QgPSAidCI7DQoJfSBlbHNlIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0 c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJtb2QgPSAoJHRodW1iT3B0c1sxXSA9 PSAxKSA/ICJ0IiA6ICIiOw0KCX0NCg0KCS8vIFRoZSBtYW5uZXIgb2Ygb2J0YWluaW5nIGZp bGVzIGRpZmZlcnMgaWYgdXNpbmcgZGlyZWN0b3J5IHZzIGNhdGVnb3J5L2lkDQoJJHJzID0g YXJyYXkoKTsNCglpZiAoJGRpcmVjdG9yeSkgew0KCQkkcnMgPSBzbWRfZG9EaXJlY3Rvcnko JGRpcmVjdG9yeSwgMCwgJHN1YmxldmVsLCAkbWF0Y2gsICRkZWxpbSwgJHNwYyk7DQoJCWxp c3QoJGFsbEltYWdlcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dl dFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGly bGltaXQgPSAoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdDsNCgkJJHBvc3RPcmRl ciA9IGFycmF5KCk7DQoJCSRmaXhlZE9yZGVyID0gMDsNCgkJJHJhbmRzb3J0ID0gZmFsc2U7 DQoJfSBlbHNlIHsNCgkJLy8gUHJvY2VzcyBjYXRlZ29yaWVzL0lEcyBhbmQgbWFrZSB1cCB0 aGUgY3J1eCBvZiB0aGUgd2hlcmUgY2xhdXNlLg0KCQkvLyBDbGF1c2Ugb3JkZXIgPSBJRHMg T1IgY2F0cyBBTkQgIWNhdHMgQU5EICFJRHMNCgkJJGNsYXVzZVtdID0gJzE9MSc7DQoJCSRj bGF1c2VPUiA9IGFycmF5KCk7DQoNCgkJLy8gU3Vycm91bmQgZWFjaCBlbnRyeSBpbiB0aGUg SUQgbGlzdCB3aXRoIHF1b3RlcyBhbmQgbWFrZSBhbiBTUUwgImluIiBsaXN0DQoJCSRzdWJp bmZvID0gKCRzdWJsZXZlbCkgPyAiaW1hZ2U6Ii4kc3VibGV2ZWwgOiAnJzsNCgkJbGlzdCgk aWRpbmMsICRpZGV4YykgPSBzbWRfZG9MaXN0KCRpZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxp bSwgJHNwYyk7DQoJCWxpc3QoJG5hbWluYywgJG5hbWV4YykgPSBzbWRfZG9MaXN0KCRuYW1l LCBmYWxzZSwgJycsIGZhbHNlLCAkZGVsaW0sICRzcGMpOw0KCQlsaXN0KCRjYXRpbmMsICRj YXRleGMpID0gc21kX2RvTGlzdCgkY2F0ZWdvcnksIGZhbHNlLCAkc3ViaW5mbywgdHJ1ZSwg JGRlbGltLCAkc3BjKTsNCgkJaWYgKCRpZGluYykgew0KCQkJJGNsYXVzZU9SW10gPSBQRlgu J3R4cF9pbWFnZS5pZCBJTiAoJy5pbXBsb2RlKCIsIiwgJGlkaW5jKS4nKSc7DQoJCX0NCgkJ aWYgKCRuYW1pbmMpIHsNCgkJCSRuYW1saXN0ID0gYXJyYXkoJ3JlZ2V4JyA9PiBhcnJheSgp LCAnZXhhY3QnID0+IGFycmF5KCkpOw0KCQkJZm9yZWFjaCAoJG5hbWluYyBhcyAkdGhlTmFt ZSkgew0KCQkJCSRuYW1lYml0cyA9IGRvX2xpc3QoJHRoZU5hbWUsICRwYXJhbWRlbGltKTsN CgkJCQkkbmFtZWJpdHNbMV0gPSAoaXNzZXQoJG5hbWViaXRzWzFdKSAmJiBhcnJheV9rZXlf ZXhpc3RzKCRuYW1lYml0c1sxXSwgJG5hbWxpc3QpKSA/ICRuYW1lYml0c1sxXSA6ICdleGFj dCc7DQoJCQkJJG5hbWxpc3RbJG5hbWViaXRzWzFdXVtdID0gJG5hbWViaXRzWzBdOw0KCQkJ fQ0KCQkJaWYgKCRuYW1saXN0WydleGFjdCddKSB7DQoJCQkJJGNsYXVzZU9SW10gPSBQRlgu InR4cF9pbWFnZS5uYW1lIElOICgnIi5pbXBsb2RlKCInLCciLCAkbmFtbGlzdFsnZXhhY3Qn XSkuIicpIjsNCgkJCX0NCgkJCWZvcmVhY2ggKCRuYW1saXN0WydyZWdleCddIGFzICRyZSkg ew0KCQkJCSRjbGF1c2VPUltdID0gUEZYLiJ0eHBfaW1hZ2UubmFtZSBSRUdFWFAgJyIucHJl Z19xdW90ZSgkcmUpLiInIjsNCgkJCX0NCgkJfQ0KCQlpZiAoJGNhdGluYykgew0KCQkJJGNs YXVzZU9SW10gPSBQRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSBJTiAoJy5pbXBsb2RlKCIsIiwg JGNhdGluYykuJyknOw0KCQl9DQoJCWlmICghZW1wdHkoJGNsYXVzZU9SKSkgew0KCQkJJGNs YXVzZVtdID0gJyAoJy5pbXBsb2RlKCIgT1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoN CgkJJGNsYXVzZSA9IGltcGxvZGUoIiBBTkQgIiwgJGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0g KCRjYXRleGMpID8gJyBBTkQgJy5QRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcu aW1wbG9kZSgiLCIsICRjYXRleGMpLicpJyA6ICcnOw0KCQkkY2xhdXNlIC49ICgkaWRleGMp ID8gJyBBTkQgJy5QRlguJ3R4cF9pbWFnZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRp ZGV4YykuJyknIDogJyc7DQoNCgkJaWYgKCRuYW1leGMpIHsNCgkJCSRuYW1saXN0ID0gYXJy YXkoJ3JlZ2V4JyA9PiBhcnJheSgpLCAnZXhhY3QnID0+IGFycmF5KCkpOw0KCQkJZm9yZWFj aCAoJG5hbWV4YyBhcyAkdGhlTmFtZSkgew0KCQkJCSRuYW1lYml0cyA9IGRvX2xpc3QoJHRo ZU5hbWUsICRwYXJhbWRlbGltKTsNCgkJCQkkbmFtZWJpdHNbMV0gPSAoaXNzZXQoJG5hbWVi aXRzWzFdKSAmJiBhcnJheV9rZXlfZXhpc3RzKCRuYW1lYml0c1sxXSwgJG5hbWxpc3QpKSA/ ICRuYW1lYml0c1sxXSA6ICdleGFjdCc7DQoJCQkJJG5hbWxpc3RbJG5hbWViaXRzWzFdXVtd ID0gJG5hbWViaXRzWzBdOw0KCQkJfQ0KCQkJaWYgKCRuYW1saXN0WydleGFjdCddKSB7DQoJ CQkJJGNsYXVzZSAuPSAiIEFORCAiLlBGWC4idHhwX2ltYWdlLm5hbWUgTk9UIElOICgnIi5p bXBsb2RlKCInLCciLCAkbmFtbGlzdFsnZXhhY3QnXSkuIicpIjsNCgkJCX0NCgkJCWZvcmVh Y2ggKCRuYW1saXN0WydyZWdleCddIGFzICRyZSkgew0KCQkJCSRjbGF1c2UgLj0gIiBBTkQg Ii5QRlguInR4cF9pbWFnZS5uYW1lIE5PVCBSRUdFWFAgJyIucHJlZ19xdW90ZSgkcmUpLiIn IjsNCgkJCX0NCgkJfQ0KDQoJCS8vIElmIGEgY2F0ZWdvcnkvaWQgb3B0aW9uIHdhcyBjaG9z ZW4gYW5kIHRoZXkgbWF0Y2hlZCBub3RoaW5nLCB1c2UgYSBib2d1cyBjYXRlZ29yeSB0aGF0 IHNob3VsZCBub3QgZXhpc3QuDQoJCS8vIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBwbHVnaW4g ZG9lcyB0aGUgZXhwZWN0ZWQgdGhpbmcgb2YgbWF0Y2hpbmcgbm90aGluZyBpbiB0aGUgZXZl bnQgaXQgZmluZHMgbm90aGluZy4NCgkJaWYgKCRjbGF1c2UgPT0gIjE9MSIgJiYgJGF0dGVt cHRNYXRjaCkgew0KCSAgCQkkY2xhdXNlID0gUEZYLid0eHBfaW1hZ2UuY2F0ZWdvcnkgPSAi c21kXycgLm10X3JhbmQoKS4gJyInOw0KCQl9DQoNCgkJJGNsYXVzZSA9ICcoJy5zdHJfcmVw bGFjZSgnU01EX0VNUFRZJywgJycsICRjbGF1c2UpLicpJzsNCg0KCQlpZiAoJGRlYnVnID4g MSkgew0KCQkJZWNobyAiKysgSU5DTFVERUQvRVhDTFVERUQgSURzLCBOQU1FcyBBTkQgQ0FU cyArKyI7DQoJCQlpZiAoJGlkaW5jKSBkbXAoJGlkaW5jKTsNCgkJCWlmICgkaWRleGMpIGRt cCgkaWRleGMpOw0KCQkJaWYgKCRuYW1pbmMpIGRtcCgkbmFtaW5jKTsNCgkJCWlmICgkbmFt ZXhjKSBkbXAoJG5hbWV4Yyk7DQoJCQlpZiAoJGNhdGluYykgZG1wKCRjYXRpbmMpOw0KCQkJ aWYgKCRjYXRleGMpIGRtcCgkY2F0ZXhjKTsNCgkJfQ0KDQoJCS8vIEZpbHRlciBieSBhc3Bl Y3QgcmF0aW8NCgkJaWYgKCRhc3BlY3QpIHsNCgkJCSRhc3BlY3RzID0gZG9fbGlzdCgkYXNw ZWN0LCAkZGVsaW0pOw0KDQoJCQkvLyBDb21wYXJlIGZ1bGxzaXplIG9yIHRodW1ibmFpbCBh c3BlY3QgcmF0aW9zDQoJCQkkZmxkbW9kID0gKCRmdWxsbW9kKSA9PSAndCcgPyAndGh1bWJf JyA6ICcnOw0KCQkJJHdmbGQgPSBQRlguJ3R4cF9pbWFnZS4nLiRmbGRtb2QuJ3cnOw0KCQkJ JGhmbGQgPSBQRlguJ3R4cF9pbWFnZS4nLiRmbGRtb2QuJ2gnOw0KDQoJCQkkY2xhdXNlT1Ig PSBhcnJheSgpOw0KCQkJZm9yZWFjaCAoJGFzcGVjdHMgYXMgJHJhdGlvKSB7DQoJCQkJc3dp dGNoKCRyYXRpbykgew0KCQkJCQljYXNlICdwb3J0cmFpdCc6DQoJCQkJCQkkY2xhdXNlT1Jb XSA9ICRoZmxkLiAnID4gJy4gJHdmbGQ7DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSAnbGFu ZHNjYXBlJzoNCgkJCQkJCSRjbGF1c2VPUltdID0gJHdmbGQuICcgPiAnLiAkaGZsZDsNCgkJ CQkJCWJyZWFrOw0KCQkJCQljYXNlICdzcXVhcmUnOg0KCQkJCQkJJGNsYXVzZU9SW10gPSAk aGZsZC4gJyA9ICcuICR3ZmxkOw0KCQkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYg KCFlbXB0eSgkY2xhdXNlT1IpKSB7DQoJCQkJJGNsYXVzZSAuPSAnIEFORCAnLiR3ZmxkLicg PiAwIEFORCAnLiRoZmxkLicgPiAwIEFORCAoJy5pbXBsb2RlKCIgT1IgIiwgJGNsYXVzZU9S KS4nKSAnOw0KCQkJfQ0KCQl9DQoNCgkJLy8gRmlsdGVyIGJ5IGF1dGhvcg0KCQlpZiAoJGF1 dGhvcikgew0KCQkJJGF1dGhvcnMgPSBkb19saXN0KCRhdXRob3IsICRkZWxpbSk7DQoJCQkk Y2xhdXNlIC49ICIgQU5EICIgLiBQRlguInR4cF9pbWFnZS5hdXRob3IgSU4gKCciLmltcGxv ZGUoIicsJyIsICRhdXRob3JzKS4iJykiOw0KCQl9DQoNCgkJLy8gRmlsdGVyIGJ5IGV4dGVu c2lvbg0KCQlpZiAoJGV4dGVuc2lvbikgew0KCQkJJGV4dGVuc2lvbnMgPSBkb19saXN0KCRl eHRlbnNpb24sICRkZWxpbSk7DQoJCQlmb3JlYWNoICgkZXh0ZW5zaW9ucyBhcyAkaWR4ID0+ ICRleHQpIHsNCgkJCQkkZXh0ZW5zaW9uc1skaWR4XSA9ICIuIi4kZXh0Ow0KCQkJfQ0KCQkJ JGNsYXVzZSAuPSAiIEFORCAiIC4gUEZYLiJ0eHBfaW1hZ2UuZXh0IElOICgnIi5pbXBsb2Rl KCInLCciLCAkZXh0ZW5zaW9ucykuIicpIjsNCgkJfQ0KDQoJCS8vIEZpbHRlciBieSBkaW1l bnNpb25zDQoJCWlmICgkZGltZW5zaW9ucykgew0KCQkJJGRpbUFsbG93ID0gYXJyYXkoJz0n LCAnPicsICc8JywgJz49JywgJzw9Jyk7DQoJCQkkZGltcyA9IGRvX2xpc3QoJGRpbWVuc2lv bnMsICRkZWxpbSk7DQoNCgkJCS8vIENvbXBhcmUgZnVsbHNpemUgb3IgdGh1bWJuYWlsIGFz cGVjdCByYXRpb3MNCgkJCSRmbGRtb2QgPSAoJGZ1bGxtb2QpID09ICd0JyA/ICd0aHVtYl8n IDogJyc7DQoJCQkkd2ZsZCA9IFBGWC4ndHhwX2ltYWdlLicuJGZsZG1vZC4ndyc7DQoJCQkk aGZsZCA9IFBGWC4ndHhwX2ltYWdlLicuJGZsZG1vZC4naCc7DQoNCgkJCSR3ZGltID0gJGRp bXNbMF07DQoJCQkkaGRpbSA9IChpc3NldCgkZGltc1sxXSkpID8gJGRpbXNbMV0gOiAnJzsN Cg0KCQkJJHdkaW12YWwgPSBwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICR3ZGltKTsN CgkJCSRoZGltdmFsID0gcHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkaGRpbSk7DQoJ CQkkd2RpbW9wID0gcHJlZ19yZXBsYWNlKCcvWzAtOV0vJywgJycsICR3ZGltKTsNCgkJCSR3 ZGltb3AgPSBpbl9hcnJheSgkd2RpbW9wLCAkZGltQWxsb3cpID8gJHdkaW1vcCA6ICc9JzsN CgkJCSRoZGltb3AgPSBwcmVnX3JlcGxhY2UoJy9bMC05XS8nLCAnJywgJGhkaW0pOw0KCQkJ JGhkaW1vcCA9IGluX2FycmF5KCRoZGltb3AsICRkaW1BbGxvdykgPyAkaGRpbW9wIDogJz0n Ow0KCQkJJGNsYXVzZSAuPSAoKCR3ZGltKSA/ICcgQU5EICcgLiAkd2ZsZCAuICR3ZGltb3Ag LiAkd2RpbXZhbCA6ICcnKSAuICgoJGhkaW0pID8gJyBBTkQgJyAuICRoZmxkIC4gJGhkaW1v cCAuICRoZGltdmFsIDogJycpOw0KCQl9DQoNCgkJLy8gQ29udmVydCB0aGUgc29ydCBpbnRv IGEgdmFsaWQgc29ydGluZyBoaWVyYXJjaHkuDQoJCS8vIE5vdGUgdGhhdCByYW5kb20gaXMg YSBzcGVjaWFsIGNhc2UgYW5kIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHk6DQoJCS8vICAx KSBBbnl0aGluZyBhcHBlYXJpbmcgYmVmb3JlIHJhbmRvbSBpcyBwYXNzZWQgdG8gdGhlIGRh dGFiYXNlIHF1ZXJ5IGZvciBvcmRlcmluZw0KCQkvLyAgMikgQXMgc29vbiBhcyByYW5kb20g aXMgZW5jb3VudGVyZWQsIHRoZSByZXN0IG9mIHRoZSBzb3J0IHN0cmluZyBpcyBpZ25vcmVk Lg0KCQkvLyAgICAgVGhlIHJlc3VsdHNldCB3aWxsIGJlIHNvcnRlZCByYW5kb21seSBpbnN0 ZWFkDQoJCS8vICAzKSBJZiByYW5kb20gYXBwZWFycyBmaXJzdCBpbiB0aGUgbGlzdCwgdGhl IGRhdGEgaXMgcmV0cmlldmVkIHJhbmRvbWx5IHRoZW4gdGhlDQoJCS8vICAgICByZW1haW5p bmcgb3B0aW9ucyBzb3J0IHRoZSByZXN1bHRzZXQNCgkJJGNsYXVzZVNvcnQgPSBhcnJheSgp Ow0KCQkkcG9zdE9yZGVyID0gYXJyYXkoKTsNCgkJJHJ1bGUgPSAic3FsIjsNCgkJJHBvc3RQ cmVmaXggPSAiU09SVF8iOw0KCQkkZml4ZWRPcmRlciA9ICRyYW5kc29ydCA9IGZhbHNlOw0K CQkkc29ydCA9IGRvX2xpc3QoJHNvcnQsICRkZWxpbSk7DQoJCWZvciAoJGlkeCA9IDA7ICRp ZHggPCBjb3VudCgkc29ydCk7ICRpZHgrKykgew0KCQkJJHNvcnRfZGlyID0gZXhwbG9kZSgn ICcsICRzb3J0WyRpZHhdKTsNCgkJCSRkaXJlY3Rpb24gPSAkY29sUmVmID0gJyc7DQoJCQlp ZiAoY291bnQoJHNvcnRfZGlyKSA8PSAxKSB7DQoJCQkJJHNvcnRfZGlyWzFdID0gImFzYyI7 DQoJCQl9DQoJCQlpZiAoJHJ1bGUgPT0gInNxbCIpIHsNCgkJCQkkZGlyZWN0aW9uID0gKCRz b3J0X2RpclsxXSA9PSAiZGVzYyIpID8gJyBkZXNjJyA6ICcgYXNjJzsNCgkJCX0gZWxzZSB7 DQoJCQkJJGRpcmVjdGlvbiA9ICgkc29ydF9kaXJbMV0gPT0gImRlc2MiKSA/ICRwb3N0UHJl Zml4LidERVNDJyA6ICRwb3N0UHJlZml4LidBU0MnOw0KCQkJfQ0KDQoJCQlzd2l0Y2ggKCRz b3J0X2RpclswXSkgew0KCQkJCWNhc2UgJ3JhbmRvbSc6DQoJCQkJCSRydWxlID0gInBvc3Qi Ow0KCQkJCQlpZiAoJGlkeCA9PSAwKSB7DQoJCQkJCQkkY2xhdXNlU29ydFtdID0gJ3JhbmQo KSc7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkcmFuZHNvcnQgPSB0cnVlOw0KCQkJCQl9DQoJ CQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2ZpeGVkJzoNCgkJCQkJLy8gJ2ZpeGVkJyBvbmx5IHdv cmtzIG9uIGlkcyBvciBjYXRlZ29yaWVzDQoJCQkJCSRmaXhlZE9yZGVyID0gKCRpZCA9PSAn JyAmJiAkY2F0ZWdvcnkgPT0gJycpID8gZmFsc2UgOiB0cnVlOw0KCQkJCQlicmVhazsNCgkJ CQlkZWZhdWx0Og0KCQkJCQkkY29sUmVmID0gYXJyYXlfc2VhcmNoKCRzb3J0X2RpclswXSwg JGZpZWxkTWFwKTsNCgkJCQkJJGNvbE5hbWUgPSAkZmllbGRNYXBbJGNvbFJlZl07DQoJCQkJ CWJyZWFrOw0KCQkJfQ0KCQkJaWYgKCRydWxlID09ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xS ZWYgIT0gJycpIHsNCgkJCQkJJGNsYXVzZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsN CgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlmICghJHJhbmRzb3J0KSB7DQoJCQkJCWlmICgk Y29sUmVmICE9ICcnKSB7DQoJCQkJCQkkcG9zdE9yZGVyW10gPSBhcnJheSgiY29sIiA9PiAk Y29sTmFtZSwgInNvcnQiID0+ICRkaXJlY3Rpb24pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0K CQl9DQoNCgkJaWYgKGNvdW50KCRjbGF1c2VTb3J0KSA+IDApIHsNCgkJCSRjbGF1c2UgLj0g JyBPUkRFUiBCWSAnIC4gaW1wbG9kZSgiLCIsJGNsYXVzZVNvcnQpOw0KCQl9DQoJCWlmICgk ZGVidWcgPiAwKSB7DQoJCQllY2hvICIrKyBXSEVSRSBDTEFVU0UgKysiOw0KCQkJZG1wKCRj bGF1c2UpOw0KCQl9DQoJCS8vIFRoZSBkYXRhYmFzZSBmaWVsZHMgcmVxdWlyZWQNCgkJJGZp ZWxkcyA9IGltcGxvZGUoIiwiLCBhcnJheV9rZXlzKCRmaWVsZE1hcCkpOw0KCQkkY1RpdGxl ID0gKGlzc2V0KCRsMTBuX2xhbmd1YWdlWydsb25nJ10pKSA/IF9sMTBuX21ha2VfZmllbGRf bmFtZSgndGl0bGUnLCAkdGhpc2xhbmcpIDogJ3RpdGxlJzsNCg0KCQkkcnMgPSBnZXRSb3dz KCINCgkJCVNFTEVDVCBESVNUSU5DVCAkZmllbGRzDQoJCQlGUk9NICIuUEZYLiJ0eHBfaW1h Z2UNCgkJCVdIRVJFICRjbGF1c2UNCgkJCUxJTUlUIDAsICRtYXhsaW1pdA0KCQkiLCAkZGVi dWcpOw0KCQlsaXN0KCRhbGxJbWFnZXMsICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0 KSA9IHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0LCAkcGFnaW5n KTsNCgl9DQoNCg0KCS8vIElzIHBvc3Qtb3JkZXJpbmcgcmVxdWlyZWQ/IERvIGl0DQoJaWYg KCRyYW5kc29ydCkgew0KCQlzaHVmZmxlKCRycyk7DQoJfSBlbHNlIGlmIChjb3VudCgkcG9z dE9yZGVyKSA+IDApIHsNCgkJLy8gVHJhbnNsYXRlIHRoZSByb3dzIGludG8gY29sdW1ucyB0 aGF0IGNhbiBiZSBzb3J0ZWQNCgkJZm9yZWFjaCgkcnMgYXMgJGtleSA9PiAkcm93KSB7DQoJ CQlmb3JlYWNoICgkcm93IGFzICRpZGVudGlmaWVyID0+ICRpdGVtKSB7DQoJCQkJJHZhcm5h bWUgPSAiY29sXyIuJGlkZW50aWZpZXI7DQoJCQkJJHskdmFybmFtZX1bJGtleV0gPSAkaXRl bTsNCgkJCX0NCgkJfQ0KDQoJCS8vIE1ha2UgdXAgYW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBs aXN0IGFuZCBleGVjdXRlIGl0Lg0KCQkvLyBUaGUgbmVjZXNzYXJ5IGV2aWwoKSBpcyBiZWNh dXNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkgY29scyB0aGVyZSB3aWxsIGJlIGluIHRoZSBh cnJheQ0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHBvc3RPcmRlcik7ICRpZHgr Kykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNvbF8nLiRwb3N0T3JkZXJbJGlkeF1bJ2NvbCdd Ow0KCQkJJHNvcnRhcmdzW10gPSAkcG9zdE9yZGVyWyRpZHhdWydzb3J0J107DQoJCX0NCgkJ JHNvcnRpdCA9ICdhcnJheV9tdWx0aXNvcnQoJy5pbXBsb2RlKCIsICIsJHNvcnRhcmdzKS4n LCAkcnMpOyc7DQoJCWV2YWwoJHNvcnRpdCk7DQoJfQ0KDQoJLy8gSXMgZml4ZWQtb3JkZXIg b3V0cHV0IGRlc2lyZWQ/IElmIHNvLCByZS1vcmRlciB0aGUgJHJzDQoJaWYgKCRmaXhlZE9y ZGVyKSB7DQoJCSRvcmRlcmVkUlMgPSBBcnJheSgpOw0KCQkkaWdub3JlTGlzdCA9IEFycmF5 KCk7DQoJCSRyZW1haW5pbmdSUyA9IEFycmF5KCk7DQoNCgkJLy8gU3VjayBvdXQgdGhlIGZp eGVkIGl0ZW1zIGZpcnN0LiBJRHMgdGhlbiBjYXRlZ29yaWVzDQoJCWZvciAoJGlkeCA9IDA7 ICRpZHggPCBjb3VudCgkaWRpbmMpOyAkaWR4KyspIHsNCgkJCWZvcmVhY2goJHJzIGFzICRy b3cpIHsNCgkJCQlpZiAoJGlkICYmIGRvUXVvdGUoJHJvd1snaWQnXSkgPT0gJGlkaW5jWyRp ZHhdKSB7DQoJCQkJCSRvcmRlcmVkUlNbXSA9ICRyb3c7DQoJCQkJCSRpZ25vcmVMaXN0W10g PSAkcm93WydpZCddOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJZm9yICgk aWR4ID0gMDsgJGlkeCA8IGNvdW50KCRjYXRpbmMpOyAkaWR4KyspIHsNCgkJCWZvcmVhY2go JHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoJGNhdGVnb3J5ICYmIGRvUXVvdGUoJHJvd1snY2F0 ZWdvcnknXSkgPT0gJGNhdGluY1skaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJTW10gPSAkcm93 Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQl9DQoJCQl9DQoJCX0N CgkJLy8gVGFjayBvbiB0aGUgcmVtYWluaW5nIHJvd3MNCgkJaWYgKCRycykgew0KCQkJZm9y ZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICghaW5fYXJyYXkoJHJvd1snaWQnXSwgJGln bm9yZUxpc3QpKSB7DQoJCQkJCSRyZW1haW5pbmdSU1tdID0gJHJvdzsNCgkJCQl9DQoJCQl9 DQoJCX0NCgkJJHJzID0gYXJyYXlfbWVyZ2UoJG9yZGVyZWRSUywgJHJlbWFpbmluZ1JTKTsN Cgl9DQoNCgkvLyBHcmFiIHRoZSBwb3J0aW9uIG9mIHRoZSByZWNvcmQgc2V0IGFjdHVhbGx5 IHJlcXVpcmVkIHRvIGl0ZXJhdGUgb3Zlcg0KCWlmICgkcnMpIHsNCgkJJHJzID0gYXJyYXlf c2xpY2UoJHJzLCAkb2Zmc2V0LCAoKCRkaXJlY3RvcnkpID8gJGRpcmxpbWl0IDogKCgkbGlt aXQ9PTApID8gJG1heGxpbWl0IDogJGxpbWl0KSkpOw0KCX0NCg0KCS8vIFByZXBhcmUgZml4 ZWQgdGh1bWJzaXplcw0KCSR0aHVtYldpZHRoID0gJHRodW1iSGVpZ2h0ID0gJyc7DQoJJHRo dW1iV1VuaXRzID0gJHRodW1iSFVuaXRzID0gJyc7DQoJaWYgKCR0aHVtYnNpemUpIHsNCgkJ JHRodW1iU2l6ZXMgPSBkb19saXN0KCR0aHVtYnNpemUsICRkZWxpbSk7DQoJCSR1bml0cyA9 IHByZWdfcmVwbGFjZSgnL1swLTldLycsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCWlmIChj b3VudCgkdGh1bWJTaXplcykgPT0gMSkgew0KCQkJJHRodW1iV2lkdGggPSAkdGh1bWJIZWln aHQgPSBwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJ CSR0aHVtYldVbml0cyA9ICR0aHVtYkhVbml0cyA9ICgkdW5pdHMgPT0gJycpID8gJHRodW1i V1VuaXRzIDogJHVuaXRzOw0KCQl9IGVsc2Ugew0KCQkJJHRodW1iV2lkdGggPSBwcmVnX3Jl cGxhY2UoJy9bXjAtOV0vJywgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYkhlaWdo dCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJ JHRodW1iV1VuaXRzID0gKCR1bml0cyA9PSAnJyAmJiAkdGh1bWJXaWR0aCAhPSAnJykgPyAk dGh1bWJXVW5pdHMgOiAkdW5pdHM7DQoJCQkkdW5pdHMgPSBwcmVnX3JlcGxhY2UoJy9bMC05 XS8nLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHRodW1iSFVuaXRzID0gKCR1bml0cyA9 PSAnJyAmJiAkdGh1bWJIZWlnaHQgIT0gJycpID8gJHRodW1iSFVuaXRzIDogJHVuaXRzOw0K CQl9DQoJfQ0KDQoJLy8gUHJlcGFyZSBmaXhlZCBpbWFnZSBzaXplcw0KCSRpbWFnZVdpZHRo ID0gJGltYWdlSGVpZ2h0ID0gJyc7DQoJJGltYWdlV1VuaXRzID0gJGltYWdlSFVuaXRzID0g Jyc7DQoJaWYgKCRpbWdzaXplKSB7DQoJCSRpbWFnZVNpemVzID0gZG9fbGlzdCgkaW1nc2l6 ZSwgJGRlbGltKTsNCgkJJHVuaXRzID0gcHJlZ19yZXBsYWNlKCcvWzAtOV0vJywgJycsICRp bWFnZVNpemVzWzBdKTsNCgkJaWYgKGNvdW50KCRpbWFnZVNpemVzKSA9PSAxKSB7DQoJCQkk aW1hZ2VXaWR0aCA9ICRpbWFnZUhlaWdodCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAn JywgJGltYWdlU2l6ZXNbMF0pOw0KCQkJJGltYWdlV1VuaXRzID0gJGltYWdlSFVuaXRzID0g KCR1bml0cyA9PSAnJykgPyAkaW1hZ2VXVW5pdHMgOiAkdW5pdHM7DQoJCX0gZWxzZSB7DQoJ CQkkaW1hZ2VXaWR0aCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJGltYWdlU2l6 ZXNbMF0pOw0KCQkJJGltYWdlSGVpZ2h0ID0gcHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcn LCAkaW1hZ2VTaXplc1sxXSk7DQoJCQkkaW1hZ2VXVW5pdHMgPSAoJHVuaXRzID09ICcnICYm ICRpbWFnZVdpZHRoICE9ICcnKSA/ICRpbWFnZVdVbml0cyA6ICR1bml0czsNCgkJCSR1bml0 cyA9IHByZWdfcmVwbGFjZSgnL1swLTldLycsICcnLCAkaW1hZ2VTaXplc1sxXSk7DQoJCQkk aW1hZ2VIVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICRpbWFnZUhlaWdodCAhPSAnJykgPyAk aW1hZ2VIVW5pdHMgOiAkdW5pdHM7DQoJCX0NCgl9DQoNCgkvLyBDb2xsYXRpb24gZGVmZXJz IHBhcnNpbmcgdGhlIGZvcm0gZm9yIGVhY2ggcmV0dXJuZWQgaXRlbS4NCgkvLyBJbnN0ZWFk IGl0IG91dHB1dHMgdGhlIGRhdGEgYXMgYSBsaXN0IGF0IHRoZSBlbmQgKGl0ZW1zIG1heSBi ZSBpbmRpdmlkdWFsbHkgcXVvdGVkIG9yIGV4dHJhY3RlZCBpZiByZXF1aXJlZCkNCgkvL1RP RE8gOiBBZGQgQUxXQVlTIHN3aXRjaCBhcyBhIHNob3J0Y3V0IHRvIHNwZWNpZnkgdGhhdCBh bGwgbWF0Y2hpbmcgaXRlbXMgKHJlZ2FyZGxlc3Mgb2YgIzEsICMyLCAjMyBldGMpIGFyZSB0 byBiZSBxdW90ZWQNCglpZiAoJGNvbGxhdGUpIHsNCgkJJGRibFF1b3RlID0gJHNnbFF1b3Rl ID0gYXJyYXkoJ1NNRE5PTkUnKTsNCgkJJGNvbGxhdGVPcHRzID0gZG9fbGlzdCgkY29sbGF0 ZSwgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbGxhdGVPcHRzIGFzICRvcHRpb24pIHsNCgkJ CSRpbmRleGVzID0gZG9fbGlzdCgkb3B0aW9uLCAkcGFyYW1kZWxpbSk7DQoJCQkkY29sVHlw ZSA9IGFycmF5X3NoaWZ0KCRpbmRleGVzKTsNCgkJCS8vIFN1cHBseWluZyAncXVvdGUnIG9u IGl0cyBvd24gd2lsbCBlbXB0eSB0aGUgcmVsZXZhbnQgYXJyYXksIGltcGx5aW5nICJBTEwi IGZpZWxkcyBhcmUgdG8gYmUgcXVvdGVkDQoJCQlzd2l0Y2ggKCRjb2xUeXBlKSB7DQoJCQkJ Y2FzZSAic2dscXVvdGUiOg0KCQkJCQkkc2dsUXVvdGUgPSAkaW5kZXhlczsNCgkJCQkJYnJl YWs7DQoJCQkJY2FzZSAiZGJscXVvdGUiOg0KCQkJCWNhc2UgInF1b3RlIjoNCgkJCQkJJGRi bFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLy8g Q29tYm9zIGFyZSB1c2VyLWRlZmluZWQgY29tYmluYXRpb25zIG9mIHJlcGxhY2VtZW50IG1v ZGlmaWVycyAoZS5nLiBpZGV4dDoge2lkfXtleHR9LCAuLi4NCgkkY29tYm9zID0gYXJyYXko KTsNCglpZiAoJGNvbWJvKSB7DQoJCSRjb21ibyA9IGRvX2xpc3QoJGNvbWJvLCAkZGVsaW0p Ow0KCQlmb3JlYWNoICgkY29tYm8gYXMgJG5ld0RlZikgew0KCQkJbGlzdCgkZGVmUGFydHMs ICR1bndhbnRlZCkgPSBzbWRfZG9MaXN0KCRuZXdEZWYsIGZhbHNlLCAnJywgZmFsc2UsICRw YXJhbWRlbGltLCAkc3BjKTsNCgkJCSRkZWZOYW1lID0gInsiLmFycmF5X3NoaWZ0KCRkZWZQ YXJ0cykuIn0iOw0KCQkJJGNvbWJvc1skZGVmTmFtZV0gPSAkZGVmUGFydHNbMF07DQoJCX0N Cgl9DQoJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJZWNobyAiKysgQ09NQk9zICsrIjsNCgkJZG1w KCRjb21ib3MpOw0KCX0NCgkvLyBDb25zdHJ1Y3QgdGhlIG91dHB1dA0KCSR0aHVtYm91dCA9 IGFycmF5KCk7DQoJJGdyb3Vwb3V0ID0gYXJyYXkoKTsNCgkkbmF2b3V0ID0gYXJyYXkoKTsN Cgkkb3V0ID0gYXJyYXkoKTsNCgkkY29sbGF0aW9ucyA9IGFycmF5KCk7DQoJJGNoSWRlbnRp ZmllciA9ICJvbmNoYW5nZSI7DQoNCglpZiAoJGRlYnVnID4gMikgew0KCQllY2hvICIrKyBS RUNPUkQgU0VUICsrIjsNCgkJZG1wKCRycyk7DQoJfQ0KCWlmICgkZGVidWcgPiAzKSB7DQoJ CWVjaG8gIisrIEFWQUlMQUJMRSAnPycgVkFSUyArKyI7DQoJCWlmICgkcHJldGV4dCkgZG1w KCRwcmV0ZXh0KTsNCgkJaWYgKCR0aGlzYXJ0aWNsZSkgZG1wKCR0aGlzYXJ0aWNsZSk7DQoJ fQ0KDQoJaWYoJHJzKSB7DQoJCSRpZHggPSAwOw0KCQkkY3RyID0gMTsNCgkJJHRodW1iSWR4 ID0gMDsNCgkJJHRodW1iQ3RyID0gMTsNCgkJJG51bUltYWdlcyA9IGNvdW50KCRycyk7DQoJ CSRyZXBhZ2VtZW50cyA9IGFycmF5KCk7DQoNCgkJLy8gU2V0IHVwIHRoZSBwYWdpbmcgZmVh dHVyZXMgaWYgcmVxdWlyZWQNCgkJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJ CQkkbmV4dCA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSAhPSAkbnVtUGFnZXMpOw0K CQkJJHByZXYgPSAoJG51bVBhZ2VzID4gMSAmJiAkdGh1bVBhZ2UgPiAxKTsNCgkJCSRwcmV2 UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwg JHRodW1QYWdlLTEpOw0KCQkJJG5leHRQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0Wydy ZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBhZ2UrMSk7DQoJCQkkdGhpc1BhZ2UgPSBz bWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVtUGFn ZSk7DQoJCQkkZmlyc3RQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3Vy aSddLCAkZ2FsbElELCAxKTsNCgkJCSRsYXN0UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4 dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJG51bVBhZ2VzKTsNCg0KCQkJLy8gTGFiZWxz IGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIHJlcGxhY2VtZW50IHRhZyBhZnRlciBhIHBhcmFt ZGVsaW0uDQoJCQkvLyAnZWFybGllcicgYW5kICdsYXRlcicgZG9uJ3QgaGF2ZSBsYWJlbHMu IEFueXRoaW5nIHNwZWNpZmllZCBhZnRlciBwYXJhbWRlbGltIGlzIHRoZSBtYXggbnVtYmVy IG9mIHBhZ2VzIHRvIHNob3c7IGVtcHR5ID0gYWxsIHBhZ2VzDQoJCQkkbGFiZWwgPSBhcnJh eSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICRzbWRfZ2FsbExhbmctPmdUeHQoJ25hdmZpcnN0 JyksDQoJCQkJCSd7bmF2cHJldn0nID0+ICRzbWRfZ2FsbExhbmctPmdUeHQoJ25hdnByZXYn KSwNCgkJCQkJJ3tuYXZlYXJsaWVyfScgPT4gJycsDQoJCQkJCSd7bmF2dGhpc30nID0+ICR0 aHVtUGFnZSwNCgkJCQkJJ3tuYXZ0aGlzdXJsfScgPT4gJHRodW1QYWdlLA0KCQkJCQkne25h dmxhdGVyfScgPT4gJycsDQoJCQkJCSd7bmF2bmV4dH0nID0+ICRzbWRfZ2FsbExhbmctPmdU eHQoJ25hdm5leHQnKSwNCgkJCQkJJ3tuYXZsYXN0fScgPT4gJHNtZF9nYWxsTGFuZy0+Z1R4 dCgnbmF2bGFzdCcpLA0KCQkJCSk7DQoNCgkJCSRsYWJlbFJFID0gJy9ceyhuYXZbYS16XSsp Jy4kcGFyYW1kZWxpbS4nKC4rPylcfS8nOw0KCQkJJG51bUxhYmVscyA9IHByZWdfbWF0Y2hf YWxsKCRsYWJlbFJFLCAkcGFnZWZvcm0sICRsYWJlbHMpOw0KDQoJCQlmb3IgKCRsYWJlbEN0 ciA9IDA7ICRsYWJlbEN0ciA8ICRudW1MYWJlbHM7ICRsYWJlbEN0cisrKSB7DQoJCQkJJGZp ZWxkbmFtZSA9ICd7Jy4kbGFiZWxzWzFdWyRsYWJlbEN0cl0uJ30nOw0KCQkJCSRsYWJlbFsk ZmllbGRuYW1lXSA9ICRsYWJlbHNbMl1bJGxhYmVsQ3RyXTsNCgkJCQkkcGFnZWZvcm0gPSBz dHJfcmVwbGFjZSgkbGFiZWxzWzBdWyRsYWJlbEN0cl0sICd7Jy4kbGFiZWxzWzFdWyRsYWJl bEN0cl0uJ30nLCAkcGFnZWZvcm0pOw0KCQkJfQ0KDQoJCQlpZiAoJGRlYnVnID4gMSkgew0K CQkJCWVjaG8gIisrIFBBR0lORyBMQUJFTFMgKysiOw0KCQkJCWRtcCgkbGFiZWwpOw0KCQkJ fQ0KDQoJCQkvLyBHZW5lcmF0ZSAnZWFybGllcicgYW5kICdsYXRlcicgbGlzdHMNCgkJCSRu dW1FYXJsaWVyID0gaW50dmFsKCRsYWJlbFsne25hdmVhcmxpZXJ9J10pOw0KCQkJJG51bUxh dGVyID0gaW50dmFsKCRsYWJlbFsne25hdmxhdGVyfSddKTsNCgkJCSRudW1FYXJsaWVyID0g KCRudW1FYXJsaWVyICYmICgkdGh1bVBhZ2UtJG51bUVhcmxpZXIgPiAxKSkgPyAkbnVtRWFy bGllciA6ICR0aHVtUGFnZS0xOw0KCQkJJG51bUxhdGVyID0gKCRudW1MYXRlciAmJiAoJHRo dW1QYWdlKyRudW1MYXRlciA8ICRudW1QYWdlcykpID8gJG51bUxhdGVyIDogJG51bVBhZ2Vz LSR0aHVtUGFnZTsNCgkJCSRuYXZFYXJsaWVyID0gJG5hdkxhdGVyID0gYXJyYXkoKTsNCgkJ CWZvciAoJGNvZCA9ICR0aHVtUGFnZS0kbnVtRWFybGllcjsgJGNvZCA8ICR0aHVtUGFnZTsg JGNvZCsrKSB7DQoJCQkJJG5hdkVhcmxpZXJbXSA9ICc8YSBocmVmPSInLnNtZF9hZGRRU1Zh cigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJGNvZCkuJyI+Jy4kY29kLic8 L2E+JzsNCgkJCX0NCgkJCWZvciAoJGNvZCA9ICR0aHVtUGFnZSsxOyAkY29kIDw9ICR0aHVt UGFnZSskbnVtTGF0ZXI7ICRjb2QrKykgew0KCQkJCSRuYXZMYXRlcltdID0gJzxhIGhyZWY9 Iicuc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkY29k KS4nIj4nLiRjb2QuJzwvYT4nOw0KCQkJfQ0KCQkJJG5hdkVhcmxpZXIgPSBkb1dyYXAoJG5h dkVhcmxpZXIsICcnLCAkbmF2YnJlYWssICcnKTsNCgkJCSRuYXZMYXRlciA9IGRvV3JhcCgk bmF2TGF0ZXIsICcnLCAkbmF2YnJlYWssICcnKTsNCg0KCQkJLy8gTWFrZSB1cCB0aGUgcmVw YWdlbWVudHMgYXJyYXkgZm9yIHBhZ2Vmb3JtDQoJCQkkcmVwYWdlbWVudHMgPSBhcnJheSgN CgkJCQkJJ3tuYXZmaXJzdH0nID0+ICgoJHByZXYpID8gZG9UYWcoJzxhIGhyZWY9IicuJGZp cnN0UGFnZS4nIj4nLiRsYWJlbFsne25hdmZpcnN0fSddLic8L2E+JywgJG5hdmJyZWFrKSA6 IGRvVGFnKCRsYWJlbFsne25hdmZpcnN0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSks DQoJCQkJCSd7bmF2cHJldn0nID0+ICgoJHByZXYpID8gZG9UYWcoJzxhIGhyZWY9IicuJHBy ZXZQYWdlLiciPicuJGxhYmVsWyd7bmF2cHJldn0nXS4nPC9hPicsICRuYXZicmVhaykgOiBk b1RhZygkbGFiZWxbJ3tuYXZwcmV2fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJ CQkJCSd7bmF2ZWFybGllcn0nID0+ICRuYXZFYXJsaWVyLA0KCQkJCQkne25hdnRoaXN9JyA9 PiBkb1RhZygkbGFiZWxbJ3tuYXZ0aGlzfSddLCAkbmF2YnJlYWssICdjdXJyZW50ICcuJGVt cHR5Y2xhc3MpLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9PiBkb1RhZygnPGEgaHJlZj0iJy4k dGhpc1BhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZ0aGlzdXJsfSddLic8L2E+JywgJG5hdmJyZWFr LCAnY3VycmVudCcpLA0KCQkJCQkne25hdmxhdGVyfScgPT4gJG5hdkxhdGVyLA0KCQkJCQkn e25hdm5leHR9JyA9PiAoKCRuZXh0KSA/IGRvVGFnKCc8YSBocmVmPSInLiRuZXh0UGFnZS4n Ij4nLiRsYWJlbFsne25hdm5leHR9J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxh YmVsWyd7bmF2bmV4dH0nXSwgJG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJCQkne25h dmxhc3R9JyA9PiAoKCRuZXh0KSA/IGRvVGFnKCc8YSBocmVmPSInLiRsYXN0UGFnZS4nIj4n LiRsYWJlbFsne25hdmxhc3R9J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVs Wyd7bmF2bGFzdH0nXSwgJG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJCQkne25hdnRo aXNwYWdldXJsfScgPT4gJHRoaXNQYWdlLA0KCQkJCQkne25hdm5leHRwYWdldXJsfScgPT4g KCgkbmV4dCkgPyAkbmV4dFBhZ2UgOiAnJyksDQoJCQkJCSd7bmF2cHJldnBhZ2V1cmx9JyA9 PiAoKCRwcmV2KSA/ICRwcmV2UGFnZSA6ICcnKSwNCgkJCQkJJ3tuYXZmaXJzdHBhZ2V1cmx9 JyA9PiAkZmlyc3RQYWdlLA0KCQkJCQkne25hdmxhc3RwYWdldXJsfScgPT4gJGxhc3RQYWdl LA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51bUltYWdlcywNCgkJCQkJJ3t0b3RhbHBh Z2VzfScgPT4gJG51bVBhZ2VzLA0KCQkJCQkne21heGltYWdlc30nID0+ICRhbGxJbWFnZXMs DQoJCQkJKTsNCg0KCQkJCS8vIFBlcmZvcm0gZXNjYXBpbmcgaGVyZSwganVzdCBwcmlvciB0 byBvdXRwdXQNCgkJCQlpZiAoJGVzY2FwZXMpIHsNCgkJCQkJZm9yZWFjaCAoJHJlcGFnZW1l bnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsNCgkJCQkJCWlmIChpbl9hcnJheSh0cmlt KCRkZWZOYW1lLCAie30iKSwgJGVzY2FwZXMpKSB7DQoJCQkJCQkJJHJlcGFnZW1lbnRzWyRk ZWZOYW1lXSA9IGh0bWxzcGVjaWFsY2hhcnMoJGRlZlZhbCwgRU5UX1FVT1RFUyk7DQoJCQkJ CQl9DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQkvLyBQZXJmb3JtIHRoZSBzdWJzdGl0dXRpb25z DQoJCQkJJG5hdm91dFtdID0gcGFyc2Uoc3RydHIoJHBhZ2Vmb3JtLCAkcmVwYWdlbWVudHMp KTsNCgkJfQ0KDQoJCS8vIEZvciBldmVyeSBpbWFnZSBpbiB0aGUgZ2FsbGVyeS4uLg0KCQlm b3JlYWNoKCRycyBhcyAka2V5ID0+ICRyb3cpIHsNCgkJCWlmICgkZGlyZWN0b3J5KSB7DQoJ CQkJJHVybFBhdGggPSAkcm93WydwYXRoJ10uJy8nOw0KCQkJfSBlbHNlIHsNCgkJCQkkdXJs UGF0aCA9IGh1LiRpbWdfZGlyLicvJzsNCgkJCQkkcm93WydjYXRlZ29yeV90aXRsZSddID0g ZmV0Y2hfY2F0ZWdvcnlfdGl0bGUoJHJvd1snY2F0ZWdvcnknXSwgJ2ltYWdlJyk7DQoJCQl9 DQoJCQkkdGhlVGh1bWIgPSAkdXJsUGF0aCAuICRyb3dbJ2lkJ10gLiAkdGh1bWJtb2QgLiAk cm93WydleHQnXTsNCgkJCSRmdWxsU2l6ZSA9ICR1cmxQYXRoIC4gJHJvd1snaWQnXSAuICRm dWxsbW9kIC4kcm93WydleHQnXTsNCg0KCQkJLy8gRG8gd2UgbmVlZCB0byByZXNldCB0aGUg dGh1bWIgY291bnRlciB0aGlzIHRpbWU/DQoJCQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRy ZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlpZiAoc3RycG9zKCRyZXNldE9wdCwgJ3Nt ZF9ldmVyeScpID09PSAwKSB7DQoJCQkJCSRpdGVyID0gZXhwbG9kZSgkcGFyYW1kZWxpbSwg JHJlc2V0T3B0KTsNCgkJCQkJJGl0ZXIgPSAoY291bnQoJGl0ZXIpID4gMSkgPyAkaXRlclsx XSA6IDA7DQoJCQkJCWlmICgkdGh1bWJJZHggJSAkaXRlciA9PSAwKSB7DQoJCQkJCQkkdGh1 bWJJZHggPSAwOw0KCQkJCQkJJHRodW1iQ3RyID0gMTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSBp ZiAoJHJvd1skcmVzZXRPcHRdICE9ICRyZXNldFZhbCkgew0KCQkJCQkkdGh1bWJJZHggPSAw Ow0KCQkJCQkkdGh1bWJDdHIgPSAxOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJ CS8vIE92ZXJyaWRlIHRodW1ic2l6ZSAvIGltZ3NpemUgaWYgcmVxdWlyZWQNCgkJCWlmICgk dGh1bWJzaXplKSB7DQoJCQkJJHRoZVRodW1iV2lkdGggPSBlbXB0eSgkdGh1bWJXaWR0aCkg PyAkcm93Wyd0aHVtYl93J10gOiAkdGh1bWJXaWR0aDsNCgkJCQkkdGhlVGh1bWJIZWlnaHQg PSBlbXB0eSgkdGh1bWJIZWlnaHQpID8gJHJvd1sndGh1bWJfaCddIDogJHRodW1iSGVpZ2h0 Ow0KCQkJCSR0aGVUaHVtYldVbml0cyA9ICR0aHVtYldVbml0czsNCgkJCQkkdGhlVGh1bWJI VW5pdHMgPSAkdGh1bWJIVW5pdHM7DQoJCQl9IGVsc2Ugew0KCQkJCSR0aGVUaHVtYldpZHRo ID0gJHJvd1sndGh1bWJfdyddOw0KCQkJCSR0aGVUaHVtYkhlaWdodCA9ICRyb3dbJ3RodW1i X2gnXTsNCgkJCQkkdGhlVGh1bWJXVW5pdHMgPSAkdGhlVGh1bWJIVW5pdHMgPSAnJzsNCgkJ CX0NCg0KCQkJaWYgKCRpbWdzaXplKSB7DQoJCQkJJHRoZUltYWdlV2lkdGggPSBlbXB0eSgk aW1hZ2VXaWR0aCkgPyAkcm93Wyd3J10gOiAkaW1hZ2VXaWR0aDsNCgkJCQkkdGhlSW1hZ2VI ZWlnaHQgPSBlbXB0eSgkaW1hZ2VIZWlnaHQpID8gJHJvd1snaCddIDogJGltYWdlSGVpZ2h0 Ow0KCQkJCSR0aGVJbWFnZVdVbml0cyA9ICRpbWFnZVdVbml0czsNCgkJCQkkdGhlSW1hZ2VI VW5pdHMgPSAkaW1hZ2VIVW5pdHM7DQoJCQl9IGVsc2Ugew0KCQkJCSR0aGVJbWFnZVdpZHRo ID0gJHJvd1sndyddOw0KCQkJCSR0aGVJbWFnZUhlaWdodCA9ICRyb3dbJ2gnXTsNCgkJCQkk dGhlSW1hZ2VXVW5pdHMgPSAkdGhlSW1hZ2VIVW5pdHMgPSAnJzsNCgkJCX0NCg0KCQkJLy8g Q29uc3RydWN0IHRoZSByZXBsYWNlbWVudCBhcnJheQ0KCQkJJHJlcGxhY2VtZW50cyA9IGFy cmF5KA0KCQkJCQkne2lkfScgPT4gJHJvd1snaWQnXSwNCgkJCQkJJ3tuYW1lfScgPT4gJHJv d1snbmFtZSddLA0KCQkJCQkne2V4dH0nID0+ICRyb3dbJ2V4dCddLA0KCQkJCQkne2NhdGVn b3J5fScgPT4gJHJvd1snY2F0ZWdvcnknXSwNCgkJCQkJJ3tjYXRlZ29yeV90aXRsZX0nID0+ ICgoaXNzZXQoJHJvd1snY2F0ZWdvcnlfdGl0bGUnXSkgJiYgJHJvd1snY2F0ZWdvcnlfdGl0 bGUnXSAhPT0gZmFsc2UpID8gJHJvd1snY2F0ZWdvcnlfdGl0bGUnXSA6ICcnKSwNCgkJCQkJ J3thdXRob3J9JyA9PiAkcm93WydhdXRob3InXSwNCgkJCQkJJ3toYXN0aHVtYn0nID0+IChp c3NldCgkcm93Wyd0aHVtYm5haWwnXSkgPyAkcm93Wyd0aHVtYm5haWwnXSA6IDApLA0KCQkJ CQkne3VybH0nID0+ICRmdWxsU2l6ZSwNCgkJCQkJJ3t0aHVtYnVybH0nID0+ICR0aGVUaHVt YiwNCgkJCQkJJ3tpbWFnZXBhdGh9JyA9PiAkdXJsUGF0aCwNCgkJCQkJJ3tpbWFnZWRlZn0n ID0+IGJhc2VuYW1lKCRmdWxsU2l6ZSksDQoJCQkJCSd7dGh1bWJkZWZ9JyA9PiBiYXNlbmFt ZSgkdGhlVGh1bWIpLA0KCQkJCQkne2FsdH0nID0+ICRyb3dbJ2FsdCddLA0KCQkJCQkne3Rp dGxlfScgPT4gJHJvd1snY2FwdGlvbiddLA0KCQkJCQkne2NhcHRpb259JyA9PiAkcm93Wydj YXB0aW9uJ10sDQoJCQkJCSd7dGh1bWJ3aWR0aH0nID0+ICR0aGVUaHVtYldpZHRoLA0KCQkJ CQkne3RodW1iaGVpZ2h0fScgPT4gJHRoZVRodW1iSGVpZ2h0LA0KCQkJCQkne3RodW1id3Vu aXRzfScgPT4gJHRoZVRodW1iV1VuaXRzLA0KCQkJCQkne3RodW1iaHVuaXRzfScgPT4gJHRo ZVRodW1iSFVuaXRzLA0KCQkJCQkne3dpZHRofScgPT4gJHRoZUltYWdlV2lkdGgsDQoJCQkJ CSd7aGVpZ2h0fScgPT4gJHRoZUltYWdlSGVpZ2h0LA0KCQkJCQkne3d1bml0c30nID0+ICR0 aGVJbWFnZVdVbml0cywNCgkJCQkJJ3todW5pdHN9JyA9PiAkdGhlSW1hZ2VIVW5pdHMsDQoJ CQkJCSd7ZGF0ZX0nID0+ICgoJGZvcm1hdCkgPyBzYWZlX3N0cmZ0aW1lKCRmb3JtYXQsIHN0 cnRvdGltZSgkcm93WydkYXRlJ10pLCAkZ210LCAkbGFuZykgOiAkcm93WydkYXRlJ10pLA0K CQkJCQkne2dhbGxlcnlpZH0nID0+ICRnYWxsSUQsDQoJCQkJCSd7aW5kZXh9JyA9PiAkaWR4 LA0KCQkJCQkne2NvdW50ZXJ9JyA9PiAkY3RyLA0KCQkJCQkne3RodW1iaW5kZXh9JyA9PiAk dGh1bWJJZHgsDQoJCQkJCSd7dGh1bWJjb3VudGVyfScgPT4gJHRodW1iQ3RyLA0KCQkJCQkn e3RvdGFsaW1hZ2VzfScgPT4gJG51bUltYWdlcywNCgkJCQkJJ3ttYXhpbWFnZXN9JyA9PiAk YWxsSW1hZ2VzLA0KCQkJCSk7DQoNCgkJCS8vIEFkZCBhbnkgY3VzdG9tIGNvbHVtbnMNCgkJ CWZvcmVhY2ggKCRleHRyYU1hcCBhcyAkZUNvbCA9PiAkZVZhbCkgew0KCQkJCSRyZXBsYWNl bWVudHNbJ3snLiRlVmFsLid9J10gPSAkcm93WyRlQ29sXTsNCgkJCX0NCg0KCQkJLy8gQXBw ZW5kIGFueSBjaGFuZ2VkIGl0ZW1zIHRoYXQgYXJlIHJlcXVpcmVkDQoJCQkkZW5kdGFnID0g ZmFsc2U7DQoJCQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRW YWwpIHsNCgkJCQlpZiAoc3RycG9zKCRyZXNldE9wdCwgJ3NtZF9ldmVyeScpID09PSAwKSB7 DQoJCQkJCSRpdGVyID0gZXhwbG9kZSgkcGFyYW1kZWxpbSwgJHJlc2V0T3B0KTsNCgkJCQkJ JGl0ZXIgPSAoY291bnQoJGl0ZXIpID4gMSkgPyAkaXRlclsxXSA6IDA7DQoJCQkJCWlmICgk dGh1bWJDdHIgJSAkaXRlciA9PT0gMCB8fCAkY3RyID09ICRudW1JbWFnZXMpIHsNCgkJCQkJ CSRlbmR0YWcgPSB0cnVlOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHJlcGxhY2Vt ZW50c1sneycuJGNoSWRlbnRpZmllci4kcGFyYW1kZWxpbS4kcmVzZXRPcHQuJ30nXSA9ICgk dGh1bWJJZHggPT0gMCkgPyAoKGlzc2V0KCRyZXNldEZvcm1zWyRyZXNldE9wdF0pKSA/IHN0 cnRyKHBhcnNlX2Zvcm0oJHJlc2V0Rm9ybXNbJHJlc2V0T3B0XSksICRyZXBsYWNlbWVudHMp IDogZG9UYWcoJHJvd1skcmVzZXRPcHRdLCAkb25jaGFuZ2V3cmFwdGFnLCAkb25jaGFuZ2Vj bGFzcykpIDogJyc7DQoJCQkJCS8vIERvIGEgc25lYWt5ICh5dWspIGxvb2thaGVhZA0KCQkJ CQlpZiAoaXNzZXQoJHJzWyRrZXkrMV0pKSB7DQoJCQkJCQlpZihpc3NldCgkcnNbJGtleSsx XVskcmVzZXRPcHRdKSAmJiAoJHJzWyRrZXkrMV1bJHJlc2V0T3B0XSAhPSAkcm93WyRyZXNl dE9wdF0pKSB7DQoJCQkJCQkJJGVuZHRhZyA9IHRydWU7DQoJCQkJCQl9DQoJCQkJCX0gZWxz ZSB7DQoJCQkJCQkkZW5kdGFnID0gdHJ1ZTsgLy8gTGFzdCBpbWFnZQ0KCQkJCQl9DQoJCQkJ fQ0KCQkJfQ0KDQoJCQkkcmVwbGFjZW1lbnRzWyd7Z3JvdXB0YWdlbmR9J10gPSAoJGdyb3Vw dGFnICYmICRlbmR0YWcpID8gJzwvJyAuICRncm91cHRhZyAuICc+JyA6ICcnOw0KCQkJJHJl cGxhY2VtZW50c1sne2dyb3VwdGFnc3RhcnR9J10gPSAoJGdyb3VwdGFnICYmICR0aHVtYklk eCA9PSAwKSA/ICc8JyAuICRncm91cHRhZyAuICgoJGdyb3VwY2xhc3MpID8gJyBjbGFzcz0i Jy4kZ3JvdXBjbGFzcy4nIicgOiAnJykgLiAnPicgOiAnJzsNCg0KCQkJLy8gQXBwZW5kIGFu eSBjb21ib3MNCgkJCWZvcmVhY2ggKCRjb21ib3MgYXMgJGRlZk5hbWUgPT4gJG5ld0RlZikg ew0KCQkJCWlmICghYXJyYXlfa2V5X2V4aXN0cygkZGVmTmFtZSwgJHJlcGxhY2VtZW50cykp IHsNCgkJCQkJJHJlcGxhY2VtZW50c1skZGVmTmFtZV0gPSBzdHJ0cigkbmV3RGVmLCAkcmVw bGFjZW1lbnRzKTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIFNvbG9zIGFyZSBpdGVtcyBpbiB0 aGUgb3V0cHV0IGZvcm0gdGhhdCByZXF1aXJlIGRldGFpbHMgZnJvbSBhIHNwZWNpZmljIHJv dy4gVXNlZnVsIG9ubHkgaW4gY29sbGF0aW9uDQoJCQkvLyBtb2RlLCB0aGV5IGFyZSBhZGRl ZCB0byB0aGUgcmVwbGFjZW1lbnRzIGFycmF5IG9uIGFuIGFzLW5lZWRlZCBiYXNpcyB0byBz YXZlIHNwYWNlL3RpbWUNCgkJCSRzb2xvUkUgPSAnL1x7KFthLXowLTldKykjJy4kY3RyLidc fS8nOw0KCQkJJG51bVNvbG9zID0gcHJlZ19tYXRjaF9hbGwoJHNvbG9SRSwgJHRoaW5nLCAk c29sb3MpOw0KCQkJZm9yICgkc29sb0N0ciA9IDA7ICRzb2xvQ3RyIDwgJG51bVNvbG9zOyAk c29sb0N0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7Jy4kc29sb3NbMV1bJHNvbG9DdHJd LicjJy4kY3RyLid9JzsNCgkJCQkkZ3JhYmZpZWxkID0gJ3snLiRzb2xvc1sxXVskc29sb0N0 cl0uJ30nOw0KCQkJCSRyZXBsYWNlbWVudHNbJGZpZWxkbmFtZV0gPSAkcmVwbGFjZW1lbnRz WyRncmFiZmllbGRdOw0KCQkJfQ0KDQoJCQkvLyBQZXJmb3JtIGVzY2FwaW5nIG9uIHRoZSBy ZXBsYWNlbWVudHMuDQoJCQkvLyBOb3RlIHRoZSByZXBhZ2VtZW50cyBoYXZlIGFscmVhZHkg YmVlbiBlc2NhcGVkIHNvIHdoZW4vaWYgdGhleSBhcmUgY29tYmluZWQgd2l0aCB0aGUgcmVw bGFjZW1lbnRzLA0KCQkJLy8gdGhlIGVzY2FwaW5nIGlzIG5vdCBkb25lIHR3aWNlDQoJCQlp ZiAoJGVzY2FwZXMpIHsNCgkJCQlmb3JlYWNoICgkcmVwbGFjZW1lbnRzIGFzICRkZWZOYW1l ID0+ICRkZWZWYWwpIHsNCgkJCQkJaWYgKGluX2FycmF5KHRyaW0oJGRlZk5hbWUsICJ7fSIp LCAkZXNjYXBlcykpIHsNCgkJCQkJCSRyZXBsYWNlbWVudHNbJGRlZk5hbWVdID0gaHRtbHNw ZWNpYWxjaGFycygkZGVmVmFsLCBFTlRfUVVPVEVTKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0N Cg0KCQkJLy8gQWRkIHRoZSBuYXZpZ2F0aW9uIGl0ZW1zIGlmIHRoZXkncmUgZGVmaW5lZA0K CQkJaWYgKGNvdW50KCRyZXBhZ2VtZW50cykgPiAwKSB7DQoJCQkJJHJlcGxhY2VtZW50cyA9 IGFycmF5X21lcmdlKCRyZXBhZ2VtZW50cywgJHJlcGxhY2VtZW50cyk7DQoJCQl9DQoNCgkJ CS8vIElzIGEgdGh1bWIvdGV4dCBvYmplY3QgcmVxdWlyZWQgdGhpcyB0aW1lPw0KCQkJJG9i amVjdCA9ICcnOw0KCQkJaWYgKCR0aHVtYklkeCA+PSAkdGh1bWJvZmZzZXQgJiYgJHRodW1i SWR4IDwgJHRodW1ib2Zmc2V0KyR0aHVtYmxpbWl0KSB7DQoJCQkJJG9iamVjdCA9ICgkb2Jq ZWN0Zm9ybSkgPyBwYXJzZShzdHJ0cigkb2JqZWN0Zm9ybSwgJHJlcGxhY2VtZW50cykpIDog KCgkdGV4dCkgPyAkdGV4dCA6ICc8aW1nIHNyYz0iJy4kdGhlVGh1bWIuJyInIC4oKCRyb3db J2FsdCddKSA/ICcgYWx0PSInLiRyb3dbJ2FsdCddLiciJyA6ICcnKSAuKCgkdGhlVGh1bWJX aWR0aCkgPyAnIHdpZHRoPSInLiR0aGVUaHVtYldpZHRoLiR0aGVUaHVtYldVbml0cy4nIicg OiAnJykgLigoJHRoZVRodW1iSGVpZ2h0KSA/ICcgaGVpZ2h0PSInLiR0aGVUaHVtYkhlaWdo dC4kdGhlVGh1bWJIVW5pdHMuJyInIDogJycpIC4nIC8+Jyk7DQoJCQl9DQoJCQkkcmVwbGFj ZW1lbnRzWyd7b2JqZWN0fSddID0gJG9iamVjdDsNCg0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsN CgkJCQllY2hvICIrKyBSRVBMQUNFTUVOVFMgOiBJTUFHRSAiLiRjdHIuIiArKyI7DQoJCQkJ ZG1wKCRyZXBsYWNlbWVudHMpOw0KCQkJfQ0KDQoJCQkvLyBDaGVjayBpZiBjb3VudGZvcm0g aXMgdG8gYmUgY2FsbGVkDQoJCQkkY291bnRwcmUgPSAkY291bnRwb3N0ID0gYXJyYXkoKTsN CgkJCWlmICgkY291bnRpbmcpIHsNCgkJCQlmb3JlYWNoICgkY291bnRmb3JtIGFzICRjb3Vu dGxpc3QpIHsNCgkJCQkJJHBvc292ZXIgPSBhcnJheSgpOw0KCQkJCQkkY291bnRsaXN0ID0g c3RydHIoJGNvdW50bGlzdCwgJHJlcGxhY2VtZW50cyk7IC8vIFJlcGxhY2UgYW55IHt9IHZh cnMgd2l0aCB0aGVpciByZWFsIHZhbHVlcw0KCQkJCQkkY291bnRsaXN0ID0gZG9fbGlzdCgk Y291bnRsaXN0LCAkcGFyYW1kZWxpbSk7DQoJCQkJCWlmICgkZHBvcz1hcnJheV9zZWFyY2go J3NtZF9hYm92ZScsICRjb3VudGxpc3QpKSB7DQoJCQkJCQkkcG9zb3ZlcltdID0gImFib3Zl IjsNCgkJCQkJCXVuc2V0KCRjb3VudGxpc3RbJGRwb3NdKTsNCgkJCQkJfQ0KCQkJCQlpZiAo JGRwb3M9YXJyYXlfc2VhcmNoKCdzbWRfYmVsb3cnLCAkY291bnRsaXN0KSkgew0KCQkJCQkJ JHBvc292ZXJbXSA9ICJiZWxvdyI7DQoJCQkJCQl1bnNldCgkY291bnRsaXN0WyRkcG9zXSk7 DQoJCQkJCX0NCgkJCQkJJGNvdW50bGlzdCA9IGFycmF5X21lcmdlKCRjb3VudGxpc3QpOyAv LyByZS1pbmRleA0KDQoJCQkJCSRwb3NvdmVyID0gKGVtcHR5KCRwb3NvdmVyKSkgPyAkY291 bnRwb3NucyA6ICRwb3NvdmVyOw0KCQkJCQkkZGl2YnkgPSBmYWxzZTsNCgkJCQkJaWYgKCRj b3VudGxpc3RbMF0gPT0gJ3NtZF9ldmVyeScpIHsNCgkJCQkJCSRkaXZieSA9IHRydWU7DQoJ CQkJCQlhcnJheV9zaGlmdCgkY291bnRsaXN0KTsNCgkJCQkJfQ0KCQkJCQkkbnVtZm9ybXMg PSBjb3VudCgkY291bnRsaXN0KTsNCgkJCQkJJGNhbGxmb3JtID0gZmV0Y2hfZm9ybSgkY291 bnRsaXN0WyRudW1mb3Jtcy0xXSk7DQoJCQkJCXVuc2V0KCRjb3VudGxpc3RbJG51bWZvcm1z LTFdKTsNCgkJCQkJJG9ybG9naWMgPSAkYW5kbG9naWMgPSBhcnJheSgpOw0KDQoJCQkJCS8v IENoZWNrIGlmIGFueSB2YWx1ZSBpcyBhIHJhbmdlIGFuZCBleHBhbmQgaXQgaWYgc28NCgkJ CQkJJGZ1bGxjb3VudGxpc3QgPSBhcnJheSgpOw0KCQkJCQlmb3JlYWNoICgkY291bnRsaXN0 IGFzICRjdXN0Y291bnQpIHsNCgkJCQkJCWlmIChwcmVnX21hdGNoKCcvXihcZCspXC0oXGQr KSQvJywgJGN1c3Rjb3VudCkpIHsNCgkJCQkJCQlsaXN0KCRsbywgJGhpKSA9IGV4cGxvZGUo Ii0iLCAkY3VzdGNvdW50LCAyKTsNCgkJCQkJCQkkZnVsbGNvdW50bGlzdCArPSByYW5nZSgk bG8sICRoaSk7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCSRmdWxsY291bnRsaXN0W10gPSAk Y3VzdGNvdW50Ow0KCQkJCQkJfQ0KCQkJCQl9DQoNCgkJCQkJJGNvdW50bGlzdCA9ICRmdWxs Y291bnRsaXN0Ow0KCQkJCQlmb3JlYWNoICgkY291bnRsaXN0IGFzICRjdXN0Y291bnQpIHsN CgkJCQkJCSRzaG93dmFsID0gKHN0cnBvcygkY3VzdGNvdW50LCAiISIpID09PSAwKSA/IGZh bHNlIDogdHJ1ZTsvLyBOZWdhdGl2ZSBsb2dpYyByZXF1aXJlZA0KCQkJCQkJJGN1c3Rjb3Vu dCA9IHN0cl9yZXBsYWNlKCchJywgJycsICRjdXN0Y291bnQpOw0KCQkJCQkJaWYgKCRzaG93 dmFsKSB7DQoJCQkJCQkJJG9ybG9naWNbXSA9IGVtcHR5KCRjdXN0Y291bnQpIHx8ICgoJGRp dmJ5KSA/ICgoJGN0ciAlICRjdXN0Y291bnQgPT09IDApID8gdHJ1ZSA6IGZhbHNlKSA6ICgo JGN1c3Rjb3VudCA9PSAkY3RyKSA/IHRydWUgOiBmYWxzZSkpOw0KCQkJCQkJfSBlbHNlIHsN CgkJCQkJCQkkYW5kbG9naWNbXSA9ICgkY3VzdGNvdW50ID09ICRjdHIpID8gZmFsc2UgOiB0 cnVlOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWlmIChpbl9hcnJheSgnMScsICRvcmxvZ2lj KSAmJiAhaW5fYXJyYXkoJzAnLCAkYW5kbG9naWMpKSB7DQoJCQkJCQlpZiAoaW5fYXJyYXko ImFib3ZlIiwgJHBvc292ZXIpKSB7DQoJCQkJCQkJJGNvdW50cHJlW10gPSBwYXJzZShzdHJ0 cigkY2FsbGZvcm0sICRyZXBsYWNlbWVudHMpKTsNCgkJCQkJCX0NCgkJCQkJCWlmIChpbl9h cnJheSgiYmVsb3ciLCAkcG9zb3ZlcikpIHsNCgkJCQkJCQkkY291bnRwb3N0W10gPSBwYXJz ZShzdHJ0cigkY2FsbGZvcm0sICRyZXBsYWNlbWVudHMpKTsNCgkJCQkJCX0NCgkJCQkJfQ0K ICAgICAgICAgICAgfQ0KCQkJfQ0KDQoJCQlpZiAoJGRlYnVnID4gMCAmJiAoJGNvdW50cHJl IHx8ICRjb3VudHBvc3QpKSB7DQoJCQkJZWNobyAiKysgQ09VTlQgRk9STSBUUklHR0VSRUQg KysiOw0KCQkJCWlmICgkY291bnRwcmUpIHsNCgkJCQkJZG1wKCRjb3VudHByZSk7DQoJCQkJ fQ0KCQkJCWlmICgkY291bnRwb3N0KSB7DQoJCQkJCWRtcCgkY291bnRwb3N0KTsNCgkJCQl9 DQoJCQl9DQoNCgkJCS8vIEluIGNvbGxhdGUgbW9kZSB0aGUgZm9ybSBpcyBvbmx5IHBhcnNl ZCBhdCB0aGUgZW5kOiBidWlsZCBhIGNvbGxvc2FsIG11bHRpLWRpbWVuc2lvbiBhcnJheSBv ZiBhbGwgaXRlbXMgaGVyZQ0KCQkJaWYgKCRjb2xsYXRlKSB7DQoJCQkJZm9yZWFjaCAoJHJl cGxhY2VtZW50cyBhcyAkZGVmTmFtZSA9PiAkZGVmVmFsKSB7DQoJCQkJCSRjb2xsYXRpb25z WyRkZWZOYW1lXVtdID0gJGRlZlZhbDsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlmICgk Y291bnRpbmcpIHsNCgkJCQkJJHRodW1ib3V0ID0gYXJyYXlfbWVyZ2UoJHRodW1ib3V0LCAk Y291bnRwcmUpOw0KCQkJCX0NCg0KCQkJCWlmICgkdGh1bWJJZHggPCAkZ3JvdXBsaW1pdCkg ew0KCQkJCQkkdGh1bWJvdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGluZywgJHJlcGxhY2VtZW50 cykpOw0KCQkJCX0NCgkJCQlpZiAoJGNvdW50aW5nKSB7DQoJCQkJCSR0aHVtYm91dCA9IGFy cmF5X21lcmdlKCR0aHVtYm91dCwgJGNvdW50cG9zdCk7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkv LyBLZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IHZhbHVlcyBzbyB3ZSBrbm93IGlmIHRoZXkg Y2hhbmdlIG5leHQgdGltZQ0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQg PT4gJHJlc2V0VmFsKSB7DQoJCQkJaWYgKHN0cnBvcygkcmVzZXRPcHQsICdzbWRfZXZlcnkn KSA9PT0gZmFsc2UpIHsNCgkJCQkJJHJlc2V0T3B0c1skcmVzZXRPcHRdID0gJHJvd1skcmVz ZXRPcHRdOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRyZXNldE9wdHNbJHJlc2V0T3B0XSA9ICR0 aHVtYkN0cjsNCgkJCQl9DQoJCQl9DQoJCQkkdGh1bWJJZHgrKzsNCgkJCSR0aHVtYkN0cisr Ow0KCQkJJGlkeCsrOw0KCQkJJGN0cisrOw0KCQl9DQoJCWlmICgkY29sbGF0ZSkgew0KCQkJ Zm9yZWFjaCAoJGNvbGxhdGlvbnMgYXMgJGl0ZW0gPT4gJGxpc3QpIHsNCgkJCQkvLyBRdW90 ZSB0aGUgbGlzdHMgaWYgcmVxdWlyZWQNCgkJCQkkbGlzdCA9IChlbXB0eSgkZGJsUXVvdGUp IHx8IGluX2FycmF5KCRpdGVtLCAkZGJsUXVvdGUpKSA/IGRvQXJyYXkoJGxpc3QsICdzbWRf ZG9EYmxRdW90ZScpIDogJGxpc3Q7DQoJCQkJJGxpc3QgPSAoZW1wdHkoJHNnbFF1b3RlKSB8 fCBpbl9hcnJheSgkaXRlbSwgJHNnbFF1b3RlKSkgPyBkb0FycmF5KCRsaXN0LCAnZG9RdW90 ZScpIDogJGxpc3Q7DQoJCQkJJGNvbGxhdGlvbnNbJGl0ZW1dID0gaW1wbG9kZSgkY29sbGF0 ZWRlbGltLCAkbGlzdCk7DQoJCQl9DQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8g IisrIENPTExBVElPTlMgKysiOw0KCQkJCWRtcCgkY29sbGF0aW9ucyk7DQoJCQl9DQoJCQkk dGh1bWJvdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGluZywgJGNvbGxhdGlvbnMpKTsNCgkJfQ0K DQoJCS8vIFRhY2sgb24gdGhlIHBhZ2luZyBmcm9tIGVhcmxpZXIgaWYgaXQncyB0byBnbyBh ZnRlcndhcmRzDQoJCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQkJaWYgKCRk ZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBQQUdJTkcgUkVQTEFDRU1FTlRTICsrIjsNCgkJ CQlkbXAoJHJlcGFnZW1lbnRzKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8vIEFkZCB0aGUgcGFn aW5nIHRvIHRoZSBvdXRwdXQgaWYgaXQncyB0byBnbyBhYm92ZSB0aGUgdGh1bWJzDQoJaWYg KCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCWlmIChpbl9hcnJheSgiYWJvdmUiLCAk cGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3JhcCgkbmF2b3V0LCAkbmF2d3JhcHRhZywg JycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoNCgkkb3V0W10gPSBkb1dyYXAoJHRodW1ib3V0 LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MsICcnLCAnJywgJycsICRodG1sX2lkKTsNCg0K CWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQlpZiAoaW5fYXJyYXkoImJlbG93 IiwgJHBhZ2VvdXQpKSB7DQoJCQkkb3V0W10gPSBkb1dyYXAoJG5hdm91dCwgJG5hdndyYXB0 YWcsICcnLCAkbmF2Y2xhc3MpOw0KCQl9DQoJfQ0KDQoJaWYgKCRkZWJ1ZyA+IDIpIHsNCgkJ ZWNobyAiKysgRklOQUwgT1VUUFVUICsrIjsNCgkJZG1wKCRvdXQpOw0KCX0NCg0KCXJldHVy biBqb2luKCIgIiwgJG91dCk7DQp9DQoNCi8vIFdvcmsgb3V0IHdoaWNoIHBhZ2UgdGhpcyBn YWxsZXJ5IGlzIG9uIGFuZCByZXR1cm4gdGhlIHJlbGV2YW50IGluZm8NCmZ1bmN0aW9uIHNt ZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0LCAkcGFnaW5nKSB7DQoJ JG51bVRodW1zID0gY291bnQoJHJzKSAtICRvZmZzZXQ7DQoJaWYgKCgkbGltaXQgPiAwKSAm JiAkcGFnaW5nKSB7DQoJCSRudW1QYWdlcyA9ICgkbnVtVGh1bXMgPiAwKSA/IGNlaWwoJG51 bVRodW1zLyRsaW1pdCkgOiAxOw0KCQkkdGh1bVBhZ2UgPSAoIWdwcygkZ2FsbElEKSkgPyAx IDogZ3BzKCRnYWxsSUQpOw0KCQkkb2Zmc2V0ID0gKCgkdGh1bVBhZ2UgLSAxKSAqICRsaW1p dCkgKyAkb2Zmc2V0Ow0KCX0gZWxzZSB7DQoJCS8vIE5vIHBhZ2luZyByZXF1aXJlZA0KCQkk bnVtUGFnZXMgPSAxOw0KCQkkdGh1bVBhZ2UgPSAxOw0KCX0NCglyZXR1cm4gYXJyYXkoJG51 bVRodW1zLCAkbnVtUGFnZXMsICR0aHVtUGFnZSwgJG9mZnNldCk7DQp9DQoNCi8vIFJlYWQg dGhlIGdpdmVuIGRlbGltaXRlZCBkaXJlY3RvcmllcyBhbmQgZ2V0IGFsbCBmaWxlcyB0aGF0 IG1hdGNoLg0KLy8gR28gZG93biBhcyBtYW55IHN1YmRpciBsZXZlbHMgYXMgZ2l2ZW4gaW4g dGhlICRzdWIgcGFyYW1ldGVyDQpmdW5jdGlvbiBzbWRfZG9EaXJlY3RvcnkoJGxzdCwgJGx2 bD0wLCAkc3ViPTAsICRtYXRjaD0iIiwgJGRsbT0iLCIsICRzcGM9MSwgJGN0cj0wKSB7DQoJ bGlzdCgkZGlyaW5jLCAkZGlyZXhjKSA9IHNtZF9kb0xpc3QoJGxzdCwgZmFsc2UsICRzdWIs IGZhbHNlLCAkZGxtLCAkc3BjKTsNCglsaXN0KCRtYXRjaGluYywgJG1hdGNoZXhjKSA9IHNt ZF9kb0xpc3QoJG1hdGNoLCBmYWxzZSwgJycsIGZhbHNlLCAkZGxtLCAkc3BjKTsNCgkkbWF0 Y2hpbmMgPSAiLioiIC4oKCRtYXRjaGluYykgPyAiKCIgLmltcGxvZGUoInwiLCRtYXRjaGlu YykuIikrLioiIDogIiIpOw0KCSRtYXRjaGV4YyA9ICgkbWF0Y2hleGMpID8gIi4qKCIgLmlt cGxvZGUoInwiLCRtYXRjaGV4YykuIikrLioiIDogInNtZF9nbHJ5XyIubXRfcmFuZCgpOw0K DQoJJHN1YiA9IChlbXB0eSgkc3ViKSkgPyAwIDogJHN1YjsNCgkkc3ViID0gKHN0cnRvbG93 ZXIoJHN1Yik9PSJhbGwiKSA/IDk5OTk5IDogJHN1YjsNCgkkZmlsZUxpc3QgPSBhcnJheSgp Ow0KCWZvcmVhY2ggKCRkaXJpbmMgYXMgJGRpcikgew0KCQlpZiAoJGhhbmRsZSA9IEBvcGVu ZGlyKCRkaXIpKSB7DQoJCQl3aGlsZSAoKCRmaWxlID0gQHJlYWRkaXIoJGhhbmRsZSkpICE9 PSBmYWxzZSkgew0KCQkJCSRmdWxscGF0aCA9ICRkaXIuRFMuJGZpbGU7DQoJCQkJaWYgKHBy ZWdfbWF0Y2goIi8iLiRtYXRjaGluYy4iLyIsICRmdWxscGF0aCkgJiYgIXByZWdfbWF0Y2go Ii8iLiRtYXRjaGV4Yy4iLyIsICRmdWxscGF0aCkpIHsNCgkJCQkJaWYgKGlzX2RpcigkZnVs bHBhdGgpKSB7DQoJCQkJCQlpZiAoKCRmaWxlID09ICIuIikgfHwgKCRmaWxlPT0gIi4uIikg fHwgKGluX2FycmF5KCRmaWxlLCAkZGlyZXhjKSkgfHwgKCRsdmwgPj0gJHN1YikpIHsNCgkJ CQkJCQljb250aW51ZTsNCgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJLy8gUmVjdXJzZSB0aGUg c3ViZGlyLiBOb3RlIHRoYXQgdGhlICchJyBpcyB0ZW1wb3JhcmlseSBhZGRlZCBiYWNrIHRv IGVhY2ggZGlyZXhjIGl0ZW0NCgkJCQkJCQkkdG1wID0gJGRpcmV4YzsgLy8gRG9uJ3Qgb3Zl cndyaXRlIHRoZSBvcmlnaW5hbCBhcnJheQ0KCQkJCQkJCWFycmF5X3Vuc2hpZnQoJHRtcCwg JGZ1bGxwYXRoKTsNCgkJCQkJCQkkc3ViRmlsZXMgPSBzbWRfZG9EaXJlY3RvcnkoaW1wbG9k ZSgkZGxtLiIhIiwgJHRtcCksICRsdmwrMSwgJHN1YiwgJG1hdGNoLCAkZGxtLCAkc3BjLCAk Y3RyKTsNCgkJCQkJCQkkZmlsZUxpc3QgPSBhcnJheV9tZXJnZSgkZmlsZUxpc3QsICRzdWJG aWxlcyk7DQoJCQkJCQkJJGN0ciArPSBjb3VudCgkc3ViRmlsZXMpOw0KCQkJCQkJCWNvbnRp bnVlOw0KCQkJCQkJfQ0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJGZpbGVzdGF0ID0gc3RhdCgk ZnVsbHBhdGgpOw0KCQkJCQkJJGltZ3NpemUgPSBnZXRpbWFnZXNpemUoJGZ1bGxwYXRoKTsN CgkJCQkJCSRmaWxlTGlzdFskY3RyXVsncGF0aCddID0gJGRpcjsNCgkJCQkJCSRmaWxlTGlz dFskY3RyXVsnbmFtZSddID0gYmFzZW5hbWUoJGZ1bGxwYXRoKTsNCgkJCQkJCSRmaWxlTGlz dFskY3RyXVsnaWQnXSA9IHByZWdfcmVwbGFjZSgnL1wuLiskLycsICcnLCAkZmlsZSk7DQoJ CQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2FsdCddID0gJyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0 cl1bJ2NhcHRpb24nXSA9ICcnOw0KCQkJCQkJJHBhcnRzID0gZXhwbG9kZShEUywgJGRpcik7 DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2NhdGVnb3J5J10gPSAoY291bnQoJHBhcnRzKSA+ IDEpID8gZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnYXV0aG9y J10gPSBzdHJ2YWwoJGZpbGVzdGF0Wyd1aWQnXSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1b J2RhdGUnXSA9IHN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIsICRmaWxlc3RhdFsnY3Rp bWUnXSk7DQoJCQkJCQkkcGFydHMgPSBleHBsb2RlKCIuIiwgJGZpbGUpOw0KCQkJCQkJJGZp bGVMaXN0WyRjdHJdWydleHQnXSA9IChjb3VudCgkcGFydHMpID4gMSkgPyAiLiIuZW5kKCRw YXJ0cykgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsndyddID0gKGlzX2FycmF5KCRp bWdzaXplKSkgPyBzdHJ2YWwoJGltZ3NpemVbMF0pIDogJyc7DQoJCQkJCQkkZmlsZUxpc3Rb JGN0cl1bJ2gnXSA9IChpc19hcnJheSgkaW1nc2l6ZSkpID8gc3RydmFsKCRpbWdzaXplWzFd KSA6ICcnOw0KCQkJCQl9DQoJCQkJCSRjdHIrKzsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYg KCRoYW5kbGUpIHsNCgkJCUBjbG9zZWRpcigkaGFuZGxlKTsNCgkJfQ0KCX0NCglyZXR1cm4g JGZpbGVMaXN0Ow0KfSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7 czo1OiJmbGFncyI7czoxOiIwIjtzOjQ6ImhlbHAiO3M6NjA5Nzk6IjxkaXYgaWQ9InNtZF9o ZWxwIj4KCgk8aDEgaWQ9InRvcCI+c21kX2dhbGxlcnk8L2gxPgoKCTxoMiBpZD0iZmVhdHVy ZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPlN1cHBvcnRzIGFsbCBjdXJyZW50IGFu ZCAocHJvYmFibHkpIGZ1dHVyZSBnYWxsZXJ5IHNjcmlwdHMgaW5jbHVkaW5nIHRodW1icG9w LCByb2xsb3ZlciwgdG9vbHRpcCwgbGlnaHRib3gsIGxpdGVib3gsIHNsaW1ib3gsIG1vb25i b3gsIHRoaWNrYm94LCBzbGlkZXNob3csIGZhbmN5em9vbSwgZXRjPC9saT4KCQk8bGk+UHVs bCBpbWFnZXMgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJh c2UgdGhhdCBtYXRjaCBjYXRlZ29yaWVzLCBJRHMsIGF1dGhvciwgZXh0ZW5zaW9uIG9yIHBh cnRpY3VsYXIgZGltZW5zaW9ucyAvIGFzcGVjdCByYXRpb3M8L2xpPgoJCTxsaT5Vc2UgYXJ0 aWNsZSBmaWVsZHMgdG8gaG9sZCBsaXN0cyBvZiBpbWFnZSBjYXRlZ29yaWVzL0lEcyBmb3Ig YXJ0aWNsZS1zcGVjaWZpYyBnYWxsZXJpZXM8L2xpPgoJCTxsaT5NdWx0aS1sZXZlbCBzdWIt Y2F0ZWdvcnkgc3VwcG9ydDwvbGk+CgkJPGxpPkdhbGxlcnkgbGF5b3V0IGlzIGRlZmluZWQg aW4gYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtL2NvbnRhaW5lcjwvbGk+ CgkJPGxpPkRpcmVjdC1hY2Nlc3MgcGFnaW5hdGlvbiBpcyBzdXBwb3J0ZWQgYW5kIHRoZSBs YXlvdXQgb2YgcGFnaW5nIGZlYXR1cmVzIGNhbiBiZSBjb250cm9sbGVkIGJ5IGEgc2Vjb25k IGZvcm08L2xpPgoJCTxsaT5Vc2VzIGEgdGFnLXJlcGxhY2VtZW50IHN5c3RlbSBsaWtlIHRo ZSB3ZXRfZm9yX2VhY2hfaW1hZ2UgcGx1Z2luPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImNh cHMiPk1MUDwvc3Bhbj4gc3VwcG9ydDwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iYXV0aG9yIj5B dXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb250YWN0 Ij5TdGVmIERhd3NvbjwvYT4uIEZvciBvdGhlciBzb2Z0d2FyZSBieSBtZSwgb3IgdG8gbWFr ZSBhIGRvbmF0aW9uLCBzZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9z dyI+c29mdHdhcmUgcGFnZTwvYT4uPC9wPgoKCTxoMiBpZD0iaW5zdGFsbCI+SW5zdGFsbGF0 aW9uIC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwIGNsYXNzPSJyZXF1aXJlZCI+UmVxdWly ZXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC4yLjArIGFuZCBzbWRfbGliIHYw LjM2KzwvcD4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9 Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy85NTcvc21kX2dhbGxlcnkiPnRleHRw YXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSBzb2Z0d2FyZSBwYWdlIGFib3ZlLCBwYXN0ZSB0aGUg Y29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0 OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0 aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhw P2lkPTI2NDgyIj5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0 IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5U byByZW1vdmUgdGhlIHBsdWdpbiwgc2ltcGx5IGRlbGV0ZSBpdCBmcm9tIHRoZSBBZG1pbi0m Z3Q7UGx1Z2lucyB0YWIuIElmIG5vIG90aGVyIHBsdWdpbnMgYXJlIHVzaW5nIHNtZF9saWIg eW91IG1heSBzYWZlbHkgZGVsZXRlIHRoYXQgdG9vLjwvcD4KCgk8aDIgaWQ9InVzYWdlIj5P dmVydmlldzwvaDI+CgoJPHA+VGhlIGdlbmVyYWwgaWRlYSBpcyB0aGF0IHRoaXMgcGx1Z2lu IGFjdHMgYXMgYSBmbGV4aWJsZSBpbWFnZSBmaWx0ZXI7IG5vdGhpbmcgbW9yZS4gVGhlIHBs dWdpbiBvcHRpb25zIGdvdmVybiB3aGljaCBpbWFnZXMgYXJlIHB1bGxlZCBvdXQgb2YgdGhl IGRhdGFiYXNlIGFuZCB0aGV5IGFyZSBzb3J0ZWQgaW50byB3aGF0ZXZlciBvcmRlciB5b3Ug bGlrZS48L3A+CgoJPHA+QWZ0ZXIgdGhhdCwgZWFjaCBpbWFnZSAmIzgyMTI7IG9uZSBieSBv bmUgJiM4MjEyOyBoYXMgYWxsIGl0cyBhdHRyaWJ1dGVzIHBhc3NlZCB0aHJvdWdoIHRoZSBj b250YWluZXIgb3IgPGNvZGU+Zm9ybTwvY29kZT4gb2YgeW91ciBjaG9pY2U7IHlvdSBzaW1w bHkgY2hvb3NlIHRvIGRpc3BsYXkgd2hpY2hldmVyIGltYWdlIGF0dHJpYnV0ZXMgeW91IGxp a2UgaW4gdGhpcyBmb3JtLiBUaGlzIG1lYW5zIGFueSBpbWFnZSBhdHRyaWJ1dGVzIGNhbiBi ZSAmIzgyMjA7aW5qZWN0ZWQmIzgyMjE7IGRpcmVjdGx5IGludG8gYW55IG1hcmt1cDsgaXQg Y291bGQgYmUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncywgaXQgY291bGQg YmUgY29udGVudCwgaXQgY291bGQgYmUgamF2YXNjcmlwdCwgb3IgPHNwYW4gY2xhc3M9ImNh cHMiPkNTUzwvc3Bhbj47IGFueXRoaW5nLjwvcD4KCgk8cD5QYWdpbmF0aW9uIHdvcmtzIHRo ZSBzYW1lIHdheSwgYWxsb3dpbmcgeW91IHRvIHNwZWNpZnkgaG93IHVzZXJzIGNhbiBzdGVw IHRocm91Z2ggeW91ciBpbWFnZSBnYWxsZXJpZXMuPC9wPgoKCTxwPlRoZXJlIGlzIGFsc28g YSBzcGVjaWFsICYjODIyMDtjb2xsYXRlJiM4MjIxOyBtb2RlIHRoYXQgYWxsb3dzIHlvdSB0 byBjb2xsZWN0IGFsbCBpbWFnZSBhdHRyaWJ1dGVzIHRvZ2V0aGVyIGludG8gYSBzZXJpZXMg b2YgYmlnIGxvbmcgbGlzdHMgPGVtPndpdGhvdXQ8L2VtPiBjYWxsaW5nIHRoZSBmb3JtIGV2 ZXJ5IHRpbWUuIFRoZSBmb3JtL2NvbnRhaW5lciBpcyB0aGVuIG9ubHkgcHJvY2Vzc2VkIG9u Y2UgYXQgdGhlIGVuZC48L3A+CgoJPHA+QmV0d2VlbiB0aGVzZSB0d28gbW9kZXMgeW91IHNo b3VsZCBiZSBhYmxlIHRvIHJlYWxpc2UgYW55IGdhbGxlcnlpbmcgc29sdXRpb247IG5vdyBh bmQgaW4gZnV0dXJlLjwvcD4KCgk8aDIgY2xhc3M9InRhZyAiIGlkPSJzbWRfZ2FsbGVyeSI+ c21kX2dhbGxlcnk8L2gyPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+UGxhY2Ugb25lIG9y IG1vcmUgc21kX2dhbGxlcnkgdGFncyBpbiBhbiBhcnRpY2xlLCBwYWdlIG9yIGZvcm0sIGFu ZCBzdXBwbHkgYW55IG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyB0byBjb25maWd1cmUgaXQu IFRoZSBhdHRyaWJ1dGVzIGFyZSBncm91cGVkIGJ5IGZ1bmN0aW9uIHRvIG1ha2UgaXQgZWFz aWVyIG9uIHlvdXIgZXllcyAvIHNhbml0eS48L3A+CgoJPGgzIGlkPSJhdHRyaWJ1dGVzIj5B dHRyaWJ1dGVzPC9oMz4KCgk8aDQ+RmlsdGVyczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+aWQ8L3NwYW4+IDogbGlzdCBvZiBpbWFnZSBJRHMgdG8gZGlzcGxheS4g TWF5IGJlIGludGVnZXJzIG9yIHJhbmdlcywgZm9yIGV4YW1wbGUgPGNvZGU+aWQ9JnF1b3Q7 NSwgNDIsIDgtMTEmcXVvdDs8L2NvZGU+IHdvdWxkIGdyYWIgaW1hZ2VzIDUsIDgsIDksIDEw LCAxMSBhbmQgNDIuIFVzZSAmIzgyMTY7ISYjODIxNzsgaW4gZnJvbnQgb2YgYSBudW1iZXIg b3IgcmFuZ2UgdG8gZXhjbHVkZSB0aG9zZSBpbWFnZXMuIFVzZSAmIzgyMTY7PyYjODIxNzsg YW5kIHRoZSBuYW1lIG9mIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZmllbGQg dG8gcmVhZCB0aGUgbGlzdCBvZiBpbWFnZSBJRHMgZnJvbSB0aGF0IGZpZWxkLCBlLmcuIDxj b2RlPmlkPT9hcnRpY2xlX2ltYWdlJnF1b3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5uYW1lPC9zcGFuPiA6IGxpc3Qgb2YgaW1hZ2UgbmFtZXMgdG8gZGlzcGxh eS4gWW91IGNhbiBlaXRoZXIgc3BlY2lmeSBleGFjdCBtYXRjaGVzLCBlLmcuIDxjb2RlPm5h bWU9JnF1b3Q7bGlvbi5qcGcsIHRpZ2VyLmpwZyZxdW90OzwvY29kZT4gb3IgcmVndWxhciBl eHByZXNzaW9uIG1hdGNoZXMgYnkgYXBwZW5kaW5nIDxjb2RlPjpyZWdleDwvY29kZT4gdG8g dGVybXMuIEZvciBleGFtcGxlLCA8Y29kZT5uYW1lPSZxdW90O2xpb246cmVnZXgmcXVvdDs8 L2NvZGU+IHdvdWxkIG1hdGNoIGxpb24uanBnLCBsaW9uZXNzLmpwZyBhbmQgbWVnYWxpb24u anBnLiBBbHRlcm5hdGl2ZWx5LCA8Y29kZT5uYW1lPSZxdW90O15saW9uOnJlZ2V4JnF1b3Q7 PC9jb2RlPiB3b3VsZCBvbmx5IG1hdGNoIGltYWdlcyB0aGF0IHN0YXJ0IHdpdGggJiM4MjE2 O2xpb24mIzgyMTc7LiBVc2UgJiM4MjE2OyEmIzgyMTc7IGluIGZyb250IG9mIG5hbWVzIHRv IGV4Y2x1ZGUgdGhvc2UgaW1hZ2VzLiBVc2UgJiM4MjE2Oz8mIzgyMTc7IGFuZCB0aGUgbmFt ZSBvZiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkIHRvIHJlYWQgdGhl IGxpc3Qgb2YgaW1hZ2UgbmFtZXMvcmVnZXhlcyBmcm9tIHRoYXQgZmllbGQsIGUuZy4gPGNv ZGU+bmFtZT0/ZmlsZW5hbWVzJnF1b3Q7PC9jb2RlPiB0byByZWFkIHRoZW0gZnJvbSBhIGN1 c3RvbSBmaWVsZCBvZiB0aGF0IG5hbWUuPGRpdiBjbGFzcz0iYnJlYWsiPklmIHlvdSB3YW50 IHRvIG5lZ2F0ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiwgdGhpbmdzIG1heSBnZXQgdHJpY2t5 IGlmIHlvdSBhcmUgdXNpbmcgbWV0YSBjaGFyYWN0ZXJzOyBpbiB0aGlzIGNhc2UgaXQgaXMg YmV0dGVyIHRvIHNldCB5b3VyIHJlZ3VsYXIgZXhwcmVzc2lvbiB1cCBpbiwgc2F5LCBhIHR4 cDp2YXJpYWJsZSAob3IgYW4gYXJ0aWNsZSBmaWVsZCkgYW5kIHVzZSA8Y29kZT5uYW1lPSZx dW90OyF2YXJfbmFtZTpyZWdleCZxdW90OzwvY29kZT4uPC9kaXY+PGRpdiBjbGFzcz0iYnJl YWsiPllvdSBjYW4gbWl4IGV4YWN0IG1hdGNoZXMgYW5kIHJlZ2V4IG1hdGNoZXMgaW4gdGhl IHNhbWUgPGNvZGU+bmFtZTwvY29kZT4gYXR0cmlidXRlIGlmIHlvdSB3aXNoLiBUaGUgY29s b24gY2FuIGJlIGFsdGVyZWQgd2l0aCA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPiAmIzgyMTI7 IHRoaXMgaXMgc29tZXRpbWVzIG5lY2Vzc2FyeSBpZiB5b3UgYXJlIHVzaW5nIGNoYXJhY3Rl ciBjbGFzc2VzIHN1Y2ggYXMgPGNvZGU+W1s6ZGlnaXQ6XV08L2NvZGU+IGluIHlvdXIgcmVn dWxhciBleHByZXNzaW9uLjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5j YXRlZ29yeTwvc3Bhbj4gOiBsaXN0IG9mIGltYWdlIGNhdGVnb3JpZXMgdG8gZGlzcGxheS4g WW91IG1heSBzcGVjaWZ5IGZpeGVkLW5hbWUgY2F0ZWdvcmllcyAoZS5nLiAmIzgyMjA7YW5p bWFscyYjODIyMTspIG9yIGEmIzgyMTc7PyYjODIxNzsgZm9sbG93ZWQgYnkgYW4gYXJ0aWNs ZSBmaWVsZCBuYW1lLiBlLmcuIDxjb2RlPmNhdGVnb3J5PSZxdW90O2FuaW1hbHMsIGFydC0/ dGhpc2lkJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFiIGFsbCBpbWFnZXMgZnJvbSBjYXRlZ29y eSAmIzgyMjA7YW5pbWFscyYjODIyMTsgYW5kIGNhdGVnb3J5ICYjODIyMDthcnQtNDImIzgy MjE7IChhc3N1bWluZyB0aGUgY3VycmVudCBhcnRpY2xlIGhhcyBhbiBpZCBvZiA0MikuIFVz ZSAmIzgyMTY7ISYjODIxNzsgdG8gPGVtPmV4Y2x1ZGU8L2VtPiB0aGUgZ2l2ZW4gY2F0ZWdv cnkgb3IgZmllbGQuPGRpdiBjbGFzcz0iYnJlYWsiPkZpZWxkcyBtYXkgdGhlbXNlbHZlcyBj b250YWluIGxpc3RzIG9mIGNhdGVnb3JpZXMuIFRoZSAmIzgyMTY7PyYjODIxNzsgZmllbGQg bmFtZXMgbWF5IGJlIGNvbWJpbmVkIChlLmcuID9zLT9hcnRpY2xlX2ltYWdlKSBidXQgYmUg YXdhcmUgdGhhdCBjdXN0b20gZmllbGQgbmFtZXMgbWF5IGNvbnRhaW4gc3BhY2VzIGlmIDxj b2RlPnN0cmljdGZpZWxkcz0mcXVvdDswJnF1b3Q7PC9jb2RlPjwvZGl2PjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5zdWJsZXZlbDwvc3Bhbj4gOiBhbiBpbnRlZ2VyIHRoYXQg c3BlY2lmaWVzIGhvdyBtYW55ICYjODIxNjtsZXZlbHMmIzgyMTc7IGRvd24gdG8gdHJhdmVy c2UgZWFjaCBtYXRjaGluZyBjYXRlZ29yeS4gPGNvZGU+c3VibGV2ZWw9JnF1b3Q7MCZxdW90 OzwvY29kZT4gKHRoZSBkZWZhdWx0KSBpcyBvbmx5IHRoZSB0b3AtbGV2ZWw7IDEgPSB0b3At bGV2ZWwgcGx1cyB0aGUgMXN0IHN1Yi1jYXQ7IDIgPSB0b3AtbGV2ZWwgcGx1cyB0aGUgbmV4 dCAyIHN1Yi1jYXRzLCBhbmQgc28gb24uIDxjb2RlPnN1YmxldmVsPSZxdW90O2FsbCZxdW90 OzwvY29kZT4gaXMgYWxsIHN1Yi1jYXRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmF1dGhvcjwvc3Bhbj4gOiBmaWx0ZXIgaW1hZ2VzIGJ5IHRoaXMgbGlzdCBvZiBhdXRob3Ig bG9naW4gbmFtZXM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXh0ZW5zaW9uPC9z cGFuPiA6IGZpbHRlciBpbWFnZXMgYnkgdGhpcyBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucyAo d2l0aG91dCB0aGUgbGVhZGluZyBkb3QpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmFzcGVjdDwvc3Bhbj4gOiBmaWx0ZXIgaW1hZ2VzIGJ5IHRoaXMgbGlzdCBvZiBhc3BlY3Qg cmF0aW9zLiBDaG9vc2UgZnJvbSBhbnkgb2YgPGNvZGU+cG9ydHJhaXQ8L2NvZGU+LCA8Y29k ZT5sYW5kc2NhcGU8L2NvZGU+IG9yIDxjb2RlPnNxdWFyZTwvY29kZT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+ZGltZW5zaW9uczwvc3Bhbj4gOiBmaWx0ZXIgaW1hZ2VzIG1h dGNoaW5nIHRoZSBnaXZlbiBkaW1lbnNpb25zLiBTcGVjaWZ5IHVwIHRvIHR3byB2YWx1ZXMu IFRoZSBmaXJzdCBpcyB0aGUgd2lkdGggYW5kIHRoZSBzZWNvbmQgaXMgdGhlIGhlaWdodC4g SWYgeW91IHdpc2ggdG8gc3BlY2lmeSBtaW5pbXVtIG9yIG1heGltdW0gZGltZW5zaW9ucywg YWRkIDxjb2RlPiZndDs8L2NvZGU+LCA8Y29kZT4mZ3Q7PTwvY29kZT4sIDxjb2RlPiZsdDs8 L2NvZGU+IG9yIDxjb2RlPiZsdDs9PC9jb2RlPiBiZWZvcmUgdGhlIHZhbHVlLiBGb3IgZXhh bXBsZSwgPGNvZGU+ZGltZW5zaW9ucz0mcXVvdDsmZ3Q7PTEwMjQsICZndDs9NzY4JnF1b3Q7 PC9jb2RlPiB3b3VsZCBvbmx5IHNob3cgaW1hZ2VzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0 byAxMDI0ICYjMjE1OyA3NjggcGl4ZWxzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnNvcnQ8L3NwYW4+IDogcmUtb3JkZXIgdGhlIGltYWdlcyBieSA8Y29kZT5jYXRlZ29yeTwv Y29kZT4gKHRoZSBkZWZhdWx0KSwgPGNvZGU+bmFtZTwvY29kZT4sIDxjb2RlPmRhdGU8L2Nv ZGU+LCA8Y29kZT5pZDwvY29kZT4gKHRoZSBkZWZhdWx0IGlmIHVzaW5nIGFuIGlkKSwgZmls ZSA8Y29kZT5leHQ8L2NvZGU+ZW5zaW9uLCA8Y29kZT5hbHQ8L2NvZGU+LCA8Y29kZT5jYXB0 aW9uPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+d2lkdGg8L2NvZGU+LCA8 Y29kZT5oZWlnaHQ8L2NvZGU+LCA8Y29kZT50aHVtYl93aWR0aDwvY29kZT4sIDxjb2RlPnRo dW1iX2hlaWdodDwvY29kZT4sIDxjb2RlPmhhc3RodW1iPC9jb2RlPiBpbiBlaXRoZXIgPGNv ZGU+YXNjPC9jb2RlPmVuZGluZyBvciA8Y29kZT5kZXNjPC9jb2RlPmVuZGluZyBvcmRlci4g VHdvIHNwZWNpYWwgY2FzZXMgZXhpc3Q6IDxjb2RlPmZpeGVkPC9jb2RlPiBtYWludGFpbnMg dGhlIG9yZGVyIHlvdSBzcGVjaWZpZWQgaW4gdGhlIGlkIGFuZC9vciBjYXRlZ29yeSBhdHRy aWJ1dGUsIHdoaWxlIDxjb2RlPnJhbmRvbTwvY29kZT4gc2h1ZmZsZXMgdGhlIG9yZGVyLjxk aXYgY2xhc3M9ImJyZWFrIj5Ob3RlIHRoYXQgaWYgPGNvZGU+cmFuZG9tPC9jb2RlPiBhcHBl YXJzIGFzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0LCByYW5kb20gaW1hZ2VzIHdpbGwg YmUgcHVsbGVkIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB0aGV5IHdpbGwgdGhlbiBiZSBzb3J0 ZWQgYWNjb3JkaW5nIHRvIHRoZSBvcmRlciBsaXN0ZWQgYWZ0ZXIgaXQuIElmIDxjb2RlPnJh bmRvbTwvY29kZT4gYXBwZWFycyBhbnl3aGVyZSBlbHNlIGluIHRoZSBsaXN0LCBhbnkgc29y dCBpdGVtcyBiZWZvcmUgaXQgd2lsbCBkZXRlcm1pbmUgdGhlIG9yZGVyIG9mIGRhdGEgcHVs bGVkIGZyb20gdGhlIGRhdGFiYXNlLCBhbmQgdGhlIHJlc3VsdHMgd2lsbCB0aGVuIGJlIG9y ZGVyZWQgcmFuZG9tbHkuIEluIHRoZSAybmQgY2FzZSwgYW55IGl0ZW1zIGxpc3RlZCBhZnRl ciAmIzgyMTY7cmFuZG9tJiM4MjE3OyB3aWxsIGJlIGlnbm9yZWQsIGJ1dCA8Y29kZT5maXhl ZDwvY29kZT4gaXMgc3RpbGwgaG9ub3VyZWQ8L2Rpdj48L2xpPgoJPC91bD4KCgk8aDQ+TGlt aXRzIC8gb2Zmc2V0cyAvIHNpemVzPC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5saW1pdDwvc3Bhbj4gOiB0aGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIHRvIHNo b3cgPGVtPnBlciBwYWdlPC9lbT4uIDAgKHRoZSBkZWZhdWx0KSBvciBvbWl0dGVkID0gdW5s aW1pdGVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1heGxpbWl0PC9zcGFuPiA6 IHRoZSBhYnNvbHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZSB0byBwdWxsIGZyb20gdGhl IGRhdGFiYXNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiAwPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPm9mZnNldDwvc3Bhbj4gOiBza2lwIHRoaXMgbWFueSBpbWFnZXMgYW5kIHN0 YXJ0IGRpc3BsYXlpbmcgdGhlbSB0aGVyZWFmdGVyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnRodW1ibGltaXQ8L3NwYW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9mIHRodW1i bmFpbHMgdG8gc2hvdy4gMCBvciBvbWl0dGVkID0gYWxsIHRodW1icy4gTm90ZSB0aGF0IHRo aXMgZGlmZmVycyBmcm9tIGxpbWl0OyB5b3UgY2FuIGxhdW5jaCBhIDIwLWltYWdlIGdhbGxl cnkgYnV0IG9ubHkgc2hvdyAxIHRodW1ibmFpbCBvbiB0aGUgcGFnZS4gQmUgYXdhcmUgdGhh dCBpZiB5b3UgYXJlIHNob3dpbmcgbXVsdGlwbGUgY2F0ZWdvcmllcyBmcm9tIGEgc2luZ2xl IHRhZywgeW91IHdpbGwgc2VlIDxjb2RlPnRodW1ibGltaXQ8L2NvZGU+IHRodW1ibmFpbHMg PGVtPmF0IGVhY2ggY2hhbmdlIGluIGNhdGVnb3J5PC9lbT4uIElmIHlvdSBkb24mIzgyMTc7 dCB3YW50IHRoaXMsIHNldCA8Y29kZT5vbmNoYW5nZTwvY29kZT4gdG8gc29tZXRoaW5nIGVs c2UuIFNlZSB0aGUgPGNvZGU+e29iamVjdH08L2NvZGU+IDxhIGhyZWY9IiNyZXBfZ2FsbGVy eSI+cmVwbGFjZW1lbnQgdGFnPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5n cm91cGxpbWl0PC9zcGFuPiA6IHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgdG8gcHV0 IG9uIHRoZSBwYWdlLCA8ZW0+cGVyIGdyb3VwPC9lbT4uIEEgZ3JvdXAgaXMgY29uc2lkZXJl ZCBhbnkgc2V0IG9mIGltYWdlcyAoZS5nLiBhbGwgaW1hZ2VzIGZyb20gb25lIGNhdGVnb3J5 KSBzbyB0aGlzIGNhbiBiZSB1c2VkIHRvIG9ubHkgZGlzcGxheSBOIGltYWdlcyBhdCBlYWNo IGNoYW5nZSBpbiBjYXRlZ29yeS4gQSBjb25jcmV0ZSBleGFtcGxlIGlzIGRpc3BsYXlpbmcg YSB0aHVtYm5haWwgdGhhdCBsYXVuY2hlcyBhIGdhbGxlcnkgc2hvd2luZyB0aGUgNSBtb3N0 IHJlY2VudCB3b3JrcyBmcm9tIGVhY2ggYXV0aG9yLiBXaXRob3V0IDxjb2RlPnRodW1ibGlt aXQ9JnF1b3Q7MSZxdW90OyBncm91cGxpbWl0PSZxdW90OzUmcXVvdDs8L2NvZGU+IHRoZSBu dW1iZXIgb2YgaW1hZ2VzIGluIHRoZSBncm91cCB3b3VsZCBiZSB1bmxpbWl0ZWQuIFNlZSA8 YSBocmVmPSIjZWcxMiI+ZXhhbXBsZSAxMjwvYT4gZm9yIG1vcmU8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+dGh1bWJvZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkgdGh1 bWJzIGJlZm9yZSBkaXNwbGF5aW5nIDxjb2RlPnRodW1ibGltaXQ8L2NvZGU+IHRodW1ibmFp bHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJzaXplPC9zcGFuPiA6IHRh a2VzIG9uZSBvciB0d28gY29tbWEtc2VwYXJhdGVkIG51bWJlcnMgdG8gc3BlY2lmeSB3aWR0 aCBhbmQvb3IgaGVpZ2h0IG9mIGFsbCB5b3VyIGdhbGxlcnkgdGh1bWJuYWlscy4gVGhlIGRl ZmF1bHQgaXMgaW4gcGl4ZWxzIGlmIHlvdSBkb24mIzgyMTc7dCBzcGVjaWZ5IHVuaXRzLiBN aXNzaW5nIG91dCBvbmUgb3IgdGhlIG90aGVyIHBhcmFtZXRlciAoaS5lLiBoYXZpbmcgYW4g JiM4MjIwO2VtcHR5JiM4MjIxOyBwYXJhbWV0ZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSBjb21t YSkgd2lsbCBvbmx5IHNldCBvbmUgb2YgdGhlIGRpbWVuc2lvbnMuIFVzZSBhIHNpbmdsZSB2 YWx1ZSB0byBtYWtlIHNxdWFyZSB0aHVtYnMuIElmIHlvdSBvbWl0IGVpdGhlciBvciBib3Ro LCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSB3aWxsIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJh c2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aW1nc2l6ZTwvc3Bhbj4gOiBpZGVu dGljYWwgdG8gPGNvZGU+dGh1bWJzaXplPC9jb2RlPiBidXQgZm9yIHRoZSBmdWxsIHNpemUg aW1hZ2VzPC9saT4KCTwvdWw+CgoJPGg0PkZvcm1zIGFuZCBwYWdpbmc8L2g0PgoKCTx1bD4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBsYXlvdXQgeW91ciBtYXRjaGluZyBp bWFnZXMuIFdpdGhvdXQgdGhpcyBhdHRyaWJ1dGUgdGhlIHBsdWdpbiBhY3RzIGFzIGEgY29u dGFpbmVyIHRhZy4gV2l0aG91dCBhIGNvbnRhaW5lciwgdGhlIHBsdWdpbiBkaXNwbGF5cyBl YWNoIGZ1bGwtc2l6ZSBpbWFnZSwgaHlwZXJsaW5rZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+cGFnZWZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQgb2YgeW91ciBwYWdpbmcg bmF2aWdhdGlvbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYWdpbmc8L3NwYW4+ IDogc3dpdGNoIHBhZ2luZyBvbiB3aXRob3V0IGhhdmluZyB0byBzcGVjaWZ5IGEgcGFnZWZv cm0uIFdoZW4gdGhpcyBpcyB1c2VkLCBhbGwgPGEgaHJlZj0iI3JlcF9wYWdpbmciPnBhZ2Ug cmVwbGFjZW1lbnQgdGFnczwvYT4gYmVjb21lIGF2YWlsYWJsZSBpbiB0aGUgPGEgaHJlZj0i I3JlcF9nYWxsZXJ5Ij5nYWxsZXJ5IHJlcGxhY2VtZW50IHRhZ3M8L2E+IGFzIHdlbGw8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnZXBvczwvc3Bhbj4gOiB0aGUgcG9zaXRp b24gb2YgdGhlIHBhZ2luZyBibG9jay4gT3B0aW9ucyBhcmUgPGNvZGU+YmVsb3c8L2NvZGU+ ICh0aGUgZGVmYXVsdCksIDxjb2RlPmFib3ZlPC9jb2RlPiwgb3IgYm90aCBvZiB0aGVtIHNl cGFyYXRlZCBieSA8Y29kZT5kZWxpbTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+b2JqZWN0Zm9ybTwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwv c3Bhbj4gZm9ybSB1c2VkIHRvIHNwZWNpZnkgdGhlIGxheW91dCBvZiB5b3VyIDxjb2RlPntv YmplY3R9PC9jb2RlPiByZXBsYWNlbWVudCB0YWcuIFlvdSBjYW4gdXNlIGFsbCB0aGUgc3Rh bmRhcmQgPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5nYWxsZXJ5IHJlcGxhY2VtZW50IHRhZ3M8 L2E+IHdpdGggdGhlIGV4Y2VwdGlvbiBvZiA8Y29kZT57b2JqZWN0fTwvY29kZT4gaXRzZWxm ISBVc2VzIGEgaHlwZXJsaW5rZWQgaW1hZ2UgaWYgbm8gZm9ybSBpcyBzcGVjaWZpZWQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y291bnRmb3JtPC9zcGFuPiA6IGxpc3Qgb2Yg PHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybXMgdG8gdXNlIHdoZW4gY2VydGFp biBudW1iZXJlZCBpbWFnZXMgYXJlIHJlYWNoZWQuIFNlZSA8YSBocmVmPSIjY291bnRmb3Jt Ij5jb3VudCBmb3JtczwvYT4gYW5kIDxhIGhyZWY9IiNlZzEwIj5leGFtcGxlIDEwPC9hPi4g VGhpcyBoYXMgbm8gZWZmZWN0IGluIGNvbGxhdGUgbW9kZTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5jb3VudHBvczwvc3Bhbj4gOiBkZWZhdWx0IHBvc2l0aW9uIG9mIHRoZSA8 Y29kZT5jb3VudGZvcm08L2NvZGU+cy4gRWl0aGVyIDxjb2RlPmFib3ZlPC9jb2RlPiAodGhl IGRlZmF1bHQpLCA8Y29kZT5iZWxvdzwvY29kZT4sIG9yIGJvdGggb2YgdGhlbSBzZXBhcmF0 ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+LiBDYW4gYmUgb3ZlcnJpZGRlbiBvbiBhIHBlci1m b3JtIGJhc2lzPC9saT4KCTwvdWw+CgoJPGg0Pkdyb3VwaW5nIGltYWdlczwvaDQ+CgoJPHVs PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b25jaGFuZ2U8L3NwYW4+IDogYSBsaXN0IG9m IGF0dHJpYnV0ZXMgdG8gJiM4MjIwO3dhdGNoJiM4MjIxOy4gSXQgdGVsbHMgdGhlIHBsdWdp biB0aGF0IHlvdSB3YW50IHRvIGJlIG5vdGlmaWVkIHdoZW4gaXRlbXMgaW4gdGhpcyBsaXN0 IGNoYW5nZSBjb21wYXJlZCB0byB0aGUgcHJldmlvdXMgaW1hZ2UuIFVuZGVyIG5vcm1hbCBj aXJjdW1zdGFuY2VzIHRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHlvdXIgPGNvZGU+c29y dDwvY29kZT4gcGFyYW1ldGVyIG9yIHlvdSBtYXkgZ2V0IHNvbWUgZnJlYWt5IHJlc3VsdHMh IEl0IGRlZmF1bHRzIHRvIDxjb2RlPmNhdGVnb3J5PC9jb2RlPi48ZGl2IGNsYXNzPSJicmVh ayI+VGhpcyBpcyB2ZXJ5IHVzZWZ1bCBmb3Igc3BsaXR0aW5nIGdhbGxlcmllcyBhdCBldmVy eSBjaGFuZ2UgaW4gY2F0ZWdvcnkgYW5kIGRpc3BsYXlpbmcgdGhlIGNhdGVnb3J5IHRpdGxl IGFib3ZlIGVhY2ggZ3JvdXAuIEl0ZW1zIHlvdSB3YXRjaCBhcmUgYWRkZWQgdG8gdGhlIGxp c3Qgb2YgcmVwbGFjZW1lbnQgdGFncyBhbmQgYXJlIGF2YWlsYWJsZSBieSBwdXR0aW5nICYj ODIyMDtvbmNoYW5nZTomIzgyMjE7IGluIGZyb250IG9mIHRoZWlyIG5hbWUgKGUuZy4gPGNv ZGU+e29uY2hhbmdlOmNhdGVnb3J5fTwvY29kZT4gJiM4MjEyOyBzZWUgPGEgaHJlZj0iI2Vn NiI+ZXhhbXBsZSA2PC9hPiBmb3IgbW9yZSkuIFRoZSBjb2xvbiBkZWxpbWl0ZXIgY2FuIGJl IGNoYW5nZWQgd2l0aCA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPi48L2Rpdj48ZGl2IGNsYXNz PSJicmVhayI+WW91IGNhbiBhbHNvIGVsZWN0IHRvIGRlZmVyIHByb2Nlc3Npbmcgb2Ygb25j aGFuZ2UgZXZlbnRzIHRvIGEgZm9ybS4gVG8gZG8gc28sIHNwZWNpZnkgYSBmb3JtIGFmdGVy IHlvdXIgd2F0Y2ggaXRlbSBsaWtlIHRoaXMgPGNvZGU+Y2F0ZWdvcnlfdGl0bGU6bXlfZm9y bTwvY29kZT4uIEluIG15X2Zvcm0geW91IGNhbiBwdXQgYW55IG1hcmt1cCBhbmQgcmVwbGFj ZW1lbnQgdGFncy4gU2VlIDxhIGhyZWY9IiNlZzExIj5leGFtcGxlIDExPC9hPiBmb3IgbW9y ZS48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+QW5vdGhlciB3YXkgb2YgdXNpbmcgdGhpcyBh dHRyaWJ1dGUgaXMgd2l0aCB0aGUgc3BlY2lhbCBwcmVmaXggPGNvZGU+c21kX2V2ZXJ5Om48 L2NvZGU+IHdoaWNoIHdpbGwgdHJpZ2dlciBhIGdyb3VwIGNoYW5nZSBldmVyeSBOdGggaW1h Z2UuIE5vdGUgaXQgY2FuJiM4MjE3O3QgYmUgdXNlZCB0byB3YXRjaCBzcGVjaWZpYyB0aGlu Z3MgaW4gdGhpcyBtb2RlOyBpdCBpcyBvbmx5IHVzZWQgdG8gdHJpZ2dlciA8Y29kZT5ncm91 cHRhZzwvY29kZT4gY2hhbmdlczwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5vbmNoYW5nZXdyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5k IGFueSA8Y29kZT5vbmNoYW5nZTwvY29kZT4gZWxlbWVudHMgeW91IGFyZSB3YXRjaGluZywg ZS5nLiA8Y29kZT5vbmNoYW5nZXdyYXB0YWc9JnF1b3Q7aDMmcXVvdDs8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9uY2hhbmdlY2xhc3M8L3NwYW4+IDogdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdHJvIGFwcGx5IHRvIHRo ZSB3cmFwdGFnIG9mIGFueSBvbmNoYW5nZSBlbGVtZW50cyB5b3UgYXJlIHdhdGNoaW5nPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdyb3VwdGFnPC9zcGFuPiA6IHRoZSAoWClI VE1MIHRhZyB0byBtYWtlIGF2YWlsYWJsZSBhcyBhIHJlcGxhY2VtZW50IHNvIHlvdSBjYW4g d3JhcCBncm91cHMgb2YgZWxlbWVudHMgYXQgZWFjaCA8Y29kZT5vbmNoYW5nZTwvY29kZT4u IERlZmF1bHQ6IHVuc2V0LiBTZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZXMgNjwvYT4gZm9y IG1vcmUgb24gdGhlIDxjb2RlPmdyb3VwdGFnc3RhcnQ8L2NvZGU+IC8gPGNvZGU+Z3JvdXB0 YWdlbmQ8L2NvZGU+IHJlcGxhY2VtZW50IHRhZ3M8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+Z3JvdXBjbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwv c3Bhbj4gY2xhc3MgbmFtZSBhcHBsaWVkIHRvIGFueSA8Y29kZT5ncm91cHRhZzwvY29kZT48 L2xpPgoJPC91bD4KCgk8aDQ+VGFnL2NsYXNzL2Zvcm1hdHRpbmcgYXR0cmlidXRlczwvaDQ+ CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUg KFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSBnYWxsZXJ5LCBlLmcuIDxjb2Rl PndyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgZWFj aCB0aHVtYm5haWw8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+ IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgYXBwbGll ZCB0byB0aGUgd3JhcHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5odG1sX2lk PC9zcGFuPiA6IHRoZSBuYW1lIG9mIGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFu PiA8Y29kZT5pZDwvY29kZT4gYXR0cmlidXRlIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdndyYXB0YWc8L3NwYW4+IDogdGhlIChY KUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgPGNvZGU+cGFnZWZvcm08L2NvZGU+ LCBlLmcuIDxjb2RlPndyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9jb2RlPi4gRGVmYXVsdDog PGNvZGU+dWw8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdmJyZWFr PC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCBlYWNoIGl0ZW0gd2l0aGlu IHRoZSA8Y29kZT5wYWdlZm9ybTwvY29kZT4uIERlZmF1bHQ6IDxjb2RlPmxpPC9jb2RlPjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYXZjbGFzczwvc3Bhbj4gOiB0aGUgPHNw YW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBvZiB0aGUgbmF2aWdhdGlv biB3cmFwdGFnLiBEZWZhdWx0OiA8Y29kZT5zbWRfZ2FsbGVyeV9uYXY8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmVtcHR5Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgb2YgdGhlIG5hdmlnYXRpb24g aXRlbXMgdGhhdCBhcmUgPGVtPm5vdDwvZW0+IGxpbmtzLiBEZWZhdWx0OiA8Y29kZT5lbXB0 eTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybWF0PC9zcGFuPiAo PHNwYW4gY2xhc3M9InJlcXVpcmVkIj5vbmx5IGlmIHVzaW5nIDxjb2RlPntkYXRlfTwvY29k ZT48L3NwYW4+KSA6IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBkYXRlIGZvcm1hdCB1c2Vk LiBDYW4gdGFrZSBhbnkgPGEgaHJlZj0iaHR0cDovL3VrLnBocC5uZXQvc3RyZnRpbWUiPnN0 cmZ0aW1lKCk8L2E+IHZhbHVlcy4gRGVmYXVsdHMgdG8gdGhlIGRhdGUgc3lzdGVtIGFzIHNl dCBpbiB0aGUgc2l0ZSYjODIxNztzIHByZWZzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmxhbmc8L3NwYW4+ICg8c3BhbiBjbGFzcz0icmVxdWlyZWQiPm9ubHkgaWYgdXNpbmcg PGNvZGU+e2RhdGV9PC9jb2RlPjwvc3Bhbj4pIDogc2V0cyB0aGUgbGFuZ3VhZ2UgY29kZSBv ZiB0aGUgZGF0ZSBmb3JtYXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z210PC9z cGFuPiAoPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5vbmx5IGlmIHVzaW5nIDxjb2RlPntkYXRl fTwvY29kZT48L3NwYW4+KSA6IHJldHVybnMgZWl0aGVyIGxvY2FsIHRpbWUgYWNjb3JkaW5n IHRvIHRoZSBzZXQgdGltZSB6b25lIHByZWZlcmVuY2VzICgwKSwgb3IgPHNwYW4gY2xhc3M9 ImNhcHMiPkdNVDwvc3Bhbj4gdGltZSAoMSkuIERlZmF1bHQ6IDA8L2xpPgoJPC91bD4KCgk8 aDQ+UGx1Z2luIGN1c3RvbWlzYXRpb248L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmRlbGltPC9zcGFuPiA6IGNoYW5nZSB0aGUgZGVsaW1pdGVyIGZvciBzcGVjaWZ5 aW5nIGF0dHJpYnV0ZSBsaXN0cy4gRGVmYXVsdCBpcyBjb21tYSAoLCk8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+cGFyYW1kZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGlt aXRlciBmb3Igc3BlY2lmeWluZyBpbnRlci1wYXJhbWV0ZXIgYXR0cmlidXRlcy4gRGVmYXVs dCBpcyBjb2xvbiAoOik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y29sbGF0ZTwv c3Bhbj4gOiBzd2l0Y2ggdGhlIHBsdWdpbiBpbnRvIDxhIGhyZWY9IiNjb2xsYXRlX21vZGUi PmNvbGxhdGUgbW9kZTwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y29sbGF0 ZWRlbGltPC9zcGFuPiA6IGNoYW5nZSB0aGUgZGVsaW1pdGVyIGJldHdlZW4gZWFjaCBjb2xs YXRlZCBpdGVtLiBEZWZhdWx0IGlzIGNvbW1hICgsKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5jb21ibzwvc3Bhbj4gOiBzcGVjaWZ5IHlvdXIgb3duIDxhIGhyZWY9IiNjb21i b3MiPmN1c3RvbSByZXBsYWNlbWVudCB0YWdzPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5lc2NhcGU8L3NwYW4+IDogbGlzdCBvZiByZXBsYWNlbWVudCB2YXJpYWJsZSBu YW1lcyB0byAmIzgyMTY7ZXNjYXBlJiM4MjE3OywgaW4gb3RoZXIgd29yZHMgY29udmVydCBh bnkgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZ3MgdG8gdGhlaXIgY2hhcmFj dGVyIGVudGl0eSBlcXVpdmFsZW50cy4gU2V0IHRvIDxjb2RlPmVzY2FwZT0mcXVvdDsmcXVv dDs8L2NvZGU+IHRvIHR1cm4gdGhpcyBmZWF0dXJlIG9mZi4gWW91IGNhbiBlc2NhcGUgeW91 ciBvd24gY29tYm9zLiBEZWZhdWx0OiA8Y29kZT5hbHQsIHRpdGxlLCBjYXB0aW9uPC9jb2Rl PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdHJpY3RmaWVsZHM8L3NwYW4+IDog d2hlbiB1c2luZyAmIzgyMTY7PyYjODIxNzsgb3IgJiM4MjE2OyEmIzgyMTc7IGZpZWxkcywg c3BhY2VzIGFyZSBhbGxvd2VkIGluIGZpZWxkIG5hbWVzLiBTZXQgPGNvZGU+c3RyaWN0Zmll bGRzPSZxdW90OzEmcXVvdDs8L2NvZGU+IHRvIGZvcmJpZCBzcGFjZXMuIERlZmF1bHQ6IDA8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z2FsbGVyeWlkPC9zcGFuPiA6IHVuZGVy IG5vcm1hbCBjaXJjdW1zdGFuY2VzIHlvdSBzaG91bGQgbmV2ZXIgbmVlZCB0aGlzLiBFYWNo IGdhbGxlcnkgaXMgYXNzaWduZWQgYSB1bmlxdWUgSUQgYmFzZWQgb24gdGhlIHN1cHBsaWVk IGF0dHJpYnV0ZXMgc28geW91IG1heSB1c2UgbW9yZSB0aGFuIG9uZSBnYWxsZXJ5IG9uIGEg cGFnZSBhbmQgbmF2aWdhdGUgdGhlbSBpbmRlcGVuZGVudGx5LiBJbiB0aGUgdW5saWtlbHkg ZXZlbnQgdGhhdCB0d28gaWRlbnRpY2FsIElEcyBhcmUgZ2VuZXJhdGVkIHlvdSBjYW4gb3Zl cnJpZGUgdGhlIElEIGZvciBhIGdhbGxlcnkgYnkgdXNpbmcgdGhpcyBhdHRyaWJ1dGUuPGRp diBjbGFzcz0iYnJlYWsiPkludGVybmFsbHkgdGhlIHBsdWdpbiBnZW5lcmF0ZXMgYSAzMi1j aGFyYWN0ZXIgaGFzaCBzdHJpbmcgZm9yIGVhY2ggdGFnLCB0aGVuIHBpY2tzIGEgNC1jaGFy IGNvZGUgZnJvbSB0aGlzIHN0cmluZyAoaXQgdGFrZXMgZXZlcnkgNnRoIGNoYXJhY3RlciBi eSBkZWZhdWx0KS4gWW91IGNhbiBzdXBwbHkgYSB1bmlxdWUgZml4ZWQgc3RyaW5nIChlLmcu IDxjb2RlPmdhbGxlcnlpZD0mcXVvdDtNeUdhbCZxdW90OzwvY29kZT4pIG9yIGdpdmUgaXQg YSBxdWVzdGlvbiBtYXJrIGFuZCAyIG51bWJlcnMgc2VwYXJhdGVkIGJ5IGEgY29sb24gKGUu Zy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90Oz81OjQmcXVvdDs8L2NvZGU+KS4gVGhlIGZpcnN0 IG51bWJlciBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBmaW5hbCBzdHJpbmcgdG8gZ2VuZXJhdGUs IHRoZSBzZWNvbmQgbnVtYmVyIGlzIGhvdyBtYW55IGNoYXJhY3RlcnMgdG8gc2tpcCBpbiB0 aGUgMzItY2hhciBzdHJpbmcgZWFjaCB0aW1lIGl0IHBpY2tzIG9uZS48L2Rpdj48ZGl2IGNs YXNzPSJicmVhayI+SW4gdGhpcyBjYXNlIGl0IGdlbmVyYXRlcyBhIDUtY2hhcmFjdGVyIHN0 cmluZyBmcm9tIHRoZSBjaGFyYWN0ZXJzIGl0IGZpbmRzIGF0IHBvc2l0aW9ucyAxLDUsOSwx MywgYW5kIDE3LiBJZiB5b3Ugb21pdCB0aGUgMm5kIG51bWJlciAoZS5nLiA8Y29kZT5nYWxs ZXJ5aWQ9JnF1b3Q7PzYmcXVvdDs8L2NvZGU+KSBpdCB3aWxsIGFzc3VtZSBpdCYjODIxNztz IGFuIGluY3JlbWVudCBvZiAxPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnRodW1iPC9zcGFuPiA6IHVuZGVyIG5vcm1hbCBvcGVyYXRpb24sIHRodW1ibmFpbHMgdXNl IHRoZSAmIzgyMTY7dCYjODIxNzsgaW1hZ2UgaW4geW91ciA8Y29kZT5pbWFnZXM8L2NvZGU+ IGRpcmVjdG9yeSBhbmQgdGhlIGZ1bGwgc2l6ZSBwaWN0dXJlcyBkb24mIzgyMTc7dC4gSWYg eW91IHdpc2ggdG8gcmVkZWZpbmUgdGhpcyB5b3UgbWF5IHNwZWNpZnkgdXAgdG8gdHdvIHZh bHVlcyBzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gVGhlIGZpcnN0IGluZGljYXRlcyB0aGUgc3Rh dGUgb2YgdGhlIGZ1bGwgc2l6ZSBpbWFnZSwgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIHN0YXRl IG9mIHRoZSB0aHVtYm5haWw6Cgk8dWw+CgkJPGxpPnRodW1iPTA6MSAmIzgyMTI7IGZ1bGxz aXplID0gcmVndWxhciBpbWFnZSA6IHRodW1ibmFpbCA9IHRodW1iPC9saT4KCQk8bGk+dGh1 bWI9MTowICYjODIxMjsgZnVsbHNpemUgPSB0aHVtYiA6IHRodW1ibmFpbCA9IHJlZ3VsYXIg aW1hZ2U8L2xpPgoJCTxsaT50aHVtYj0wOjAgKG9yIHRodW1iPTApICYjODIxMjsgZnVsbHNp emUgPSByZWd1bGFyIGltYWdlIDogdGh1bWJuYWlsID0gcmVndWxhciBpbWFnZTwvbGk+CgkJ PGxpPnRodW1iPTE6MSAob3IgdGh1bWI9MSkgJiM4MjEyOyBmdWxsc2l6ZSA9IHRodW1iIDog dGh1bWJuYWlsID0gdGh1bWI8L2xpPgoJPC91bD48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+dGV4dDwvc3Bhbj4gOiBkaXNwbGF5IHRoZSBnaXZlbiB0ZXh0IGluc3RlYWQgb2Yg dGh1bWJuYWlscy4gVGhlIHRleHQgY2FuIGNvbnRhaW4gPGNvZGU+PzwvY29kZT4gYXJ0aWNs ZSBmaWVsZHM8L2xpPgoJPC91bD4KCgk8aDQ+U3BlY2lhbCBhdHRyaWJ1dGVzPC9oND4KCgk8 dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb2x1bW5zPC9zcGFuPiA6IGdpdmUgYSBj b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIGNvbHVtbnMgeW91IHdvdWxkIGxp a2UgdG8gcHVsbCBmcm9tIHRoZSBkYXRhYmFzZS4gRWFjaCBpdGVtIHlvdSBzcGVjaWZ5IGlz IHNwbGl0IGludG8gdGhyZWUgcGFydHM6IDxjb2RlPnRhYmxlLmNvbHVtbjpyZXBsYWNlbWVu dCBuYW1lPC9jb2RlPi4gVGhlIG9ubHkgbWFuZGF0b3J5IHBhcnQgaXMgdGhlIHJlcGxhY2Vt ZW50IG5hbWUsIHNpbmNlIDxjb2RlPnRhYmxlPC9jb2RlPiBkZWZhdWx0cyB0byB0eHBfaW1h Z2UsIGFuZCB0aGUgPGNvZGU+Y29sdW1uPC9jb2RlPiBkZWZhdWx0cyB0byB0aGUgc2FtZSBu YW1lIGFzIHRoZSByZXBsYWNlbWVudCB5b3Ugc3BlY2lmeS48ZGl2IGNsYXNzPSJicmVhayI+ Rm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGluc3RhbGxlZCB0aGUgY25vX2ltYWdlX29yZGVy IHBsdWdpbiB5b3UgY291bGQgdXNlIDxjb2RlPmNvbHVtbnM9JnF1b3Q7cG9zaXRpb24mcXVv dDs8L2NvZGU+LCBzaW5jZSB0aGUgcGx1Z2luIGFkZHMgdGhlICYjODIxNjtwb3NpdGlvbiYj ODIxNzsgY29sdW1uIHRvIHR4cF9pbWFnZS4gWW91IGNvdWxkIHRoZW4gc29ydCBieSA8Y29k ZT5wb3NpdGlvbjwvY29kZT4gYW5kIGFsc28gZGlzcGxheSB0aGUgaW1hZ2UmIzgyMTc7cyA8 Y29kZT57cG9zaXRpb259PC9jb2RlPi4gSWYgeW91IHdpc2hlZCB0byByZW5hbWUgdGhlIHZh cmlhYmxlIHRvLCBzYXksIDxjb2RlPmltZ3BvczwvY29kZT4geW91IHdvdWxkIHVzZSA8Y29k ZT5jb2x1bW5zPSZxdW90O3Bvc2l0aW9uOmltZ3BvcyZxdW90OzwvY29kZT4uIE5vdGUgdGhh dCBpZiB5b3Ugc3BlY2lmeSB0aGUgdGFibGUgbmFtZSB5b3UgbXVzdCBhbHNvIGluY2x1ZGUg dGhlIHRhYmxlIHByZWZpeCBpZiB5b3UgaGF2ZSB1c2VkIG9uZS48L2Rpdj48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+ZGlyZWN0b3J5PC9zcGFuPiA6ICg8c3BhbiBjbGFzcz0i cmVxdWlyZWQiPmV4cGVyaW1lbnRhbDwvc3Bhbj4pIHJlYWQgaW1hZ2VzIGZyb20gYSBsaXN0 IG9mIGRpcmVjdG9yaWVzIChvciA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPnMpIGlu c3RlYWQgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGRhdGFiYXNlPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1hdGNoPC9zcGFuPiA6IGxpbWl0IHRoZSBp bWFnZXMgYW5kIGRpcmVjdG9yaWVzIGNob3NlbiBpbiA8Y29kZT5kaXJlY3Rvcnk8L2NvZGU+ IG1vZGUuIEdpdmUgYSBsaXN0IG9mIHdvcmRzIHRvIGluY2x1ZGUgb3IgIWV4Y2x1ZGUgYW5k IGFueSBtYXRjaGluZyBmaWxlcyBvciBkaXJlY3RvcmllcyB3aWxsIGJlIGNob3NlbiBvciBp Z25vcmVkLCByZXNwZWN0aXZlbHkuIFRoZSBtYXRjaCB0ZXJtcyBhcmUgYXV0b21hdGljYWxs eSBhc3N1bWVkIHRvIGJlICYjODIyMDt3aWxkJiM4MjIxOyBzbyBhbnkgcGFydCBvZiB0aGUg ZmlsZSBuYW1lIC8gcGF0aCB3aWxsIHRyaWdnZXIgdGhlIG1hdGNoPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmRlYnVnPC9zcGFuPiA6IHR1cm4gb24gZGlhZ25vc3RpY3MuIFZh cnlpbmcgbGV2ZWxzIG9mIHZlcmJvc2l0eSBmcm9tIDAgKG5vbmUpIHRvIDQgKGEgbG90KTwv bGk+Cgk8L3VsPgoKCTxoMiBpZD0iZ2FsbGVyeV9mb3JtIj5HYWxsZXJ5IGZvcm08L2gyPgoK CTxwPlRoZSA8Y29kZT5mb3JtPC9jb2RlPiBpcyB3aGVyZSB5b3UgZGVzaWduIHdoYXQgZXZl cnkgdGh1bWJuYWlsIHdpbGwgbG9vayBsaWtlIG9uIHRoZSBzY3JlZW4uIFlvdSBkbyB0aGlz IGJ5IHNwZWNpZnlpbmcgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG1hcmt1cCBv ciA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzIGFzIG5vcm1hbC4gSW4ga2V5 IHBsYWNlcyB3aGVyZSB5b3Ugd2FudCwgZm9yIGV4YW1wbGUsIGFuIGltYWdlIElEIC8gYWx0 IHRhZyAvIGltYWdlIHdpZHRoIHRvIGJlIGRpc3BsYXllZCwgeW91IHNwZWNpZnkgc3BlY2lh bCByZXBsYWNlbWVudCB0YWdzLCBkZXRhaWxlZCBiZWxvdy4gVGhlc2UgYXJlIHJlcGxhY2Vk IGZvciBlYWNoIGltYWdlIGluIHR1cm4sIHRodXMgYnVpbGRpbmcgdXAgdGhlIGdhbGxlcnku PC9wPgoKCTxwPkluIGNvbGxhdGUgbW9kZSwgdGhlIGltYWdlIGRldGFpbHMgYXJlIGluc3Rl YWQgbWFkZSBpbnRvIGxpc3RzLiBUaGUgZm9ybSBpcyBvbmx5IHByb2Nlc3NlZCBvbmNlIGFu ZCB0aGUgcmVwbGFjZW1lbnQgdGFncyBvdXRwdXQgdGhlIGVudGlyZSBsaXN0LjwvcD4KCgk8 aDMgY2xhc3M9ImF0dHMgIiBpZD0icmVwX2dhbGxlcnkiPlJlcGxhY2VtZW50IHRhZ3M6IGdh bGxlcnk8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpZH08L3NwYW4+ IDogaW1hZ2UgSUQgKG9yLCBpbiBkaXJlY3RvcnkgbW9kZSwgdGhlIGZpbGVuYW1lIHdpdGhv dXQgaXRzIGV4dGVuc2lvbik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hbWV9 PC9zcGFuPiA6IGZ1bGwgaW1hZ2UgZmlsZW5hbWUgYXMgZGVmaW5lZCBpbiB0aGUgZGF0YWJh c2UsIHVzdWFsbHkgaW5jbHVkaW5nIGV4dGVuc2lvbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj57ZXh0fTwvc3Bhbj4gOiBmaWxlIGV4dGVuc2lvbiwgaW5jbHVkaW5nIGRvdDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57Y2F0ZWdvcnl9PC9zcGFuPiA6IGltYWdl IGNhdGVnb3J5IG5hbWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2NhdGVnb3J5 X3RpdGxlfTwvc3Bhbj4gOiBpbWFnZSBjYXRlZ29yeSB0aXRsZTwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj57YXV0aG9yfTwvc3Bhbj4gOiB3aG8gdXBsb2FkZWQgdGhlIGltYWdl PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt1cmx9PC9zcGFuPiA6IDxzcGFuIGNs YXNzPSJjYXBzIj5VUkw8L3NwYW4+IG9mIHRoZSBmdWxsc2l6ZSBpbWFnZTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJ1cmx9PC9zcGFuPiA6IDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IG9mIHRoZSB0aHVtYm5haWw8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+e2ltYWdlcGF0aH08L3NwYW4+IDogZGlyZWN0b3J5IHRoZSBpbWFnZSBpcyBp bjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aW1hZ2VkZWZ9PC9zcGFuPiA6IGp1 c3QgdGhlIGZpbGUgbmFtZSBwYXJ0IG9mIHRoZSBpbWFnZSAoZS5nLiA1LmpwZyk8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iZGVmfTwvc3Bhbj4gOiBqdXN0IHRoZSBm aWxlIG5hbWUgcGFydCBvZiB0aGUgdGh1bWJuYWlsIChlLmcuIDV0LmpwZyk8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e2FsdH08L3NwYW4+IDogYWx0IHRleHQ8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e3RpdGxlfSBvciB7Y2FwdGlvbn08L3NwYW4+IDogY2Fw dGlvbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57ZGF0ZX08L3NwYW4+IDogaW1h Z2UgdXBsb2FkIGRhdGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3dpZHRofTwv c3Bhbj4gOiBpbWFnZSB3aWR0aDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aGVp Z2h0fTwvc3Bhbj4gOiBpbWFnZSBoZWlnaHQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e3d1bml0c308L3NwYW4+IDogaW1hZ2Ugd2lkdGggdW5pdHMgKGUuZy4gcHgsICUsIGVt LCBldGMuKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aHVuaXRzfTwvc3Bhbj4g OiBpbWFnZSBoZWlnaHQgdW5pdHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3Ro dW1id2lkdGh9PC9zcGFuPiA6IHRodW1ibmFpbCB3aWR0aDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj57dGh1bWJoZWlnaHR9PC9zcGFuPiA6IHRodW1ibmFpbCBoZWlnaHQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1id3VuaXRzfTwvc3Bhbj4gOiB0aHVt Ym5haWwgd2lkdGggdW5pdHMgKGUuZy4gcHgsICUsIGVtLCBldGMuKTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57dGh1bWJodW5pdHN9PC9zcGFuPiA6IHRodW1ibmFpbCBoZWln aHQgdW5pdHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2hhc3RodW1ifTwvc3Bh bj4gOiBpZiB0aGUgaW1hZ2UgaGFzIGFuIGFzc29jaWF0ZWQgdGh1bWJuYWlsIG9yIG5vdDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57Z2FsbGVyeWlkfTwvc3Bhbj4gOiBnYWxs ZXJ5IGlkIHRoYXQgeW91IG9yIHRoZSBwbHVnaW4gYXNzaWduZWQ8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+e29iamVjdH08L3NwYW4+IDogYSBzcGVjaWFsIGl0ZW0gY29udGFp bmluZyBlaXRoZXIgdGhlIDxjb2RlPnRleHQ8L2NvZGU+IE9SIHRoZSBpbWFnZSB0YWcgb2Yg dGhlIGNvcnJlc3BvbmRpbmcgdGh1bWJuYWlsLCBidXQgPGVtPm9ubHk8L2VtPiBpZiA8Y29k ZT50aHVtYmxpbWl0PC9jb2RlPiBhbGxvd3MgaXQuIGUuZy4gaWYgPGNvZGU+dGh1bWJsaW1p dD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0aGlzIHZhcmlhYmxlIGlzIG9ubHkgc2V0IGZvciB0 aGUgZmlyc3QgdGh1bWJuYWlsIGluIHRoZSBsaXN0OyBldmVyeSBvdGhlciB0aW1lIGl0IGlz IGVtcHR5PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntjb3VudGVyfTwvc3Bhbj4g OiBpbWFnZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEgYW5kIGluY3JlbWVudGluZyBlYWNo IHRpbWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2luZGV4fTwvc3Bhbj4gOiBp bmRleCBjb3VudGVyICh6ZXJvLWJhc2VkICYjODIxMjsgcHJvYmFibHkgbm90IG11Y2ggdXNl KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJjb3VudGVyfTwvc3Bhbj4g OiB0aHVtYm5haWwgaW1hZ2UgY291bnRlciwgc3RhcnRpbmcgZnJvbSAxLiBOb3RlIGl0IGlz ICYjODIxNjtyZXNldCYjODIxNzsgd2hlbmV2ZXIgYW4gZWxlbWVudCBnaXZlbiBpbiA8Y29k ZT5vbmNoYW5nZTwvY29kZT4gZGlmZmVycyBmcm9tIHRoZSBwcmV2aW91cyBpdGVtPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmluZGV4fTwvc3Bhbj4gOiBpbmRleCBj b3VudGVyICh6ZXJvLWJhc2VkICYjODIxMjsgcHJvYmFibHkgbm90IG11Y2ggdXNlKS4gSXQg aXMgcmVzZXQgbGlrZSA8Y29kZT57dGh1bWJjb3VudGVyfTwvY29kZT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+e3RvdGFsaW1hZ2VzfTwvc3Bhbj4gOiB0b3RhbCBudW1iZXIg b2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhpcyBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnttYXhpbWFnZXN9PC9zcGFuPiA6IGFic29sdXRlIG1heGltdW0gbnVtYmVyIG9m IGltYWdlcyBhY3Jvc3MgYWxsIHBhZ2VzPC9saT4KCTwvdWw+CgoJPHA+SW4gYWRkaXRpb24s IGlmIGVpdGhlciA8Y29kZT5wYWdpbmc9JnF1b3Q7MSZxdW90OzwvY29kZT4gb3IgPGNvZGU+ cGFnZWZvcm08L2NvZGU+IGhhdmUgYmVlbiBzcGVjaWZpZWQsIGFsbCB0aGUgPGEgaHJlZj0i I3JlcF9wYWdpbmciPnBhZ2luZyByZXBsYWNlbWVudCB0YWdzPC9hPiBhcmUgYXZhaWxhYmxl IHRvby4gSWYgdGhvc2UgYXJlbiYjODIxNzt0IGVub3VnaCwgeW91IGNhbiA8YSBocmVmPSIj Y29tYm9zIj5jcmVhdGUgeW91ciBvd248L2E+IGJ5IGdyb3VwaW5nIGNvbWJpbmF0aW9ucyBv ZiB0aGUgYWJvdmUsIG9wdGlvbmFsbHkgd2l0aCBhcnRpY2xlIHZhcmlhYmxlcyBzdWNoIGFz IDxjb2RlPj9leGNlcnB0PC9jb2RlPiwgPGNvZGU+P2tleXdvcmRzPC9jb2RlPiwgPGNvZGU+ P2FydGljbGVfaW1hZ2U8L2NvZGU+LCBldGMuPC9wPgoKCTxwPk90aGVyIHRhZ3MgYXJlIGFk ZGVkIGRlcGVuZGluZyBpZiB5b3UgYXJlIHdhdGNoaW5nIGZvciA8Y29kZT5vbmNoYW5nZTwv Y29kZT4gZWxlbWVudHMsIG9yIGlmIHlvdSBoYXZlIHNwZWNpZmllZCBhIDxjb2RlPmdyb3Vw dGFnPC9jb2RlPi4gSWYgeW91IGFkZGVkIDxjb2RlPm9uY2hhbmdlPSZxdW90O2F1dGhvciwg Y2F0ZWdvcnkmcXVvdDs8L2NvZGU+IHRoZW4gZXZlcnkgdGltZSB0aGUgYXV0aG9yIG9yIGNh dGVnb3J5IGNoYW5nZWQgY29tcGFyZWQgdG8gdGhlIHByZXZpb3VzIGltYWdlLCBvbmUgb3Ig dHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIHdvdWxkIGJlY29tZSBhdmFpbGFibGU7IG5hbWVs eSA8Y29kZT57b25jaGFuZ2U6YXV0aG9yfTwvY29kZT4gYW5kIDxjb2RlPntvbmNoYW5nZTpj YXRlZ29yeSk8L2NvZGU+LiBVc2luZyBvbmNoYW5nZSB3aXRoIDxjb2RlPnNtZF9ldmVyeTwv Y29kZT4gZG9lcyA8ZW0+bm90PC9lbT4gYWRkIGEgbmV3IHJlcGxhY2VtZW50IHRhZyBhcyBp dCBpcyBtZXJlbHkgdXNlZCB0byBjb3VudC48L3A+CgoJPHA+SWYgeW91IHVzZWQgPGNvZGU+ Z3JvdXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9jb2RlPiBhcyB3ZWxsLCB5b3Ugd291bGQgYmUg Z2l2ZW4gdHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIGxhYmVsbGVkIDxjb2RlPmdyb3VwdGFn c3RhcnQ8L2NvZGU+IGFuZCA8Y29kZT5ncm91cHRhZ2VuZDwvY29kZT4uIFNlZSA8YSBocmVm PSIjZWc2Ij5leGFtcGxlIDY8L2E+IGZvciBkZXRhaWxzLjwvcD4KCgk8aDIgaWQ9InBhZ2lu Z19mb3JtIj5QYWdpbmcgZm9ybTwvaDI+CgoJPHA+QWRkIGdhbGxlcnkgbmF2aWdhdGlvbiB0 byB5b3VyIHBhZ2UuIFdvcmtzIGluIGEgc2ltaWxhciBtYW5uZXIgdG8gdGhlIDxhIGhyZWY9 IiNnYWxsZXJ5X2Zvcm0iPmdhbGxlcnkgZm9ybTwvYT46IGEgc2VyaWVzIG9mIHJlcGxhY2Vt ZW50IHRhZ3MgZ292ZXJuIHdoaWNoIGdhbGxlcnkgbmF2aWdhdGlvbiBpdGVtcyBhcmUgYXZh aWxhYmxlLiBZb3UgY291bGQgY2hvb3NlIHRvIG9ubHkgc2hvdyBuZXh0L3ByZXYuIE9yIHBl cmhhcHMgMXN0IHBhZ2UvbGFzdCBwYWdlLiBPciBudW1iZXJlZCBwYWdlIGxpbmtzLjwvcD4K Cgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0icmVwX3BhZ2luZyI+UmVwbGFjZW1lbnQgdGFnczog cGFnaW5nPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2Zmlyc3R9 PC9zcGFuPiA6IGZpcnN0IHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYjODIyMDtGaXJzdCYjODIy MTsgLyA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+e25hdnByZXZ9PC9zcGFuPiA6IHByZXZpb3VzIHBhZ2UgKGRlZmF1bHQg bGFiZWw6ICYjODIyMDsmbGFxdW87JiM4MjIxOyAvIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8 L3NwYW4+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2ZWFybGllcn08L3Nw YW4+IDogYW55IHBhZ2UgbnVtYmVycyBiZWZvcmUgdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2dGhpc3VybH08L3NwYW4+IDogY3VycmVudCBw YWdlIHdpdGggYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5rIHRvIGl0c2Vs ZjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2dGhpc308L3NwYW4+IDogY3Vy cmVudCBwYWdlIHdpdGhvdXQgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5r PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZsYXRlcn08L3NwYW4+IDogYW55 IHBhZ2UgbnVtYmVycyBhZnRlciB0aGUgY3VycmVudCBwYWdlPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPntuYXZuZXh0fTwvc3Bhbj4gOiBuZXh0IHBhZ2UgKGRlZmF1bHQgbGFi ZWw6ICYjODIyMDsmcmFxdW87JiM4MjIxOyAvIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3Nw YW4+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bGFzdH08L3NwYW4+IDog bGFzdCBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7TGFzdCYjODIyMTsgLyA8c3BhbiBj bGFzcz0iY2FwcyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e25hdmZpcnN0cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8 L3NwYW4+IHRvIGZpcnN0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25h dnByZXZwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gdG8gcHJldmlvdXMgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2 dGhpc3BhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiB0byBjdXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdm5l eHRwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4g dG8gbmV4dCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZsYXN0cGFn ZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIGxh c3QgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dG90YWxpbWFnZXN9PC9z cGFuPiA6IHRvdGFsIG51bWJlciBvZiBpbWFnZXMgbWF0Y2hlZCBvbiB0aGUgY3VycmVudCBw YWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0b3RhbHBhZ2VzfTwvc3Bhbj4g OiB0b3RhbCBudW1iZXIgb2YgcGFnZXMgaW4gdGhpcyBjb2xsZWN0aW9uPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnttYXhpbWFnZXN9PC9zcGFuPiA6IGFic29sdXRlIG1heGlt dW0gbnVtYmVyIG9mIGltYWdlcyBhY3Jvc3MgYWxsIHBhZ2VzPC9saT4KCTwvdWw+CgoJPHA+ VGhlIGN1cnJlbnQgcGFnZSBoYXMgYSBmaXhlZCBjbGFzcyBvZiAmIzgyMTY7Y3VycmVudCYj ODIxNzsgYW5kIGVhY2ggaXRlbSBpcywgYnkgZGVmYXVsdCwgYSA8Y29kZT4mbHQ7bGkmZ3Q7 PC9jb2RlPiBmb3IgZWFzeSBzdHlsaW5nLiBDdXN0b20gbGFiZWxzIGFyZSBkZWZpbmVkIGRp cmVjdGx5IGluIHRoZSBmb3JtIGl0c2VsZjsgZm9yIGV4YW1wbGUgdG8gbGFiZWwgdGhlIGxp bmsgdGhhdCB0YWtlcyB1c2VycyB0byB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgZ2FsbGVyeSBh cyAmIzgyMjA7MXN0JiM4MjIxOywgdXNlOjwvcD4KCgk8cD48Y29kZT57bmF2Zmlyc3Q6MXN0 fTwvY29kZT48L3A+CgoJPHA+V2l0aCB0aGlzIHN5bnRheCB5b3UgY2FuIGxhYmVsIG5hdmZp cnN0LCBuYXZsYXN0LCBuYXZwcmV2LCBuYXZuZXh0IGFuZCBuYXZ0aGlzICh0aGUgJiM4MjE2 OzomIzgyMTc7IGRlbGltaXRlciBpbiB0aGlzIGNhc2UgaXMgc3BlY2lmaWVkIGJ5IDxjb2Rl PnBhcmFtZGVsaW08L2NvZGU+KS4gWW91IGNhbiB1c2UgdGhpcyBtZWNoYW5pc20gdG8gcmVh ZCA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBzbmlwcGV0cywgZS5nOjwvcD4KCgk8 cD48Y29kZT57bmF2Zmlyc3Q6IyNmaXJzdExhYmVsIyN9PC9jb2RlPjwvcD4KCgk8cD5Zb3Ug YXJlIG5vdCBsaW1pdGVkIHRvIHRleHQgbGFiZWxzLiBJbWFnZXMgY291bGQgYmUgdXNlZDo8 L3A+CgoJPHA+PGNvZGU+e25hdmxhc3Q6ICZsdDtpbWcgc3JjPSZxdW90O2ltYWdlcy9sYXN0 LnBuZyZxdW90OyAvJmd0O308L2NvZGU+PC9wPgoKCTxwPllvdSBjYW4gb3ZlcnJpZGUgdGhl IG51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQgYnkgbmF2ZWFybGllciBhbmQgbmF2bGF0ZXIg Ynkgc3BlY2lmeWluZyBhIGNvbG9uIGFuZCBhIG51bWJlci4gU28gdG8gb25seSBzaG93IDIg aXRlbXMgdG8gdGhlIGxlZnQgb2YgdGhlIGN1cnJlbnQgcGFnZSBhbmQgMyBpdGVtcyB0byB0 aGUgcmlnaHQsIHVzZSA8Y29kZT57bmF2ZWFybGllcjoyfSB7bmF2bGF0ZXI6M308L2NvZGU+ IGluIHlvdXIgZm9ybS4gSWYgeW91IHdlcmUgb24gcGFnZSA5IG9mIDE1LCB7bmF2ZWFybGll cjo0fSB7bmF2bGF0ZXI6M30gd291bGQgc2hvdyA8Y29kZT4mbHQ7Jmx0OyA1IDYgNyA4IDkg MTAgMTEgMTIgJmd0OyZndDs8L2NvZGU+PC9wPgoKCTxwPkN1cnJlbnRseSA8Y29kZT57bmF2 ZWFybGllcn08L2NvZGU+IGFuZCA8Y29kZT57bmF2bGF0ZXJ9PC9jb2RlPiBvbmx5IGRpc3Bs YXkgYXJhYmljIG51bWVyYWxzLiBBbnkgaWRlYXMgb24gaG93IHRvIG9mZmVyIG90aGVyIGNo YXJhY3RlciBzZXRzIGdyZWF0bHkgYXBwcmVjaWF0ZWQuPC9wPgoKCTxoMiBpZD0iY291bnRm b3JtIj5Db3VudCBmb3JtczwvaDI+CgoJPHA+U29tZXRpbWVzIGl0JiM4MjE3O3MgaGFuZHkg dG8gYmUgYWJsZSB0byB0YWtlIGFjdGlvbiBvbmx5IHdoZW4gY2VydGFpbiBpbWFnZXMgYXJl IHJlYWNoZWQ7IGZvciBleGFtcGxlOjwvcD4KCgk8dWw+CgkJPGxpPm9ubHkgZGlzcGxheSBz b21ldGhpbmcgb24gdGhlIGZpcnN0IG9yIGxhc3QgaW1hZ2U8L2xpPgoJCTxsaT5zdGFydCBh IG5ldyA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gJiM4MjE2O3JvdyYjODIxNzsg ZXZlcnkgM3JkIGltYWdlPC9saT4KCQk8bGk+YnJlYWsgeW91ciBnYWxsZXJ5IHVwIHdpdGgg YW4gYWR2ZXJ0PC9saT4KCTwvdWw+CgoJPHA+VGhpcyBjYW4gYmUgZG9uZSB3aXRoIHNtZF9p ZiBidXQgc2luY2UgaXQgaXMgc3VjaCBhIGNvbW1vbiBmZWF0dXJlLCB0aGUgcGx1Z2luIGhh cyB0aGUgYWJpbGl0eSBidWlsdCBpbi4gQWxsIHJlcGxhY2VtZW50IHRhZ3MgYXJlIGF2YWls YWJsZSB3aXRoaW4geW91ciBjb3VudGZvcm1zIHNvIHlvdSBjYW4gZG8gc29tZSBwcmV0dHkg bmVhdCBzdHVmZi4gSXQgaXMgYmVzdCBleHBsYWluZWQgYnkgZXhhbXBsZTo8L3A+CgoJPHVs PgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7MTpnYWxfaGVhZCZxdW90OzwvY29kZT4g OiB0aGlzIHdvdWxkIG91dHB1dCB0aGUgZm9ybSA8ZW0+Z2FsX2hlYWQ8L2VtPiBvbmx5IHdo ZW4gdGhlIGZpcnN0IGltYWdlIGlzIGRpc3BsYXllZDwvbGk+CgkJPGxpPjxjb2RlPmNvdW50 Zm9ybT0mcXVvdDt7dG90YWxpbWFnZXN9OmdhbF9mb290JnF1b3Q7PC9jb2RlPiA6IHRoaXMg d291bGQgb3V0cHV0IHRoZSBmb3JtIDxlbT5nYWxfZm9vdDwvZW0+IG9ubHkgd2hlbiB0aGUg bGFzdCBpbWFnZSBpcyBkaXNwbGF5ZWQ8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1 b3Q7MTpnYWxfaGVhZCwge3RvdGFsaW1hZ2VzfTpnYWxfZm9vdCZxdW90OzwvY29kZT4gOiBk byBib3RoIG9mIHRoZSBhYm92ZTwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDsx OmdhbF9oZWFkLCB7dG90YWxpbWFnZXN9OmdhbF9mb290OnNtZF9iZWxvdyZxdW90OzwvY29k ZT4gOiB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgZXhhbXBsZSwgYnV0IHB1dCB0aGUgY29u dGVudHMgYmVsb3cgdGhlIGxhc3QgaW1hZ2UgKGJ5IGRlZmF1bHQsIGFsbCBvdXRwdXQgYXBw ZWFycyBhYm92ZSB0aGUgZ2l2ZW4gaW1hZ2UpPC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3Jt PSZxdW90OzQ6OTpzbWRfYmVsb3c6Z2FsX2FkJnF1b3Q7PC9jb2RlPiA6IG91dHB1dCA8ZW0+ Z2FsX2FkPC9lbT4gYWZ0ZXIgdGhlIDR0aCBhbmQgOXRoIGltYWdlcyBvbmx5PC9saT4KCQk8 bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzQtOTpzbWRfYmVsb3c6Z2FsX2FkJnF1b3Q7PC9j b2RlPiA6IG91dHB1dCA8ZW0+Z2FsX2FkPC9lbT4gYWZ0ZXIgdGhlIDR0aCwgNXRoLCA2dGgs IDd0aCwgOHRoIGFuZCA5dGggaW1hZ2VzIG9ubHk8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZv cm09JnF1b3Q7c21kX2V2ZXJ5OjM6Z2FsX3JvdyZxdW90OzwvY29kZT4gOiBvdXRwdXQgPGVt PmdhbF9yb3c8L2VtPiBiZWZvcmUgZXZlcnkgM3JkIGltYWdlPC9saT4KCQk8bGk+PGNvZGU+ Y291bnRmb3JtPSZxdW90O3NtZF9ldmVyeToyOiE4OmdhbF9yb3cmcXVvdDs8L2NvZGU+IDog b3V0cHV0IDxlbT5nYWxfcm93PC9lbT4gYmVmb3JlIGV2ZXJ5IGV2ZW4gaW1hZ2UgYnV0IG5v dCBvbiB0aGUgOHRoIGltYWdlPC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90Ozpn YWxfcm93JnF1b3Q7PC9jb2RlPiA6IHVzZSBhbiBlbXB0eSBmaXJzdCB2YWx1ZSB0byBvdXRw dXQgPGVtPmdhbF9yb3c8L2VtPiBiZWZvcmUgZXZlcnkgaW1hZ2UuIFRoaXMgbWF5IHNlZW0g dXNlbGVzcywgYnV0IGl0IG1lYW5zIHlvdSBjYW4gdXNlIHR3bywgdGhyZWUsIGZvdXImIzgy MzA7IGZvcm1zIChvciBhbnkgbnVtYmVyIG9mIGZvcm1zIGFuZCB0aGUgY29udGFpbmVyKSBz aW11bHRhbmVvdXNseSB0byBpdGVyYXRlIG92ZXIgdGhlIHNhbWUgZ2FsbGVyeS4gT3IgdXNl IHRoZSBzYW1lIGZvcm0gYXQgZGlmZmVyZW50IGZyZXF1ZW5jaWVzLiBHZXQgY3JlYXRpdmUh PC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzohNTpnYWxfcm93OnNtZF9iZWxv dyZxdW90OzwvY29kZT4gOiBhZ2FpbiwgbWlzc2luZyBvdXQgdGhlIGZpcnN0IHZhbHVlIHdp bGwgb3V0cHV0IGdhbF9yb3cgYWZ0ZXIgZXZlcnkgaW1hZ2UsIGJ1dCB0aGlzIHRpbWUgc2tp cHBpbmcgdGhlIDV0aCBpbWFnZTwvbGk+Cgk8L3VsPgoKCTxwPlRoZSA8Y29kZT4sPC9jb2Rl PiBhbmQgPGNvZGU+OjwvY29kZT4gY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUgPGNvZGU+ ZGVsaW08L2NvZGU+IGFuZCA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPiBhdHRyaWJ1dGVzLCBy ZXNwZWN0aXZlbHkuPC9wPgoKCTxwPlRoZXJlIGFyZSBhIGZldyBydWxlcyB3aGVuIHVzaW5n IHRoZSBjb3VudGZvcm06PC9wPgoKCTx1bD4KCQk8bGk+bnVtYmVycyBtdXN0IGFwcGVhciBi ZWZvcmUgdGhlIGZvcm0gbmFtZTwvbGk+CgkJPGxpPnRoZSBmb3JtIG5hbWUgaXMgdXN1YWxs eSB0aGUgbGFzdCBpdGVtIGluIHRoZSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCwgdGhvdWdoIHlv dSBjYW4gcHV0IDxjb2RlPnNtZF9hYm92ZTwvY29kZT4gb3IgPGNvZGU+c21kX2JlbG93PC9j b2RlPiBsYXN0IGlmIHlvdSB3aXNoPC9saT4KCQk8bGk+PGNvZGU+c21kX2V2ZXJ5PC9jb2Rl PiBvbmx5IGFmZmVjdHMgdGhlIHZhbHVlIHRoYXQgPGVtPmltbWVkaWF0ZWx5PC9lbT4gZm9s bG93cyBpdCwgZS5nLiA8Y29kZT5jb3VudGZvcm09JnF1b3Q7c21kX2V2ZXJ5OjU6NzoxMjpt eV9hZCZxdW90OzwvY29kZT4gd2lsbCBvdXRwdXQgPGVtPm15X2FkPC9lbT4gYXQgZXZlcnkg NXRoIGltYWdlLCBhcyB3ZWxsIGFzIDxlbT5vbmx5PC9lbT4gb24gdGhlIDd0aCBhbmQgMTJ0 aCBpbWFnZXMuIFRodXMgdGhlIHNlcXVlbmNlIHdvdWxkIGJlIDUsIDcsIDEwLCAxMiwgMTUs IDIwLCAyNSwgMzAmIzgyMzA7PC9saT4KCQk8bGk+aWYgdXNpbmcgPGNvZGU+c21kX2V2ZXJ5 PC9jb2RlPiwgaXQgPHN0cm9uZz5tdXN0PC9zdHJvbmc+IGFwcGVhciBhcyB0aGUgZmlyc3Qg aXRlbS4gRm9yIGV4YW1wbGUgPGNvZGU+Y291bnRmb3JtPSZxdW90OzQ6dGhlX2ZvdXJ0aCwg NjpzbWRfZXZlcnk6NTpteV9hZCZxdW90OzwvY29kZT4gaXMgaW52YWxpZCwgYnV0IDxjb2Rl PmNvdW50Zm9ybT0mcXVvdDs0OnRoZV9mb3VydGgsIHNtZF9ldmVyeTo1OjY6bXlfYWQmcXVv dDs8L2NvZGU+IGlzIE9LPC9saT4KCTwvdWw+CgoJPHA+U2VlIDxhIGhyZWY9IiNlZzEwIj5l eGFtcGxlIDEwPC9hPiBmb3IgbW9yZS48L3A+CgoJPGgyIGlkPSJjb21ib3MiPkNvbWJvczwv aDI+CgoJPHA+SWYgdGhlIGJ1aWx0LWluIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+cmVwbGFj ZW1lbnQgdGFnczwvYT4gYXJlbiYjODIxNzt0IGVub3VnaCBmb3IgeW91ciBuZWVkcyBvciB5 b3UgZmluZCB5b3Vyc2VsZiByZXBlYXRpbmcgdGhlIHNhbWUgY29tYmluYXRpb24gYW5kIHdh bnQgdG8gc2F2ZSB5b3Vyc2VsZiBzb21lIHR5cGluZywgeW91IGNhbiBkZWZpbmUgeW91ciBv d24uIFRoZSBzeW50YXggaXM6PC9wPgoKCTxwPjxjb2RlPmNvbWJvPSZxdW90O25ld3RhZzE6 ZGVmaW5pdGlvbiwgbmV3dGFnMjpkZWZpbml0aW9uLCAuLi4mcXVvdDs8L2NvZGU+PC9wPgoK CTxwPiYjODIxNjtkZWZpbml0aW9uJiM4MjE3OyBjYW4gYmUgYW55IGZpeGVkIHRleHQsIGFu eSBleGlzdGluZyByZXBsYWNlbWVudCB0YWcsIG9yIGFueSAmIzgyMTY7PyYjODIxNzsgYXJ0 aWNsZSB2YXJpYWJsZSBzbyB5b3UgY2FuIGdldCByZWFsbHkgd2lsZCBoZXJlLCBmb3IgZXhh bXBsZTo8L3A+CgoJPHA+PGNvZGU+Y29tYm89JnF1b3Q7aW1naW46Zm91bmQgaW4gP3MgW3Rh Z2dlZCB3aXRoID9rZXl3b3Jkcy4gUGhvdG8gYnkge2F1dGhvcn1dJnF1b3Q7PC9jb2RlPjwv cD4KCgk8cD5PbmNlIGRlZmluZWQsIDxjb2RlPntpbWdpbn08L2NvZGU+IGlzIGF2YWlsYWJs ZSB0byB5b3VyIGdhbGxlcnkgPGNvZGU+Zm9ybTwvY29kZT4gYW5kIG1pZ2h0IGJlIHJlcGxh Y2VkIHdpdGggJiM4MjIwO2ZvdW5kIGluIHpvbyBbdGFnZ2VkIHdpdGggemVicmEsIGFmcmlj YSwgc3RyaXBlcy4gUGhvdG8gYnkgQmxva2VdJiM4MjIxOy4gJHByZXRleHQgaXMgYWxzbyBh dmFpbGFibGUgZm9yIHRob3NlIGdlZWtzIHdobyBrbm93IHdoYXQmIzgyMTc7cyBpbiBpdCAo dGVtcG9yYXJpbHkgdXNlIDxjb2RlPmRlYnVnPSZxdW90OzQmcXVvdDs8L2NvZGU+IHRvIHZp ZXcgYWxsIGF2YWlsYWJsZSBhcnRpY2xlIHZhcmlhYmxlcykuPC9wPgoKCTxwPk9uZSB0aGlu ZyB0byB3YXRjaCBvdXQgZm9yIGlzIHRoYXQgdGhlIHNwYWNlIGNoYXJhY3RlciBpc24mIzgy MTc7dCBuZWNlc3NhcmlseSBhIGRlbGltaXRlciBmb3IgPGNvZGU+PzwvY29kZT4gdmFyaWFi bGVzIChiZWNhdXNlIGN1c3RvbSBmaWVsZHMgY2FuIGhhdmUgc3BhY2VzIGluIHRoZW0pLiBT byA8Y29kZT5jb21ibz0mcXVvdDtkb2Vzbm90d29yazo/cyBpbiA/Y2F0ZWdvcnkxJnF1b3Q7 PC9jb2RlPiB3aWxsIGxvb2sgZm9yIGEgdmFyaWFibGUgbGFiZWxsZWQgJiM4MjIwO3MgaW4m IzgyMjE7IGFuZCBvbmUgY2FsbGVkICYjODIyMDtjYXRlZ29yeTEmIzgyMjE7LiBPbmx5IG9u ZSBvZiB0aG9zZSBleGlzdHMhIENsZXZlciB1c2Ugb2YgcGFyZW50aGVzZXMgb3Igb3RoZXIg cHVuY3R1YXRpb24gY2FuIHdvcmsgcm91bmQgdGhpcy4gT3IgdXNlIDxjb2RlPnN0cmljdGZp ZWxkcz0mcXVvdDswJnF1b3Q7PC9jb2RlPiB0byB0dXJuIG9mZiB0aGUgdXNlIG9mIHNwYWNl cyBpbiBjdXN0b20gZmllbGQgbmFtZXMuPC9wPgoKCTxoMiBpZD0iY29sbGF0ZV9tb2RlIj5D b2xsYXRlIG1vZGU8L2gyPgoKCTxwPklmIHlvdSB3YW50IHRvIGdldCA8ZW0+cmVhbGx5PC9l bT4gZnVua3kgeW91IGNhbiBwdXQgdGhlIHBsdWdpbiBpbnRvIGEgMm5kIG1vZGUgY2FsbGVk ICYjODIyMDtjb2xsYXRpb24gbW9kZSYjODIyMTsuIFRoaXMgbWVhbnMgeW91ciBjaG9zZW4g Zm9ybSBpcyA8c3Ryb25nPm5vdDwvc3Ryb25nPiBleGVjdXRlZCBmb3IgZXZlcnkgaW1hZ2U7 IGl0IGlzIG9ubHkgdXNlZCBvbmNlIGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgbGlzdCwgYWZ0 ZXIgYWxsIHRoZSBpbWFnZXMgaGF2ZSBiZWVuIGludGVybmFsbHkgJiM4MjIwO2NvbGxlY3Rl ZCYjODIyMTsuIEluIGVmZmVjdCwgdGhlIHBsdWdpbiBidWlsZHMgdXAgYSBnaWFudCBhcnJh eSBvZiBhbGwgbWF0Y2hpbmcgaW1hZ2VzIHJlYWR5IGZvciB5b3UgdG8gb3V0cHV0IHRoZW0g YWxsIGluIG9uZSBnby4gVGhpcyBpcyB2ZXJ5IGhhbmR5IGZvciBkb2luZyBzbGlkZXNob3dz IGFuZCBpcyBiZXN0IGV4cGxhaW5lZCBieSBleGFtcGxlOjwvcD4KCgk8cD48Y29kZT5jb2xs YXRlPSZxdW90OzEmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPnN3aXRjaGVzIGNvbGxhdGlvbiBt b2RlIG9uLiBJZiB0aGUgcGx1Z2luIG1hdGNoZWQgNCBpbWFnZXMgYW5kIHlvdSB3ZXJlIHRv IHVzZSB0aGUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntuYW1lfTwvY29kZT4gaW4geW91ciBm b3JtIGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiB7bmFtZX0KPC9jb2RlPjwvcHJlPgoKCTxwPnlv dSBtaWdodCBnZXQgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiBoZXJvbi5qcGcscGVuZ3Vpbi5qcGcsZW11 LmpwZyxwdWZmaW4uanBnCjwvY29kZT48L3ByZT4KCgk8cD5Tb21ldGltZXMgaXQmIzgyMTc7 cyB1c2VmdWwgdG8gYmUgYWJsZSB0byBwdXQgcXVvdGVzIGFyb3VuZCBlYWNoIGl0ZW0gc28g eW91IGNhbiB0ZWxsIGNvbGxhdGUgbW9kZSB0byBkbyB0aGF0IGluc3RlYWQ6PC9wPgoKCTxw Pjxjb2RlPmNvbGxhdGU9JnF1b3Q7cXVvdGU6e25hbWV9JnF1b3Q7PC9jb2RlPjwvcD4KCgk8 cD5Zb3Ugd291bGQgdGhlbiBnZXQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdlczogJnF1b3Q7aGVyb24uanBnJnF1b3Q7 LCZxdW90O3Blbmd1aW4uanBnJnF1b3Q7LCZxdW90O2VtdS5qcGcmcXVvdDssJnF1b3Q7cHVm ZmluLmpwZyZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGRlbGltaXRlciAoYSBjb21t YSBpbiB0aGlzIGNhc2UpIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggdGhlIDxjb2RlPmRlbGlt PC9jb2RlPiBhdHRyaWJ1dGUuIFlvdSBtYXkgdXNlIDxjb2RlPnNnbHF1b3RlPC9jb2RlPiB0 byB3cmFwIHNpbmdsZSBxdW90ZXMgcm91bmQgdGhlIGl0ZW1zLCBvciAmIzgyMjA7ZGJscXVv dGUmIzgyMjE7IGFzIGEgc3lub255bSBmb3IgJiM4MjIwO3F1b3RlJiM4MjIxOyBpZiB5b3Ug cHJlZmVyLiBZb3UgY2FuIHF1b3RlIG1vcmUgdGhhbiBvbmUgdGhpbmcgYXQgb25jZSBieSBz cGVjaWZ5aW5nIHRoZSBpdGVtcyBhcyBhIGRlbGltaXRlZCBsaXN0OjwvcD4KCgk8cD48Y29k ZT5jb2xsYXRlPSZxdW90O3F1b3RlOntuYW1lfTp7YWx0fTp7aW1naW59JnF1b3Q7PC9jb2Rl PjwvcD4KCgk8cD5ZZXMsIHlvdSBjYW4gdXNlIGNvbWJvcyEgVGhlIGRlbGltaXRlciB1c2Vk IGJldHdlZW4gaXRlbXMgY2FuIGJlIG92ZXJyaWRlbiB3aXRoIHRoZSA8Y29kZT5jb2xsYXRl ZGVsaW08L2NvZGU+IGF0dHJpYnV0ZS48L3A+CgoJPHA+VGhlIHNlY29uZCBzcGVjaWFsIGZl YXR1cmUgb2YgY29sbGF0aW9uIG1vZGUgaXMgdGhhdCB5b3UgZG8gbm90IGhhdmUgdG8gYWx3 YXlzIG91dHB1dCB0aGUgZW50aXJlIGxpc3QuIFlvdSBjYW4gZ3JhYiBpbmRpdmlkdWFsIGVu dGl0aWVzIGZyb20gd2l0aGluIHRoZSBpbnRlcm5hbCBhcnJheSBieSB1c2luZyB0aGUgJiM4 MjE2OyMmIzgyMTc7IG5vdGF0aW9uIHRodXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+e25hbWV9IG1pZ2h0IG91dHB1dCAmcXVvdDtoZXJvbi5qcGcm cXVvdDssJnF1b3Q7cGVuZ3Vpbi5qcGcmcXVvdDssJnF1b3Q7ZW11LmpwZyZxdW90OywmcXVv dDtwdWZmaW4uanBnJnF1b3Q7IChhcyBiZWZvcmUpCntuYW1lIzF9IHdvdWxkIG9ubHkgb3V0 cHV0IGhlcm9uLmpwZwp7bmFtZSMzfSB3b3VsZCBvbmx5IG91dHB1dCBlbXUuanBnCjwvY29k ZT48L3ByZT4KCgk8cD5Ob3RlIHRoYXQgd2hlbiBwdWxsaW5nIG91dCBpbmRpdmlkdWFsIGVu dHJpZXMgdGhleSA8c3Ryb25nPmRvIG5vdDwvc3Ryb25nPiBnZXQgcXVvdGVzIGFkZGVkIHRv IHRoZW0sIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB5b3UgdXNlZCA8Y29kZT5xdW90ZTwvY29k ZT4gb3Igbm90LiBUaGlzIGlzIGJlY2F1c2UgaXQgaXMgYSBzaW5nbGUgaXRlbSBzbyB5b3Ug Y2FuIGVhc2lseSBwdXQgdGhlIHF1b3RlcyBpbiB0aGUgZm9ybSBpdHNlbGYgKHZpejogPGNv ZGU+JnF1b3Q7e25hbWUjMn0mcXVvdDs8L2NvZGU+KTwvcD4KCgk8cD5NZXNzaW5nIGFyb3Vu ZCB3aXRoIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgaXRlbXMgYW5kIGxpc3RzIGNhbiB5aWVs ZCBzb21lIHZlcnkgaW50ZXJlc3RpbmcgcmVzdWx0cyBhbmQgYWxsb3dzIHNvbWUgY29tcGxl dGVseSB3YWNreSBnYWxsZXJpZXMgdG8gYmUgZ2VuZXJhdGVkLiBUcnkgY29tYmluaW5nIHNt ZF9nYWxsZXJ5IHRhZ3Mgd2l0aCA8Y29kZT4mbHQ7dHhwOmlmX2RpZmZlcmVudCZndDs8L2Nv ZGU+IGZvciBhIHJlYWwgbWluZCBzY3JhbWJsZSA6LSk8L3A+CgoJPGgyIGlkPSJleGFtcGxl cyI+RXhhbXBsZXM8L2gyPgoKCTxwPlRoZSBleGFtcGxlcyBhbGwgdXNlIHRoZSBjbGFzc2lj IHpvbyB3ZWJzaXRlLiBMZXQmIzgyMTc7cyBnZXQgc29tZSBwaWN0dXJlcyBvdXQgb2YgdGhl IGRhdGFiYXNlJiM4MjMwOzwvcD4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxOiBzaW1wbGUg LyBsaWdodGJveGVkIGdhbGxlcnk8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxz JnF1b3Q7IHN1YmxldmVsPSZxdW90O2FsbCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVv dDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgcHVsbHMgb3V0IGFsbCBwaWN0dXJl cyBmcm9tIHRoZSBhbmltYWxzIGNhdGVnb3J5LCBpbmNsdWRpbmcgYWxsIHN1Yi1jYXRlZ29y aWVzLCBhbmQgcGFzc2VzIHRoZW0gdG8gdGhlIGZvcm0gY2FsbGVkICYjODIxNjtnYWxsZXJ5 JiM4MjE3OyBmb3IgcHJvY2Vzc2luZy4gVGhlIGZvcm0gY291bGQgYmU6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBjbGFzcz0mcXVvdDth bmltYWdlJnF1b3Q7IHNyYz0mcXVvdDt7dXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVv dDsgLyZndDsKJmx0O2RpdiBjbGFzcz0mcXVvdDthY2FwdGlvbiZxdW90OyZndDt7dGl0bGV9 Jmx0Oy9kaXYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IG1lYW5zLCBmb3IgZXZlcnkg bWF0Y2hlZCBpbWFnZSwgc3Vic3RpdHV0ZSBpdHMgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4sIGFsdCBhbmQgdGl0bGUgdGFncyBpbnRvIHRoZSByZWxldmFudCBwbGFjZXMuIFRo dXMgeW91IGdldCBhIHNlcmllcyBvZiBpbWFnZXMgb24gdGhlIHBhZ2UsIHdoaWNoIHlvdSBj YW4gc3R5bGUgYWNjb3JkaW5nbHkuPC9wPgoKCTxwPkZvciBhIG1vcmUgZmFuY3kgb3V0cHV0 IHVzaW5nLCBzYXksIHNsaW1ib3gsIHlvdSBjb3VsZCBsb2FkIHRoZSByZWxldmFudCBsaWJy YXJpZXMgYW5kIHN0eWxlcyBpbiB0aGUgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBvZiB5 b3VyIHBhZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7 L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5 cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvc2xpbWJveC5q cyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O2xpbmsgcmVsPSZxdW90O3N0eWxlc2hl ZXQmcXVvdDsgdHlwZT0mcXVvdDt0ZXh0L2NzcyZxdW90OyBocmVmPSZxdW90Oy9jc3Mvc2xp bWJveC5jc3MmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZW4geW91ciAmIzgy MTY7Z2FsbGVyeSYjODIxNzsgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVn b3J5fSZxdW90OyBocmVmPSZxdW90O3t1cmx9JnF1b3Q7CiAgICAgdGl0bGU9JnF1b3Q7QSBw aWN0dXJlIG9mIHtjYXB0aW9ufSZxdW90OyZndDsKICZsdDt0eHA6dGh1bWJuYWlsIGlkPSZx dW90O3tpZH0mcXVvdDsgLyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Vm9p bGEhIFVzaW5nIHRoZSBzYW1lIHNtZF9nYWxsZXJ5IHRhZyB5b3UgaGF2ZSBjaGFuZ2VkIHRo ZSB3YXkgdGhlIGdhbGxlcnkgcmVuZGVycyBmcm9tIGEgc2ltcGxlIGxpc3QgdG8gYSBmdWxs LWZlYXR1cmVkIHNsaW1ib3guIFdpdGggdmlydHVhbGx5IHRoZSBzYW1lIGZvcm0geW91IGNh biBzd2l0Y2ggdGhlIG91dHB1dCB0byB0aGlja2JveCwgbGlnaHRib3gsIGxpdGVib3gsIG1v b25ib3ggb3Igd2hhdGV2ZXIteW91LWxpa2UtYm94IGRlcGVuZGluZyBvbiB3aGljaCBsaWJy YXJpZXMgeW91IGxvYWQuIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyIGZhdm91 cml0ZSBlZmZlY3QgYW5kIHBsdWcgaXQgaW50byBzbWRfZ2FsbGVyeS48L3A+CgoJPGgzIGlk PSJlZzIiPkV4YW1wbGUgMjogbGF1bmNoIGZyb20gb25lIGltYWdlPC9oMz4KCgk8cD5BIGNv bW1vbiByZXF1ZXN0IGlzIHRvIGJlIGFibGUgdG8gJiM4MjIwO2xhdW5jaCYjODIyMTsgYSBz bGltYm94IGdhbGxlcnkgZnJvbSBhIHNpbmdsZSBpbWFnZSBvciB0ZXh0IGxpbmsuIFVzaW5n IGEgc2luZ2xlIGltYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90 OwogICAgIHN1YmxldmVsPSZxdW90O2FsbCZxdW90OwogICAgIGZvcm09JnF1b3Q7Z2FsbGVy eSZxdW90OyB0aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPlRoZSBmb3JtIHdpbGwgdXNlIHRoZSBzcGVjaWFsIDxjb2RlPntvYmplY3R9PC9jb2Rl PiByZXBsYWNlbWVudCB0YWcgc28gaXQgb25seSBkaXNwbGF5cyB0aGUgdGh1bWJuYWlsIGlm IHRoZSB2YWx1ZSBvZiB0aHVtYmxpbWl0IGhhcyA8c3Ryb25nPm5vdDwvc3Ryb25nPiBiZWVu IHJlYWNoZWQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O2EgcmVsPSZxdW90O2xpZ2h0Ym94LXNtZCZxdW90OyBocmVmPSZxdW90O3t1cmx9JnF1 b3Q7CiAgICAgdGl0bGU9JnF1b3Q7QSBwaWN0dXJlIG9mIHt0aXRsZX0mcXVvdDsmZ3Q7Cntv YmplY3R9CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoYW5nZSB0aGUgc3RhcnQg aW1hZ2UgYnkgc3BlY2lmeWluZyA8Y29kZT50aHVtYm9mZnNldDwvY29kZT4gJiM4MjEyOyBu b3RlIHRoaXMgd2lsbCBhbHNvIHN0YXJ0IHRoZSBsaWdodGJveCBlZmZlY3QgZnJvbSB0aGUg aW1hZ2UgeW91IGNob29zZS4gSWYgeW91IHdhbnQgdG8gc3RhcnQgb24gYSBzcGVjaWZpYyBp bWFnZSBpbiBwb3NpdGlvbiAxLCB1c2UgdGhlIDxjb2RlPmlkPC9jb2RlPiBhdHRyaWJ1dGUg dG8gYnJpbmcgaXQgdG8gdGhlIHRvcCBvZiB0aGUgbGlzdCwgb3IgY2hhbmdlIHRoZSBzb3J0 IG9yZGVyLjwvcD4KCgk8cD5JZiB5b3Ugd2FudGVkIHRvIGxhdW5jaCB0aGUgZ2FsbGVyeSBm cm9tIGEgdGV4dCBsaW5rLCBhZGQgc29tZXRoaW5nIGxpa2UgPGNvZGU+dGV4dD0mcXVvdDtD bGljayB0byBzdGFydCBsaWdodGJveCZxdW90OzwvY29kZT4uPC9wPgoKCTxoMyBpZD0iZWcz Ij5FeGFtcGxlIDM6IHBvcHVwIGdhbGxlcnk8L2gzPgoKCTxwPlRvIGFjaGlldmUgYW4gZWZm ZWN0IHNpbWlsYXIgdG8gcnNzX3RodW1icG9wLCBhZGQgYW4gaW1hZ2UgYW5kIGNhcHRpb24g cGxhY2Vob2xkZXIgb3V0c2lkZSB0aGUgY2FsbCB0byBzbWRfZ2FsbGVyeSwgdGhlbiBpbmNs dWRlIHlvdXIgc21kX2dhbGxlcnkgdGFnIGFzIHVzdWFsLiBUaGlzIHRpbWUgd2UgYXJlIG9u bHkgaW50ZXJlc3RlZCBpbiBhbGwgdGhlIHBpY3R1cmVzIGZyb20gdGhlIGNhdGVnb3JpZXMg dXAgdG8gdHdvIGxldmVscyBiZWxvdyBib3RoICYjODIyMDthbmltYWxzJiM4MjIxOywgcGx1 cyB3aGljaGV2ZXIgY2F0ZWdvcmllcyBhcmUgbGlzdGVkIGluIDxjb2RlPm15X2N1c3RvbV9m aWVsZDwvY29kZT4gYW5kIHRoZSBpbWFnZXMgd2l0aCBJRHMgMjUsIDM4LCAzOSwgNDAgYW5k IDQyOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtp bWcgaWQ9JnF1b3Q7ZnVsbHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFnZXMvZW1wdHkuanBn JnF1b3Q7IC8mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9uJnF1b3Q7Jmd0OyZs dDsvc3BhbiZndDsKJmx0O3R4cDpzbWRfZ2FsbGVyeSBzdWJsZXZlbD0mcXVvdDsyJnF1b3Q7 CiAgICAgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscywgP215X2N1c3RvbV9maWVsZCZxdW90Owog ICAgIGlkPSZxdW90OzI1LCA0MiwgMzgtNDAmcXVvdDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1 b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZ2FsbGVyeSBmb3JtIGxvb2tzIHNj YXJ5IGJ1dCBpcyBvbmx5IGEgdGh1bWJuYWlsIGltYWdlIHN1cnJvdW5kZWQgYnkgYSBzaW1w bGUgYW5jaG9yIHRhZyB3aXRoIHR3byBhY3Rpb25zIGFzc2lnbmVkIHRvIGl0OiBhIG1vdXNl b3ZlciB0byBjb3B5IHRoZSBwaWN0dXJlIGFuZCBjYXB0aW9uIGludG8gdGhlIHBsYWNlaG9s ZGVyOyBhbmQgYSBtb3VzZW91dCB0byByZW1vdmUgdGhlbTo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSBocmVmPSZxdW90O3t1cmx9JnF1b3Q7 IHRpdGxlPSZxdW90O3t0aXRsZX0mcXVvdDsKICAgICBvbm1vdXNlb3Zlcj0mcXVvdDtkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxzaXplJiMzOTspLnNyYyA9IHRoaXMuaHJl ZjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxjYXB0aW9uJiMzOTsp LmlubmVySFRNTCA9IHRoaXMudGl0bGU7IHJldHVybiBmYWxzZTsmcXVvdDsKICAgICBvbm1v dXNlb3V0PSZxdW90O2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5 Oykuc3JjID0gJiMzOTsvaW1hZ2VzLzE3LmpwZyYjMzk7OwogICAgIGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1MID0gJiMzOTsmIzM5 OzsgcmV0dXJuIGZhbHNlOyZxdW90OyZndDsKICAmbHQ7aW1nIHNyYz0mcXVvdDt7dGh1bWJ1 cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90OyAvJmd0OwombHQ7L2EmZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5Ob3RlIHRoZXJlIGFyZSBtdWNoIG5lYXRlciB3YXlzIG9mIGRvaW5n IHRoaXMgKGUuZy4gd2l0aCBqUXVlcnkpIGFuZCBpdCYjODIxNztzIG5vdCByZWNvbW1lbmRl ZCB0byB1c2UgdGhpcyBmb3JtIGluIGEgbGl2ZSBzaXRlLCBidXQgaXQgZ2l2ZXMgYSBmbGF2 b3VyIG9mIHdoYXQgaXMgcG9zc2libGUuPC9wPgoKCTxoMyBpZD0iZWc0Ij5FeGFtcGxlIDQ6 IHNsaWRlc2hvdzwvaDM+CgoJPHA+VGhpcyBvbmUgdXNlcyBjb2xsYXRlIG1vZGUgYnV0IGlz IG5vdCBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQuIEluIHlvdXIgPGNvZGU+ Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBzZWN0aW9uOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3Jp cHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29scy5qcyZxdW90OyZndDsmbHQ7L3Njcmlw dCZndDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9 JnF1b3Q7L2pzL3NsaWRlc2hvdy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPlRoZSB0YWc6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogIGNhdGVnb3J5PSZxdW90O2JpcmRz LCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogIGNvbWJvPSZxdW90O2lt Z2xpc3Q6e2lkfXtleHR9JnF1b3Q7CiAgY29sbGF0ZT0mcXVvdDtxdW90ZTp7aW1nbGlzdH06 e2FsdH0mcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgcHVsbHMgYWxsIHBp Y3R1cmVzIGZyb20gdGhlIGJpcmRzIGFuZCBmaXNoIGNhdGVnb3JpZXMuIEFsdGhvdWdoIHRl Y2huaWNhbGx5IHVubmVjZXNzYXJ5LCBhIGNvbWJvIGhhcyBiZWVuIGRlZmluZWQgdG8gc2hv dyBob3cgaXQgY2FuIGJlIHVzZWQuIFRoaXMgY29tYm8gaXMgY2FsbGVkIDxjb2RlPmltZ2xp c3Q8L2NvZGU+IGFuZCBpcyBkZWZpbmVkIGFzIHRoZSBpbWFnZSYjODIxNztzIElEIG51bWJl ciBwbHVzIGl0cyBleHRlbnNpb24uIFdlIHVzZSB0aGlzIGluIHRoZSBjb2xsYXRlIGF0dHJp YnV0ZSBhbmQgdGVsbCBpdCB0byBwdXQgZG91YmxlIHF1b3RlcyByb3VuZCBldmVyeSBpdGVt IGluICYjODIxNjtpbWdsaXN0JiM4MjE3OyBhbmQgJiM4MjE2O2FsdCYjODIxNzsuIFRoZW4g d2UgY2FuIHB1dCB0aGVzZSB2YWx1ZXMgaW50byB0aGUgbmVjZXNzYXJ5IGphdmFzY3JpcHQg aW4gdGhlIDxjb2RlPmdhbGxlcnk8L2NvZGU+IGZvcm0gdG8gZ2VuZXJhdGUgdGhlIHNsaWRl c2hvdzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7 ZGl2IGNsYXNzPSZxdW90O3NsaWRlc2hvdyZxdW90OyBpZD0mcXVvdDtzbGlkZXNob3cxJnF1 b3Q7Jmd0OwogJmx0O2ltZyBzcmM9JnF1b3Q7Jmx0O3R4cDpzaXRlX3VybCAvJmd0O2ltYWdl cy97aWQjMX0uanBnJnF1b3Q7CiAgICAgYWx0PSZxdW90O3thbHQjMX0mcXVvdDsgd2lkdGg9 JnF1b3Q7e3dpZHRoIzF9JnF1b3Q7IGhlaWdodD0mcXVvdDt7aGVpZ2h0IzF9JnF1b3Q7IC8m Z3Q7CiZsdDsvZGl2Jmd0Owo8L2NvZGU+Cjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3Njcmlw dCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsKbXlTaG93MSA9IG5ldyBT bGlkZXNob3coJnF1b3Q7c2xpZGVzaG93MSZxdW90OywKICB7IGh1OiAmcXVvdDsmbHQ7dHhw OnNpdGVfdXJsIC8mZ3Q7aW1hZ2VzLyZxdW90OywKICAgIGltYWdlczogW3tpbWdsaXN0fV0s CiAgICBjYXB0aW9uczogW3thbHR9XSwKICAgIGNsYXNzZXM6IFsmcXVvdDtwcmV2JnF1b3Q7 LCZxdW90O25leHQmcXVvdDssJnF1b3Q7YWN0aXZlJnF1b3Q7XSwKICAgIHR5cGU6ICZxdW90 O2ZhZGUmcXVvdDsKICB9KTsKJmx0Oy9zY3JpcHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5O b3RlIHRoYXQgdGhlIGluaXRpYWwgcG9ydGlvbiAoaW4gdGhlIGRpdiBhbmQgaW1nIHRhZ3Mp IHVzZXMgdGhlICYjODIxNjsjJiM4MjE3OyBub3RhdGlvbiBiZWNhdXNlIHdlIG9ubHkgd2Fu dCB0byBkaXNwbGF5IG9uZSBpbWFnZSB0byAmIzgyMjA7c3RhcnQmIzgyMjE7IHRoZSBzbGlk ZXNob3cuIEluIHRoaXMgY2FzZSB3ZSYjODIxNztyZSB1c2luZyB0aGUgZmlyc3QgaW1hZ2Ug aW4gdGhlIGxpc3QsIGJ1dCB5b3UgY2FuIGNoYW5nZSB0aGUgIzEgZm9yICM0MiBpZiB5b3Ug d2FudGVkIHRvIHNob3cgdGhlIGZvcnR5LXNlY29uZCBpbWFnZSBpbnN0ZWFkISBUaGUgcGFy dCBpbiB0aGUgc2NyaXB0IHRhZyB1c2VzIHRoZSBmdWxsLCBxdW90ZWQgbGlzdHMgYmVjYXVz ZSB0aGF0JiM4MjE3O3MgdGhlIGZvcm1hdCB0aGUgamF2YXNjcmlwdCByZXF1aXJlcy48L3A+ CgoJPGgzIGlkPSJlZzUiPkV4YW1wbGUgNTogcGFnaW5hdGlvbjwvaDM+CgoJPHA+VG8gYWRk IHBhZ2luZyB0byBhIGdhbGxlcnkgeW91IHVzZSB0aGUgPGNvZGU+bGltaXQ8L2NvZGU+IGF0 dHJpYnV0ZSB0byBzaG93IGEgbnVtYmVyIG9mIHRodW1icyBwZXIgcGFnZS4gRm9yIGEgcGFn ZWQgdGh1bWJwb3AgZ2FsbGVyeSB0aGF0IHNob3dzIGZpdmUgdGh1bWJzIHBlciBwYWdlOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtpbWcgaWQ9 JnF1b3Q7ZnVsbHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFnZXMvZW1wdHkuanBnJnF1b3Q7 IC8mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9uJnF1b3Q7Jmd0OyZsdDsvc3Bh biZndDsKJmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7 CiAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHBhZ2Vmb3JtPSZxdW90O2dhbGxlcnlfbmF2 JnF1b3Q7CiAgbGltaXQ9JnF1b3Q7NSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ VGhlICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGlzIGlkZW50aWNhbCB0byB0aGUgb25l IGluIDxhIGhyZWY9IiNlZzQiPmV4YW1wbGUgNDwvYT4sIHdoaWxlIHlvdXIgZ2FsbGVyeV9u YXYgZm9ybSBtaWdodCBsb29rIGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNzPSZxdW90O3RvdGFsJnF1b3Q7Jmd0 OyMgb2YgcGljczoge3RvdGFsaW1hZ2VzfSZsdDsvZGl2Jmd0OwogICAgIHtuYXZmaXJzdH0g e25hdnByZXZ9CiAgICAge25hdmVhcmxpZXJ9IHtuYXZ0aGlzfSB7bmF2bGF0ZXJ9CiAgICAg e25hdm5leHR9IHtuYXZsYXN0fQo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBtaWdodCByZW5k ZXIgc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhpcyBiZWxvdyB0aGUgdGh1bWJzOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiMgb2YgcGljczogMzgKICAg ICBGaXJzdCAmbHQ7IDEgMiAzIDQgNSA2IDcgOCAmZ3Q7IExhc3QKPC9jb2RlPjwvcHJlPgoK CTxoMyBpZD0iZWc2Ij5FeGFtcGxlIDY6IG9uY2hhbmdlPC9oMz4KCgk8cD5JZiB5b3Ugd2Fu dCB0byBzaW11bGF0ZSBtdWx0aXBsZSBnYWxsZXJpZXMgZnJvbSBvbmUgc21kX2dhbGxlcnkg dGFnIHlvdSBjYW4gdXNlIDxjb2RlPm9uY2hhbmdlPC9jb2RlPiB0byAmIzgyMjA7d2F0Y2gm IzgyMjE7IGZvciB3aGVuIGNlcnRhaW4gYXR0cmlidXRlcyBvZiBpbWFnZXMgY2hhbmdlIGFu ZCBpbnNlcnQgc3BlY2lhbCB0YWdzIDxlbT5vbmx5IHdoZW4gc29tZXRoaW5nIGNoYW5nZXM8 L2VtPi4gSW4gdGhpcyByZWdhcmQgaXQgYWN0cyBsaWtlIGEgc291cGVkLXVwIHZlcnNpb24g b2YgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4mIzgyMTc7cyBidWlsdC1pbiA8Y29k ZT4mbHQ7dHhwOmlmX2RpZmZlcmVudCZndDs8L2NvZGU+IHRhZy48L3A+CgoJPHA+WW91IGNh biB3YXRjaCB0aGUgdXN1YWwgdGhpbmdzIGxpa2UgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+LCA8 Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT53aWR0aDwvY29kZT4sIDxjb2RlPmhlaWdodDwv Y29kZT4sIDxjb2RlPmV4dDwvY29kZT5lbnNpb24gYW5kIHNvIG9uOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkKICAg ICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkm cXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRlZ29yeV90aXRsZSZxdW90OwogICAgIG9u Y2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ U2luY2UgdGhlIHBsdWdpbiBub3JtYWxseSBzb3J0cyBieSBjYXRlZ29yeSwgdGhpcyB3aWxs IGhhdmUgdGhlIGVmZmVjdCBvZiBhZGRpbmcgb25lIHJlcGxhY2VtZW50IHRhZyA8Y29kZT57 b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9PC9jb2RlPiBhdCB0aGUgdmVyeSBiZWdpbm5pbmcg b2YgdGhlIHRodW1iIGxpc3QgYW5kIGFsc28gd2hlbiB0aGUgY2F0ZWdvcnkgc3dpdGNoZXMg ZnJvbSAmIzgyMTY7YmlyZHMmIzgyMTc7IHRvICYjODIxNjtmaXNoJiM4MjE3Oy4gVGh1cyB5 b3VyIGdhbGxlcnkgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj57b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9CiZsdDthIGhyZWY9 JnF1b3Q7e3VybH0mcXVvdDsgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsm Z3Q7CntvYmplY3R9CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd291bGQg bWFrZSB0d28gbGlnaHRib3hhYmxlIHNldHMgb2YgdGh1bWJuYWlscyB3aXRoIGEgaGVhZGlu ZyAzIGFib3ZlIGVhY2ggZ3JvdXAgY29udGFpbmluZyB0aGUgY2F0ZWdvcnkgdGl0bGUuPC9w PgoKCTxwPk5vdGUgdGhhdCBpZiB5b3UgYWRkIDxjb2RlPnRodW1ibGltaXQ9JnF1b3Q7MSZx dW90OzwvY29kZT4gdG8gdGhlIHNtZF9nYWxsZXJ5IHRhZyB5b3UgY2FuIHNob3cganVzdCBv bmUgdGh1bWJuYWlsIGluIGVhY2ggZ3JvdXAsIHdpdGggaGVhZGluZ3MgYWJvdmUgZWFjaCB0 aHVtYi4gVmlzaXRvcnMgY2xpY2tpbmcgdGhlIHRodW1iIHdpbGwgbGF1bmNoIHRoZSBsaWdo dGJveCBhbmQgYmUgYWJsZSB0byBicm93c2UgdGhlIHJlbGV2YW50IGNhdGVnb3J5LiBJZiB5 b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGV5IGNhbiBvbmx5IGJyb3dzZSBzaXggaW1h Z2VzIGluIGVhY2ggY2F0ZWdvcnkgc2V0LCBhZGQgPGNvZGU+Z3JvdXBsaW1pdD0mcXVvdDs2 JnF1b3Q7PC9jb2RlPi48L3A+CgoJPHA+QW4gZXh0cmEgcGFpciBvZiByZXBsYWNlbWVudCB0 YWdzIGFyZSBhdmFpbGFibGUgaWYgeW91IHdpc2ggdG8gd3JhcCB0aGUgb2JqZWN0cyB0aGVt c2VsdmVzIHRvIGdyb3VwIHRoZW0uIFVzZSB0aGUgPGNvZGU+Z3JvdXB0YWc8L2NvZGU+IGFu ZCA8Y29kZT5ncm91cGNsYXNzPC9jb2RlPiBhdHRyaWJ1dGVzIHRvIHNldCBpdCB1cCwgdGhl biB0d28gbmV3IHJlcGxhY2VtZW50IHRhZ3MgY2FsbGVkIDxjb2RlPmdyb3VwdGFnc3RhcnQ8 L2NvZGU+IGFuZCA8Y29kZT5ncm91cHRhZ2VuZDwvY29kZT4gYmVjb21lIGF2YWlsYWJsZS4g VGhleSBhcmUgY29uZGl0aW9uYWwgYW5kIGFyZSBvbmx5IHBvcHVsYXRlZCB3aGVuIHRoZSBh dHRyaWJ1dGVzIHlvdSBhcmUgd2F0Y2hpbmcvc29ydGluZyBieSBjaGFuZ2UuIFVzZSBpdCBs aWtlIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O3R4cDpzbWRfZ2FsbGVyeSBpZD0mcXVvdDs/YXJ0aWNsZV9pbWFnZSZxdW90OwogICAg IGNhdGVnb3J5PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZx dW90OwogICAgIG9uY2hhbmdlPSZxdW90O2NhdGVnb3J5X3RpdGxlJnF1b3Q7CiAgICAgb25j aGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7CiAgICAgZ3JvdXB0YWc9JnF1b3Q7ZGl2JnF1 b3Q7IGdyb3VwY2xhc3M9JnF1b3Q7Ym94JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPntvbmNoYW5nZTpjYXRlZ29y eV90aXRsZX0Ke2dyb3VwdGFnc3RhcnR9CiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsg cmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsmZ3Q7CntvYmplY3R9CiZsdDsv YSZndDsKe2dyb3VwdGFnZW5kfQo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHlvdSBj YW4gbW92ZSB0aGUgPGNvZGU+Z3JvdXB0YWdzdGFydDwvY29kZT4gdG8gc3Vycm91bmQgdGhl IDxjb2RlPm9uY2hhbmdlPC9jb2RlPmQgdGl0bGUgaWYgeW91IHdpc2guPC9wPgoKCTxoMyBp ZD0iZWc3Ij5FeGFtcGxlIDc6IHNtZF9ldmVyeTwvaDM+CgoJPHA+WW91IGNhbiBhbHNvIHRy aWdnZXIgYW4gb25jaGFuZ2UgZXZlbnQgZXZlcnkgbnRoIGltYWdlOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0 ZWdvcnk9JnF1b3Q7ZnJvbnRwYWdlJnF1b3Q7CiAgICAgbGltaXQ9JnF1b3Q7OSZxdW90OyBz b3J0PSZxdW90O3JhbmRvbSZxdW90OwogICAgIG9uY2hhbmdlPSZxdW90O3NtZF9ldmVyeToz JnF1b3Q7CiAgICAgZ3JvdXB0YWc9JnF1b3Q7dWwmcXVvdDsgZ3JvdXBjbGFzcz0mcXVvdDtz bGlkZXNob3cmcXVvdDsmZ3Q7Cntncm91cHRhZ3N0YXJ0fQogICAmbHQ7bGkmZ3Q7CiAgICAg ICZsdDthIGhyZWY9JnF1b3Q7Jmx0O3R4cDpwZXJtbGluayBpZD0mcXVvdDt7YWx0fSZxdW90 OyAvJmd0OyZxdW90OyZndDsKICAgICAgICAgJmx0O2ltZyBzcmM9JnF1b3Q7e3RodW1idXJs fSZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7CiAgICAgICAgICZsdDtzcGFuJmd0O3t0 aXRsZX0mbHQ7L3NwYW4mZ3Q7CiAgICAgICZsdDsvYSZndDsKICAgJmx0Oy9saSZndDsKe2dy b3VwdGFnZW5kfQombHQ7L3R4cDpzbWRfZ2FsbGVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxo MyBpZD0iZWc4Ij5FeGFtcGxlIDg6IHVuY2F0ZWdvcml6ZWQgaW1hZ2VzPC9oMz4KCgk8cD5T b21ldGltZXMgeW91IG1pZ2h0IHdpc2ggdG8gZXh0cmFjdCBpbWFnZXMgdGhhdCBkbyBub3Qg aGF2ZSBhIGNhdGVnb3J5IGFzc2lnbmVkLiBZb3UgbmVlZCB0byB1c2UgdGhlIHNwZWNpYWwg dmFsdWUgPGNvZGU+U01EX0VNUFRZPC9jb2RlPiBmb3IgdGhpczo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVn b3J5PSZxdW90O1NNRF9FTVBUWSwgc2hvZXMmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPllvdSBjYW4gYWxzbyBuZWdhdGUgdGhlIGxvZ2ljIHNvIHlvdSBjYW4gZXh0cmFjdCBh bGwgaW1hZ2VzIHRoYXQgaGF2ZSBzb21lIChhbnkpIGNhdGVnb3J5IGFzc2lnbmVkIHRvIHRo ZW06PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDshU01EX0VNUFRZJnF1b3Q7IC8mZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnOSI+RXhhbXBsZSA5OiB7b2JqZWN0fSBhbmQgb2Jq ZWN0Zm9ybTwvaDM+CgoJPHA+VGhlIGRlZmF1bHQgPGNvZGU+e29iamVjdH08L2NvZGU+IG91 dHB1dHMgYSBzaW1wbGUgaHlwZXJsaW5rZWQgdGh1bWJuYWlsLiBJZiB5b3Ugd2FudCBzb21l dGhpbmcgYSBiaXQgbW9yZSBleG90aWMsIGxpa2UgbGF1bmNoaW5nIGEgc2hhZG93Ym94IGVm ZmVjdCBmcm9tIGEgc2luZ2xlIHRodW1ibmFpbCB0aGF0IGFsc28gaGFzIHRoZSBjYXB0aW9u IGJlbmVhdGggaXQsIHlvdSBuZWVkIHRvIGN1c3RvbWlzZSB0aGUgPGNvZGU+e29iamVjdH08 L2NvZGU+IHZpYSB0aGUgPGNvZGU+b2JqZWN0Zm9ybTwvY29kZT4gYXR0cmlidXRlLiBQdXQg YSBsaXN0IG9mIGltYWdlIElEcyBpbiB5b3VyIGFydGljbGUgaW1hZ2UgZmllbGQgYW5kIHRo ZW46PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfZ2FsbGVyeSB0aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsKICAgICBpZD0mcXVvdDs/ YXJ0aWNsZV9pbWFnZSZxdW90OyB3cmFwdGFnPSZxdW90O2RpdiZxdW90OwogICAgIGNsYXNz PSZxdW90O3RodW1icyZxdW90OyBvYmplY3Rmb3JtPSZxdW90O215X29iaiZxdW90OwogICAg IGNvbWJvPSZxdW90O2FydGlkOj90aGlzaWQmcXVvdDsmZ3Q7CiAgJmx0O2EgcmVsPSZxdW90 O3NoYWRvd2JveFt7YXJ0aWR9XTsKICAgICBvcHRpb25zPXtjb3VudGVyVHlwZTomIzM5O3Nr aXAmIzM5OywKICAgICBjb250aW51b3VzOnRydWUsCiAgICAgYW5pbWF0ZTpmYWxzZSwKICAg ICBhbmltU2VxdWVuY2U6JiMzOTtzeW5jJiMzOTt9JnF1b3Q7CiAgICAgaHJlZj0mcXVvdDt7 dXJsfSZxdW90OwogICAgIHRpdGxlPSZxdW90O3thbHR9JnF1b3Q7Jmd0O3tvYmplY3R9Jmx0 Oy9hJmd0OwombHQ7L3R4cDpzbWRfZ2FsbGVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkFu ZCBpbiA8Y29kZT5teV9vYmo8L2NvZGU+LCB5b3UgY291bGQgcHV0OjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6dGh1bWJuYWlsIGlkPSZx dW90O3tpZH0mcXVvdDsgLyZndDsmbHQ7YnIgLyZndDt7dGl0bGV9CjwvY29kZT48L3ByZT4K Cgk8cD5Ob3RpY2UgaG93IHRoZSByZXBsYWNlbWVudCB0YWdzIHN0aWxsIHdvcmsgaW4gdGhl IDxjb2RlPm9iamVjdGZvcm08L2NvZGU+PyBUaGlzIGFsbG93cyB5b3UgdG8gYnVpbGQgdXAg YSBjb21wbGV0ZSBsYXlvdXQgZm9yIHRoZSBsYXVuY2hhYmxlIHRodW1ibmFpbCBhbmQgaGF2 ZSBpdCBvbmx5IHJlbmRlcmVkIG9uY2Ugb24gdGhlIHBhZ2UuIFRoZSByZXN0IG9mIHRoZSBj b250YWluZXIgaW4gdGhpcyBleGFtcGxlIHJlbmRlcnMgYWxsIHRoZSAmIzgyMjA7aGlkZGVu JiM4MjIxOyBpbWFnZXMgaW4gdGhlIHNoYWRvd2JveCBnYWxsZXJ5LjwvcD4KCgk8aDMgaWQ9 ImVnMTAiPkV4YW1wbGUgMTA6IDxjb2RlPmNvdW50Zm9ybTwvY29kZT48L2gzPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBj YXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgICAgY291bnRmb3JtPSZxdW90OzE6Z2Fs X2E6c21kX2Fib3ZlLAogICAgICAge3RvdGFsaW1hZ2VzfTpnYWxfYywKICAgICAgIHNtZF9l dmVyeTozOiF7dG90YWxpbWFnZXN9OmdhbF9iJnF1b3Q7CiAgICAgY291bnRwb3M9JnF1b3Q7 YmVsb3cmcXVvdDsmZ3Q7CiZsdDt0eHA6dGh1bWJuYWlsIGlkPSZxdW90O3tpZH0mcXVvdDsg LyZndDsKJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Ob3Rl IHRoYXQgPGNvZGU+Y291bnRwb3M8L2NvZGU+IGlzIHNldCB0byA8Y29kZT5iZWxvdzwvY29k ZT4gaW4gdGhpcyBleGFtcGxlIHNvIGFsbCBvdXRwdXQgYXBwZWFycyA8ZW0+YWZ0ZXI8L2Vt PiB0aGUgZ2l2ZW4gaW1hZ2VzLiBJZiB5b3UgbWFkZSB0aGUgZm9sbG93aW5nIHRocmVlIGZv cm1zLCB5b3VyIHRhZyB3b3VsZCBzcGxpdCB0aGUgZ2FsbGVyeSBpbnRvICYjODIxNjtyb3dz JiM4MjE3OyBvZiAzIGltYWdlczo8L3A+CgoJPHA+Z2FsX2E6IDxjb2RlPiZsdDtkaXYgY2xh c3M9JnF1b3Q7bmV3cm93JnF1b3Q7Jmd0OzwvY29kZT48YnIgLz4KZ2FsX2I6IDxjb2RlPiZs dDsvZGl2Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7bmV3cm93JnF1b3Q7Jmd0OzwvY29kZT48 YnIgLz4KZ2FsX2M6IDxjb2RlPiZsdDsvZGl2Jmd0OzwvY29kZT48L3A+CgoJPHA+QnJlYWtp bmcgdGhlIDxjb2RlPmNvdW50Zm9ybTwvY29kZT4gYXR0cmlidXRlIGRvd24gaW50byBpdHMg Y29tcG9uZW50cywgeW91IGNhbiBzZWUgdGhhdDo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT4x OmdhbF9hOnNtZF9hYm92ZTwvY29kZT4gYWRkcyB0aGUgJiM4MjE2O25ld3JvdyYjODIxNzsg ZGl2IGFib3ZlIHRoZSBmaXJzdCBpbWFnZTwvbGk+CgkJPGxpPjxjb2RlPnt0b3RhbGltYWdl c306Z2FsX2M8L2NvZGU+IGFkZHMgdGhlIGNsb3NpbmcgZGl2IGJlbG93IHRoZSBsYXN0IGlt YWdlIG9uIHRoaXMgcGFnZTwvbGk+CgkJPGxpPjxjb2RlPnNtZF9ldmVyeTozOiF7dG90YWxp bWFnZXN9OmdhbF9iPC9jb2RlPiBhZGRzIGEgY2xvc2luZyBhbmQgdGhlbiBhbiBvcGVuaW5n IGRpdiBhZnRlciBldmVyeSAzcmQgaW1hZ2UsIDxlbT5leGNlcHQ8L2VtPiBvbiB0aGUgbGFz dCBpbWFnZS4gSWYgd2UgZGlkbiYjODIxNzt0IHB1dCB0aGUgZXhjZXB0aW9uIGluLCBhbmQg eW91IGhhZCAxMiB0aHVtYm5haWxzIGluIHlvdXIgZ2FsbGVyeSAod2hpY2ggaXMgZGl2aXNp YmxlIGJ5IDMhKSB5b3Ugd291bGQgc2VlIHRoZSBjb250ZW50cyBvZiBnYWwyIGFmdGVyIHRo ZSBsYXN0IGltYWdlIGFzIHdlbGw8L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImVnMTEiPkV4YW1w bGUgMTE6IFVzaW5nIGFuIG9uY2hhbmdlIGZvcm08L2gzPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5 PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7CiAgICAgb25jaGFuZ2U9JnF1b3Q7Y2F0ZWdvcnlf dGl0bGU6b2NfZm9ybSZxdW90OyZndDsKe29uY2hhbmdlOmNhdGVnb3J5X3RpdGxlfQombHQ7 YSBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9 JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+YW5kIGluIGZvcm0gPGNvZGU+b2NfZm9ybTwvY29kZT46 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2RpdiBp ZD0mcXVvdDt7Y2F0ZWdvcnl9JnF1b3Q7CiAgIGNsYXNzPSZxdW90O2NhdGVnb3J5JnF1b3Q7 Jmd0O3tjYXRlZ29yeV90aXRsZX0mbHQ7L2RpdiZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBp ZD0iZWcxMiI+RXhhbXBsZSAxMjogUG9ydGZvbGlvIGxhbmRpbmcgcGFnZTwvaDM+CgoJPHA+ SGVyZSB3ZSB3aWxsIHJlbmRlciBhIGdhbGxlcnkgZm9yIGVhY2ggYXJ0aXN0IG9uIGEgZ2Fs bGVyeSBzaXRlLiBBcnJhbmdlIHlvdXIgaW1hZ2UgY2F0ZWdvcmllcyBzbyB0aGV5IGFyZSBj aGlsZHJlbiBvZiBhIHBhcmVudCBpbWFnZSBjYXRlZ29yeTo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5wb3J0Zm9saW8KICB8LS0mZ3Q7IG1vbmV0CiAg fC0tJmd0OyB2YW5fZ29naAogIHwtLSZndDsgdHVybmVyCiAgfC0tJmd0OyBkYWxpCiAgfC0t Jmd0OyAuLi4KPC9jb2RlPjwvcHJlPgoKCTxwPlRoZW4gb2YgY291cnNlLCB1cGxvYWQgeW91 ciBpbWFnZXMgYW5kIGFzc2lnbiB0aGVtIHRvIHRoZSBhcHByb3ByaWF0ZSBhcnRpc3QgY2F0 ZWdvcnkuPC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5PSZxdW90O3BvcnRmb2xpbyZxdW90OyBz dWJsZXZlbD0mcXVvdDsxJnF1b3Q7CiAgICAgb25jaGFuZ2U9JnF1b3Q7Y2F0ZWdvcnlfdGl0 bGUmcXVvdDsKICAgICBvbmNoYW5nZXdyYXB0YWc9JnF1b3Q7aDMmcXVvdDsgdGh1bWJsaW1p dD0mcXVvdDsxJnF1b3Q7CiAgICAgZ3JvdXBsaW1pdD0mcXVvdDs1JnF1b3Q7IHNvcnQ9JnF1 b3Q7Y2F0ZWdvcnkgYXNjLCBkYXRlIGRlc2MmcXVvdDsKICAgICBvYmplY3Rmb3JtPSZxdW90 O2Z1bGxfbGluayZxdW90OyZndDsKe29uY2hhbmdlOmNhdGVnb3J5X3RpdGxlfQombHQ7YSBo cmVmPSZxdW90O3t1cmx9JnF1b3Q7IHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1 b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+SW4gRm9ybSA8Y29kZT5mdWxsX2xpbms8L2NvZGU+OjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6dGh1bWJu YWlsIGlkPSZxdW90O3tpZH0mcXVvdDsgLyZndDsKJmx0O3NwYW4mZ3Q7CiAgIFNlZSAmbHQ7 YSBocmVmPSZxdW90Oy9hcnRpc3RzL3tjYXRlZ29yeX0mcXVvdDsmZ3Q7YWxsIGltYWdlcyBi eSB7Y2F0ZWdvcnlfdGl0bGV9Jmx0Oy9hJmd0Oy4KJmx0Oy9zcGFuJmd0Owo8L2NvZGU+PC9w cmU+CgoJPHA+VGhhdCB3aWxsIGdyYWIgZWFjaCBhcnRpc3QgY2F0ZWdvcnkgYW5kIGRpc3Bs YXkgYSB0aHVtYm5haWwgb2YgdGhlIG1vc3QgcmVjZW50IHdvcmsgc3VibWl0dGVkIGJ5IGVh Y2ggYXV0aG9yIHVuZGVyIHRoZWlyIG93biBoZWFkaW5nLiBXaGVuIHlvdSBjbGljayB0aGUg dGh1bWJuYWlsIGl0IGxhdW5jaGVzIHRoZSBsaWdodGJveCBnYWxsZXJ5IGFuZCBhbGxvd3Mg eW91IHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIGZpdmUgbW9zdCByZWNlbnQgcGljdHVyZXMg c3VibWl0dGVkLiBCZW5lYXRoIHRoZSB0aHVtYm5haWwgaXMgYSBsaW5rIHRvIGFuIGluZGl2 aWR1YWwgYXJ0aWNsZSB0aGF0IGNvdWxkIHNob3cgdGhhdCBhcnRpc3RzJiM4MjE3O3MgY29t cGxldGUgd29ya3MgYW5kIGEgYmlvLjwvcD4KCgk8aDIgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdl bG9nPC9oMj4KCgk8cD5BbGwgYXZhaWxhYmxlIHZlcnNpb25zIGFuZCBjaGFuZ2VzIGFyZSBs aXN0ZWQgaGVyZS48L3A+CgoJPHA+PHN0cm9uZz5CZXRhPC9zdHJvbmc+PC9wPgoKCTx1bD4K CQk8bGk+MTQgRmViIDA4IHwgMC4xIHwgSW5pdGlhbCByZWxlYXNlICYjODIxMTsgSGFwcHkg VmFsZW50aW5lcyBEYXkgOi0pPC9saT4KCQk8bGk+MTkgRmViIDA4IHwgMC4yIHwgQWRkZWQg e2dhbGxlcnlpZH0gKHRoYW5rcyBybG9hZGVycm8pIGFuZCBzb21lIHNrZWxldG9uIGRvY3M8 L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPk9mZmljaWFsPC9zdHJvbmc+PC9wPgoKCTx1bD4K CQk8bGk+MTEgTWFyIDA4IHwgMC4zIHwgT2ZmaWNpYWwgcHVibGljIHJlbGVhc2UuIEZpeGVk IHNpbGx5IGVtcHR5IGZpZWxkIGJ1ZzsgYWRkZWQge2NvdW50ZXJ9LCB7aW5kZXh9IGFuZCB0 aGUgdG90YWxzIChhbGwgdGhhbmtzIGpha29iKTwvbGk+CgkJPGxpPjE1IE1hciAwOCB8IDAu MzEgfCBGaXhlZCBhIGNvdXBsZSBvZiB1bmRlZmluZWQgaW5kZXhlcyBhbmQgYWRkZWQge2Nh dGVnb3J5X3RpdGxlfSAodGhhbmtzIGpzdHViYnMpPC9saT4KCQk8bGk+MTcgTWFyIDA4IHwg MC4zMiB8IEZpeGVkIGFub3RoZXIgdW5kZWZpbmVkIGluZGV4IGFuZCByZW1vdmVkIGJvZ3Vz IGNhbGwgdG8gc21kX2xpYiAoYm90aCB0aGFua3Mgc2VjdW5kYXIpPC9saT4KCQk8bGk+MjEg TWFyIDA4IHwgMC4zMyB8IERpZCB2MC4zMSBwcm9wZXJseSwgaW5jbHVkaW5nIHRhYmxlIHBy ZWZpeCAodGhhbmtzIG5hcmRvKTwvbGk+CgkJPGxpPjAxIEFwciAwOCB8IDAuMzQgfCBGaXhl ZCA8c3BhbiBjbGFzcz0iY2FwcyI+U1FMPC9zcGFuPiBwYXJlbnRoZXNpcyBidWcgOyBhZGRl ZCBlbXB0eWNsYXNzIGFuZCB7bWF4aW1hZ2VzfSAodGhhbmtzIHRoZV9naG9zdCk8L2xpPgoJ CTxsaT4wOCBBcHIgMDggfCAwLjQgfCBDaGFuZ2VkIHRodW1iIHRvIGFsbG93IHRodW1iL2Z1 bGxzaXplIHN3YXBwaW5nIDsgQWRkZWQgdGh1bWJjaGFuZ2UsIHRodW1iY2hhbmdld3JhcHRh ZywgdGh1bWJjaGFuZ2VjbGFzcywge3RodW1iaW5kZXh9LCB7dGh1bWJjb3VudGVyfSBhbmQg dGhlIHtjaGFuZ2VkOip9IHJlcGxhY2VtZW50IHRhZ3MgKHRoYW5rcyBmdWxzKTwvbGk+CgkJ PGxpPjI2IE1heSAwOCB8IDAuNDEgfCBGaXhlZCBEaXJlY3Rvcnkgc2VwYXJhdG9yICh0aGFu a3MgY3VkYSkgOyBhZGRlZCByYXcgcGFnZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PnMgdG8gdGhlIG5hdiByZXBsYWNlbWVudCBhcnJheSBhbmQgbWFkZSB0aGUgbmF2IGFycmF5 IGF2YWlsYWJsZSBpbiB0aGUgc3RhbmRhcmQgcmVwbGFjZW1lbnRzIGFycmF5ICh0aGFua3Mg dmlzdWFscGVvcGxlKTwvbGk+CgkJPGxpPjI3IE1heSAwOCB8IDAuNDIgfCBBZGRlZCBwYWdl cG9zIGFuZCBtYWRlIHBhZ2UgYmxvY2tzIGluZGVwZW5kZW50IG9mIHRodW1iIGJsb2NrICh0 aGFua3MgZHVjaGFtcCk8L2xpPgoJCTxsaT4xMCBKdW4gMDggfCAwLjQzIHwgRml4ZWQgc29y dD0mIzgyMjA7Zml4ZWQmIzgyMjE7IHdoZW4gdXNpbmcgbGltaXQgKHRoYW5rcyByb2Jpbjc0 NikgOyBhZGRlZCBwZXItZ3JvdXAgb25jaGFuZ2Ugd3JhcHBpbmcgYW5kIGFsbG93ZWQgZml4 ZWQgc29ydGluZyBvZiBjYXRlZ29yaWVzICh0aGFua3MganN0dWJicykgOyBkZXByZWNhdGVk IHRodW1iY2hhbmdlKiBhbmQgcmVuYW1lZCBhcyBvbmNoYW5nZSogOyBmaXhlZCAkaWR4IGNv dW50ZXIgcHJvYmxlbTwvbGk+CgkJPGxpPjEwIEp1biAwOCB8IDAuNDQgfCBBdHRlbXB0ICMy IGF0IHBlci1ncm91cCBvbmNoYW5nZSB3cmFwcGluZyAodGhhbmtzIGFnYWluIGpzdHViYnMp PC9saT4KCQk8bGk+MTQgSnVsIDA4IHwgMC40NSB8IEZpeGVkIGxhY2sgb2Ygb3V0cHV0IHdo ZW4gbm90IHVzaW5nIGNhdGVnb3JpZXMgKHRoYW5rcyByb2Jpbjc0Nik8L2xpPgoJCTxsaT4x NiBOb3YgMDggfCAwLjQ2IHwgQWRkZWQgY29sbGF0ZWRlbGltICh0aGFua3MgY3VyaW91eikg OyBmaXhlZCAoSSBob3BlKSB0aGUgY2F0ZWdvcnkgLyBpZCBidWcgZnJvbSAwLjQ0IGFuZCAw LjQ1ICh0aGFua3Mgcm9iaW43NDYvbmFyZG8pPC9saT4KCQk8bGk+MTMgRmViIDA5IHwgMC41 IHwgUmVxdWlyZXMgc21kX2xpYiA7IGFkZGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3Nw YW4+IHN1cHBvcnQgKHRoYW5rcyBuZXQtY2FydmVyKSA7IGFkZGVkIHN1cHBvcnQgZm9yIGRp c3BsYXlpbmcgdW5jYXRlZ29yaXNlZCBpbWFnZXMgKHRoYW5rcyB4emFtZW4pIDsgJiM4MjE2 Oz8mIzgyMTc7IHZhcnMgZXhwYW5kZWQgdG8gbGluayAvIGltYWdlIC8gZmlsZSAvIDxjb2Rl PiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+IGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiB2YXJpYWJsZSA7IG5ldyBhdHRyaWJ1dGVzOiA8Y29kZT5lc2NhcGU8L2Nv ZGU+LCA8Y29kZT5odG1sX2lkPC9jb2RlPiwgPGNvZGU+Zm9ybWF0PC9jb2RlPiwgPGNvZGU+ Z210PC9jb2RlPiwgPGNvZGU+bGFuZzwvY29kZT4gKHRoYW5rcyBtYW5pcXVpKSwgPGNvZGU+ c3RyaWN0ZmllbGRzPC9jb2RlPiA7IGltcHJvdmVkIDxjb2RlPntvYmplY3R9PC9jb2RlPiBz dXBwb3J0IGFuZCBhZGRlZCA8Y29kZT5vYmplY3Rmb3JtPC9jb2RlPiAodGhhbmtzIHR5ZS9y dnR1cm5hZ2UpIDsgPGNvZGU+e3RpdGxlfTwvY29kZT4gPT0gPGNvZGU+e2NhcHRpb259PC9j b2RlPiBhdCBsYXN0ISA7IHJlbW92ZWQgPGNvZGU+dGh1bWJjaGFuZ2U8L2NvZGU+KiBhdHRy aWJ1dGVzIDsgaW1wcm92ZWQgc3VwcG9ydCBmb3IgdGFibGUgZXh0ZW5zaW9ucyAodmlhIHRo ZSA8Y29kZT5jb2x1bW5zPC9jb2RlPiBhdHRyaWJ1dGU6IHRoYW5rcyBSZWRGb3gpIDsgYWRk ZWQgPGNvZGU+c21kX2V2ZXJ5PC9jb2RlPiBzeW50YXggdG8gPGNvZGU+b25jaGFuZ2U8L2Nv ZGU+ICh0aGFua3MgamFrb2IpIDsgZml4ZWQgb2Zmc2V0IGJ1ZyAodGhhbmtzIGZlcmFnbm9s aSk8L2xpPgoJCTxsaT4wMSBNYXIgMDkgfCAwLjUxIHwgQWRkZWQgPGNvZGU+Y291bnRmb3Jt PC9jb2RlPiBhbmQgPGNvZGU+Y291bnRwb3M8L2NvZGU+IDsgZml4ZWQgPGNvZGU+e2hhc3Ro dW1ifTwvY29kZT4gd2FybmluZzwvbGk+CgkJPGxpPjE2IE5vdiAwOSB8IDAuNTIgfCA8c3Bh biBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA0LjIuMCBvbmx5IDsgYWRkZWQgZGF0YWJhc2Ug dGh1bWJuYWlsIGhlaWdodCBhbmQgd2lkdGggc3VwcG9ydCA7IGFkZGVkIDxjb2RlPmFzcGVj dDwvY29kZT4sIDxjb2RlPmRpbWVuc2lvbnM8L2NvZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+ LCA8Y29kZT5leHRlbnNpb248L2NvZGU+IGFuZCA8Y29kZT5pbWdzaXplPC9jb2RlPiBhdHRy aWJ1dGVzIDsgZml4ZWQgcXVvdGUgcGFyc2luZyBpbiA8Y29kZT5lc2NhcGU8L2NvZGU+IGF0 dHJpYnV0ZSBhbmQgd2FybmluZyB3aGVuIHVzaW5nIDxjb2RlPmZpeGVkPC9jb2RlPiBzb3J0 aW5nIChib3RoIHRoYW5rcyBtYW5pcXVpKTwvbGk+CgkJPGxpPjAxIEphbiAxMCB8IDAuNTMg fCBBZGRlZCBvbmNoYW5nZSBmb3JtIGNhcGFiaWxpdHkgKHRoYW5rcyBNYXR0RCk8L2xpPgoJ CTxsaT4wMSBGZWIgMTAgfCAwLjU0IHwgTXVsdGlwbGUgaW1hZ2VzIG5vdCBkaXNwbGF5ZWQg aWYgbXVsdGlwbGUgY2F0ZWdvcmllcyBleGlzdCB3aXRoIHRoZSBzYW1lIG5hbWUgYW5kIGRp ZmZlcmVudCB0aXRsZTwvbGk+CgkJPGxpPjAxIE1hciAxMCB8IDAuNTUgfCBBZGRlZCA8Y29k ZT5uYW1lPC9jb2RlPiBmaWx0ZXJpbmc8L2xpPgoJCTxsaT4xMCBNYXIgMTAgfCAwLjYgfCBT aW1wbGlmaWVkIHF1ZXJ5IHRvIGVsaW1pbmF0ZSBlcnJvcnMgd2l0aCB1bmNhdGVnb3Jpc2Vk IGltYWdlcyBiZWluZyBvbWl0dGVkIGZyb20gdGhlIHJlc3VsdHM7IGFsbG93ZWQgY291bnRm b3JtIHJhbmdlcyA7IGFkZGVkIDxjb2RlPmdyb3VwbGltaXQ8L2NvZGU+PC9saT4KCTwvdWw+ CgoJPGgyIGlkPSJjcmVkaXRzIj5DcmVkaXRzPC9oMj4KCgk8cD5UaGlzIHBsdWdpbiB3b3Vs ZG4mIzgyMTc7dCBoYXZlIGV4aXN0ZWQgd2l0aG91dCB0aGUgYXdlc29tZSBtaW5kIG9mIFJv YmVydCBXZXR6bG1heXIuIEhpcyB3ZXRfZm9yX2VhY2hfaW1hZ2UgcGx1Z2luIGlzIHRydWUg Z2VuaXVzOyB0aGlzIHNpbXBseSBzdGFuZHMgb24gdGhlIHNob3VsZGVycyBvZiB0aGF0IGlk ZWEgYW5kIHJvbGxzIGluIGEgc291cGVkIHVwIHZlcnNpb24gb2YgdGhlIHRodW1ibmFpbCBn ZW5lcmF0aW9uIGVuZ2luZSBmcm9tIHNtZF9zbGltYm94LiBUbyB0aGF0IGVuZCwgdGhlIHBs dWdpbiBpcyBhbHNvIGluZGVidGVkIHRvIGFueW9uZSB3aG8gaGFzIHBvc3RlZCBmZWF0dXJl cyBvciBidWcgcmVwb3J0cyB0byBtZSBvciB0aGUgc21kX3NsaW1ib3ggdGhyZWFkLiBZb3Um IzgyMTc7cmUgYWxsIG1hcnZlbGxvdXMuPC9wPgoKPC9kaXY+CjwhLS0gKioqIEJFR0lOIFBM VUdJTiBDU1MgKioqIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBs aW5lLWhlaWdodDoxLjUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBm b250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNr Z3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdl aWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29sb3I6 ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFkZGlu ZzoxMHB4OyB9CiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQgeyBjb2xv cjogIzAwYzsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29s aWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIsICNzbWRf aGVscCBhOmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJv cmRlci1ib3R0b206IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21k X2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlm OyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBib3Jk ZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAj MzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsg Y29sb3I6ICMwNzk7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVy LXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJj YXNlOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30KI3NtZF9oZWxwIGg0IHsgZm9udDog Ym9sZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJn aW46IDEwcHggMCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAu YXRubSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMzM2Q7IH0KI3NtZF9oZWxwIC5tYW5k IHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRfaGVs cCB0YWJsZSB7d2lkdGg6OTAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206 MWVtO30KI3NtZF9oZWxwIHRkLCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5 OTsgcGFkZGluZzouNWVtIDA7fQojc21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1 YXJlOyB9CiNzbWRfaGVscCAucmVxdWlyZWQge2NvbG9yOnJlZDt9CiNzbWRfaGVscCBsaSB7 IG1hcmdpbjo1cHggMjBweCA1cHggMzBweDsgfQojc21kX2hlbHAgLmJyZWFrIHsgbWFyZ2lu LXRvcDo1cHg7IH0KPC9zdHlsZT4KPCEtLSAqKiogRU5EIFBMVUdJTiBDU1MgKioqIC0tPgoi O3M6MzoibWQ1IjtzOjMyOiI2M2QyZTk0ZGM3N2ZkMGE1NTFmODhlYjQ4MjJiYTcwYiI7fQ==