# Name: smd_gallery v0.5 # 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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjExOiJzbWRfZ2FsbGVyeSI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6MzoiMC41IjtzOjExOiJkZXNjcmlwdGlvbiI7czo2 OToiQShub3RoZXIpIHRodW1ibmFpbCBnYWxsZXJ5L3NsaWRlc2hvdyBjcmVhdG9yIHdpdGgg dW5yZWFsIGZsZXhpYmlsaXR5IjtzOjQ6ImNvZGUiO3M6MjgzNDA6InJlcXVpcmVfcGx1Z2lu KCdzbWRfbGliJyk7DQoNCi8vIE1MUCBzdXBwb3J0DQpnbG9iYWwgJHNtZF9nYWxsTGFuZzsN CiRzbWRfZ2FsbFN0ciA9IGFycmF5KA0KCSduYXZmaXJzdCcgPT4gJ0ZpcnN0JywNCgknbmF2 bGFzdCcgPT4gJ0xhc3QnLA0KCSduYXZwcmV2JyA9PiAnJmxhcXVvOycsDQoJJ25hdm5leHQn ID0+ICcmcmFxdW87JywNCik7DQokc21kX2dhbGxMYW5nID0gbmV3IHNtZF9NTFAoJ3NtZF9n YWxsZXJ5JywgJ3NtZF9nYWxsJywgJHNtZF9nYWxsU3RyKTsNCg0KZnVuY3Rpb24gc21kX2dh bGxlcnkoJGF0dHMsICR0aGluZz0nJykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRp Y2xlLCAkaW1nX2RpciwgJGRhdGVmb3JtYXQsICRzbWRfZ2FsbExhbmcsICRsMTBuX2xhbmd1 YWdlOw0KDQoJLy8gUGx1Z2luIG9wdGlvbnMNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkn Y29sdW1ucycgPT4gJycsDQoJCSdkZWxpbScgPT4gJywnLA0KCQkncGFyYW1kZWxpbScgPT4g JzonLA0KCQknY29sbGF0ZWRlbGltJyA9PiAnLCcsDQoJCSdzdHJpY3RmaWVsZHMnID0+ICcw JywNCgkJJ2Zvcm0nID0+ICcnLA0KCQknaWQnID0+ICcnLA0KCQknY2F0ZWdvcnknID0+ICcn LA0KCQknZGlyZWN0b3J5JyA9PiAnJywNCgkJJ21hdGNoJyA9PiAnJywNCgkJJ3N1YmxldmVs JyA9PiAnMCcsDQoJCSdlc2NhcGUnID0+ICdhbHQsIHRpdGxlLCBjYXB0aW9uJywNCgkJJ3Nv cnQnID0+ICcnLA0KCQknb2Zmc2V0JyA9PiAnMCcsDQoJCSdsaW1pdCcgPT4gJzAnLA0KCQkn bWF4bGltaXQnID0+ICc5OTk5OScsDQoJCSd0aHVtYmxpbWl0JyA9PiAnOTk5OTknLA0KCQkn dGh1bWJvZmZzZXQnID0+ICcwJywNCgkJJ3RodW1iJyA9PiAnMDoxJywNCgkJJ3RodW1ic2l6 ZScgPT4gJycsDQoJCSdvbmNoYW5nZScgPT4gJ2NhdGVnb3J5JywNCgkJJ29uY2hhbmdld3Jh cHRhZycgPT4gJycsDQoJCSdvbmNoYW5nZWNsYXNzJyA9PiAnJywNCgkJJ29iamVjdGZvcm0n ID0+ICcnLA0KCQknZ3JvdXB0YWcnID0+ICcnLA0KCQknZ3JvdXBjbGFzcycgPT4gJycsDQoJ CSd0ZXh0JyA9PiAnJywNCgkJJ2Zvcm1hdCcgPT4gJGRhdGVmb3JtYXQsDQoJCSdnbXQnID0+ ICcnLA0KCQknbGFuZycgPT4gJycsDQoJCSdjb2xsYXRlJyA9PiAnJywNCgkJJ2NvbWJvJyA9 PiAnJywNCgkJJ3BhZ2luZycgPT4gJzAnLA0KCQkncGFnZWZvcm0nID0+ICcnLA0KCQkncGFn ZXBvcycgPT4gJ2JlbG93JywNCgkJJ25hdndyYXB0YWcnID0+ICd1bCcsDQoJCSduYXZicmVh aycgPT4gJ2xpJywNCgkJJ25hdmNsYXNzJyA9PiAnc21kX2dhbGxlcnlfbmF2JywNCgkJJ2Vt cHR5Y2xhc3MnID0+ICdlbXB0eScsDQoJCSdnYWxsZXJ5aWQnID0+ICc/NDo2JywNCgkJJ3dy YXB0YWcnID0+ICcnLA0KCQknaHRtbF9pZCcgPT4gJycsDQoJCSdicmVhaycgPT4gJycsDQoJ CSdjbGFzcycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gJzAnLA0KCSksICRhdHRzKSk7DQoNCgkv LyBDYXRlZ29yeSByZWxpZXMgb24gd2hldGhlciBpZCBoYXMgYmVlbiBzcGVjaWZpZWQgb3Ig bm90Lg0KCS8vIGxBdHRzKCkgd29uJ3QgbGV0IHVzIGhhbmRsZSB0aGlzIGxvZ2ljIHNvIGl0 IGhhcyB0byBiZSBkb25lIG1hbnVhbGx5DQoJJGF0dGVtcHRNYXRjaCA9IChlbXB0eSgkY2F0 ZWdvcnkpICYmIGVtcHR5KCRpZCkpID8gZmFsc2UgOiB0cnVlOw0KCSRjYXRlZ29yeSA9IGlz c2V0KCRjYXRlZ29yeSkgPyBkb1NsYXNoKCRjYXRlZ29yeSkgOiAoKCRpZD09JycpID8gJHBy ZXRleHRbJ2MnXTogJycpOw0KCSRzb3J0ID0gKCRzb3J0KSA/ICRzb3J0IDogKCAoJGlkKSA/ ICdpZCcgOiAnY2F0ZWdvcnknICk7DQoNCgkvLyAqKiBMT09LVVAgVEFCTEVTDQoJLy8gJGZp ZWxkTWFwIGhvbGRzIGRhdGFiYXNlIGNvbHVtbiBhcyBrZXksIGFuZCByZXBsYWNlbWVudCBp ZGVudGlmaWVyIGFzIHZhbHVlLg0KCS8vIEFkZGl0aW9uYWwgY29scyBjb3BpZWQgdG8gJGV4 dHJhTWFwIGZvciBpdGVyYXRpb24gd2hpbGUgY3JlYXRpbmcgcmVwbGFjZW1lbnRzLg0KCS8v IFVzZSBhcnJheV9zZWFyY2ggdG8gZmluZCBpZiB2YWx1ZSBleGlzdHMgYW5kIHJldHVybiBj b3JyZWN0IGtleSBmb3IgdXNlIGluIGRiIGNhbGxzL2FycmF5IHJlZnMuDQoJJGZpZWxkTWFw ID0gYXJyYXkoKTsNCgkkZXh0cmFNYXAgPSBhcnJheSgpOw0KCSRjb3JlQ29scyA9IGFycmF5 KCJuYW1lIiwgImlkIiwgImFsdCIsICJjYXB0aW9uIiwgImNhdGVnb3J5IiwgImF1dGhvciIs ICJkYXRlIiwgImV4dCIsICJ3OndpZHRoIiwgImg6aGVpZ2h0IiwgInRodW1ibmFpbDpoYXN0 aHVtYiIpOw0KCSRtbHBGaWVsZHMgPSBhcnJheSgiYWx0IiwgImNhcHRpb24iKTsgLy8gTWFu dWFsbHkgY3JlYXRlIHRoZSBNTFAgY29sdW1uIG5hbWVzLCBzaW5jZSB1c2luZyBnZXRSb3dz KCkgbGF0ZXIgZG9lcyBub3QuIENhdGVnb3J5IHRpdGxlIGFsc28gaGFzIHRoZSBzYW1lIHRy ZWF0bWVudA0KCSR0aGlzbGFuZyA9IChpc3NldCgkbDEwbl9sYW5ndWFnZVsnbG9uZyddKSkg PyAkbDEwbl9sYW5ndWFnZVsnbG9uZyddIDogTEFORzsNCgkkZGZsdF90YmwgPSBQRlguInR4 cF9pbWFnZSI7DQoJJGNvbHVtbnMgPSBkb19saXN0KCRjb2x1bW5zKTsNCglmb3JlYWNoIChh cnJheV9tZXJnZSgkY29yZUNvbHMsICRjb2x1bW5zKSBhcyAkY29saW5mbykgew0KCQkkY29s Yml0ID0gZG9fbGlzdCgkY29saW5mbywgIjoiKTsNCgkJJGNvbHRibCA9IGRvX2xpc3QoJGNv bGJpdFswXSwgIi4iKTsNCg0KCQlpZiAoJGNvbGJpdFswXSA9PSAnJykgY29udGludWU7DQoN CgkJaWYgKGNvdW50KCRjb2x0YmwpID4gMSkgew0KCQkJJHRibCA9ICRjb2x0YmxbMF07DQoJ CQkkY29sbmFtZSA9ICRjb2x0YmxbMV07DQoJCX0gZWxzZSB7DQoJCQkkdGJsID0gJGRmbHRf dGJsOw0KCQkJJGNvbG5hbWUgPSAkY29sdGJsWzBdOw0KCQl9DQoJCSRjb2xpZCA9IChjb3Vu dCgkY29sYml0KSA+IDEpID8gJGNvbGJpdFsxXSA6ICRjb2xuYW1lOw0KCQkkZmllbGRNYXBb KCgkdGJsKT8kdGJsLicuJzonJykuKCAoaXNzZXQoJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSkg JiYgaW5fYXJyYXkoJGNvbG5hbWUsICRtbHBGaWVsZHMpKSA/IF9sMTBuX21ha2VfZmllbGRf bmFtZSgkY29sbmFtZSwgJHRoaXNsYW5nKS4gJyBBUyAnLiRjb2xuYW1lICA6ICRjb2xuYW1l ICldID0gJGNvbGlkOw0KCQlpZiAoIWluX2FycmF5KCRjb2xpbmZvLCAkY29yZUNvbHMpKSB7 DQoJCQkkZXh0cmFNYXBbJGNvbG5hbWVdID0gJGNvbGlkOw0KCQl9DQoJfQ0KCSRmaWVsZE1h cCA9IGFycmF5X3VuaXF1ZSgkZmllbGRNYXApOw0KDQoJLy8gSGFuZGxlIGZvcm1zIGFuZCBz ZXQgYSBkZWZhdWx0IHRhZyBpZiBub25lIHNwZWNpZmllZA0KCSR0aGluZyA9IChlbXB0eSgk Zm9ybSkpID8gJHRoaW5nIDogZmV0Y2hfZm9ybSgkZm9ybSk7DQoJJHRoaW5nID0gKGVtcHR5 KCR0aGluZykpID8gJzxhIGhyZWY9Int1cmx9IiBhbHQ9InthbHR9Ij48dHhwOmltYWdlIGlk PSJ7aWR9IiAvPjwvYT4nIDogJHRoaW5nOw0KCSRvYmplY3Rmb3JtID0gKGVtcHR5KCRvYmpl Y3Rmb3JtKSkgPyAnJyA6IGZldGNoX2Zvcm0oJG9iamVjdGZvcm0pOw0KDQoJLy8gUGFnaW5n IGluaXQNCgkkcGFnZVBvc0FsbG93ZWQgPSBhcnJheSgiYmVsb3ciLCAiYWJvdmUiKTsNCgkk cGFnZW91dCA9IGFycmF5KCk7DQoJaWYgKCRwYWdlZm9ybSkgew0KCQkkcGFnaW5nID0gMTsN CgkJJHBhZ2Vmb3JtID0gZmV0Y2hfZm9ybSgkcGFnZWZvcm0pOw0KCQkkcGFnZXBvcyA9IGRv X2xpc3QoJHBhZ2Vwb3MsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRwYWdlcG9zIGFzICRwYWdl aXRlbSkgew0KCQkJJHBhZ2VvdXRbXSA9IChpbl9hcnJheSgkcGFnZWl0ZW0sICRwYWdlUG9z QWxsb3dlZCkpID8gJHBhZ2VpdGVtIDogJHBhZ2VQb3NBbGxvd2VkWzBdOw0KCQl9DQoJfQ0K DQoJLy8gb25jaGFuZ2UgdmVyaWZpY2F0aW9uDQoJJG9uY2hhbmdlID0gZG9fbGlzdCgkb25j aGFuZ2UsICRkZWxpbSk7DQoJJG9uY2hhbmdlID0gKCRvbmNoYW5nZVswXSA9PSAiIikgPyBh cnJheSgpIDogJG9uY2hhbmdlOw0KCSRyZXNldE9wdHMgPSBhcnJheSgpOw0KCWZvcmVhY2gg KCRvbmNoYW5nZSBhcyAkcmVzZXRPcHQpIHsNCgkJJHJlc2V0T3B0c1skcmVzZXRPcHRdID0g IiI7DQoJfQ0KDQoJLy8gRXNjYXBpbmcNCgkkc3BjID0gKCRzdHJpY3RmaWVsZHMpID8gMCA6 IDE7DQoJJGVzY2FwZXMgPSBkb19saXN0KCRlc2NhcGUsICRkZWxpbSk7DQoJZm9yZWFjaCAo JGVzY2FwZXMgYXMgJGlkeCA9PiAkdmFsKSB7DQoJCWlmICgkdmFsID09ICcnKSB7DQoJCQl1 bnNldCgkZXNjYXBlc1skaWR4XSk7DQoJCX0NCgl9DQoNCgkvLyBUaGUgZ2FsbGVyeSBpZGVu dGlmaWVyIGlzIHVzZWQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgbmV4dC9wcmV2IHRodW1ibmFp bCBwYWdlIGxpbmtzDQoJJGdhbGxJRCA9ICcnOw0KCWlmICgkZ2FsbGVyeWlkID09ICcnIHx8 IHN1YnN0cigkZ2FsbGVyeWlkLDAsMSkgPT0gIj8iKSB7DQoJCS8vIEdlbmVyYXRlIGEgKGZh aXJseSBsaWtlbHkpIHVuaXF1ZSBJRCBmb3IgdGhpcyBnYWxsZXJ5IGluc3RhbmNlDQoJCSRn YWxsVG1wID0gbWQ1KCRjYXRlZ29yeS4kaWQuJGRpcmVjdG9yeS4kbWF0Y2guJHN1YmxldmVs LiRzb3J0LiRsaW1pdC4kbWF4bGltaXQpOw0KCQlsaXN0KCRnYWxsTGVuLCAkZ2FsbFNraXAp ID0gZXhwbG9kZSgiOiIsIHN1YnN0cigkZ2FsbGVyeWlkLDEpKTsNCgkJJGdhbGxMZW4gPSAg KGVtcHR5KCRnYWxsTGVuKSkgPyAiNCIgOiAkZ2FsbExlbjsNCgkJJGdhbGxTa2lwID0gIChl bXB0eSgkZ2FsbFNraXApKSA/ICIxIiA6ICRnYWxsU2tpcDsNCgkJZm9yICgkaWR4ID0gMCwg JGNudCA9IDA7ICRjbnQgPCAkZ2FsbExlbjsgJGNudCsrLCAkaWR4ID0gKCgkaWR4KyRnYWxs U2tpcCkgJSBzdHJsZW4oJGdhbGxUbXApKSkgew0KCQkJJGdhbGxJRCAuPSAkZ2FsbFRtcFsk aWR4XTsNCgkJfQ0KCX0gZWxzZSB7DQoJCSRnYWxsSUQgPSAkZ2FsbGVyeWlkOw0KCX0NCgkk Z2FsbElEID0gInNtZF9nbHJ5XyIuJGdhbGxJRDsgLy8gQXZvaWQgKGFscmVhZHkgaW5jcmVk aWJseSB1bmxpa2VseSkgbmFtZXNwYWNlIGNsYXNoZXMNCg0KCS8vIFNldCB1cCB0aGUgdmFy aWFibGVzIGZyb20gdGhlIHRodW1iIG9wdGlvbi4NCgkvLyBEb24ndCB1c2UgcGFyYW1kZWxp bSBoZXJlIG9yIHRoZSBkZWZhdWx0IG9wdGlvbiBicmVha3MNCgkkdGh1bWJPcHRzID0gZG9f bGlzdCgkdGh1bWIsICI6Iik7DQoJaWYgKGNvdW50KCR0aHVtYk9wdHMpID09IDEpIHsNCgkJ JGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJt b2QgPSAidCI7DQoJfSBlbHNlIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAx KSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJtb2QgPSAoJHRodW1iT3B0c1sxXSA9PSAxKSA/ICJ0 IiA6ICIiOw0KCX0NCg0KCS8vIFRoZSBtYW5uZXIgb2Ygb2J0YWluaW5nIGZpbGVzIGRpZmZl cnMgaWYgdXNpbmcgZGlyZWN0b3J5IHZzIGNhdGVnb3J5L2lkDQoJJHJzID0gYXJyYXkoKTsN CglpZiAoJGRpcmVjdG9yeSkgew0KCQkkcnMgPSBzbWRfZG9EaXJlY3RvcnkoJGRpcmVjdG9y eSwgMCwgJHN1YmxldmVsLCAkbWF0Y2gsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJGFsbElt YWdlcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJz LCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGltaXQgPSAo JGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdDsNCgkJJHBvc3RPcmRlciA9IGFycmF5 KCk7DQoJCSRmaXhlZE9yZGVyID0gMDsNCgkJJHJhbmRzb3J0ID0gZmFsc2U7DQoJfSBlbHNl IHsNCgkJLy8gUHJvY2VzcyBjYXRlZ29yaWVzL0lEcyBhbmQgbWFrZSB1cCB0aGUgY3J1eCBv ZiB0aGUgd2hlcmUgY2xhdXNlLg0KCQkvLyBDbGF1c2Ugb3JkZXIgPSBJRHMgT1IgY2F0cyBB TkQgIWNhdHMgQU5EICFJRHMNCgkJJGNsYXVzZVtdID0gJzE9MSc7DQoJCSRjbGF1c2VPUiA9 IGFycmF5KCk7DQoNCgkJLy8gU3Vycm91bmQgZWFjaCBlbnRyeSBpbiB0aGUgSUQgbGlzdCB3 aXRoIHF1b3RlcyBhbmQgbWFrZSBhbiBTUUwgImluIiBsaXN0DQoJCSRzdWJpbmZvID0gKCRz dWJsZXZlbCkgPyAiaW1hZ2U6Ii4kc3VibGV2ZWwgOiAnJzsNCgkJbGlzdCgkaWRpbmMsICRp ZGV4YykgPSBzbWRfZG9MaXN0KCRpZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxpbSwgJHNwYyk7 DQoJCWxpc3QoJGNhdGluYywgJGNhdGV4YykgPSBzbWRfZG9MaXN0KCRjYXRlZ29yeSwgZmFs c2UsICRzdWJpbmZvLCB0cnVlLCAkZGVsaW0sICRzcGMpOw0KCQlpZiAoJGlkaW5jKSB7DQoJ CQkkY2xhdXNlT1JbXSA9IFBGWC4ndHhwX2ltYWdlLmlkIElOICgnLmltcGxvZGUoIiwiLCAk aWRpbmMpLicpJzsNCgkJfQ0KCQlpZiAoJGNhdGluYykgew0KCQkJJGNsYXVzZU9SW10gPSBQ RlguJ3R4cF9pbWFnZS5jYXRlZ29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYykuJykn Ow0KCQl9DQoJCWlmICghZW1wdHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0gJyAo Jy5pbXBsb2RlKCIgT1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoNCgkJJGNsYXVzZSA9 IGltcGxvZGUoIiBBTkQgIiwgJGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMpID8g JyBBTkQgJy5QRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgiLCIs ICRjYXRleGMpLicpJyA6ICcnOw0KCQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBBTkQgJy5Q RlguJ3R4cF9pbWFnZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4YykuJyknIDog Jyc7DQoNCgkJLy8gSWYgYSBjYXRlZ29yeS9pZCBvcHRpb24gd2FzIGNob3NlbiBhbmQgdGhl eSBtYXRjaGVkIG5vdGhpbmcsIHVzZSBhIGJvZ3VzIGNhdGVnb3J5IHRoYXQgc2hvdWxkIG5v dCBleGlzdC4NCgkJLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHBsdWdpbiBkb2VzIHRoZSBl eHBlY3RlZCB0aGluZyBvZiBtYXRjaGluZyBub3RoaW5nIGluIHRoZSBldmVudCBpdCBmaW5k cyBub3RoaW5nLg0KCQlpZiAoJGNsYXVzZSA9PSAiMT0xIiAmJiAkYXR0ZW1wdE1hdGNoKSB7 DQoJICAJCSRjbGF1c2UgPSBQRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSA9ICJzbWRfJyAubXRf cmFuZCgpLiAnIic7DQoJCX0NCg0KCQkkY2xhdXNlID0gJygnLnN0cl9yZXBsYWNlKCdTTURf RU1QVFknLCAnJywgJGNsYXVzZSkuJyknOw0KDQoJCWlmICgkZGVidWcgPiAxKSB7DQoJCQll Y2hvICIrKyBJTkNMVURFRC9FWENMVURFRCBJRHMgQU5EIENBVHMgKysiOw0KCQkJaWYgKCRp ZGluYykgZG1wKCRpZGluYyk7DQoJCQlpZiAoJGlkZXhjKSBkbXAoJGlkZXhjKTsNCgkJCWlm ICgkY2F0aW5jKSBkbXAoJGNhdGluYyk7DQoJCQlpZiAoJGNhdGV4YykgZG1wKCRjYXRleGMp Ow0KCQl9DQoNCgkJLy8gQ29udmVydCB0aGUgc29ydCBpbnRvIGEgdmFsaWQgc29ydGluZyBo aWVyYXJjaHkuDQoJCS8vIE5vdGUgdGhhdCByYW5kb20gaXMgYSBzcGVjaWFsIGNhc2UgYW5k IHRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHk6DQoJCS8vICAxKSBBbnl0aGluZyBhcHBlYXJp bmcgYmVmb3JlIHJhbmRvbSBpcyBwYXNzZWQgdG8gdGhlIGRhdGFiYXNlIHF1ZXJ5IGZvciBv cmRlcmluZw0KCQkvLyAgMikgQXMgc29vbiBhcyByYW5kb20gaXMgZW5jb3VudGVyZWQsIHRo ZSByZXN0IG9mIHRoZSBzb3J0IHN0cmluZyBpcyBpZ25vcmVkLg0KCQkvLyAgICAgVGhlIHJl c3VsdHNldCB3aWxsIGJlIHNvcnRlZCByYW5kb21seSBpbnN0ZWFkDQoJCS8vICAzKSBJZiBy YW5kb20gYXBwZWFycyBmaXJzdCBpbiB0aGUgbGlzdCwgdGhlIGRhdGEgaXMgcmV0cmlldmVk IHJhbmRvbWx5IHRoZW4gdGhlDQoJCS8vICAgICByZW1haW5pbmcgb3B0aW9ucyBzb3J0IHRo ZSByZXN1bHRzZXQNCgkJJGNsYXVzZVNvcnQgPSBhcnJheSgpOw0KCQkkcG9zdE9yZGVyID0g YXJyYXkoKTsNCgkJJHJ1bGUgPSAic3FsIjsNCgkJJHBvc3RQcmVmaXggPSAiU09SVF8iOw0K CQkkZml4ZWRPcmRlciA9ICRyYW5kc29ydCA9IGZhbHNlOw0KCQkkc29ydCA9IGRvX2xpc3Qo JHNvcnQsICRkZWxpbSk7DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkc29ydCk7 ICRpZHgrKykgew0KCQkJJHNvcnRfZGlyID0gZXhwbG9kZSgnICcsICRzb3J0WyRpZHhdKTsN CgkJCSRkaXJlY3Rpb24gPSAkY29sUmVmID0gJyc7DQoJCQlpZiAoY291bnQoJHNvcnRfZGly KSA8PSAxKSB7DQoJCQkJJHNvcnRfZGlyWzFdID0gImFzYyI7DQoJCQl9DQoJCQlpZiAoJHJ1 bGUgPT0gInNxbCIpIHsNCgkJCQkkZGlyZWN0aW9uID0gKCRzb3J0X2RpclsxXSA9PSAiZGVz YyIpID8gJyBkZXNjJyA6ICcgYXNjJzsNCgkJCX0gZWxzZSB7DQoJCQkJJGRpcmVjdGlvbiA9 ICgkc29ydF9kaXJbMV0gPT0gImRlc2MiKSA/ICRwb3N0UHJlZml4LidERVNDJyA6ICRwb3N0 UHJlZml4LidBU0MnOw0KCQkJfQ0KDQoJCQlzd2l0Y2ggKCRzb3J0X2RpclswXSkgew0KCQkJ CWNhc2UgJ3JhbmRvbSc6DQoJCQkJCSRydWxlID0gInBvc3QiOw0KCQkJCQlpZiAoJGlkeCA9 PSAwKSB7DQoJCQkJCQkkY2xhdXNlU29ydFtdID0gJ3JhbmQoKSc7DQoJCQkJCX0gZWxzZSB7 DQoJCQkJCQkkcmFuZHNvcnQgPSB0cnVlOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNh c2UgJ2ZpeGVkJzoNCgkJCQkJLy8gJ2ZpeGVkJyBvbmx5IHdvcmtzIG9uIGlkcyBvciBjYXRl Z29yaWVzDQoJCQkJCSRmaXhlZE9yZGVyID0gKCRpZCA9PSAnJyAmJiAkY2F0ZWdvcnkgPT0g JycpID8gZmFsc2UgOiB0cnVlOw0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJCQkk Y29sUmVmID0gYXJyYXlfc2VhcmNoKCRzb3J0X2RpclswXSwgJGZpZWxkTWFwKTsNCgkJCQkJ JGNvbE5hbWUgPSAkZmllbGRNYXBbJGNvbFJlZl07DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJ aWYgKCRydWxlID09ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJ JGNsYXVzZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCQl9DQoJCQl9IGVsc2Ug ew0KCQkJCWlmICghJHJhbmRzb3J0KSB7DQoJCQkJCWlmICgkY29sUmVmICE9ICcnKSB7DQoJ CQkJCQkkcG9zdE9yZGVyW10gPSBhcnJheSgiY29sIiA9PiAkY29sTmFtZSwgInNvcnQiID0+ ICRkaXJlY3Rpb24pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJaWYgKGNvdW50 KCRjbGF1c2VTb3J0KSA+IDApIHsNCgkJCSRjbGF1c2UgLj0gJyBPUkRFUiBCWSAnIC4gaW1w bG9kZSgiLCIsJGNsYXVzZVNvcnQpOw0KCQl9DQoJCWlmICgkZGVidWcgPiAwKSB7DQoJCQll Y2hvICIrKyBXSEVSRSBDTEFVU0UgKysiOw0KCQkJZG1wKCRjbGF1c2UpOw0KCQl9DQoJCS8v IFRoZSBkYXRhYmFzZSBmaWVsZHMgcmVxdWlyZWQNCgkJJGZpZWxkcyA9IGltcGxvZGUoIiwi LCBhcnJheV9rZXlzKCRmaWVsZE1hcCkpOw0KCQkkY1RpdGxlID0gKGlzc2V0KCRsMTBuX2xh bmd1YWdlWydsb25nJ10pKSA/IF9sMTBuX21ha2VfZmllbGRfbmFtZSgndGl0bGUnLCAkdGhp c2xhbmcpIDogJ3RpdGxlJzsNCg0KCQkkcnMgPSBnZXRSb3dzKCINCgkJCVNFTEVDVCBESVNU SU5DVCAkZmllbGRzLCAiLlBGWC4idHhwX2NhdGVnb3J5LiIuJGNUaXRsZS4iIEFTIGNhdGVn b3J5X3RpdGxlDQoJCQlGUk9NICIuUEZYLiJ0eHBfaW1hZ2UgTEVGVCBKT0lOICIuUEZYLiJ0 eHBfY2F0ZWdvcnkNCgkJCU9OICIuUEZYLiJ0eHBfaW1hZ2UuY2F0ZWdvcnkgPSAiLlBGWC4i dHhwX2NhdGVnb3J5Lm5hbWUNCgkJCVdIRVJFICRjbGF1c2UNCgkJCUxJTUlUIDAsICRtYXhs aW1pdA0KCQkiLCAkZGVidWcpOw0KCQlsaXN0KCRhbGxJbWFnZXMsICRudW1QYWdlcywgJHRo dW1QYWdlLCAkb2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0LCAk b2Zmc2V0LCAkcGFnaW5nKTsNCgl9DQoNCg0KCS8vIElzIHBvc3Qtb3JkZXJpbmcgcmVxdWly ZWQ/IERvIGl0DQoJaWYgKCRyYW5kc29ydCkgew0KCQlzaHVmZmxlKCRycyk7DQoJfSBlbHNl IGlmIChjb3VudCgkcG9zdE9yZGVyKSA+IDApIHsNCgkJLy8gVHJhbnNsYXRlIHRoZSByb3dz IGludG8gY29sdW1ucyB0aGF0IGNhbiBiZSBzb3J0ZWQNCgkJZm9yZWFjaCgkcnMgYXMgJGtl eSA9PiAkcm93KSB7DQoJCQlmb3JlYWNoICgkcm93IGFzICRpZGVudGlmaWVyID0+ICRpdGVt KSB7DQoJCQkJJHZhcm5hbWUgPSAiY29sXyIuJGlkZW50aWZpZXI7DQoJCQkJJHskdmFybmFt ZX1bJGtleV0gPSAkaXRlbTsNCgkJCX0NCgkJfQ0KDQoJCS8vIE1ha2UgdXAgYW4gYXJyYXlf bXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVjdXRlIGl0Lg0KCQkvLyBUaGUgbmVjZXNzYXJ5 IGV2aWwoKSBpcyBiZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkgY29scyB0aGVyZSB3 aWxsIGJlIGluIHRoZSBhcnJheQ0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHBv c3RPcmRlcik7ICRpZHgrKykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNvbF8nLiRwb3N0T3Jk ZXJbJGlkeF1bJ2NvbCddOw0KCQkJJHNvcnRhcmdzW10gPSAkcG9zdE9yZGVyWyRpZHhdWydz b3J0J107DQoJCX0NCgkJJHNvcnRpdCA9ICdhcnJheV9tdWx0aXNvcnQoJy5pbXBsb2RlKCIs ICIsJHNvcnRhcmdzKS4nLCAkcnMpOyc7DQoJCWV2YWwoJHNvcnRpdCk7DQoJfQ0KDQoJLy8g SXMgZml4ZWQtb3JkZXIgb3V0cHV0IGRlc2lyZWQ/IElmIHNvLCByZS1vcmRlciB0aGUgJHJz DQoJaWYgKCRmaXhlZE9yZGVyKSB7DQoJCSRvcmRlcmVkUlMgPSBBcnJheSgpOw0KCQkkaWdu b3JlTGlzdCA9IEFycmF5KCk7DQoJCSRyZW1haW5pbmdSUyA9IEFycmF5KCk7DQoJCS8vIFN1 Y2sgb3V0IHRoZSBmaXhlZCBpdGVtcyBmaXJzdC4gSURzIHRoZW4gY2F0ZWdvcmllcw0KCQlm b3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGlkaW5jKTsgJGlkeCsrKSB7DQoJCQlmb3Jl YWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCRpZCAmJiBkb1F1b3RlKCRyb3dbJ2lkJ10p ID09ICRpZGluY1skaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJTW10gPSAkcm93Ow0KCQkJCQkk aWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0K CQl9DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkY2F0aW5jKTsgJGlkeCsrKSB7 DQoJCQlmb3JlYWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCRjYXRlZ29yeSAmJiBkb1F1 b3RlKCRyb3dbJ2NhdGVnb3J5J10pID09ICRjYXRpbmNbJGlkeF0pIHsNCgkJCQkJJG9yZGVy ZWRSU1tdID0gJHJvdzsNCgkJCQkJJGlnbm9yZUxpc3RbXSA9ICRyb3dbJ2lkJ107DQoJCQkJ fQ0KCQkJfQ0KCQl9DQoJCS8vIFRhY2sgb24gdGhlIHJlbWFpbmluZyByb3dzDQoJCWZvcmVh Y2goJHJzIGFzICRyb3cpIHsNCgkJCWlmICghaW5fYXJyYXkoJHJvd1snaWQnXSwgJGlnbm9y ZUxpc3QpKSB7DQoJCQkJJHJlbWFpbmluZ1JTW10gPSAkcm93Ow0KCQkJfQ0KCQl9DQoJCSRy cyA9IGFycmF5X21lcmdlKCRvcmRlcmVkUlMsICRyZW1haW5pbmdSUyk7DQoJfQ0KDQoJLy8g R3JhYiB0aGUgcG9ydGlvbiBvZiB0aGUgcmVjb3JkIHNldCBhY3R1YWxseSByZXF1aXJlZCB0 byBpdGVyYXRlIG92ZXINCgkkcnMgPSBhcnJheV9zbGljZSgkcnMsICRvZmZzZXQsICgoJGRp cmVjdG9yeSkgPyAkZGlybGltaXQgOiAoKCRsaW1pdD09MCkgPyAkbWF4bGltaXQgOiAkbGlt aXQpKSk7DQoNCgkvLyBIYW5kbGUgdGh1bWJzaXplIC0gb2YgbGltaXRlZCB1c2Ugbm93IGJ1 dCBzdGlsbCBhdmFpbGFibGUNCgkkdGh1bWJXaWR0aCA9ICR0aHVtYkhlaWdodCA9ICcnOw0K CSR0aHVtYldVbml0cyA9ICR0aHVtYkhVbml0cyA9ICcnOw0KCWlmICgkdGh1bWJzaXplKSB7 DQoJCSR0aHVtYlNpemVzID0gZG9fbGlzdCgkdGh1bWJzaXplLCAkZGVsaW0pOw0KCQlpZiAo Y291bnQoJHRodW1iU2l6ZXMpID09IDEpIHsNCgkJCSR0aHVtYldpZHRoID0gJHRodW1iSGVp Z2h0ID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJ JHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJ CQkkdGh1bWJXVW5pdHMgPSAkdGh1bWJIVW5pdHMgPSAoJHVuaXRzID09ICcnKSA/ICR0aHVt YldVbml0cyA6ICR1bml0czsNCgkJfSBlbHNlIHsNCgkJCSR0aHVtYldpZHRoID0gZXJlZ19y ZXBsYWNlKCJbXjAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHRodW1iSGVpZ2h0 ID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHVu aXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkk dGh1bWJXVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYldpZHRoICE9ICcnKSA/ICR0 aHVtYldVbml0cyA6ICR1bml0czsNCgkJCSR1bml0cyA9IGVyZWdfcmVwbGFjZSgiWzAtOV0i LCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAn JyAmJiAkdGh1bWJIZWlnaHQgIT0gJycpID8gJHRodW1iSFVuaXRzIDogJHVuaXRzOw0KCQl9 DQoJfQ0KDQoJLy8gQ29sbGF0aW9uIGRlZmVycyBwYXJzaW5nIHRoZSBmb3JtIGZvciBlYWNo IHJldHVybmVkIGl0ZW0uDQoJLy8gSW5zdGVhZCBpdCBvdXRwdXRzIHRoZSBkYXRhIGFzIGEg bGlzdCBhdCB0aGUgZW5kIChpdGVtcyBtYXkgYmUgaW5kaXZpZHVhbGx5IHF1b3RlZCBvciBl eHRyYWN0ZWQgaWYgcmVxdWlyZWQpDQoJLy9UT0RPIDogQWRkIEFMV0FZUyBzd2l0Y2ggYXMg YSBzaG9ydGN1dCB0byBzcGVjaWZ5IHRoYXQgYWxsIG1hdGNoaW5nIGl0ZW1zIChyZWdhcmRs ZXNzIG9mICMxLCAjMiwgIzMgZXRjKSBhcmUgdG8gYmUgcXVvdGVkDQoJaWYgKCRjb2xsYXRl KSB7DQoJCSRkYmxRdW90ZSA9ICRzZ2xRdW90ZSA9IGFycmF5KCdTTUROT05FJyk7DQoJCSRj b2xsYXRlT3B0cyA9IGRvX2xpc3QoJGNvbGxhdGUsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRj b2xsYXRlT3B0cyBhcyAkb3B0aW9uKSB7DQoJCQkkaW5kZXhlcyA9IGRvX2xpc3QoJG9wdGlv biwgJHBhcmFtZGVsaW0pOw0KCQkJJGNvbFR5cGUgPSBhcnJheV9zaGlmdCgkaW5kZXhlcyk7 DQoJCQkvLyBTdXBwbHlpbmcgJ3F1b3RlJyBvbiBpdHMgb3duIHdpbGwgZW1wdHkgdGhlIHJl bGV2YW50IGFycmF5LCBpbXBseWluZyAiQUxMIiBmaWVsZHMgYXJlIHRvIGJlIHF1b3RlZA0K CQkJc3dpdGNoICgkY29sVHlwZSkgew0KCQkJCWNhc2UgInNnbHF1b3RlIjoNCgkJCQkJJHNn bFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImRibHF1b3RlIjoN CgkJCQljYXNlICJxdW90ZSI6DQoJCQkJCSRkYmxRdW90ZSA9ICRpbmRleGVzOw0KCQkJCQli cmVhazsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8vIENvbWJvcyBhcmUgdXNlci1kZWZpbmVkIGNv bWJpbmF0aW9ucyBvZiByZXBsYWNlbWVudCBtb2RpZmllcnMgKGUuZy4gaWRleHQ6IHtpZH17 ZXh0fSwgLi4uDQoJJGNvbWJvcyA9IGFycmF5KCk7DQoJaWYgKCRjb21ibykgew0KCQkkY29t Ym8gPSBkb19saXN0KCRjb21ibywgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbWJvIGFzICRu ZXdEZWYpIHsNCgkJCWxpc3QoJGRlZlBhcnRzLCAkdW53YW50ZWQpID0gc21kX2RvTGlzdCgk bmV3RGVmLCBmYWxzZSwgJycsIGZhbHNlLCAkcGFyYW1kZWxpbSwgJHNwYyk7DQoJCQkkZGVm TmFtZSA9ICJ7Ii5hcnJheV9zaGlmdCgkZGVmUGFydHMpLiJ9IjsNCgkJCSRjb21ib3NbJGRl Zk5hbWVdID0gJGRlZlBhcnRzWzBdOw0KCQl9DQoJfQ0KCWlmICgkZGVidWcgPiAxKSB7DQoJ CWVjaG8gIisrIENPTUJPcyArKyI7DQoJCWRtcCgkY29tYm9zKTsNCgl9DQoJLy8gQ29uc3Ry dWN0IHRoZSBvdXRwdXQNCgkkdGh1bWJvdXQgPSBhcnJheSgpOw0KCSRncm91cG91dCA9IGFy cmF5KCk7DQoJJG5hdm91dCA9IGFycmF5KCk7DQoJJG91dCA9IGFycmF5KCk7DQoJJGNvbGxh dGlvbnMgPSBhcnJheSgpOw0KCSRjaElkZW50aWZpZXIgPSAib25jaGFuZ2UiOw0KDQoJaWYg KCRkZWJ1ZyA+IDIpIHsNCgkJZWNobyAiKysgUkVDT1JEIFNFVCArKyI7DQoJCWRtcCgkcnMp Ow0KCX0NCglpZiAoJGRlYnVnID4gMykgew0KCQllY2hvICIrKyBBVkFJTEFCTEUgJz8nIFZB UlMgKysiOw0KCQlpZiAoJHByZXRleHQpIGRtcCgkcHJldGV4dCk7DQoJCWlmICgkdGhpc2Fy dGljbGUpIGRtcCgkdGhpc2FydGljbGUpOw0KCX0NCg0KCWlmKCRycykgew0KCQkkaWR4ID0g MDsNCgkJJGN0ciA9IDE7DQoJCSR0aHVtYklkeCA9IDA7DQoJCSR0aHVtYkN0ciA9IDE7DQoJ CSRudW1JbWFnZXMgPSBjb3VudCgkcnMpOw0KCQkkcmVwYWdlbWVudHMgPSBhcnJheSgpOw0K DQoJCS8vIFNldCB1cCB0aGUgcGFnaW5nIGZlYXR1cmVzIGlmIHJlcXVpcmVkDQoJCWlmICgo JGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQkJJG5leHQgPSAoJG51bVBhZ2VzID4gMSAm JiAkdGh1bVBhZ2UgIT0gJG51bVBhZ2VzKTsNCgkJCSRwcmV2ID0gKCRudW1QYWdlcyA+IDEg JiYgJHRodW1QYWdlID4gMSk7DQoJCQkkcHJldlBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRl eHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZS0xKTsNCgkJCSRuZXh0UGFn ZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRo dW1QYWdlKzEpOw0KCQkJJHRoaXNQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1 ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBhZ2UpOw0KCQkJJGZpcnN0UGFnZSA9IHNtZF9h ZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgMSk7DQoJCQkkbGFz dFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQs ICRudW1QYWdlcyk7DQoNCgkJCS8vIExhYmVscyBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSBy ZXBsYWNlbWVudCB0YWcgYWZ0ZXIgYSBwYXJhbWRlbGltLg0KCQkJLy8gJ2VhcmxpZXInIGFu ZCAnbGF0ZXInIGRvbid0IGhhdmUgbGFiZWxzLiBBbnl0aGluZyBzcGVjaWZpZWQgYWZ0ZXIg cGFyYW1kZWxpbSBpcyB0aGUgbWF4IG51bWJlciBvZiBwYWdlcyB0byBzaG93OyBlbXB0eSA9 IGFsbCBwYWdlcw0KCQkJJGxhYmVsID0gYXJyYXkoDQoJCQkJCSd7bmF2Zmlyc3R9JyA9PiAk c21kX2dhbGxMYW5nLT5nVHh0KCduYXZmaXJzdCcpLA0KCQkJCQkne25hdnByZXZ9JyA9PiAk c21kX2dhbGxMYW5nLT5nVHh0KCduYXZwcmV2JyksDQoJCQkJCSd7bmF2ZWFybGllcn0nID0+ ICcnLA0KCQkJCQkne25hdnRoaXN9JyA9PiAkdGh1bVBhZ2UsDQoJCQkJCSd7bmF2dGhpc3Vy bH0nID0+ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZsYXRlcn0nID0+ICcnLA0KCQkJCQkne25h dm5leHR9JyA9PiAkc21kX2dhbGxMYW5nLT5nVHh0KCduYXZuZXh0JyksDQoJCQkJCSd7bmF2 bGFzdH0nID0+ICRzbWRfZ2FsbExhbmctPmdUeHQoJ25hdmxhc3QnKSwNCgkJCQkpOw0KDQoJ CQkkbGFiZWxSRSA9ICcvXHsobmF2W2Etel0rKScuJHBhcmFtZGVsaW0uJyguKz8pXH0vJzsN CgkJCSRudW1MYWJlbHMgPSBwcmVnX21hdGNoX2FsbCgkbGFiZWxSRSwgJHBhZ2Vmb3JtLCAk bGFiZWxzKTsNCg0KCQkJZm9yICgkbGFiZWxDdHIgPSAwOyAkbGFiZWxDdHIgPCAkbnVtTGFi ZWxzOyAkbGFiZWxDdHIrKykgew0KCQkJCSRmaWVsZG5hbWUgPSAneycuJGxhYmVsc1sxXVsk bGFiZWxDdHJdLid9JzsNCgkJCQkkbGFiZWxbJGZpZWxkbmFtZV0gPSAkbGFiZWxzWzJdWyRs YWJlbEN0cl07DQoJCQkJJHBhZ2Vmb3JtID0gc3RyX3JlcGxhY2UoJGxhYmVsc1swXVskbGFi ZWxDdHJdLCAneycuJGxhYmVsc1sxXVskbGFiZWxDdHJdLid9JywgJHBhZ2Vmb3JtKTsNCgkJ CX0NCg0KCQkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJCQllY2hvICIrKyBQQUdJTkcgTEFCRUxT ICsrIjsNCgkJCQlkbXAoJGxhYmVsKTsNCgkJCX0NCg0KCQkJLy8gR2VuZXJhdGUgJ2Vhcmxp ZXInIGFuZCAnbGF0ZXInIGxpc3RzDQoJCQkkbnVtRWFybGllciA9IGludHZhbCgkbGFiZWxb J3tuYXZlYXJsaWVyfSddKTsNCgkJCSRudW1MYXRlciA9IGludHZhbCgkbGFiZWxbJ3tuYXZs YXRlcn0nXSk7DQoJCQkkbnVtRWFybGllciA9ICgkbnVtRWFybGllciAmJiAoJHRodW1QYWdl LSRudW1FYXJsaWVyID4gMSkpID8gJG51bUVhcmxpZXIgOiAkdGh1bVBhZ2UtMTsNCgkJCSRu dW1MYXRlciA9ICgkbnVtTGF0ZXIgJiYgKCR0aHVtUGFnZSskbnVtTGF0ZXIgPCAkbnVtUGFn ZXMpKSA/ICRudW1MYXRlciA6ICRudW1QYWdlcy0kdGh1bVBhZ2U7DQoJCQkkbmF2RWFybGll ciA9ICRuYXZMYXRlciA9IGFycmF5KCk7DQoJCQlmb3IgKCRjb2QgPSAkdGh1bVBhZ2UtJG51 bUVhcmxpZXI7ICRjb2QgPCAkdGh1bVBhZ2U7ICRjb2QrKykgew0KCQkJCSRuYXZFYXJsaWVy W10gPSAnPGEgaHJlZj0iJy5zbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10s ICRnYWxsSUQsICRjb2QpLiciPicuJGNvZC4nPC9hPic7DQoJCQl9DQoJCQlmb3IgKCRjb2Qg PSAkdGh1bVBhZ2UrMTsgJGNvZCA8PSAkdGh1bVBhZ2UrJG51bUxhdGVyOyAkY29kKyspIHsN CgkJCQkkbmF2TGF0ZXJbXSA9ICc8YSBocmVmPSInLnNtZF9hZGRRU1ZhcigkcHJldGV4dFsn cmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJGNvZCkuJyI+Jy4kY29kLic8L2E+JzsNCgkJCX0N CgkJCSRuYXZFYXJsaWVyID0gZG9XcmFwKCRuYXZFYXJsaWVyLCAnJywgJG5hdmJyZWFrLCAn Jyk7DQoJCQkkbmF2TGF0ZXIgPSBkb1dyYXAoJG5hdkxhdGVyLCAnJywgJG5hdmJyZWFrLCAn Jyk7DQoNCgkJCS8vIE1ha2UgdXAgdGhlIHJlcGFnZW1lbnRzIGFycmF5IGZvciBwYWdlZm9y bQ0KCQkJJHJlcGFnZW1lbnRzID0gYXJyYXkoDQoJCQkJCSd7bmF2Zmlyc3R9JyA9PiAoKCRw cmV2KSA/IGRvVGFnKCc8YSBocmVmPSInLiRmaXJzdFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZm aXJzdH0nXS4nPC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZmaXJzdH0n XSwgJG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJCQkne25hdnByZXZ9JyA9PiAoKCRw cmV2KSA/IGRvVGFnKCc8YSBocmVmPSInLiRwcmV2UGFnZS4nIj4nLiRsYWJlbFsne25hdnBy ZXZ9J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2cHJldn0nXSwg JG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAkbmF2 RWFybGllciwNCgkJCQkJJ3tuYXZ0aGlzfScgPT4gZG9UYWcoJGxhYmVsWyd7bmF2dGhpc30n XSwgJG5hdmJyZWFrLCAnY3VycmVudCAnLiRlbXB0eWNsYXNzKSwNCgkJCQkJJ3tuYXZ0aGlz dXJsfScgPT4gZG9UYWcoJzxhIGhyZWY9IicuJHRoaXNQYWdlLiciPicuJGxhYmVsWyd7bmF2 dGhpc3VybH0nXS4nPC9hPicsICRuYXZicmVhaywgJ2N1cnJlbnQnKSwNCgkJCQkJJ3tuYXZs YXRlcn0nID0+ICRuYXZMYXRlciwNCgkJCQkJJ3tuYXZuZXh0fScgPT4gKCgkbmV4dCkgPyBk b1RhZygnPGEgaHJlZj0iJy4kbmV4dFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZuZXh0fSddLic8 L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdm5leHR9J10sICRuYXZicmVh aywgJGVtcHR5Y2xhc3MpKSwNCgkJCQkJJ3tuYXZsYXN0fScgPT4gKCgkbmV4dCkgPyBkb1Rh ZygnPGEgaHJlZj0iJy4kbGFzdFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZsYXN0fSddLic8L2E+ JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdmxhc3R9J10sICRuYXZicmVhaywg JGVtcHR5Y2xhc3MpKSwNCgkJCQkJJ3tuYXZ0aGlzcGFnZXVybH0nID0+ICR0aGlzUGFnZSwN CgkJCQkJJ3tuYXZuZXh0cGFnZXVybH0nID0+ICgoJG5leHQpID8gJG5leHRQYWdlIDogJycp LA0KCQkJCQkne25hdnByZXZwYWdldXJsfScgPT4gKCgkcHJldikgPyAkcHJldlBhZ2UgOiAn JyksDQoJCQkJCSd7bmF2Zmlyc3RwYWdldXJsfScgPT4gJGZpcnN0UGFnZSwNCgkJCQkJJ3tu YXZsYXN0cGFnZXVybH0nID0+ICRsYXN0UGFnZSwNCgkJCQkJJ3t0b3RhbGltYWdlc30nID0+ ICRudW1JbWFnZXMsDQoJCQkJCSd7dG90YWxwYWdlc30nID0+ICRudW1QYWdlcywNCgkJCQkJ J3ttYXhpbWFnZXN9JyA9PiAkYWxsSW1hZ2VzLA0KCQkJCSk7DQoNCgkJCQkvLyBQZXJmb3Jt IGVzY2FwaW5nIGhlcmUsIGp1c3QgcHJpb3IgdG8gb3V0cHV0DQoJCQkJaWYgKCRlc2NhcGVz KSB7DQoJCQkJCWZvcmVhY2ggKCRyZXBhZ2VtZW50cyBhcyAkZGVmTmFtZSA9PiAkZGVmVmFs KSB7DQoJCQkJCQlpZiAoaW5fYXJyYXkodHJpbSgkZGVmTmFtZSwgInt9IiksICRlc2NhcGVz KSkgew0KCQkJCQkJCSRyZXBhZ2VtZW50c1skZGVmTmFtZV0gPSBodG1sc3BlY2lhbGNoYXJz KCRkZWZWYWwpOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJLy8gUGVyZm9ybSB0 aGUgc3Vic3RpdHV0aW9ucw0KCQkJCSRuYXZvdXRbXSA9IHBhcnNlKHN0cnRyKCRwYWdlZm9y bSwgJHJlcGFnZW1lbnRzKSk7DQoJCX0NCg0KCQkvLyBGb3IgZXZlcnkgaW1hZ2UgaW4gdGhl IGdhbGxlcnkuLi4NCgkJZm9yZWFjaCgkcnMgYXMgJGtleSA9PiAkcm93KSB7DQoJCQlpZiAo JGRpcmVjdG9yeSkgew0KCQkJCSR1cmxQYXRoID0gJHJvd1sncGF0aCddLicvJzsNCgkJCX0g ZWxzZSB7DQoJCQkJJHVybFBhdGggPSBodS4kaW1nX2Rpci4nLyc7DQoJCQl9DQoJCQkkdGhl VGh1bWIgPSAkdXJsUGF0aCAuICRyb3dbJ2lkJ10gLiAkdGh1bWJtb2QgLiAkcm93WydleHQn XTsNCgkJCSRmdWxsU2l6ZSA9ICR1cmxQYXRoIC4gJHJvd1snaWQnXSAuICRmdWxsbW9kIC4k cm93WydleHQnXTsNCg0KCQkJLy8gRG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGh1bWIgY291 bnRlciB0aGlzIHRpbWU/DQoJCQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9 PiAkcmVzZXRWYWwpIHsNCgkJCQlpZiAoc3RycG9zKCRyZXNldE9wdCwgJ3NtZF9ldmVyeScp ID09PSAwKSB7DQoJCQkJCSRpdGVyID0gZXhwbG9kZSgkcGFyYW1kZWxpbSwgJHJlc2V0T3B0 KTsNCgkJCQkJJGl0ZXIgPSAoY291bnQoJGl0ZXIpID4gMSkgPyAkaXRlclsxXSA6IDA7DQoJ CQkJCWlmICgkdGh1bWJJZHggJSAkaXRlciA9PSAwKSB7DQoJCQkJCQkkdGh1bWJJZHggPSAw Ow0KCQkJCQkJJHRodW1iQ3RyID0gMTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSBpZiAoJHJvd1sk cmVzZXRPcHRdICE9ICRyZXNldFZhbCkgew0KCQkJCQkkdGh1bWJJZHggPSAwOw0KCQkJCQkk dGh1bWJDdHIgPSAxOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIENvbnN0 cnVjdCB0aGUgcmVwbGFjZW1lbnQgYXJyYXkNCgkJCSRyZXBsYWNlbWVudHMgPSBhcnJheSgN CgkJCQkJJ3tpZH0nID0+ICRyb3dbJ2lkJ10sDQoJCQkJCSd7bmFtZX0nID0+ICRyb3dbJ25h bWUnXSwNCgkJCQkJJ3tleHR9JyA9PiAkcm93WydleHQnXSwNCgkJCQkJJ3tjYXRlZ29yeX0n ID0+ICRyb3dbJ2NhdGVnb3J5J10sDQoJCQkJCSd7Y2F0ZWdvcnlfdGl0bGV9JyA9PiAoKGlz c2V0KCRyb3dbJ2NhdGVnb3J5X3RpdGxlJ10pKSA/ICRyb3dbJ2NhdGVnb3J5X3RpdGxlJ10g OiAnJyksDQoJCQkJCSd7YXV0aG9yfScgPT4gJHJvd1snYXV0aG9yJ10sDQoJCQkJCSd7aGFz dGh1bWJ9JyA9PiAkcm93Wyd0aHVtYm5haWwnXSwNCgkJCQkJJ3t1cmx9JyA9PiAkZnVsbFNp emUsDQoJCQkJCSd7dGh1bWJ1cmx9JyA9PiAkdGhlVGh1bWIsDQoJCQkJCSd7aW1hZ2VwYXRo fScgPT4gJHVybFBhdGgsDQoJCQkJCSd7aW1hZ2VkZWZ9JyA9PiBiYXNlbmFtZSgkZnVsbFNp emUpLA0KCQkJCQkne3RodW1iZGVmfScgPT4gYmFzZW5hbWUoJHRoZVRodW1iKSwNCgkJCQkJ J3thbHR9JyA9PiAkcm93WydhbHQnXSwNCgkJCQkJJ3t0aXRsZX0nID0+ICRyb3dbJ2NhcHRp b24nXSwNCgkJCQkJJ3tjYXB0aW9ufScgPT4gJHJvd1snY2FwdGlvbiddLA0KCQkJCQkne3Ro dW1id2lkdGh9JyA9PiAkdGh1bWJXaWR0aCwNCgkJCQkJJ3t0aHVtYmhlaWdodH0nID0+ICR0 aHVtYkhlaWdodCwNCgkJCQkJJ3t0aHVtYnd1bml0c30nID0+ICR0aHVtYldVbml0cywNCgkJ CQkJJ3t0aHVtYmh1bml0c30nID0+ICR0aHVtYkhVbml0cywNCgkJCQkJJ3t3aWR0aH0nID0+ ICRyb3dbJ3cnXSwNCgkJCQkJJ3toZWlnaHR9JyA9PiAkcm93WydoJ10sDQoJCQkJCSd7ZGF0 ZX0nID0+ICgoJGZvcm1hdCkgPyBzYWZlX3N0cmZ0aW1lKCRmb3JtYXQsIHN0cnRvdGltZSgk cm93WydkYXRlJ10pLCAkZ210LCAkbGFuZykgOiAkcm93WydkYXRlJ10pLA0KCQkJCQkne2dh bGxlcnlpZH0nID0+ICRnYWxsSUQsDQoJCQkJCSd7aW5kZXh9JyA9PiAkaWR4LA0KCQkJCQkn e2NvdW50ZXJ9JyA9PiAkY3RyLA0KCQkJCQkne3RodW1iaW5kZXh9JyA9PiAkdGh1bWJJZHgs DQoJCQkJCSd7dGh1bWJjb3VudGVyfScgPT4gJHRodW1iQ3RyLA0KCQkJCQkne3RvdGFsaW1h Z2VzfScgPT4gJG51bUltYWdlcywNCgkJCQkJJ3ttYXhpbWFnZXN9JyA9PiAkYWxsSW1hZ2Vz LA0KCQkJCSk7DQoNCgkJCS8vIEFkZCBhbnkgY3VzdG9tIGNvbHVtbnMNCgkJCWZvcmVhY2gg KCRleHRyYU1hcCBhcyAkZUNvbCA9PiAkZVZhbCkgew0KCQkJCSRyZXBsYWNlbWVudHNbJ3sn LiRlVmFsLid9J10gPSAkcm93WyRlQ29sXTsNCgkJCX0NCg0KCQkJLy8gQXBwZW5kIGFueSBj aGFuZ2VkIGl0ZW1zIHRoYXQgYXJlIHJlcXVpcmVkDQoJCQkkZW5kdGFnID0gZmFsc2U7DQoJ CQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJ CQlpZiAoc3RycG9zKCRyZXNldE9wdCwgJ3NtZF9ldmVyeScpID09PSAwKSB7DQoJCQkJCSRp dGVyID0gZXhwbG9kZSgkcGFyYW1kZWxpbSwgJHJlc2V0T3B0KTsNCgkJCQkJJGl0ZXIgPSAo Y291bnQoJGl0ZXIpID4gMSkgPyAkaXRlclsxXSA6IDA7DQoJCQkJCWlmICgkdGh1bWJDdHIg JSAkaXRlciA9PT0gMCB8fCAkY3RyID09ICRudW1JbWFnZXMpIHsNCgkJCQkJCSRlbmR0YWcg PSB0cnVlOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHJlcGxhY2VtZW50c1sneycu JGNoSWRlbnRpZmllci4kcGFyYW1kZWxpbS4kcmVzZXRPcHQuJ30nXSA9ICgkdGh1bWJJZHgg PT0gMCkgPyBkb1RhZygkcm93WyRyZXNldE9wdF0sICRvbmNoYW5nZXdyYXB0YWcsICRvbmNo YW5nZWNsYXNzKSA6ICcnOw0KCQkJCQkvLyBEbyBhIHNuZWFreSAoeXVrKSBsb29rYWhlYWQN CgkJCQkJaWYgKGlzc2V0KCRyc1ska2V5KzFdKSkgew0KCQkJCQkJaWYoJHJzWyRrZXkrMV1b JHJlc2V0T3B0XSAhPSAkcm93WyRyZXNldE9wdF0pIHsNCgkJCQkJCQkkZW5kdGFnID0gdHJ1 ZTsNCgkJCQkJCX0NCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRlbmR0YWcgPSB0cnVlOyAvLyBM YXN0IGltYWdlDQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCSRyZXBsYWNlbWVudHNbJ3tn cm91cHRhZ2VuZH0nXSA9ICgkZ3JvdXB0YWcgJiYgJGVuZHRhZykgPyAnPC8nIC4gJGdyb3Vw dGFnIC4gJz4nIDogJyc7DQoJCQkkcmVwbGFjZW1lbnRzWyd7Z3JvdXB0YWdzdGFydH0nXSA9 ICgkZ3JvdXB0YWcgJiYgJHRodW1iSWR4ID09IDApID8gJzwnIC4gJGdyb3VwdGFnIC4gKCgk Z3JvdXBjbGFzcykgPyAnIGNsYXNzPSInLiRncm91cGNsYXNzLiciJyA6ICcnKSAuICc+JyA6 ICcnOw0KDQoJCQkvLyBBcHBlbmQgYW55IGNvbWJvcw0KCQkJZm9yZWFjaCAoJGNvbWJvcyBh cyAkZGVmTmFtZSA9PiAkbmV3RGVmKSB7DQoJCQkJaWYgKCFhcnJheV9rZXlfZXhpc3RzKCRk ZWZOYW1lLCAkcmVwbGFjZW1lbnRzKSkgew0KCQkJCQkkcmVwbGFjZW1lbnRzWyRkZWZOYW1l XSA9IHN0cnRyKCRuZXdEZWYsICRyZXBsYWNlbWVudHMpOw0KCQkJCX0NCgkJCX0NCg0KCQkJ Ly8gU29sb3MgYXJlIGl0ZW1zIGluIHRoZSBvdXRwdXQgZm9ybSB0aGF0IHJlcXVpcmUgZGV0 YWlscyBmcm9tIGEgc3BlY2lmaWMgcm93LiBVc2VmdWwgb25seSBpbiBjb2xsYXRpb24NCgkJ CS8vIG1vZGUsIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSByZXBsYWNlbWVudHMgYXJyYXkgb24g YW4gYXMtbmVlZGVkIGJhc2lzIHRvIHNhdmUgc3BhY2UvdGltZQ0KCQkJJHNvbG9SRSA9ICcv XHsoW2EtejAtOV0rKSMnLiRjdHIuJ1x9Lyc7DQoJCQkkbnVtU29sb3MgPSBwcmVnX21hdGNo X2FsbCgkc29sb1JFLCAkdGhpbmcsICRzb2xvcyk7DQoJCQlmb3IgKCRzb2xvQ3RyID0gMDsg JHNvbG9DdHIgPCAkbnVtU29sb3M7ICRzb2xvQ3RyKyspIHsNCgkJCQkkZmllbGRuYW1lID0g J3snLiRzb2xvc1sxXVskc29sb0N0cl0uJyMnLiRjdHIuJ30nOw0KCQkJCSRncmFiZmllbGQg PSAneycuJHNvbG9zWzFdWyRzb2xvQ3RyXS4nfSc7DQoJCQkJJHJlcGxhY2VtZW50c1skZmll bGRuYW1lXSA9ICRyZXBsYWNlbWVudHNbJGdyYWJmaWVsZF07DQoJCQl9DQoNCgkJCS8vIFBl cmZvcm0gZXNjYXBpbmcgb24gdGhlIHJlcGxhY2VtZW50cy4NCgkJCS8vIE5vdGUgdGhlIHJl cGFnZW1lbnRzIGhhdmUgYWxyZWFkeSBiZWVuIGVzY2FwZWQgc28gd2hlbi9pZiB0aGV5IGFy ZSBjb21iaW5lZCB3aXRoIHRoZSByZXBsYWNlbWVudHMsDQoJCQkvLyB0aGUgZXNjYXBpbmcg aXMgbm90IGRvbmUgdHdpY2UNCgkJCWlmICgkZXNjYXBlcykgew0KCQkJCWZvcmVhY2ggKCRy ZXBsYWNlbWVudHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZhbCkgew0KCQkJCQlpZiAoaW5fYXJy YXkodHJpbSgkZGVmTmFtZSwgInt9IiksICRlc2NhcGVzKSkgew0KCQkJCQkJJHJlcGxhY2Vt ZW50c1skZGVmTmFtZV0gPSBodG1sc3BlY2lhbGNoYXJzKCRkZWZWYWwpOw0KCQkJCQl9DQoJ CQkJfQ0KCQkJfQ0KDQoJCQkvLyBBZGQgdGhlIG5hdmlnYXRpb24gaXRlbXMgaWYgdGhleSdy ZSBkZWZpbmVkDQoJCQlpZiAoY291bnQoJHJlcGFnZW1lbnRzKSA+IDApIHsNCgkJCQkkcmVw bGFjZW1lbnRzID0gYXJyYXlfbWVyZ2UoJHJlcGFnZW1lbnRzLCAkcmVwbGFjZW1lbnRzKTsN CgkJCX0NCg0KCQkJLy8gSXMgYSB0aHVtYi90ZXh0IG9iamVjdCByZXF1aXJlZCB0aGlzIHRp bWU/DQoJCQkkb2JqZWN0ID0gJyc7DQoJCQlpZiAoJHRodW1iSWR4ID49ICR0aHVtYm9mZnNl dCAmJiAkdGh1bWJJZHggPCAkdGh1bWJvZmZzZXQrJHRodW1ibGltaXQpIHsNCgkJCQkkb2Jq ZWN0ID0gKCRvYmplY3Rmb3JtKSA/IHBhcnNlKHN0cnRyKCRvYmplY3Rmb3JtLCAkcmVwbGFj ZW1lbnRzKSkgOiAoKCR0ZXh0KSA/ICR0ZXh0IDogJzxpbWcgc3JjPSInLiR0aGVUaHVtYi4n IicgLigoJHJvd1snYWx0J10pID8gJyBhbHQ9IicuJHJvd1snYWx0J10uJyInIDogJycpIC4o KCR0aHVtYldpZHRoKSA/ICcgd2lkdGg9IicuJHRodW1iV2lkdGguJHRodW1iV1VuaXRzLici JyA6ICcnKSAuKCgkdGh1bWJIZWlnaHQpID8gJyBoZWlnaHQ9IicuJHRodW1iSGVpZ2h0LiR0 aHVtYkhVbml0cy4nIicgOiAnJykgLicgLz4nKTsNCgkJCX0NCgkJCSRyZXBsYWNlbWVudHNb J3tvYmplY3R9J10gPSAkb2JqZWN0Ow0KDQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVj aG8gIisrIFJFUExBQ0VNRU5UUyA6IElNQUdFICIuJGN0ci4iICsrIjsNCgkJCQlkbXAoJHJl cGxhY2VtZW50cyk7DQoJCQl9DQoNCgkJCS8vIEluIGNvbGxhdGUgbW9kZSB0aGUgZm9ybSBp cyBvbmx5IHBhcnNlZCBhdCB0aGUgZW5kOiBidWlsZCBhIGNvbGxvc2FsIG11bHRpLWRpbWVu c2lvbiBhcnJheSBvZiBhbGwgaXRlbXMgaGVyZQ0KCQkJaWYgKCRjb2xsYXRlKSB7DQoJCQkJ Zm9yZWFjaCAoJHJlcGxhY2VtZW50cyBhcyAkZGVmTmFtZSA9PiAkZGVmVmFsKSB7DQoJCQkJ CSRjb2xsYXRpb25zWyRkZWZOYW1lXVtdID0gJGRlZlZhbDsNCgkJCQl9DQoJCQl9IGVsc2Ug ew0KCQkJCSR0aHVtYm91dFtdID0gcGFyc2Uoc3RydHIoJHRoaW5nLCAkcmVwbGFjZW1lbnRz KSk7DQoJCQl9DQoNCgkJCS8vIEtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgdmFsdWVzIHNv IHdlIGtub3cgaWYgdGhleSBjaGFuZ2UgbmV4dCB0aW1lDQoJCQlmb3JlYWNoICgkcmVzZXRP cHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlpZiAoc3RycG9zKCRyZXNl dE9wdCwgJ3NtZF9ldmVyeScpID09PSBmYWxzZSkgew0KCQkJCQkkcmVzZXRPcHRzWyRyZXNl dE9wdF0gPSAkcm93WyRyZXNldE9wdF07DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHJlc2V0T3B0 c1skcmVzZXRPcHRdID0gJHRodW1iQ3RyOw0KCQkJCX0NCgkJCX0NCgkJCSR0aHVtYklkeCsr Ow0KCQkJJHRodW1iQ3RyKys7DQoJCQkkaWR4Kys7DQoJCQkkY3RyKys7DQoJCX0NCgkJaWYg KCRjb2xsYXRlKSB7DQoJCQlmb3JlYWNoICgkY29sbGF0aW9ucyBhcyAkaXRlbSA9PiAkbGlz dCkgew0KCQkJCS8vIFF1b3RlIHRoZSBsaXN0cyBpZiByZXF1aXJlZA0KCQkJCSRsaXN0ID0g KGVtcHR5KCRkYmxRdW90ZSkgfHwgaW5fYXJyYXkoJGl0ZW0sICRkYmxRdW90ZSkpID8gZG9B cnJheSgkbGlzdCwgJ3NtZF9kb0RibFF1b3RlJykgOiAkbGlzdDsNCgkJCQkkbGlzdCA9IChl bXB0eSgkc2dsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVtLCAkc2dsUXVvdGUpKSA/IGRvQXJy YXkoJGxpc3QsICdkb1F1b3RlJykgOiAkbGlzdDsNCgkJCQkkY29sbGF0aW9uc1skaXRlbV0g PSBpbXBsb2RlKCRjb2xsYXRlZGVsaW0sICRsaXN0KTsNCgkJCX0NCgkJCWlmICgkZGVidWcg PiAwKSB7DQoJCQkJZWNobyAiKysgQ09MTEFUSU9OUyArKyI7DQoJCQkJZG1wKCRjb2xsYXRp b25zKTsNCgkJCX0NCgkJCSR0aHVtYm91dFtdID0gcGFyc2Uoc3RydHIoJHRoaW5nLCAkY29s bGF0aW9ucykpOw0KCQl9DQoNCgkJLy8gVGFjayBvbiB0aGUgcGFnaW5nIGZyb20gZWFybGll ciBpZiBpdCdzIHRvIGdvIGFmdGVyd2FyZHMNCgkJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFn aW5nKSB7DQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBSRVBM QUNFTUVOVFMgKysiOw0KCQkJCWRtcCgkcmVwYWdlbWVudHMpOw0KCQkJfQ0KCQl9DQoJfQ0K DQoJLy8gQWRkIHRoZSBwYWdpbmcgdG8gdGhlIG91dHB1dCBpZiBpdCdzIHRvIGdvIGFib3Zl IHRoZSB0aHVtYnMNCglpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJaWYgKGlu X2FycmF5KCJhYm92ZSIsICRwYWdlb3V0KSkgew0KCQkJJG91dFtdID0gZG9XcmFwKCRuYXZv dXQsICRuYXZ3cmFwdGFnLCAnJywgJG5hdmNsYXNzKTsNCgkJfQ0KCX0NCg0KCSRvdXRbXSA9 IGRvV3JhcCgkdGh1bWJvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcywgJycsICcnLCAn JywgJGh0bWxfaWQpOw0KDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCWlm IChpbl9hcnJheSgiYmVsb3ciLCAkcGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3JhcCgk bmF2b3V0LCAkbmF2d3JhcHRhZywgJycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoNCglpZiAo JGRlYnVnID4gMikgew0KCQllY2hvICIrKyBGSU5BTCBPVVRQVVQgKysiOw0KCQlkbXAoJG91 dCk7DQoJfQ0KDQoJcmV0dXJuIGpvaW4oIiAiLCAkb3V0KTsNCn0NCg0KLy8gV29yayBvdXQg d2hpY2ggcGFnZSB0aGlzIGdhbGxlcnkgaXMgb24gYW5kIHJldHVybiB0aGUgcmVsZXZhbnQg aW5mbw0KZnVuY3Rpb24gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZz ZXQsICRwYWdpbmcpIHsNCgkkbnVtVGh1bXMgPSBjb3VudCgkcnMpIC0gJG9mZnNldDsNCglp ZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJJG51bVBhZ2VzID0gKCRudW1UaHVt cyA+IDApID8gY2VpbCgkbnVtVGh1bXMvJGxpbWl0KSA6IDE7DQoJCSR0aHVtUGFnZSA9ICgh Z3BzKCRnYWxsSUQpKSA/IDEgOiBncHMoJGdhbGxJRCk7DQoJCSRvZmZzZXQgPSAoKCR0aHVt UGFnZSAtIDEpICogJGxpbWl0KSArICRvZmZzZXQ7DQoJfSBlbHNlIHsNCgkJLy8gTm8gcGFn aW5nIHJlcXVpcmVkDQoJCSRudW1QYWdlcyA9IDE7DQoJCSR0aHVtUGFnZSA9IDE7DQoJfQ0K CXJldHVybiBhcnJheSgkbnVtVGh1bXMsICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0 KTsNCn0NCg0KLy8gUmVhZCB0aGUgZ2l2ZW4gZGVsaW1pdGVkIGRpcmVjdG9yaWVzIGFuZCBn ZXQgYWxsIGZpbGVzIHRoYXQgbWF0Y2guDQovLyBHbyBkb3duIGFzIG1hbnkgc3ViZGlyIGxl dmVscyBhcyBnaXZlbiBpbiB0aGUgJHN1YiBwYXJhbWV0ZXINCmZ1bmN0aW9uIHNtZF9kb0Rp cmVjdG9yeSgkbHN0LCAkbHZsPTAsICRzdWI9MCwgJG1hdGNoPSIiLCAkZGxtPSIsIiwgJHNw Yz0xLCAkY3RyPTApIHsNCglsaXN0KCRkaXJpbmMsICRkaXJleGMpID0gc21kX2RvTGlzdCgk bHN0LCBmYWxzZSwgJHN1YiwgZmFsc2UsICRkbG0sICRzcGMpOw0KCWxpc3QoJG1hdGNoaW5j LCAkbWF0Y2hleGMpID0gc21kX2RvTGlzdCgkbWF0Y2gsIGZhbHNlLCAnJywgZmFsc2UsICRk bG0sICRzcGMpOw0KCSRtYXRjaGluYyA9ICIuKiIgLigoJG1hdGNoaW5jKSA/ICIoIiAuaW1w bG9kZSgifCIsJG1hdGNoaW5jKS4iKSsuKiIgOiAiIik7DQoJJG1hdGNoZXhjID0gKCRtYXRj aGV4YykgPyAiLiooIiAuaW1wbG9kZSgifCIsJG1hdGNoZXhjKS4iKSsuKiIgOiAic21kX2ds cnlfIi5tdF9yYW5kKCk7DQoNCgkkc3ViID0gKGVtcHR5KCRzdWIpKSA/IDAgOiAkc3ViOw0K CSRzdWIgPSAoc3RydG9sb3dlcigkc3ViKT09ImFsbCIpID8gOTk5OTkgOiAkc3ViOw0KCSRm aWxlTGlzdCA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJGRpcmluYyBhcyAkZGlyKSB7DQoJCWlm ICgkaGFuZGxlID0gQG9wZW5kaXIoJGRpcikpIHsNCgkJCXdoaWxlICgoJGZpbGUgPSBAcmVh ZGRpcigkaGFuZGxlKSkgIT09IGZhbHNlKSB7DQoJCQkJJGZ1bGxwYXRoID0gJGRpci5EUy4k ZmlsZTsNCgkJCQlpZiAocHJlZ19tYXRjaCgiLyIuJG1hdGNoaW5jLiIvIiwgJGZ1bGxwYXRo KSAmJiAhcHJlZ19tYXRjaCgiLyIuJG1hdGNoZXhjLiIvIiwgJGZ1bGxwYXRoKSkgew0KCQkJ CQlpZiAoaXNfZGlyKCRmdWxscGF0aCkpIHsNCgkJCQkJCWlmICgoJGZpbGUgPT0gIi4iKSB8 fCAoJGZpbGU9PSAiLi4iKSB8fCAoaW5fYXJyYXkoJGZpbGUsICRkaXJleGMpKSB8fCAoJGx2 bCA+PSAkc3ViKSkgew0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJ CQkvLyBSZWN1cnNlIHRoZSBzdWJkaXIuIE5vdGUgdGhhdCB0aGUgJyEnIGlzIHRlbXBvcmFy aWx5IGFkZGVkIGJhY2sgdG8gZWFjaCBkaXJleGMgaXRlbQ0KCQkJCQkJCSR0bXAgPSAkZGly ZXhjOyAvLyBEb24ndCBvdmVyd3JpdGUgdGhlIG9yaWdpbmFsIGFycmF5DQoJCQkJCQkJYXJy YXlfdW5zaGlmdCgkdG1wLCAkZnVsbHBhdGgpOw0KCQkJCQkJCSRzdWJGaWxlcyA9IHNtZF9k b0RpcmVjdG9yeShpbXBsb2RlKCRkbG0uIiEiLCAkdG1wKSwgJGx2bCsxLCAkc3ViLCAkbWF0 Y2gsICRkbG0sICRzcGMsICRjdHIpOw0KCQkJCQkJCSRmaWxlTGlzdCA9IGFycmF5X21lcmdl KCRmaWxlTGlzdCwgJHN1YkZpbGVzKTsNCgkJCQkJCQkkY3RyICs9IGNvdW50KCRzdWJGaWxl cyk7DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkk ZmlsZXN0YXQgPSBzdGF0KCRmdWxscGF0aCk7DQoJCQkJCQkkaW1nc2l6ZSA9IGdldGltYWdl c2l6ZSgkZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydwYXRoJ10gPSAkZGly Ow0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWyduYW1lJ10gPSBiYXNlbmFtZSgkZnVsbHBhdGgp Ow0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydpZCddID0gcHJlZ19yZXBsYWNlKCcvXC4uKyQv JywgJycsICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnYWx0J10gPSAnJzsNCgkJ CQkJCSRmaWxlTGlzdFskY3RyXVsnY2FwdGlvbiddID0gJyc7DQoJCQkJCQkkcGFydHMgPSBl eHBsb2RlKERTLCAkZGlyKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnY2F0ZWdvcnknXSA9 IChjb3VudCgkcGFydHMpID4gMSkgPyBlbmQoJHBhcnRzKSA6ICcnOw0KCQkJCQkJJGZpbGVM aXN0WyRjdHJdWydhdXRob3InXSA9IHN0cnZhbCgkZmlsZXN0YXRbJ3VpZCddKTsNCgkJCQkJ CSRmaWxlTGlzdFskY3RyXVsnZGF0ZSddID0gc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNOiVT IiwgJGZpbGVzdGF0WydjdGltZSddKTsNCgkJCQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi4iLCAk ZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2V4dCddID0gKGNvdW50KCRwYXJ0cykg PiAxKSA/ICIuIi5lbmQoJHBhcnRzKSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWyd3 J10gPSAoaXNfYXJyYXkoJGltZ3NpemUpKSA/IHN0cnZhbCgkaW1nc2l6ZVswXSkgOiAnJzsN CgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaCddID0gKGlzX2FycmF5KCRpbWdzaXplKSkgPyBz dHJ2YWwoJGltZ3NpemVbMV0pIDogJyc7DQoJCQkJCX0NCgkJCQkJJGN0cisrOw0KCQkJCX0N CgkJCX0NCgkJfQ0KCQlpZiAoJGhhbmRsZSkgew0KCQkJQGNsb3NlZGlyKCRoYW5kbGUpOw0K CQl9DQoJfQ0KCXJldHVybiAkZmlsZUxpc3Q7DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1 OiJvcmRlciI7czoxOiI1IjtzOjQ6ImhlbHAiO3M6NDg0OTI6Igk8cD48ZGl2IGlkPSJzbWRf aGVscCI+PC9wPgoKCTxoMSBpZD0idG9wIj5zbWRfZ2FsbGVyeTwvaDE+CgoJPGgyIGlkPSJm ZWF0dXJlcyI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+U3VwcG9ydHMgYWxsIGN1cnJl bnQgYW5kIChwcm9iYWJseSkgZnV0dXJlIGdhbGxlcnkgc2NyaXB0cyBpbmNsdWRpbmcgdGh1 bWJwb3AsIHJvbGxvdmVyLCB0b29sdGlwLCBsaWdodGJveCwgbGl0ZWJveCwgc2xpbWJveCwg bW9vbmJveCwgdGhpY2tib3gsIHNsaWRlc2hvdywgZmFuY3l6b29tLCBldGM8L2xpPgoJCTxs aT5QdWxsIGltYWdlcyBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBk YXRhYmFzZSAob3Igb3B0aW9uYWxseSBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMpIHRoYXQgbWF0 Y2ggY2F0ZWdvcmllcyBvciBJRHM8L2xpPgoJCTxsaT5Vc2UgYXJ0aWNsZSBmaWVsZHMgdG8g aG9sZCBsaXN0cyBvZiBpbWFnZSBjYXRlZ29yaWVzL0lEcyBmb3IgYXJ0aWNsZS1zcGVjaWZp YyBnYWxsZXJpZXM8L2xpPgoJCTxsaT5NdWx0aS1sZXZlbCBzdWItY2F0ZWdvcnkgc3VwcG9y dDwvbGk+CgkJPGxpPkdhbGxlcnkgbGF5b3V0IGlzIGRlZmluZWQgaW4gYSA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtL2NvbnRhaW5lcjwvbGk+CgkJPGxpPkRpcmVjdC1h Y2Nlc3MgcGFnaW5hdGlvbiBpcyBzdXBwb3J0ZWQgYW5kIHRoZSBsYXlvdXQgb2YgcGFnaW5n IGZlYXR1cmVzIGNhbiBiZSBjb250cm9sbGVkIGJ5IGEgc2Vjb25kIGZvcm08L2xpPgoJCTxs aT5Vc2VzIGEgdGFnLXJlcGxhY2VtZW50IHN5c3RlbSBsaWtlIHRoZSB3ZXRfZm9yX2VhY2hf aW1hZ2UgcGx1Z2luPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4g c3VwcG9ydDwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iYXV0aG9yIj5BdXRob3I8L2gyPgoKCTxw PjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb21tZW50Rm9ybSI+U3RlZiBEYXdz b248L2E+LiBGb3Igb3RoZXIgc29mdHdhcmUgYnkgbWUsIG9yIHRvIG1ha2UgYSBkb25hdGlv biwgc2VlIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJl IHBhZ2U8L2E+LjwvcD4KCgk8aDIgaWQ9Imluc3RhbGwiPkluc3RhbGxhdGlvbiAvIFVuaW5z dGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFzcz0icmVxdWlyZWQiPlJlcXVpcmVzIHNtZF9saWIg djAuMzQrPC9wPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJl Zj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzk1Ny9zbWRfZ2FsbGVyeSI+dGV4 dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIHNvZnR3YXJlIHBhZ2UgYWJvdmUsIHBhc3RlIHRo ZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0m Z3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0 IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5w aHA/aWQ9MjY0ODIiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBv cnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxw PlRvIHJlbW92ZSB0aGUgcGx1Z2luLCBzaW1wbHkgZGVsZXRlIGl0IGZyb20gdGhlIEFkbWlu LSZndDtQbHVnaW5zIHRhYi4gSWYgbm8gb3RoZXIgcGx1Z2lucyBhcmUgdXNpbmcgc21kX2xp YiB5b3UgbWF5IHNhZmVseSBkZWxldGUgdGhhdCB0b28uPC9wPgoKCTxoMiBpZD0idXNhZ2Ui Pk92ZXJ2aWV3PC9oMj4KCgk8cD5UaGUgZ2VuZXJhbCBpZGVhIGlzIHRoYXQgdGhpcyBwbHVn aW4gYWN0cyBhcyBhIGZsZXhpYmxlIGltYWdlIGZpbHRlcjsgbm90aGluZyBtb3JlLiBUaGUg cGx1Z2luIG9wdGlvbnMgZ292ZXJuIHdoaWNoIGltYWdlcyBhcmUgcHVsbGVkIG91dCBvZiB0 aGUgZGF0YWJhc2UgYW5kIHRoZXkgYXJlIHNvcnRlZCBpbnRvIHdoYXRldmVyIG9yZGVyIHlv dSBsaWtlLjwvcD4KCgk8cD5BZnRlciB0aGF0LCBlYWNoIGltYWdlICYjODIxMjsgb25lIGJ5 IG9uZSAmIzgyMTI7IGhhcyBhbGwgaXRzIGF0dHJpYnV0ZXMgcGFzc2VkIHRocm91Z2ggdGhl IGNvbnRhaW5lciBvciA8Y29kZT5mb3JtPC9jb2RlPiBvZiB5b3VyIGNob2ljZTsgeW91IHNp bXBseSBjaG9vc2UgdG8gZGlzcGxheSB3aGljaGV2ZXIgaW1hZ2UgYXR0cmlidXRlcyB5b3Ug bGlrZSBpbiB0aGlzIGZvcm0uIFRoaXMgbWVhbnMgYW55IGltYWdlIGF0dHJpYnV0ZXMgY2Fu IGJlICYjODIyMDtpbmplY3RlZCYjODIyMTsgZGlyZWN0bHkgaW50byBhbnkgbWFya3VwOyBp dCBjb3VsZCBiZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzLCBpdCBjb3Vs ZCBiZSBjb250ZW50LCBpdCBjb3VsZCBiZSBqYXZhc2NyaXB0LCBvciA8c3BhbiBjbGFzcz0i Y2FwcyI+Q1NTPC9zcGFuPjsgYW55dGhpbmcuPC9wPgoKCTxwPlBhZ2luYXRpb24gd29ya3Mg dGhlIHNhbWUgd2F5LCBhbGxvd2luZyB5b3UgdG8gc3BlY2lmeSBob3cgdXNlcnMgY2FuIHN0 ZXAgdGhyb3VnaCB5b3VyIGltYWdlIGdhbGxlcmllcy48L3A+CgoJPHA+VGhlcmUgaXMgYWxz byBhIHNwZWNpYWwgbW9kZSBjYWxsZWQgJiM4MjIwO2NvbGxhdGUmIzgyMjE7IHRoYXQgYWxs b3dzIHlvdSB0byBjb2xsZWN0IGFsbCBpbWFnZSBhdHRyaWJ1dGVzIHRvZ2V0aGVyIGludG8g YSBzZXJpZXMgb2YgYmlnIGxvbmcgbGlzdHMgPGVtPndpdGhvdXQ8L2VtPiBjYWxsaW5nIHRo ZSBmb3JtIGV2ZXJ5IHRpbWUuIFRoZSBmb3JtL2NvbnRhaW5lciBpcyB0aGVuIG9ubHkgcHJv Y2Vzc2VkIG9uY2UgYXQgdGhlIGVuZC48L3A+CgoJPHA+QmV0d2VlbiB0aGVzZSB0d28gbW9k ZXMgeW91IDxlbT5zaG91bGQ8L2VtPiBiZSBhYmxlIHRvIHJlYWxpc2UgYW55IGdhbGxlcnlp bmcgc29sdXRpb247IG5vdyBhbmQgaW4gZnV0dXJlLjwvcD4KCgk8aDIgY2xhc3M9InRhZyAi IGlkPSJzbWRfZ2FsbGVyeSI+c21kX2dhbGxlcnk8L2gyPgoKCTxwIGNsYXNzPSJ0YWctc3Vt bWFyeSI+UGxhY2Ugb25lIG9yIG1vcmUgc21kX2dhbGxlcnkgdGFncyBpbiBhbnkgYXJ0aWNs ZSwgcGFnZSBvciBmb3JtLCBhbmQgc3VwcGx5IGFueSBvZiB0aGUgZm9sbG93aW5nIG9wdGlv bnMgdG8gY29uZmlndXJlIGl0LjwvcD4KCgk8aDMgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0 ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlkPC9zcGFuPiA6IGxp c3Qgb2YgaW1hZ2UgSURzIHRvIGRpc3BsYXkuIE1heSBiZSBpbnRlZ2VycyBvciByYW5nZXMs IGZvciBleGFtcGxlIDxjb2RlPmlkPSZxdW90OzUsIDQyLCA4LTExJnF1b3Q7PC9jb2RlPiB3 b3VsZCBncmFiIGltYWdlcyA1LCA4LCA5LCAxMCwgMTEgYW5kIDQyLiBVc2UgJiM4MjE2OyEm IzgyMTc7IGluIGZyb250IG9mIGEgbnVtYmVyIG9yIHJhbmdlIHRvIGV4Y2x1ZGUgdGhvc2Ug aW1hZ2VzLiBVc2UgJiM4MjE2Oz8mIzgyMTc7IGFuZCB0aGUgbmFtZSBvZiBhIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkIHRvIHJlYWQgdGhlIGxpc3Qgb2YgaW1hZ2Ug SURzIGZyb20gdGhhdCBmaWVsZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jYXRl Z29yeTwvc3Bhbj4gOiBsaXN0IG9mIGltYWdlIGNhdGVnb3JpZXMgdG8gZGlzcGxheS4gWW91 IG1heSBzcGVjaWZ5IGZpeGVkLW5hbWUgY2F0ZWdvcmllcyAoZS5nLiAmIzgyMjA7YW5pbWFs cyYjODIyMTspIG9yIGEmIzgyMTc7PyYjODIxNzsgZm9sbG93ZWQgYnkgYW4gYXJ0aWNsZSBm aWVsZCBuYW1lLiBlLmcuIDxjb2RlPmNhdGVnb3J5PSZxdW90O2FuaW1hbHMsIGFydC0/dGhp c2lkJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFiIGFsbCBpbWFnZXMgZnJvbSBjYXRlZ29yeSAm IzgyMjA7YW5pbWFscyYjODIyMTsgYW5kIGNhdGVnb3J5ICYjODIyMDthcnQtNDImIzgyMjE7 IChhc3N1bWluZyB0aGUgY3VycmVudCBhcnRpY2xlIGhhcyBhbiBpZCBvZiA0MikuIFVzZSAm IzgyMTY7ISYjODIxNzsgdG8gPGVtPmV4Y2x1ZGU8L2VtPiB0aGUgZ2l2ZW4gY2F0ZWdvcnkg b3IgZmllbGQuPGRpdiBjbGFzcz0iYnJlYWsiPkZpZWxkcyBtYXkgdGhlbXNlbHZlcyBjb250 YWluIGxpc3RzIG9mIGNhdGVnb3JpZXMuIFRoZSAmIzgyMTY7PyYjODIxNzsgZmllbGQgbmFt ZXMgbWF5IGJlIGNvbWJpbmVkIChlLmcuID9zLT9hcnRpY2xlX2ltYWdlKSBidXQgYmUgYXdh cmUgdGhhdCBjdXN0b20gZmllbGQgbmFtZXMgbWF5IGNvbnRhaW4gc3BhY2VzIGlmIDxjb2Rl PnN0cmljdGZpZWxkcz0mcXVvdDswJnF1b3Q7PC9jb2RlPjwvZGl2PjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5zdWJsZXZlbDwvc3Bhbj4gOiBhbiBpbnRlZ2VyIHRoYXQgc3Bl Y2lmaWVzIGhvdyBtYW55ICYjODIxNjtsZXZlbHMmIzgyMTc7IGRvd24gdG8gdHJhdmVyc2Ug ZWFjaCBtYXRjaGluZyBjYXRlZ29yeS4gPGNvZGU+c3VibGV2ZWw9JnF1b3Q7MCZxdW90Ozwv Y29kZT4gKHRoZSBkZWZhdWx0KSBpcyBvbmx5IHRoZSB0b3AtbGV2ZWw7IDEgPSB0b3AtbGV2 ZWwgcGx1cyB0aGUgMXN0IHN1Yi1jYXQ7IDIgPSB0b3AtbGV2ZWwgcGx1cyB0aGUgbmV4dCAy IHN1Yi1jYXRzLCBhbmQgc28gb24uIDxjb2RlPnN1YmxldmVsPSZxdW90O2FsbCZxdW90Ozwv Y29kZT4gaXMgYWxsIHN1Yi1jYXRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNv cnQ8L3NwYW4+IDogcmUtb3JkZXIgdGhlIGltYWdlcyBieSA8Y29kZT5jYXRlZ29yeTwvY29k ZT4gKHRoZSBkZWZhdWx0KSwgPGNvZGU+bmFtZTwvY29kZT4sIDxjb2RlPmRhdGU8L2NvZGU+ LCA8Y29kZT5pZDwvY29kZT4gKHRoZSBkZWZhdWx0IGlmIHVzaW5nIGFuIGlkKSwgZmlsZSA8 Y29kZT5leHQ8L2NvZGU+ZW5zaW9uLCA8Y29kZT5hbHQ8L2NvZGU+LCA8Y29kZT5jYXB0aW9u PC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+d2lkdGg8L2NvZGU+LCA8Y29k ZT5oZWlnaHQ8L2NvZGU+LCA8Y29kZT5oYXN0aHVtYjwvY29kZT4gaW4gZWl0aGVyIDxjb2Rl PmFzYzwvY29kZT5lbmRpbmcgb3IgPGNvZGU+ZGVzYzwvY29kZT5lbmRpbmcgb3JkZXIuIFR3 byBzcGVjaWFsIGNhc2VzIGV4aXN0OiA8Y29kZT5maXhlZDwvY29kZT4gbWFpbnRhaW5zIHRo ZSBvcmRlciB5b3Ugc3BlY2lmaWVkIGluIHRoZSBpZCBhbmQvb3IgY2F0ZWdvcnkgYXR0cmli dXRlLCB3aGlsZSA8Y29kZT5yYW5kb208L2NvZGU+IHNodWZmbGVzIHRoZSBvcmRlci48ZGl2 IGNsYXNzPSJicmVhayI+Tm90ZSB0aGF0IGlmIDxjb2RlPnJhbmRvbTwvY29kZT4gYXBwZWFy cyBhcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCwgcmFuZG9tIGltYWdlcyB3aWxsIGJl IHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdGhleSB3aWxsIHRoZW4gYmUgc29ydGVk IGFjY29yZGluZyB0byB0aGUgb3JkZXIgbGlzdGVkIGFmdGVyIGl0LiBJZiA8Y29kZT5yYW5k b208L2NvZGU+IGFwcGVhcnMgYW55d2hlcmUgZWxzZSBpbiB0aGUgbGlzdCwgYW55IHNvcnQg aXRlbXMgYmVmb3JlIGl0IHdpbGwgZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiBkYXRhIHB1bGxl ZCBmcm9tIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSByZXN1bHRzIHdpbGwgdGhlbiBiZSBvcmRl cmVkIHJhbmRvbWx5LiBJbiB0aGUgMm5kIGNhc2UsIGFueSBpdGVtcyBsaXN0ZWQgYWZ0ZXIg cmFuZG9tIHdpbGwgYmUgaWdub3JlZCwgYnV0ICA8Y29kZT5maXhlZDwvY29kZT4gaXMgc3Rp bGwgaG9ub3VyZWQ8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGltaXQ8 L3NwYW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyB0byBzaG93IDxlbT5wZXIg cGFnZTwvZW0+LiAwIG9yIG9taXR0ZWQgPSB1bmxpbWl0ZWQ8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+bWF4bGltaXQ8L3NwYW4+IDogdGhlIGFic29sdXRlIG1heGltdW0gbnVt YmVyIG9mIGltYWdlIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJhc2UuIDAgb3Igb21pdHRlZCA9 IHVubGltaXRlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vZmZzZXQ8L3NwYW4+ IDogc2tpcCB0aGlzIG1hbnkgaW1hZ2VzIGFuZCBzdGFydCBjb3VudGluZyB0aGVyZWFmdGVy PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1ibGltaXQ8L3NwYW4+IDogdGhl IG1heGltdW0gbnVtYmVyIG9mIHRodW1ibmFpbHMgdG8gc2hvdy4gMCBvciBvbWl0dGVkID0g YWxsIHRodW1icy4gTm90ZSB0aGF0IHRoaXMgZGlmZmVycyBmcm9tIGxpbWl0OyB5b3UgY2Fu IGxhdW5jaCBhIDIwLWltYWdlIGdhbGxlcnkgYnV0IG9ubHkgc2hvdyAxIHRodW1ibmFpbCBv biB0aGUgcGFnZS4gQmUgYXdhcmUgdGhhdCBpZiB5b3UgYXJlIHNob3dpbmcgbXVsdGlwbGUg Y2F0ZWdvcmllcyBmcm9tIGEgc2luZ2xlIHRhZywgeW91IHdpbGwgc2VlIG9uZSA8Y29kZT50 aHVtYmxpbWl0PC9jb2RlPiB0aHVtYm5haWxzIDxlbT5hdCBlYWNoIGNoYW5nZSBpbiBjYXRl Z29yeTwvZW0+LiBJZiB5b3UgZG9uJiM4MjE3O3Qgd2FudCB0aGlzLCBzZXQgPGNvZGU+b25j aGFuZ2U8L2NvZGU+IHRvIHNvbWV0aGluZyBlbHNlLiBTZWUgdGhlIDxjb2RlPntvYmplY3R9 PC9jb2RlPiA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50IHRhZzwvYT48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJvZmZzZXQ8L3NwYW4+IDogc2tpcCB0 aGlzIG1hbnkgdGh1bWJzIGJlZm9yZSBkaXNwbGF5aW5nIDxjb2RlPnRodW1ibGltaXQ8L2Nv ZGU+IHRodW1ibmFpbHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b25jaGFuZ2U8 L3NwYW4+IDogYSBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gJiM4MjIwO3dhdGNoJiM4MjIxOy4g SXQgdGVsbHMgdGhlIHBsdWdpbiB0aGF0IHlvdSB3YW50IHRvIGJlIG5vdGlmaWVkIHdoZW4g aXRlbXMgaW4gdGhpcyBsaXN0IGNoYW5nZSBjb21wYXJlZCB0byB0aGUgcHJldmlvdXMgaW1h Z2UuIFVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHRoaXMgc2hvdWxkIGJlIHRoZSBzYW1l IGFzIHlvdXIgPGNvZGU+c29ydDwvY29kZT4gcGFyYW1ldGVyIG9yIHlvdSBtYXkgZ2V0IHNv bWUgZnJlYWt5IHJlc3VsdHMhIEl0IGRlZmF1bHRzIHRvIDxjb2RlPmNhdGVnb3J5PC9jb2Rl Pi48ZGl2IGNsYXNzPSJicmVhayI+VGhpcyBpcyB2ZXJ5IHVzZWZ1bCBmb3Igc3BsaXR0aW5n IGdhbGxlcmllcyBhdCBldmVyeSBjaGFuZ2UgaW4gY2F0ZWdvcnkgYW5kIGRpc3BsYXlpbmcg dGhlIGNhdGVnb3J5IHRpdGxlIGFib3ZlIGVhY2ggZ3JvdXAuIEl0ZW1zIHlvdSB3YXRjaCBh cmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgcmVwbGFjZW1lbnQgdGFncyBhbmQgYXJlIGF2YWls YWJsZSBieSBwdXR0aW5nICYjODIyMDtvbmNoYW5nZTomIzgyMjE7IGluIGZyb250IG9mIHRo ZWlyIG5hbWUgKGUuZy4gPGNvZGU+e29uY2hhbmdlOmNhdGVnb3J5fTwvY29kZT4gJiM4MjEy OyBzZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2PC9hPiBmb3IgbW9yZSkuIFRoZSBjb2xv biBkZWxpbWl0ZXIgY2FuIGJlIGNoYW5nZWQgd2l0aCA8Y29kZT5wYXJhbWRlbGltPC9jb2Rl Pi48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+QW5vdGhlciB3YXkgb2YgdXNpbmcgdGhpcyBh dHRyaWJ1dGUgaXMgd2l0aCB0aGUgc3BlY2lhbCBwcmVmaXggPGNvZGU+c21kX2V2ZXJ5Om48 L2NvZGU+IHdoaWNoIHdpbGwgdHJpZ2dlciBhIGNoYW5nZSBldmVyeSBudGggaW1hZ2UuPC9k aXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9uY2hhbmdld3JhcHRhZzwvc3Bh bj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgYW55IDxjb2RlPm9uY2hhbmdlPC9j b2RlPiBlbGVtZW50cyB5b3UgYXJlIHdhdGNoaW5nLCBlLmcuIDxjb2RlPm9uY2hhbmdld3Jh cHRhZz0mcXVvdDtoMyZxdW90OzwvY29kZT4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPm9uY2hhbmdlY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdHJvIGFwcGx5IHRvIHRoZSB3cmFw dGFnIG9mIGFueSBvbmNoYW5nZSBlbGVtZW50cyB5b3UgYXJlIHdhdGNoaW5nLiBEZWZhdWx0 OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ncm91cHRhZzwvc3Bhbj4g OiB0aGUgKFgpSFRNTCB0YWcgdG8gbWFrZSBhdmFpbGFibGUgYXMgYSByZXBsYWNlbWVudCBz byB5b3UgY2FuIHdyYXAgZ3JvdXBzIG9mIGVsZW1lbnRzIGF0IGVhY2ggPGNvZGU+b25jaGFu Z2U8L2NvZGU+LiBEZWZhdWx0OiB1bnNldC4gU2VlIHRoZSA8Y29kZT5ncm91cHRhZ3N0YXJ0 PC9jb2RlPiAvIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPiA8YSBocmVmPSIjcmVwX2dhbGxl cnkiPnJlcGxhY2VtZW50IHRhZ3M8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pmdyb3VwY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+ IGNsYXNzIG5hbWUgYXBwbGllZCB0byBhbnkgPGNvZGU+Z3JvdXB0YWc8L2NvZGU+LiBEZWZh dWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50ZXh0PC9zcGFuPiA6 IGRpc3BsYXkgdGhlIGdpdmVuIHRleHQgaW5zdGVhZCBvZiB0aHVtYm5haWxzLiBUaGUgdGV4 dCBjYW4gY29udGFpbiA8Y29kZT4/PC9jb2RlPiBhcnRpY2xlIGZpZWxkczwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5lc2NhcGU8L3NwYW4+IDogbGlzdCBvZiByZXBsYWNlbWVu dCB2YXJpYWJsZSBuYW1lcyB0byAmIzgyMTY7ZXNjYXBlJiM4MjE3OywgaW4gb3RoZXIgd29y ZHMgY29udmVydCBhbnkgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZ3MgdG8g dGhlaXIgY2hhcmFjdGVyIGVudGl0eSBlcXVpdmFsZW50cy4gU2V0IHRvIDxjb2RlPmVzY2Fw ZT0mcXVvdDsmcXVvdDs8L2NvZGU+IHRvIHR1cm4gdGhpcyBmZWF0dXJlIG9mZi4gRGVmYXVs dDogPGNvZGU+YWx0LCB0aXRsZSwgY2FwdGlvbjwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+c3RyaWN0ZmllbGRzPC9zcGFuPiA6IHdoZW4gdXNpbmcgJiM4MjE2Oz8m IzgyMTc7IG9yICYjODIxNjshJiM4MjE3OyBmaWVsZHMsIHNwYWNlcyBhcmUgYWxsb3dlZCBp biBmaWVsZCBuYW1lcy4gU2V0IDxjb2RlPnN0cmljdGZpZWxkcz0mcXVvdDsxJnF1b3Q7PC9j b2RlPiB0byBmb3JiaWQgc3BhY2VzLiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnRodW1iPC9zcGFuPiA6IGlmIHlvdSB3aXNoIHRoZSBmdWxsc2l6ZSBpbWFn ZXMgZGlzcGxheWVkIGFzIHRodW1ibmFpbHMsIG9yIGlmIHlvdSB3YW50IHRoZSB0aHVtYm5h aWwgZ2FsbGVyeSB0byB1c2UgdGhlIGZ1bGxzaXplIGltYWdlcywgc3BlY2lmeSBpdCB3aXRo IHRoaXMgYXR0cmlidXRlLiBVc2UgPGNvZGU+dGh1bWI9JnF1b3Q7MSZxdW90OzwvY29kZT4g dG8gc3BlY2lmeSB0aGF0IGJvdGggZnVsbHNpemUgaW1hZ2UgYW5kIHRodW1ibmFpbCBkaXNw bGF5IHRoZSAmIzgyMTY7dCYjODIxNzsgKHRodW1ibmFpbCkgaW1hZ2UuIFVzZSA8Y29kZT50 aHVtYj0mcXVvdDswJnF1b3Q7PC9jb2RlPiB0byBzcGVjaWZ5IHRoYXQgYm90aCBmdWxsc2l6 ZSBhbmQgdGh1bWJuYWlscyB1c2UgdGhlIGZ1bGwgc2l6ZSBpbWFnZXMuIFlvdSBjYW4gYWxz byBjaG9vc2Ugb25lIG9yIHRoZSBvdGhlciBieSBnaXZpbmcgdGhpcyBhdHRyaWJ1dGUgdHdv IG51bWJlcnMgc2VwYXJhdGVkIGJ5IGEgY29sb24uPGRpdiBjbGFzcz0iYnJlYWsiPkZvciAm IzgyMTY7bm9ybWFsJiM4MjE3OyBvcGVyYXRpb24gJiM4MjEyOyBpLmUuIGZ1bGxzaXplIGlt YWdlIGlzIGZ1bGwgc2l6ZSwgdGh1bWJuYWlsIGlzIHRodW1iIHNpemVkICYjODIxMjsgc3Bl Y2lmeSA8Y29kZT50aHVtYj0mcXVvdDswOjEmcXVvdDs8L2NvZGU+LiBUbyByZXZlcnNlIHRo aXMsIHVzZSA8Y29kZT50aHVtYj0mcXVvdDsxOjAmcXVvdDs8L2NvZGU+LiBOb3RlIHRoYXQg PGNvZGU+MToxPC9jb2RlPiBhbmQgPGNvZGU+MDowPC9jb2RlPiBhbHNvIHdvcmsgdG8gc2V0 IGJvdGggaW1hZ2VzIHRvIHRoZSBzYW1lIHNpemUgaWYgeW91IHByZWZlciB0aGF0IHN5bnRh eDwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aHVtYnNpemU8L3NwYW4+ IDogdGFrZXMgb25lIG9yIHR3byBjb21tYS1zZXBhcmF0ZWQgbnVtYmVycyB0byBzcGVjaWZ5 IHdpZHRoIGFuZC9vciBoZWlnaHQgb2YgYWxsIHlvdXIgZ2FsbGVyeSB0aHVtYm5haWxzLiBU aGUgZGVmYXVsdCBpcyBpbiBwaXhlbHMgaWYgeW91IGRvbiYjODIxNzt0IHNwZWNpZnkgdW5p dHMuIE1pc3Npbmcgb3V0IG9uZSBvciB0aGUgb3RoZXIgcGFyYW1ldGVyIChpLmUuIGhhdmlu ZyBhbiAmIzgyMjA7ZW1wdHkmIzgyMjE7IHBhcmFtZXRlciBiZWZvcmUgb3IgYWZ0ZXIgdGhl IGNvbW1hKSB3aWxsIG9ubHkgc2V0IG9uZSBvZiB0aGUgZGltZW5zaW9ucy4gVXNlIGEgc2lu Z2xlIHZhbHVlIHRvIG1ha2Ugc3F1YXJlIHRodW1iczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5mb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBmb3JtIHVzZWQgdG8gbGF5b3V0IHlvdXIgbWF0Y2hpbmcgaW1hZ2VzLiBXaXRob3V0IHRo aXMgYXR0cmlidXRlIHRoZSBwbHVnaW4gYWN0cyBhcyBhIGNvbnRhaW5lciB0YWcuIFdpdGhv dXQgYSBjb250YWluZXIsIHRoZSBwbHVnaW4gZGlzcGxheXMgZWFjaCBmdWxsLXNpemUgaW1h Z2UsIGh5cGVybGlua2VkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vmb3Jt PC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQg dG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9mIHlvdXIgcGFnaW5nIG5hdmlnYXRpb248L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnaW5nPC9zcGFuPiA6IHN3aXRjaCBwYWdpbmcg b24gd2l0aG91dCBoYXZpbmcgdG8gc3BlY2lmeSBhIHBhZ2Vmb3JtLiBXaGVuIHRoaXMgaXMg dXNlZCwgYWxsIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5wYWdlIHJlcGxhY2VtZW50IHRhZ3M8 L2E+IGJlY29tZSBhdmFpbGFibGUgaW4gdGhlIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2Fs bGVyeSByZXBsYWNlbWVudCB0YWdzPC9hPiBhcyB3ZWxsPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnBhZ2Vwb3M8L3NwYW4+IDogdGhlIHBvc2l0aW9uIG9mIHRoZSBwYWdpbmcg YmxvY2suIE9wdGlvbnMgYXJlIDxjb2RlPmJlbG93PC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8 Y29kZT5hYm92ZTwvY29kZT4sIG9yIGJvdGggb2YgdGhlbSBzZXBhcmF0ZWQgYnkgPGNvZGU+ ZGVsaW08L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9iamVjdGZvcm08 L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0 byBzcGVjaWZ5IHRoZSBsYXlvdXQgb2YgeW91ciA8Y29kZT57b2JqZWN0fTwvY29kZT4gcmVw bGFjZW1lbnQgdGFnLiBZb3UgY2FuIHVzZSBhbGwgdGhlIHN0YW5kYXJkIDxhIGhyZWY9IiNy ZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNlbWVudCB0YWdzPC9hPiB3aXRoIHRoZSBleGNl cHRpb24gb2YgPGNvZGU+e29iamVjdH08L2NvZGU+IGl0c2VsZiEgVXNlcyBhIGh5cGVybGlu a2VkIGltYWdlIGlmIG5vIGZvcm0gaXMgc3BlY2lmaWVkPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmdhbGxlcnlpZDwvc3Bhbj4gOiB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNl cyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdGhpcy4gRWFjaCBnYWxsZXJ5IGlzIGFzc2lnbmVk IGEgdW5pcXVlIElEIGJhc2VkIG9uIHRoZSBzdXBwbGllZCBhdHRyaWJ1dGVzLiBJbiB0aGUg dW5saWtlbHkgZXZlbnQgdGhhdCB0d28gaWRlbnRpY2FsIElEcyBhcmUgZ2VuZXJhdGVkIHlv dSBjYW4gb3ZlcnJpZGUgdGhlIElEIGZvciBhIGdhbGxlcnkgYnkgdXNpbmcgdGhpcyBhdHRy aWJ1dGUuPGRpdiBjbGFzcz0iYnJlYWsiPkludGVybmFsbHkgdGhlIHBsdWdpbiBnZW5lcmF0 ZXMgYSAzMi1jaGFyYWN0ZXIgaGFzaCBzdHJpbmcgZm9yIGVhY2ggdGFnLCB0aGVuIHBpY2tz IGEgNC1jaGFyIGNvZGUgZnJvbSB0aGlzIHN0cmluZyAoaXQgdGFrZXMgZXZlcnkgNnRoIGNo YXJhY3RlciBieSBkZWZhdWx0KS4gWW91IGNhbiBzdXBwbHkgYSB1bmlxdWUgZml4ZWQgc3Ry aW5nIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDtNeUdhbCZxdW90OzwvY29kZT4pIG9y IGdpdmUgaXQgYSBxdWVzdGlvbiBtYXJrIGFuZCAyIG51bWJlcnMgc2VwYXJhdGVkIGJ5IGEg Y29sb24gKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90Oz81OjQmcXVvdDs8L2NvZGU+KS4g VGhlIGZpcnN0IG51bWJlciBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBmaW5hbCBzdHJpbmcgdG8g Z2VuZXJhdGUsIHRoZSBzZWNvbmQgbnVtYmVyIGlzIGhvdyBtYW55IGNoYXJhY3RlcnMgdG8g c2tpcCBpbiB0aGUgMzItY2hhciBzdHJpbmcgZWFjaCB0aW1lIGl0IHBpY2tzIG9uZS48L2Rp dj48ZGl2IGNsYXNzPSJicmVhayI+SW4gdGhpcyBjYXNlIGl0IGdlbmVyYXRlcyBhIDUtY2hh cmFjdGVyIHN0cmluZyBmcm9tIHRoZSBjaGFyYWN0ZXJzIGl0IGZpbmRzIGF0IHBvc2l0aW9u cyAxLDUsOSwxMywgYW5kIDE3LiBJZiB5b3Ugb21pdCB0aGUgMm5kIG51bWJlciAoZS5nLiA8 Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7PzYmcXVvdDs8L2NvZGU+KSBpdCB3aWxsIGFzc3VtZSBp dCYjODIxNztzIGFuIGluY3JlbWVudCBvZiAxPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmZvcm1hdDwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBp ZiB1c2luZyA8Y29kZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiBhbGxvd3MgeW91IHRvIGNo YW5nZSB0aGUgZGF0ZSBmb3JtYXQgdXNlZC4gQ2FuIHRha2UgYW55IDxhIGhyZWY9Imh0dHA6 Ly91ay5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiB2YWx1ZXMuIERlZmF1bHRz IHRvIHRoZSBkYXRlIHN5c3RlbSBhcyBzZXQgaW4gdGhlIHNpdGUmIzgyMTc7cyBwcmVmczwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYW5nPC9zcGFuPiAoPHNwYW4gY2xhc3M9 InJlcXVpcmVkIj5vbmx5IGlmIHVzaW5nIDxjb2RlPntkYXRlfTwvY29kZT48L3NwYW4+KSA6 IHNldHMgdGhlIGxhbmd1YWdlIGNvZGUgb2YgdGhlIGRhdGUgZm9ybWF0LiBEZWZhdWx0OiB1 bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5nbXQ8L3NwYW4+ICg8c3BhbiBj bGFzcz0icmVxdWlyZWQiPm9ubHkgaWYgdXNpbmcgPGNvZGU+e2RhdGV9PC9jb2RlPjwvc3Bh bj4pIDogcmV0dXJucyBlaXRoZXIgbG9jYWwgdGltZSBhY2NvcmRpbmcgdG8gdGhlIHNldCB0 aW1lIHpvbmUgcHJlZmVyZW5jZXMgKDApLCBvciA8c3BhbiBjbGFzcz0iY2FwcyI+R01UPC9z cGFuPiB0aW1lICgxKS4gRGVmYXVsdDogMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCB0aGUgZW50 aXJlIGdhbGxlcnksIGUuZy4gPGNvZGU+d3JhcHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+ LiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5icmVhazwv c3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgZWFjaCB0aHVtYm5haWwuIERl ZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzPC9zcGFu PiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIGFwcGxp ZWQgdG8gdGhlIHdyYXB0YWcuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmh0bWxfaWQ8L3NwYW4+IDogdGhlIG5hbWUgb2YgYW4gPHNwYW4gY2xhc3M9 ImNhcHMiPkhUTUw8L3NwYW4+IDxjb2RlPmlkPC9jb2RlPiBhdHRyaWJ1dGUgdG8gYXBwbHkg dG8gdGhlIHdyYXB0YWcuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPm5hdndyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5k IHRoZSBlbnRpcmUgPGNvZGU+cGFnZWZvcm08L2NvZGU+LCBlLmcuIDxjb2RlPndyYXB0YWc9 JnF1b3Q7ZGl2JnF1b3Q7PC9jb2RlPi4gRGVmYXVsdDogPGNvZGU+dWw8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1M IHRhZyB0byBzdXJyb3VuZCBlYWNoIGl0ZW0gd2l0aGluIHRoZSA8Y29kZT5wYWdlZm9ybTwv Y29kZT4uIERlZmF1bHQ6IDxjb2RlPmxpPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5uYXZjbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwv c3Bhbj4gY2xhc3MgbmFtZSBvZiB0aGUgbmF2aWdhdGlvbiB3cmFwdGFnLiBEZWZhdWx0OiA8 Y29kZT5zbWRfZ2FsbGVyeV9uYXY8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmVtcHR5Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3Nw YW4+IGNsYXNzIG5hbWUgb2YgdGhlIG5hdmlnYXRpb24gaXRlbXMgdGhhdCBhcmUgPGVtPm5v dDwvZW0+IGxpbmtzLiBEZWZhdWx0OiA8Y29kZT5lbXB0eTwvY29kZT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+ZGVsaW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIg Zm9yIHNwZWNpZnlpbmcgYXR0cmlidXRlIGxpc3RzLiBEZWZhdWx0IGlzIGNvbW1hICgsKTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYXJhbWRlbGltPC9zcGFuPiA6IGNoYW5n ZSB0aGUgZGVsaW1pdGVyIGZvciBzcGVjaWZ5aW5nIGludGVyLXBhcmFtZXRlciBhdHRyaWJ1 dGVzLiBEZWZhdWx0IGlzIGNvbG9uICg6KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5jb2xsYXRlPC9zcGFuPiA6IHN3aXRjaCB0aGUgcGx1Z2luIGludG8gPGEgaHJlZj0iI2Nv bGxhdGVfbW9kZSI+Y29sbGF0ZSBtb2RlPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5jb2xsYXRlZGVsaW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgYmV0d2Vl biBlYWNoIGNvbGxhdGVkIGl0ZW0uIERlZmF1bHQgaXMgY29tbWEgKCwpPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmNvbWJvPC9zcGFuPiA6IHNwZWNpZnkgeW91ciBvd24gPGEg aHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5jb2x1bW5zPC9zcGFuPiA6IGdpdmUgYSBjb21tYS1zZXBhcmF0 ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIGNvbHVtbnMgeW91IHdvdWxkIGxpa2UgdG8gcHVsbCBm cm9tIHRoZSBkYXRhYmFzZS4gRWFjaCBpdGVtIHlvdSBzcGVjaWZ5IGlzIHNwbGl0IGludG8g dGhyZWUgcGFydHM6IDxjb2RlPnRhYmxlLmNvbHVtbjpyZXBsYWNlbWVudCBuYW1lPC9jb2Rl Pi4gVGhlIG9ubHkgbWFuZGF0b3J5IHBhcnQgaXMgdGhlIHJlcGxhY2VtZW50IG5hbWUsIHNp bmNlIDxjb2RlPnRhYmxlPC9jb2RlPiBkZWZhdWx0cyB0byB0eHBfaW1hZ2UsIGFuZCB0aGUg PGNvZGU+Y29sdW1uPC9jb2RlPiBkZWZhdWx0cyB0byB0aGUgc2FtZSBuYW1lIGFzIHRoZSBy ZXBsYWNlbWVudCB5b3Ugc3BlY2lmeS48ZGl2IGNsYXNzPSJicmVhayI+Rm9yIGV4YW1wbGUs IGlmIHlvdSBoYXZlIGluc3RhbGxlZCB0aGUgY25vX2ltYWdlX29yZGVyIHBsdWdpbiB5b3Ug Y291bGQgdXNlIDxjb2RlPmNvbHVtbnM9JnF1b3Q7cG9zaXRpb24mcXVvdDs8L2NvZGU+LCBz aW5jZSB0aGUgcGx1Z2luIGFkZHMgdGhlICYjODIxNjtwb3NpdGlvbiYjODIxNzsgY29sdW1u IHRvIHR4cF9pbWFnZS4gWW91IGNvdWxkIHRoZW4gc29ydCBieSA8Y29kZT5wb3NpdGlvbjwv Y29kZT4gYW5kIGFsc28gZGlzcGxheSB0aGUgaW1hZ2UmIzgyMTc7cyA8Y29kZT57cG9zaXRp b259PC9jb2RlPi4gSWYgeW91IHdpc2hlZCB0byByZW5hbWUgdGhlIHZhcmlhYmxlIHRvLCBz YXksIDxjb2RlPmltZ3BvczwvY29kZT4geW91IHdvdWxkIHVzZSA8Y29kZT5jb2x1bW5zPSZx dW90O3Bvc2l0aW9uOmltZ3BvcyZxdW90OzwvY29kZT4uIE5vdGUgdGhhdCBpZiB5b3Ugc3Bl Y2lmeSB0aGUgdGFibGUgbmFtZSB5b3UgbXVzdCBhbHNvIGluY2x1ZGUgdGhlIHRhYmxlIHBy ZWZpeCBpZiB5b3UgaGF2ZSB1c2VkIG9uZS48L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+ZGlyZWN0b3J5PC9zcGFuPiA6ICg8c3BhbiBjbGFzcz0icmVxdWlyZWQiPmV4 cGVyaW1lbnRhbDwvc3Bhbj4pIHJlYWQgaW1hZ2VzIGZyb20gYSBsaXN0IG9mIGRpcmVjdG9y aWVzIChvciA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPnMpIGluc3RlYWQgb2YgdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGRhdGFiYXNlPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPm1hdGNoPC9zcGFuPiA6IGxpbWl0IHRoZSBpbWFnZXMgYW5kIGRp cmVjdG9yaWVzIGNob3NlbiBpbiA8Y29kZT5kaXJlY3Rvcnk8L2NvZGU+IG1vZGUuIEdpdmUg YSBsaXN0IG9mIHdvcmRzIHRvIGluY2x1ZGUgb3IgIWV4Y2x1ZGUgYW5kIGFueSBtYXRjaGlu ZyBmaWxlcyBvciBkaXJlY3RvcmllcyB3aWxsIGJlIGNob3NlbiBvciBpZ25vcmVkLCByZXNw ZWN0aXZlbHkuIFRoZSBtYXRjaCB0ZXJtcyBhcmUgYXV0b21hdGljYWxseSBhc3N1bWVkIHRv IGJlICYjODIyMDt3aWxkJiM4MjIxOyBzbyBhbnkgcGFydCBvZiB0aGUgZmlsZSBuYW1lIC8g cGF0aCB3aWxsIHRyaWdnZXIgdGhlIG1hdGNoPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmRlYnVnPC9zcGFuPiA6IHR1cm4gb24gZGlhZ25vc3RpY3MuIFZhcnlpbmcgbGV2ZWxz IG9mIHZlcmJvc2l0eSBmcm9tIDAgKG5vbmUpIHRvIDQgKGEgbG90KTwvbGk+Cgk8L3VsPgoK CTxoMiBpZD0iZ2FsbGVyeV9mb3JtIj5HYWxsZXJ5IGZvcm08L2gyPgoKCTxwPlRoZSA8Y29k ZT5mb3JtPC9jb2RlPiBpcyB3aGVyZSB5b3UgZGVzaWduIHdoYXQgZXZlcnkgdGh1bWJuYWls IHdpbGwgbG9vayBsaWtlIG9uIHRoZSBzY3JlZW4uIFlvdSBkbyB0aGlzIGJ5IHNwZWNpZnlp bmcgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG1hcmt1cCBvciA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzIGFzIG5vcm1hbC4gSW4ga2V5IHBsYWNlcyB3aGVy ZSB5b3Ugd2FudCwgZm9yIGV4YW1wbGUsIGFuIGltYWdlIElEIC8gYWx0IHRhZyAvIGltYWdl IHdpZHRoIHRvIGJlIGRpc3BsYXllZCwgeW91IHNwZWNpZnkgc3BlY2lhbCA8YSBocmVmPSIj cmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50IHRhZ3M8L2E+LiBUaGVzZSBhcmUgcmVwbGFjZWQg Zm9yIGVhY2ggaW1hZ2UgaW4gdHVybiwgdGh1cyBidWlsZGluZyB1cCB0aGUgZ2FsbGVyeS48 L3A+CgoJPHA+SW4gY29sbGF0ZSBtb2RlLCB0aGUgaW1hZ2UgZGV0YWlscyBhcmUgaW5zdGVh ZCBtYWRlIGludG8gbGlzdHMuIFRoZSBmb3JtIGlzIG9ubHkgcHJvY2Vzc2VkIG9uY2UgYW5k IHRoZSByZXBsYWNlbWVudCB0YWdzIG91dHB1dCB0aGUgZW50aXJlIGxpc3QuPC9wPgoKCTxo MyBjbGFzcz0iYXR0cyAiIGlkPSJyZXBfZ2FsbGVyeSI+UmVwbGFjZW1lbnQgdGFnczogZ2Fs bGVyeTwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2lkfTwvc3Bhbj4g OiBpbWFnZSBJRCAob3IsIGluIGRpcmVjdG9yeSBtb2RlLCB0aGUgZmlsZW5hbWUgd2l0aG91 dCBpdHMgZXh0ZW5zaW9uKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmFtZX08 L3NwYW4+IDogZnVsbCBpbWFnZSBmaWxlbmFtZSBhcyBkZWZpbmVkIGluIHRoZSBkYXRhYmFz ZSwgdXN1YWxseSBpbmNsdWRpbmcgZXh0ZW5zaW9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPntleHR9PC9zcGFuPiA6IGZpbGUgZXh0ZW5zaW9uLCBpbmNsdWRpbmcgZG90PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntjYXRlZ29yeX08L3NwYW4+IDogaW1hZ2Ug Y2F0ZWdvcnkgbmFtZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57Y2F0ZWdvcnlf dGl0bGV9PC9zcGFuPiA6IGltYWdlIGNhdGVnb3J5IHRpdGxlPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnthdXRob3J9PC9zcGFuPiA6IHdobyB1cGxvYWRlZCB0aGUgaW1hZ2U8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3VybH08L3NwYW4+IDogPHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj4gb2YgdGhlIGZ1bGxzaXplIGltYWdlPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYnVybH08L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNh cHMiPlVSTDwvc3Bhbj4gb2YgdGhlIHRodW1ibmFpbDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj57aW1hZ2VwYXRofTwvc3Bhbj4gOiBkaXJlY3RvcnkgdGhlIGltYWdlIGlzIGlu PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpbWFnZWRlZn08L3NwYW4+IDoganVz dCB0aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhlIGltYWdlIChlLmcuIDUuanBnKTwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJkZWZ9PC9zcGFuPiA6IGp1c3QgdGhlIGZp bGUgbmFtZSBwYXJ0IG9mIHRoZSB0aHVtYm5haWwgKGUuZy4gNXQuanBnKTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57YWx0fTwvc3Bhbj4gOiBhbHQgdGV4dDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57dGl0bGV9IG9yIHtjYXB0aW9ufTwvc3Bhbj4gOiBjYXB0 aW9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntkYXRlfTwvc3Bhbj4gOiBpbWFn ZSB1cGxvYWQgZGF0ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57d2lkdGh9PC9z cGFuPiA6IGltYWdlIHdpZHRoPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntoZWln aHR9PC9zcGFuPiA6IGltYWdlIGhlaWdodDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57dGh1bWJ3aWR0aH08L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoIChpZiBkZWZpbmVkOiBz ZWUgPGNvZGU+dGh1bWJzaXplPC9jb2RlPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e3RodW1oZWlnaHR9PC9zcGFuPiA6IHRodW1ibmFpbCBoZWlnaHQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+e3RodW1id3VuaXRzfTwvc3Bhbj4gOiB0aHVtYm5haWwgd2lk dGggdW5pdHMgKGUuZy4gcHgsICUsIGVtIGV0Yyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e3RodW1iaHVuaXRzfTwvc3Bhbj4gOiB0aHVtYm5haWwgaGVpZ2h0IHVuaXRzPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntoYXN0aHVtYn08L3NwYW4+IDogaWYgdGhl IGltYWdlIGhhcyBhbiBhc3NvY2lhdGVkIHRodW1ibmFpbCBvciBub3Q8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+e2dhbGxlcnlpZH08L3NwYW4+IDogZ2FsbGVyeSBpZCB5b3Ug b3IgdGhlIHBsdWdpbiBhc3NpZ25lZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 b2JqZWN0fTwvc3Bhbj4gOiBhIHNwZWNpYWwgaXRlbSBjb250YWluaW5nIGVpdGhlciB0aGUg PGNvZGU+dGV4dDwvY29kZT4gT1IgdGhlIGltYWdlIHRhZyBvZiB0aGUgY29ycmVzcG9uZGlu ZyB0aHVtYm5haWwsIGJ1dCA8ZW0+b25seTwvZW0+IGlmIDxjb2RlPnRodW1ibGltaXQ8L2Nv ZGU+IGFsbG93cyBpdC4gZS5nLiBpZiA8Y29kZT50aHVtYmxpbWl0PSZxdW90OzEmcXVvdDs8 L2NvZGU+IHRoaXMgdmFyaWFibGUgaXMgb25seSBzZXQgZm9yIHRoZSBmaXJzdCB0aHVtYm5h aWwgaW4gdGhlIGxpc3Q7IGV2ZXJ5IG90aGVyIHRpbWUgaXQgaXMgZW1wdHk8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e2NvdW50ZXJ9PC9zcGFuPiA6IGltYWdlIGNvdW50ZXIs IHN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGVhY2ggdGltZTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57aW5kZXh9PC9zcGFuPiA6IGluZGV4IGNvdW50ZXIgKHpl cm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1c2UpPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnt0aHVtYmNvdW50ZXJ9PC9zcGFuPiA6IHRodW1ibmFpbCBpbWFn ZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEuIE5vdGUgaXQgaXMgJiM4MjE2O3Jlc2V0JiM4 MjE3OyB3aGVuZXZlciBhbiBlbGVtZW50IGdpdmVuIGluIDxjb2RlPm9uY2hhbmdlPC9jb2Rl PiBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIGl0ZW08L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+e3RodW1iaW5kZXh9PC9zcGFuPiA6IGluZGV4IGNvdW50ZXIgKHplcm8tYmFz ZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1c2UpLiBJdCBpcyByZXNldCBsaWtlIDxj b2RlPnt0aHVtYmNvdW50ZXJ9PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRvdGFsIG51bWJlciBvZiBpbWFnZXMgbWF0Y2hl ZCBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e21heGltYWdl c308L3NwYW4+IDogYWJzb2x1dGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIGFjcm9zcyBh bGwgcGFnZXM8L2xpPgoJPC91bD4KCgk8cD5JbiBhZGRpdGlvbiwgaWYgZWl0aGVyIDxjb2Rl PnBhZ2luZz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBvciA8Y29kZT5wYWdlZm9ybTwvY29kZT4g aGF2ZSBiZWVuIHNwZWNpZmllZCwgYWxsIHRoZSA8YSBocmVmPSIjcmVwX3BhZ2luZyI+cGFn aW5nIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGFyZSBhdmFpbGFibGUgdG9vLiBJZiB0aG9zZSBh cmVuJiM4MjE3O3QgZW5vdWdoLCB5b3UgY2FuIDxhIGhyZWY9IiNjb21ib3MiPmNyZWF0ZSB5 b3VyIG93bjwvYT4gYnkgZ3JvdXBpbmcgY29tYmluYXRpb25zIG9mIHRoZSBhYm92ZSwgb3B0 aW9uYWxseSB3aXRoIGFydGljbGUgdmFyaWFibGVzIHN1Y2ggYXMgPGNvZGU+P2V4Y2VycHQ8 L2NvZGU+LCA8Y29kZT4/a2V5d29yZHM8L2NvZGU+LCA8Y29kZT4/YXJ0aWNsZV9pbWFnZTwv Y29kZT4sIGV0Yy48L3A+CgoJPHA+T3RoZXIgdGFncyBhcmUgYWRkZWQgZGVwZW5kaW5nIGlm IHlvdSBhcmUgd2F0Y2hpbmcgZm9yIDxjb2RlPm9uY2hhbmdlPC9jb2RlPiBlbGVtZW50cywg b3IgaWYgeW91IGhhdmUgc3BlY2lmaWVkIGEgPGNvZGU+Z3JvdXB0YWc8L2NvZGU+LiBJZiB5 b3UgYWRkZWQgPGNvZGU+b25jaGFuZ2U9JnF1b3Q7YXV0aG9yLCBjYXRlZ29yeSZxdW90Ozwv Y29kZT4gdGhlbiBldmVyeSB0aW1lIHRoZSBhdXRob3Igb3IgY2F0ZWdvcnkgY2hhbmdlZCBj b21wYXJlZCB0byB0aGUgcHJldmlvdXMgaW1hZ2UsIG9uZSBvciB0d28gbmV3IHJlcGxhY2Vt ZW50IHRhZ3Mgd291bGQgYmVjb21lIGF2YWlsYWJsZTsgbmFtZWx5IDxjb2RlPntvbmNoYW5n ZTphdXRob3J9PC9jb2RlPiBhbmQgPGNvZGU+e29uY2hhbmdlOmNhdGVnb3J5KTwvY29kZT4u IFVzaW5nIG9uY2hhbmdlIHdpdGggPGNvZGU+c21kX2V2ZXJ5PC9jb2RlPiBkb2VzIDxlbT5u b3Q8L2VtPiBhZGQgYSBuZXcgcmVwbGFjZW1lbnQgdGFnIGFzIGl0IGlzIG1lcmVseSB1c2Vk IHRvIGNvdW50LjwvcD4KCgk8cD5JZiB5b3UgdXNlZCA8Y29kZT5ncm91cHRhZz0mcXVvdDtk aXYmcXVvdDs8L2NvZGU+IGFzIHdlbGwsIHlvdSB3b3VsZCBiZSBnaXZlbiB0d28gbmV3IHJl cGxhY2VtZW50IHRhZ3MgbGFiZWxsZWQgPGNvZGU+Z3JvdXB0YWdzdGFydDwvY29kZT4gYW5k IDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPi4gU2VlIDxhIGhyZWY9IiNlZzYiPmV4YW1wbGUg NjwvYT4gZm9yIGRldGFpbHMuPC9wPgoKCTxoMiBpZD0icGFnaW5nX2Zvcm0iPlBhZ2luZyBm b3JtPC9oMj4KCgk8cD5BZGQgZ2FsbGVyeSBuYXZpZ2F0aW9uIHRvIHlvdXIgcGFnZS4gV29y a3MgaW4gYSBzaW1pbGFyIG1hbm5lciB0byB0aGUgPGEgaHJlZj0iI2dhbGxlcnlfZm9ybSI+ Z2FsbGVyeSBmb3JtPC9hPjogYSBzZXJpZXMgb2YgPGEgaHJlZj0iI3JlcF9wYWdpbmciPlJl cGxhY2VtZW50IFRhZ3M8L2E+IGdvdmVybiB3aGljaCBnYWxsZXJ5IG5hdmlnYXRpb24gaXRl bXMgYXJlIGF2YWlsYWJsZS4gWW91IGNvdWxkIGNob29zZSB0byBvbmx5IHNob3cgbmV4dC9w cmV2LiBPciBwZXJoYXBzIDFzdCBwYWdlL2xhc3QgcGFnZS4gT3IgbnVtYmVyZWQgcGFnZSBs aW5rcy48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9InJlcF9wYWdpbmciPlJlcGxhY2Vt ZW50IHRhZ3M6IHBhZ2luZzwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e25hdmZpcnN0fTwvc3Bhbj4gOiBmaXJzdCBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7 Rmlyc3QmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZwcmV2fTwvc3Bhbj4gOiBwcmV2aW91cyBwYWdl IChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7JmxhcXVvOyYjODIyMTsgLyA8c3BhbiBjbGFzcz0i Y2FwcyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmVh cmxpZXJ9PC9zcGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYmVmb3JlIHRoZSBjdXJyZW50IHBh Z2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXN1cmx9PC9zcGFuPiA6 IGN1cnJlbnQgcGFnZSB3aXRoIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGlu ayB0byBpdHNlbGY8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXN9PC9z cGFuPiA6IGN1cnJlbnQgcGFnZSB3aXRob3V0IGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gbGluazwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bGF0ZXJ9PC9z cGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYWZ0ZXIgdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bmV4dH08L3NwYW4+IDogbmV4dCBwYWdlIChk ZWZhdWx0IGxhYmVsOiAmIzgyMjA7JnJhcXVvOyYjODIyMTsgLyA8c3BhbiBjbGFzcz0iY2Fw cyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxhc3R9 PC9zcGFuPiA6IGxhc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwO0xhc3QmIzgyMjE7 IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPntuYXZmaXJzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPiB0byBmaXJzdCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPntuYXZwcmV2cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBz Ij5VUkw8L3NwYW4+IHRvIHByZXZpb3VzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e25hdnRoaXNwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gdG8gY3VycmVudCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntuYXZuZXh0cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IHRvIG5leHQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 bmF2bGFzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiB0byBsYXN0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RvdGFs aW1hZ2VzfTwvc3Bhbj4gOiB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhl IGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dG90YWxwYWdl c308L3NwYW4+IDogdG90YWwgbnVtYmVyIG9mIHBhZ2VzIGluIHRoaXMgY29sbGVjdGlvbjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bWF4aW1hZ2VzfTwvc3Bhbj4gOiBhYnNv bHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgYWNyb3NzIGFsbCBwYWdlczwvbGk+Cgk8 L3VsPgoKCTxwPlRoZSBjdXJyZW50IHBhZ2UgaGFzIGEgZml4ZWQgY2xhc3Mgb2YgJiM4MjE2 O2N1cnJlbnQmIzgyMTc7IGFuZCBlYWNoIGl0ZW0gaXMsIGJ5IGRlZmF1bHQsIGEgPGNvZGU+ Jmx0O2xpJmd0OzwvY29kZT4gZm9yIGVhc3kgc3R5bGluZy4gVG8gYXZvaWQgYSB6aWxsaW9u IG9wdGlvbnMsIGN1c3RvbSBsYWJlbHMgYXJlIGRlZmluZWQgZGlyZWN0bHkgaW4gdGhlIGZv cm0gaXRzZWxmLiBUbyBsYWJlbCB0aGUgbGluayB0aGF0IHRha2VzIHVzZXJzIHRvIHRoZSBm aXJzdCBwYWdlIG9mIHRoZSBnYWxsZXJ5IGFzICYjODIyMDsxc3QmIzgyMjE7LCB1c2U6PC9w PgoKCTxwPjxjb2RlPntuYXZmaXJzdDoxc3R9PC9jb2RlPjwvcD4KCgk8cD5XaXRoIHRoaXMg c3ludGF4IHlvdSBjYW4gbGFiZWwgbmF2Zmlyc3QsIG5hdmxhc3QsIG5hdnByZXYsIG5hdm5l eHQgYW5kIG5hdnRoaXMgKHRoZSAmIzgyMTY7OiYjODIxNzsgZGVsaW1pdGVyIGluIHRoaXMg Y2FzZSBpcyBzcGVjaWZpZWQgYnkgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4pLiBZb3UgY2Fu IHVzZSB0aGlzIG1lY2hhbmlzbSB0byByZWFkIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3Nw YW4+IHNuaXBwZXRzLCBlLmc6PC9wPgoKCTxwPjxjb2RlPntuYXZmaXJzdDojI2ZpcnN0TGFi ZWwjI308L2NvZGU+PC9wPgoKCTxwPllvdSBjYW4gb3ZlcnJpZGUgdGhlIG51bWJlciBvZiBp dGVtcyBkaXNwbGF5ZWQgYnkgbmF2ZWFybGllciBhbmQgbmF2bGF0ZXIgYnkgc3BlY2lmeWlu ZyBhIGNvbG9uIGFuZCBhIG51bWJlci4gU28gdG8gb25seSBzaG93IDIgaXRlbXMgdG8gdGhl IGxlZnQgb2YgdGhlIGN1cnJlbnQgcGFnZSBhbmQgMyBpdGVtcyB0byB0aGUgcmlnaHQsIHVz ZSA8Y29kZT57bmF2ZWFybGllcjoyfSB7bmF2bGF0ZXI6M308L2NvZGU+IGluIHlvdXIgZm9y bS4gSWYgeW91IHdlcmUgb24gcGFnZSA5IG9mIDE1LCB7bmF2ZWFybGllcjo0fSB7bmF2bGF0 ZXI6M30gd291bGQgc2hvdyA8Y29kZT4mbHQ7Jmx0OyA1IDYgNyA4IDkgMTAgMTEgMTIgJmd0 OyZndDs8L2NvZGU+PC9wPgoKCTxwPkN1cnJlbnRseSA8Y29kZT57bmF2ZWFybGllcn08L2Nv ZGU+IGFuZCA8Y29kZT57bmF2bGF0ZXJ9PC9jb2RlPiBvbmx5IGRpc3BsYXkgYXJhYmljIG51 bWVyYWxzLiBBbnkgaWRlYXMgb24gaG93IHRvIG9mZmVyIG90aGVyIGNoYXJhY3RlciBzZXRz IGdyZWF0bHkgYXBwcmVjaWF0ZWQuPC9wPgoKCTxoMiBpZD0iY29tYm9zIj5Db21ib3M8L2gy PgoKCTxwPklmIHRoZSBidWlsdC1pbiA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJlcGxhY2Vt ZW50IHRhZ3M8L2E+IGFyZW4mIzgyMTc7dCBlbm91Z2ggZm9yIHlvdXIgbmVlZHMgb3IgeW91 IGZpbmQgeW91cnNlbGYgcmVwZWF0aW5nIHRoZSBzYW1lIGNvbWJpbmF0aW9uIGFuZCB3YW50 IHRvIHNhdmUgeW91cnNlbGYgc29tZSB0eXBpbmcsIHlvdSBjYW4gZGVmaW5lIHlvdXIgb3du IHJlcGxhY2VtZW50IHRhZ3MuIFRoZSBzeW50YXggaXM6PC9wPgoKCTxwPjxjb2RlPmNvbWJv PSZxdW90O25ld3RhZzE6ZGVmaW5pdGlvbiwgbmV3dGFnMjpkZWZpbml0aW9uLCAuLi4mcXVv dDs8L2NvZGU+PC9wPgoKCTxwPiYjODIxNjtkZWZpbml0aW9uJiM4MjE3OyBjYW4gYmUgYW55 IGZpeGVkIHRleHQsIGFueSBleGlzdGluZyByZXBsYWNlbWVudCB0YWcsIG9yIGFueSAmIzgy MTY7PyYjODIxNzsgYXJ0aWNsZSB2YXJpYWJsZSBzbyB5b3UgY2FuIGdldCByZWFsbHkgd2ls ZCBoZXJlLCBmb3IgZXhhbXBsZTo8L3A+CgoJPHA+PGNvZGU+Y29tYm89JnF1b3Q7aW1naW46 Zm91bmQgaW4gP3MgW3RhZ2dlZCB3aXRoID9rZXl3b3Jkcy4gUGhvdG8gYnkge2F1dGhvcn1d JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD5PbmNlIGRlZmluZWQsIDxjb2RlPntpbWdpbn08L2Nv ZGU+IGlzIGF2YWlsYWJsZSB0byB5b3VyIGdhbGxlcnkgPGNvZGU+Zm9ybTwvY29kZT4gYW5k IG1pZ2h0IGJlIHJlcGxhY2VkIHdpdGggJiM4MjIwO2ZvdW5kIGluIHpvbyBbdGFnZ2VkIHdp dGggemVicmEsIGFmcmljYSwgc3RyaXBlcy4gUGhvdG8gYnkgQmxva2VdJiM4MjIxOy4gJHBy ZXRleHQgaXMgYWxzbyBhdmFpbGFibGUgZm9yIHRob3NlIGdlZWtzIHdobyBrbm93IHdoYXQm IzgyMTc7cyBpbiBpdCAodGVtcG9yYXJpbHkgdXNlIDxjb2RlPmRlYnVnPSZxdW90OzQmcXVv dDs8L2NvZGU+IHRvIHZpZXcgYWxsIGF2YWlsYWJsZSBhcnRpY2xlIHZhcmlhYmxlcykuPC9w PgoKCTxwPk9uZSB0aGluZyB0byB3YXRjaCBvdXQgZm9yIGlzIHRoYXQgdGhlIHNwYWNlIGNo YXJhY3RlciBpc24mIzgyMTc7dCBuZWNlc3NhcmlseSBhIGRlbGltaXRlciBmb3IgPGNvZGU+ PzwvY29kZT4gdmFyaWFibGVzIChiZWNhdXNlIGN1c3RvbSBmaWVsZHMgY2FuIGhhdmUgc3Bh Y2VzIGluIHRoZW0pLiBTbyA8Y29kZT5jb21ibz0mcXVvdDtkb2Vzbm90d29yazo/cyBpbiA/ Y2F0ZWdvcnkxJnF1b3Q7PC9jb2RlPiB3aWxsIGxvb2sgZm9yIGEgdmFyaWFibGUgbGFiZWxs ZWQgJiM4MjIwO3MgaW4mIzgyMjE7IGFuZCBvbmUgY2FsbGVkICYjODIyMDtjYXRlZ29yeTEm IzgyMjE7LiBPbmx5IG9uZSBvZiB0aG9zZSBleGlzdHMhIENsZXZlciB1c2Ugb2YgcGFyZW50 aGVzZXMgb3Igb3RoZXIgcHVuY3R1YXRpb24gY2FuIHdvcmsgcm91bmQgdGhpcy4gT3IgdXNl IDxjb2RlPnN0cmljdGZpZWxkcz0mcXVvdDswJnF1b3Q7PC9jb2RlPiB0byB0dXJuIG9mZiB0 aGUgdXNlIG9mIHNwYWNlcyBpbiBjdXN0b20gZmllbGQgbmFtZXMuPC9wPgoKCTxoMiBpZD0i Y29sbGF0ZV9tb2RlIj5Db2xsYXRlIG1vZGU8L2gyPgoKCTxwPklmIHlvdSB3YW50IHRvIGdl dCA8ZW0+cmVhbGx5PC9lbT4gZnVua3kgeW91IGNhbiBwdXQgdGhlIHBsdWdpbiBpbnRvIGEg Mm5kIG1vZGUgY2FsbGVkICYjODIyMDtjb2xsYXRpb24gbW9kZSYjODIyMTsuIFRoaXMgbWVh bnMgeW91ciBjaG9zZW4gZm9ybSBpcyA8c3Ryb25nPm5vdDwvc3Ryb25nPiBleGVjdXRlZCBm b3IgZXZlcnkgaW1hZ2U7IGl0IGlzIG9ubHkgdXNlZCBvbmNlIGF0IHRoZSB2ZXJ5IGVuZCBv ZiB0aGUgbGlzdCwgYWZ0ZXIgYWxsIGltYWdlcyBoYXZlIGJlZW4gaW50ZXJuYWxseSAmIzgy MjA7Y29sbGVjdGVkJiM4MjIxOy4gSW4gZWZmZWN0LCB0aGUgcGx1Z2luIGJ1aWxkcyB1cCBh IGdpYW50IGFycmF5IG9mIGFsbCBtYXRjaGluZyBpbWFnZXMgcmVhZHkgZm9yIHlvdSB0byBv dXRwdXQgdGhlbSBhbGwgaW4gb25lIGdvLiBUaGlzIGlzIHZlcnkgaGFuZHkgZm9yIGRvaW5n IHNsaWRlc2hvd3MgYW5kIGlzIGJlc3QgZXhwbGFpbmVkIGJ5IGV4YW1wbGU6PC9wPgoKCTxw Pjxjb2RlPmNvbGxhdGU9JnF1b3Q7MSZxdW90OzwvY29kZT48L3A+CgoJPHA+c3dpdGNoZXMg Y29sbGF0aW9uIG1vZGUgb24uIElmIHRoZSBwbHVnaW4gbWF0Y2hlZCA0IGltYWdlcyBhbmQg eW91IHdlcmUgdG8gdXNlIHRoZSByZXBsYWNlbWVudCB0YWcgPGNvZGU+e25hbWV9PC9jb2Rl PiBpbiB5b3VyIGZvcm0gbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBpbWFnZXM6IHtuYW1lfQo8L2NvZGU+PC9w cmU+CgoJPHA+eW91IG1pZ2h0IGdldCB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBpbWFnZXM6IGhlcm9uLmpwZyxwZW5n dWluLmpwZyxlbXUuanBnLHB1ZmZpbi5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPlNvbWV0aW1l cyBpdCYjODIxNztzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIHB1dCBxdW90ZXMgYXJvdW5kIGVh Y2ggaXRlbSBzbyB5b3UgY2FuIHRlbGwgY29sbGF0ZSBtb2RlIHRvIGRvIHRoYXQgaW5zdGVh ZDo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtxdW90ZTp7bmFtZX0mcXVvdDs8L2Nv ZGU+PC9wPgoKCTxwPllvdSB3b3VsZCB0aGVuIGdldDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiAmcXVvdDtoZXJv bi5qcGcmcXVvdDssJnF1b3Q7cGVuZ3Vpbi5qcGcmcXVvdDssJnF1b3Q7ZW11LmpwZyZxdW90 OywmcXVvdDtwdWZmaW4uanBnJnF1b3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZGVsaW1p dGVyIChhIGNvbW1hIGluIHRoaXMgY2FzZSkgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUg PGNvZGU+ZGVsaW08L2NvZGU+IGF0dHJpYnV0ZS4gWW91IG1heSB1c2UgPGNvZGU+c2dscXVv dGU8L2NvZGU+IHRvIHdyYXAgc2luZ2xlIHF1b3RlcyByb3VuZCB0aGUgaXRlbXMsIG9yICYj ODIyMDtkYmxxdW90ZSYjODIyMTsgYXMgYSBzeW5vbnltIGZvciAmIzgyMjA7cXVvdGUmIzgy MjE7IGlmIHlvdSBwcmVmZXIuIFlvdSBjYW4gcXVvdGUgbW9yZSB0aGFuIG9uZSB0aGluZyBh dCBvbmNlIGJ5IHNwZWNpZnlpbmcgdGhlIGl0ZW1zIGFzIGEgZGVsaW1pdGVkIGxpc3Q6PC9w PgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7cXVvdGU6e25hbWV9OnthbHR9OntpbWdpbn0m cXVvdDs8L2NvZGU+PC9wPgoKCTxwPlllcywgeW91IGNhbiB1c2UgY29tYm9zISBUaGUgZGVs aW1pdGVyIHVzZWQgYmV0d2VlbiBpdGVtcyBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIDxj b2RlPmNvbGxhdGVkZWxpbTwvY29kZT4gYXR0cmlidXRlLjwvcD4KCgk8cD5UaGUgc2Vjb25k IHNwZWNpYWwgZmVhdHVyZSBvZiBjb2xsYXRpb24gbW9kZSBpcyB0aGF0IHlvdSBkbyBub3Qg aGF2ZSB0byBhbHdheXMgb3V0cHV0IHRoZSBlbnRpcmUgbGlzdC4gWW91IGNhbiBncmFiIGlu ZGl2aWR1YWwgZW50aXRpZXMgZnJvbSB3aXRoaW4gdGhlIGludGVybmFsIGFycmF5IGJ5IHVz aW5nIHRoZSAmIzgyMTY7IyYjODIxNzsgbm90YXRpb24gdGh1czo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57bmFtZX0gbWlnaHQgb3V0cHV0ICZxdW90 O2hlcm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZxdW90OywmcXVvdDtlbXUuanBn JnF1b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsgKGFzIGJlZm9yZSkKe25hbWUjMX0gd291 bGQgb25seSBvdXRwdXQgaGVyb24uanBnCntuYW1lIzN9IHdvdWxkIG9ubHkgb3V0cHV0IGVt dS5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB3aGVuIHB1bGxpbmcgb3V0IGlu ZGl2aWR1YWwgZW50cmllcyB0aGV5IDxzdHJvbmc+ZG8gbm90PC9zdHJvbmc+IGdldCBxdW90 ZXMgYWRkZWQgdG8gdGhlbSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHlvdSB1c2VkIDxjb2Rl PnF1b3RlPC9jb2RlPiBvciBub3QuIFRoaXMgaXMgYmVjYXVzZSBpdCBpcyBhIHNpbmdsZSBp dGVtIHNvIHlvdSBjYW4gZWFzaWx5IHB1dCB0aGUgcXVvdGVzIGluIHRoZSBmb3JtIGl0c2Vs ZiAodml6OiA8Y29kZT4mcXVvdDt7bmFtZSMyfSZxdW90OzwvY29kZT4pPC9wPgoKCTxwPk1l c3NpbmcgYXJvdW5kIHdpdGggcHVsbGluZyBvdXQgaW5kaXZpZHVhbCBpdGVtcyBhbmQgbGlz dHMgY2FuIHlpZWxkIHNvbWUgdmVyeSBpbnRlcmVzdGluZyByZXN1bHRzIGFuZCBhbGxvd3Mg c29tZSBjb21wbGV0ZWx5IHdhY2t5IGdhbGxlcmllcyB0byBiZSBnZW5lcmF0ZWQuIFRyeSBj b21iaW5pbmcgc21kX2dhbGxlcnkgdGFncyB3aXRoIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVy ZW50Jmd0OzwvY29kZT4gZm9yIGEgcmVhbCBtaW5kIHNjcmFtYmxlIDotKTwvcD4KCgk8aDIg aWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+CgoJPHA+VGhlIGV4YW1wbGVzIGFsbCB1c2Ug dGhlIGNsYXNzaWMgem9vIHdlYnNpdGUuIExldCYjODIxNztzIHNwZWNpZnkgc29tZSBwaWN0 dXJlcyB0byBwdWxsIG91dCBvZiB0aGUgZGF0YWJhc2U6PC9wPgoKCTxoMyBpZD0iZWcxIj5F eGFtcGxlIDE6IHNpbXBsZSAvIGxpZ2h0Ym94ZWQgZ2FsbGVyeTwvaDM+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVn b3J5PSZxdW90O2FuaW1hbHMmcXVvdDsgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7IGZvcm09 JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxs cyBvdXQgYWxsIHBpY3R1cmVzIGZyb20gdGhlIGFuaW1hbHMgY2F0ZWdvcnksIGluY2x1ZGlu ZyBhbGwgc3ViLWNhdGVnb3JpZXMsIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUgZm9ybSBjYWxs ZWQgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvciBwcm9jZXNzaW5nLiBUaGUgZm9ybSBjb3Vs ZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7 aW1nIGNsYXNzPSZxdW90O2FuaW1hZ2UmcXVvdDsgc3JjPSZxdW90O3t1cmx9JnF1b3Q7IGFs dD0mcXVvdDt7YWx0fSZxdW90OyAvJmd0OwombHQ7ZGl2IGNsYXNzPSZxdW90O2FjYXB0aW9u JnF1b3Q7Jmd0O3t0aXRsZX0mbHQ7L2RpdiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQg bWVhbnMsIGZvciBldmVyeSBtYXRjaGVkIGltYWdlLCBzdWJzdGl0dXRlIGl0cyA8c3BhbiBj bGFzcz0iY2FwcyI+VVJMPC9zcGFuPiwgYWx0IGFuZCB0aXRsZSB0YWdzIGludG8gdGhlIHJl bGV2YW50IHBsYWNlcy4gVGh1cyB5b3UgZ2V0IGEgc2VyaWVzIG9mIGltYWdlcyBvbiB0aGUg cGFnZSwgd2hpY2ggeW91IGNhbiBzdHlsZSBhY2NvcmRpbmdseS48L3A+CgoJPHA+Rm9yIGEg bW9yZSBmYW5jeSBvdXRwdXQgdXNpbmcsIHNheSwgc2xpbWJveCwgeW91IGNvdWxkIGxvYWQg dGhlIHJlbGV2YW50IGxpYnJhcmllcyBhbmQgc3R5bGVzIGluIHRoZSA8Y29kZT4mbHQ7aGVh ZCZndDs8L2NvZGU+IG9mIHlvdXIgcGFnZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0 JnF1b3Q7IHNyYz0mcXVvdDsvanMvbW9vdG9vbHMuanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQm Z3Q7CiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZx dW90Oy9qcy9zbGltYm94LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7bGluayBy ZWw9JnF1b3Q7c3R5bGVzaGVldCZxdW90OyB0eXBlPSZxdW90O3RleHQvY3NzJnF1b3Q7IGhy ZWY9JnF1b3Q7L2Nzcy9zbGltYm94LmNzcyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+VGhlbiB5b3VyICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGNvdWxkIGJlOjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDthIHJlbD0mcXVv dDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1b3Q7IGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAg ICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yge2NhcHRpb259JnF1b3Q7Jmd0OwogJmx0O3R4 cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7L2EmZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5Wb2lsYSEgVXNpbmcgdGhlIHNhbWUgc21kX2dhbGxlcnkgdGFnIHlv dSBoYXZlIGNoYW5nZWQgdGhlIHdheSB0aGUgZ2FsbGVyeSByZW5kZXJzIGZyb20gYSBzaW1w bGUgbGlzdCB0byBhIGZ1bGwtZmVhdHVyZWQgc2xpbWJveC4gV2l0aCB2aXJ0dWFsbHkgdGhl IHNhbWUgZm9ybSB5b3UgY2FuIHN3aXRjaCB0aGUgb3V0cHV0IHRvIHRoaWNrYm94LCBsaWdo dGJveCwgbGl0ZWJveCwgbW9vbmJveCBvciB3aGF0ZXZlci15b3UtbGlrZS1ib3ggZGVwZW5k aW5nIG9uIHdoaWNoIGxpYnJhcmllcyB5b3UgbG9hZC4gRm9sbG93IHRoZSBpbnN0cnVjdGlv bnMgZm9yIHlvdXIgZmF2b3VyaXRlIGVmZmVjdCBhbmQgcGx1ZyBpdCBpbnRvIHNtZF9nYWxs ZXJ5LjwvcD4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiBsYXVuY2ggZnJvbSBvbmUgaW1h Z2U8L2gzPgoKCTxwPkEgY29tbW9uIHJlcXVlc3QgaXMgdG8gYmUgYWJsZSB0byAmIzgyMjA7 bGF1bmNoJiM4MjIxOyBhIHNsaW1ib3ggZ2FsbGVyeSBmcm9tIGEgc2luZ2xlIGltYWdlIG9y IHRleHQgbGluay4gVXNpbmcgYSBzaW5nbGUgaW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0m cXVvdDthbmltYWxzJnF1b3Q7CiAgICAgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7CiAgICAg Zm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OyAvJmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGZvcm0gd2lsbCB1c2UgdGhlIHNwZWNpYWwgPGNv ZGU+e29iamVjdH08L2NvZGU+IHJlcGxhY2VtZW50IHRhZyBzbyBpdCBvbmx5IGRpc3BsYXlz IHRoZSB0aHVtYm5haWwgaWYgdGhlIHZhbHVlIG9mIHRodW1ibGltaXQgaGFzIDxzdHJvbmc+ bm90PC9zdHJvbmc+IGJlZW4gcmVhY2hlZDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gtc21kJnF1b3Q7IGhy ZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yge3Rp dGxlfSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ Q2hhbmdlIHRoZSBzdGFydCBpbWFnZSBieSBzcGVjaWZ5aW5nIDxjb2RlPnRodW1ib2Zmc2V0 PC9jb2RlPiAmIzgyMTI7IG5vdGUgdGhpcyB3aWxsIGFsc28gc3RhcnQgdGhlIGxpZ2h0Ym94 IGVmZmVjdCBmcm9tIHRoZSBpbWFnZSB5b3UgY2hvb3NlLiBJZiB5b3Ugd2FudCB0byBzdGFy dCBvbiBhIHNwZWNpZmljIGltYWdlIGluIHBvc2l0aW9uIDEsIHVzZSB0aGUgPGNvZGU+aWQ8 L2NvZGU+IGF0dHJpYnV0ZSB0byBicmluZyBpdCB0byB0aGUgdG9wIG9mIHRoZSBsaXN0LCBv ciBjaGFuZ2UgdGhlIHNvcnQgb3JkZXIuPC9wPgoKCTxwPklmIHlvdSB3YW50ZWQgdG8gbGF1 bmNoIHRoZSBnYWxsZXJ5IGZyb20gYSB0ZXh0IGxpbmssIGFkZCBzb21ldGhpbmcgbGlrZSA8 Y29kZT50ZXh0PSZxdW90O0NsaWNrIHRvIHN0YXJ0IGxpZ2h0Ym94JnF1b3Q7PC9jb2RlPi48 L3A+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUgMzogcG9wdXAgZ2FsbGVyeTwvaDM+CgoJPHA+ VG8gYWNoaWV2ZSBhbiBlZmZlY3Qgc2ltaWxhciB0byByc3NfdGh1bWJwb3AsIGFkZCBhbiBp bWFnZSBhbmQgY2FwdGlvbiBwbGFjZWhvbGRlciBvdXRzaWRlIHRoZSBjYWxsIHRvIHNtZF9n YWxsZXJ5LCB0aGVuIGluY2x1ZGUgeW91ciBzbWRfZ2FsbGVyeSB0YWcgYXMgdXN1YWwuIFRo aXMgdGltZSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIGFsbCB0aGUgcGljdHVyZXMgZnJv bSB0aGUgY2F0ZWdvcmllcyB1cCB0byB0d28gbGV2ZWxzIGJlbG93IGJvdGggJiM4MjIwO2Fu aW1hbHMmIzgyMjE7LCBwbHVzIHdoaWNoZXZlciBjYXRlZ29yaWVzIGFyZSBsaXN0ZWQgaW4g PGNvZGU+bXlfY3VzdG9tX2ZpZWxkPC9jb2RlPiBhbmQgdGhlIGltYWdlcyB3aXRoIElEcyAy NSwgMzgsIDM5LCA0MCBhbmQgNDI6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBzcmM9JnF1b3Q7 L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNh cHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7dHhwOnNtZF9nYWxsZXJ5IHN1Ymxl dmVsPSZxdW90OzImcXVvdDsKICAgICBjYXRlZ29yeT0mcXVvdDthbmltYWxzLCA/bXlfY3Vz dG9tX2ZpZWxkJnF1b3Q7CiAgICAgaWQ9JnF1b3Q7MjUsIDQyLCAzOC00MCZxdW90OyBmb3Jt PSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBnYWxs ZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlzIG9ubHkgYSB0aHVtYm5haWwgaW1hZ2Ugc3Vy cm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3IgdGFnIHdpdGggdHdvIGFjdGlvbnMgYXNzaWdu ZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNvcHkgdGhlIHBpY3R1cmUgYW5kIGNhcHRpb24g aW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBhIG1vdXNlb3V0IHRvIHJlbW92ZSB0aGVtOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9 JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1b3Q7e3RpdGxlfSZxdW90OwogICAgIG9ubW91 c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5 Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7 ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1MID0gdGhpcy50aXRsZTsgcmV0dXJuIGZhbHNl OyZxdW90OwogICAgIG9ubW91c2VvdXQ9JnF1b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo JiMzOTtmdWxsc2l6ZSYjMzk7KS5zcmMgPSAmIzM5Oy9pbWFnZXMvMTcuanBnJiMzOTs7CiAg ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5l ckhUTUwgPSAmIzM5OyYjMzk7OyByZXR1cm4gZmFsc2U7JnF1b3Q7Jmd0OwogICZsdDtpbWcg c3JjPSZxdW90O3t0aHVtYnVybH0mcXVvdDsgYWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7 CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhlcmUgYXJlIG11Y2ggbmVh dGVyIHdheXMgb2YgZG9pbmcgdGhpcyAoZS5nLiB3aXRoIGpRdWVyeSkgYW5kIGl0JiM4MjE3 O3Mgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzIGZvcm0gaW4gYSBsaXZlIHNpdGUsIGJ1 dCBpdCBnaXZlcyBhIGZsYXZvdXIgb2Ygd2hhdCBpcyBwb3NzaWJsZS48L3A+CgoJPGgzIGlk PSJlZzQiPkV4YW1wbGUgNDogc2xpZGVzaG93PC9oMz4KCgk8cD5UaGlzIG9uZSB1c2VzIGNv bGxhdGUgbW9kZSBidXQgaXMgbm90IG11Y2ggbW9yZSBkaWZmaWN1bHQgdG8gdW5kZXJzdGFu ZC4gSW4geW91ciA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IHNlY3Rpb246PC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZx dW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL21vb3Rvb2xzLmpzJnF1 b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZh c2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvc2xpZGVzaG93LmpzJnF1b3Q7Jmd0OyZsdDsv c2NyaXB0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIHRhZzo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgY2F0 ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7 CiAgY29tYm89JnF1b3Q7aW1nbGlzdDp7aWR9e2V4dH0mcXVvdDsKICBjb2xsYXRlPSZxdW90 O3F1b3RlOntpbWdsaXN0fTp7YWx0fSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ VGhhdCBwdWxscyBhbGwgcGljdHVyZXMgZnJvbSB0aGUgYmlyZHMgYW5kIGZpc2ggY2F0ZWdv cmllcy4gQWx0aG91Z2ggdGVjaG5pY2FsbHkgdW5uZWNlc3NhcnksIGEgY29tYm8gaGFzIGJl ZW4gZGVmaW5lZCB0byBzaG93IGhvdyBpdCBjYW4gYmUgdXNlZC4gVGhpcyBjb21ibyBpcyBj YWxsZWQgPGNvZGU+aW1nbGlzdDwvY29kZT4gYW5kIGlzIGRlZmluZWQgYXMgdGhlIGltYWdl JiM4MjE3O3MgSUQgbnVtYmVyIHBsdXMgaXRzIGV4dGVuc2lvbi4gV2UgdXNlIHRoaXMgaW4g dGhlIGNvbGxhdGUgYXR0cmlidXRlIGFuZCB0ZWxsIGl0IHRvIHB1dCBkb3VibGUgcXVvdGVz IHJvdW5kIGV2ZXJ5IGl0ZW0gaW4gJiM4MjE2O2ltZ2xpc3QmIzgyMTc7IGFuZCAmIzgyMTY7 YWx0JiM4MjE3Oy4gVGhlbiB3ZSBjYW4gcHV0IHRoZXNlIHZhbHVlcyBpbnRvIHRoZSBuZWNl c3NhcnkgamF2YXNjcmlwdCBpbiB0aGUgPGNvZGU+Z2FsbGVyeTwvY29kZT4gZm9ybSB0byBn ZW5lcmF0ZSB0aGUgc2xpZGVzaG93OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9JnF1b3Q7c2xpZGVzaG93JnF1b3Q7IGlkPSZx dW90O3NsaWRlc2hvdzEmcXVvdDsmZ3Q7CiAmbHQ7aW1nIHNyYz0mcXVvdDsmbHQ7dHhwOnNp dGVfdXJsIC8mZ3Q7aW1hZ2VzL3tpZCMxfS5qcGcmcXVvdDsKICAgICBhbHQ9JnF1b3Q7e2Fs dCMxfSZxdW90OyB3aWR0aD0mcXVvdDt7d2lkdGgjMX0mcXVvdDsgaGVpZ2h0PSZxdW90O3to ZWlnaHQjMX0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CjwvY29kZT4KPGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0 OwpteVNob3cxID0gbmV3IFNsaWRlc2hvdygmcXVvdDtzbGlkZXNob3cxJnF1b3Q7LAogIHsg aHU6ICZxdW90OyZsdDt0eHA6c2l0ZV91cmwgLyZndDtpbWFnZXMvJnF1b3Q7LAogICAgaW1h Z2VzOiBbe2ltZ2xpc3R9XSwKICAgIGNhcHRpb25zOiBbe2FsdH1dLAogICAgY2xhc3Nlczog WyZxdW90O3ByZXYmcXVvdDssJnF1b3Q7bmV4dCZxdW90OywmcXVvdDthY3RpdmUmcXVvdDtd LAogICAgdHlwZTogJnF1b3Q7ZmFkZSZxdW90OwogIH0pOwombHQ7L3NjcmlwdCZndDsKPC9j b2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB0aGUgaW5pdGlhbCBwb3J0aW9uIChpbiB0aGUg ZGl2IGFuZCBpbWcgdGFncykgdXNlcyB0aGUgJiM4MjE2OyMmIzgyMTc7IG5vdGF0aW9uIGJl Y2F1c2Ugd2Ugb25seSB3YW50IHRvIGRpc3BsYXkgb25lIGltYWdlIHRvICYjODIyMDtzdGFy dCYjODIyMTsgdGhlIHNsaWRlc2hvdy4gSW4gdGhpcyBjYXNlIHdlJiM4MjE3O3JlIHVzaW5n IHRoZSBmaXJzdCBpbWFnZSBpbiB0aGUgbGlzdCwgYnV0IHlvdSBjYW4gY2hhbmdlIHRoZSAj MSBmb3IgIzQyIGlmIHlvdSB3YW50ZWQgdG8gc2hvdyB0aGUgZm9ydHktc2Vjb25kIGltYWdl IGluc3RlYWQhIFRoZSBwYXJ0IGluIHRoZSBzY3JpcHQgdGFnIHVzZXMgdGhlIGZ1bGwsIHF1 b3RlZCBsaXN0cyBiZWNhdXNlIHRoYXQmIzgyMTc7cyB0aGUgZm9ybWF0IHRoZSBqYXZhc2Ny aXB0IHJlcXVpcmVzLjwvcD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1OiBwYWdpbmF0aW9u PC9oMz4KCgk8cD5UbyBhZGQgcGFnaW5nIHRvIGEgZ2FsbGVyeSB5b3UgdXNlIHRoZSA8Y29k ZT5saW1pdDwvY29kZT4gYXR0cmlidXRlIHRvIHNob3cgYSBudW1iZXIgb2YgdGh1bWJzIHBl ciBwYWdlLiBGb3IgYSBwYWdlZCB0aHVtYnBvcCBnYWxsZXJ5IHRoYXQgc2hvd3MgZml2ZSB0 aHVtYnMgcGVyIHBhZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdl cy9lbXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24m cXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZx dW90O2FuaW1hbHMmcXVvdDsKICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgcGFnZWZvcm09 JnF1b3Q7Z2FsbGVyeV9uYXYmcXVvdDsKICBsaW1pdD0mcXVvdDs1JnF1b3Q7IC8mZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5UaGUgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvcm0gaXMgaWRl bnRpY2FsIHRvIHRoZSBvbmUgaW4gPGEgaHJlZj0iI2VnNCI+ZXhhbXBsZSA0PC9hPiwgd2hp bGUgeW91ciBnYWxsZXJ5X25hdiBmb3JtIG1pZ2h0IGxvb2sgbGlrZSB0aGlzOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9JnF1 b3Q7dG90YWwmcXVvdDsmZ3Q7IyBvZiBwaWNzOiB7dG90YWxpbWFnZXN9Jmx0Oy9kaXYmZ3Q7 CiAgICAge25hdmZpcnN0fSB7bmF2cHJldn0KICAgICB7bmF2ZWFybGllcn0ge25hdnRoaXN9 IHtuYXZsYXRlcn0KICAgICB7bmF2bmV4dH0ge25hdmxhc3R9CjwvY29kZT48L3ByZT4KCgk8 cD5UaGF0IG1pZ2h0IHJlbmRlciBzb21ldGhpbmcgc2ltaWxhciB0byB0aGlzIGJlbG93IHRo ZSB0aHVtYnM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ IyBvZiBwaWNzOiAzOAogICAgIEZpcnN0ICZsdDsgMSAyIDMgNCA1IDYgNyA4ICZndDsgTGFz dAo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzYiPkV4YW1wbGUgNjogb25jaGFuZ2U8L2gz PgoKCTxwPklmIHlvdSB3YW50IHRvIHNpbXVsYXRlIG11bHRpcGxlIGdhbGxlcmllcyBmcm9t IG9uZSBzbWRfZ2FsbGVyeSB0YWcgeW91IGNhbiB1c2UgPGNvZGU+b25jaGFuZ2U8L2NvZGU+ IHRvICYjODIyMDt3YXRjaCYjODIyMTsgZm9yIHdoZW4gY2VydGFpbiBhdHRyaWJ1dGVzIG9m IGltYWdlcyBjaGFuZ2UgYW5kIGluc2VydCBzcGVjaWFsIHRhZ3MgPGVtPm9ubHkgd2hlbiBz b21ldGhpbmcgY2hhbmdlczwvZW0+LiBJbiB0aGlzIHJlZ2FyZCBpdCBhY3RzIGxpa2UgYSBz b3VwZWQtdXAgdmVyc2lvbiBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiYjODIx NztzIGJ1aWx0LWluIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gdGFn LjwvcD4KCgk8cD5Zb3UgY2FuIHdhdGNoIHRoZSB1c3VhbCB0aGluZ3MgbGlrZSA8Y29kZT5j YXRlZ29yeTwvY29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2Rl PiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNvZGU+ZXh0PC9jb2RlPmVuc2lvbiBhbmQgc28g b246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZv cm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogICAgIG9uY2hhbmdlPSZxdW90O2NhdGVnb3J5X3Rp dGxlJnF1b3Q7CiAgICAgb25jaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7IC8mZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5TaW5jZSB0aGUgcGx1Z2luIG5vcm1hbGx5IHNvcnRzIGJ5IGNh dGVnb3J5LCB0aGlzIHdpbGwgaGF2ZSB0aGUgZWZmZWN0IG9mIGFkZGluZyBvbmUgcmVwbGFj ZW1lbnQgdGFnIDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX08L2NvZGU+IGF0IHRo ZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgdGh1bWIgbGlzdCBhbmQgYWxzbyB3aGVuIHRoZSBj YXRlZ29yeSBzd2l0Y2hlcyBmcm9tICYjODIxNjtiaXJkcyYjODIxNzsgdG8gJiM4MjE2O2Zp c2gmIzgyMTc7LiBUaHVzIHlvdXIgZ2FsbGVyeSBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPntvbmNoYW5nZTpjYXRlZ29yeV90 aXRsZX0KJmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gt e2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+VGhhdCB3b3VsZCBtYWtlIHR3byBsaWdodGJveGFibGUgc2V0cyBvZiB0aHVtYm5h aWxzIHdpdGggYSBoZWFkaW5nIDMgYWJvdmUgZWFjaCBncm91cCBjb250YWluaW5nIHRoZSBj YXRlZ29yeSB0aXRsZS48L3A+CgoJPHA+Tm90ZSB0aGF0IGlmIHlvdSBhZGQgPGNvZGU+dGh1 bWJsaW1pdD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byB0aGUgc21kX2dhbGxlcnkgdGFnIHlv dSBjYW4gc2hvdyBqdXN0IG9uZSB0aHVtYm5haWwgaW4gZWFjaCBncm91cCwgd2l0aCBoZWFk aW5ncyBhYm92ZSBlYWNoIHRodW1iLiBWaXNpdG9ycyBjbGlja2luZyB0aGUgdGh1bWIgd2ls bCBsYXVuY2ggdGhlIGxpZ2h0Ym94IGFuZCBiZSBhYmxlIHRvIGJyb3dzZSB0aGUgcmVsZXZh bnQgY2F0ZWdvcnkuPC9wPgoKCTxwPkFuIGV4dHJhIHBhaXIgb2YgcmVwbGFjZW1lbnQgdGFn cyBhcmUgYXZhaWxhYmxlIGlmIHlvdSB3aXNoIHRvIHdyYXAgdGhlIG9iamVjdHMgdGhlbXNl bHZlcyB0byBncm91cCB0aGVtLiBVc2UgdGhlIDxjb2RlPmdyb3VwdGFnPC9jb2RlPiBhbmQg PGNvZGU+Z3JvdXBjbGFzczwvY29kZT4gYXR0cmlidXRlcyB0byBzZXQgaXQgdXAsIHRoZW4g dHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIGNhbGxlZCA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9j b2RlPiBhbmQgPGNvZGU+Z3JvdXB0YWdlbmQ8L2NvZGU+IGJlY29tZSBhdmFpbGFibGUuIFRo ZXkgYXJlIGNvbmRpdGlvbmFsIGFuZCBhcmUgb25seSBwb3B1bGF0ZWQgd2hlbiB0aGUgYXR0 cmlidXRlcyB5b3UgYXJlIHdhdGNoaW5nL3NvcnRpbmcgYnkgY2hhbmdlLiBVc2UgaXQgbGlr ZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDt0eHA6c21kX2dhbGxlcnkgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsKICAgICBj YXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVv dDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRlZ29yeV90aXRsZSZxdW90OwogICAgIG9uY2hh bmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OwogICAgIGdyb3VwdGFnPSZxdW90O2RpdiZxdW90 OyBncm91cGNsYXNzPSZxdW90O2JveCZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57b25jaGFuZ2U6Y2F0ZWdvcnlf dGl0bGV9Cntncm91cHRhZ3N0YXJ0fQombHQ7YSBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IHJl bD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2Em Z3Q7Cntncm91cHRhZ2VuZH0KPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB5b3UgY2Fu IG1vdmUgdGhlIDxjb2RlPmdyb3VwdGFnc3RhcnQ8L2NvZGU+IHRvIHN1cnJvdW5kIHRoZSA8 Y29kZT5vbmNoYW5nZTwvY29kZT5kIHRpdGxlIGlmIHlvdSB3aXNoLjwvcD4KCgk8aDMgaWQ9 ImVnNyI+RXhhbXBsZSA3OiBzbWRfZXZlcnk8L2gzPgoKCTxwPllvdSBjYW4gYWxzbyB0cmln Z2VyIGFuIG9uY2hhbmdlIGV2ZW50IGV2ZXJ5IG50aCBpbWFnZTo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVn b3J5PSZxdW90O2Zyb250cGFnZSZxdW90OwogICAgIGxpbWl0PSZxdW90OzkmcXVvdDsgc29y dD0mcXVvdDtyYW5kb20mcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtzbWRfZXZlcnk6MyZx dW90OwogICAgIGdyb3VwdGFnPSZxdW90O3VsJnF1b3Q7IGdyb3VwY2xhc3M9JnF1b3Q7c2xp ZGVzaG93JnF1b3Q7Jmd0Owp7Z3JvdXB0YWdzdGFydH0KICAgJmx0O2xpJmd0OwogICAgICAm bHQ7YSBocmVmPSZxdW90OyZsdDt0eHA6cGVybWxpbmsgaWQ9JnF1b3Q7e2FsdH0mcXVvdDsg LyZndDsmcXVvdDsmZ3Q7CiAgICAgICAgICZsdDtpbWcgc3JjPSZxdW90O3t0aHVtYnVybH0m cXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OwogICAgICAgICAmbHQ7c3BhbiZndDt7dGl0 bGV9Jmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7L2EmZ3Q7CiAgICZsdDsvbGkmZ3Q7Cntncm91 cHRhZ2VuZH0KJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDMg aWQ9ImVnOCI+RXhhbXBsZSA4OiB1bmNhdGVnb3JpemVkIGltYWdlczwvaDM+CgoJPHA+U29t ZXRpbWVzIHlvdSBtaWdodCB3aXNoIHRvIGV4dHJhY3QgaW1hZ2VzIHRoYXQgZG8gbm90IGhh dmUgYSBjYXRlZ29yeSBhc3NpZ25lZC4gWW91IG5lZWQgdG8gdXNlIHRoZSBzcGVjaWFsIHZh bHVlIDxjb2RlPlNNRF9FTVBUWTwvY29kZT4gZm9yIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29y eT0mcXVvdDtTTURfRU1QVFksIHNob2VzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5Zb3UgY2FuIGFsc28gbmVnYXRlIHRoZSBsb2dpYyBzbyB5b3UgY2FuIGV4dHJhY3QgYWxs IGltYWdlcyB0aGF0IGhhdmUgc29tZSAoYW55KSBjYXRlZ29yeSBhc3NpZ25lZCB0byB0aGVt OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6 c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7IVNNRF9FTVBUWSZxdW90OyAvJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzkiPkV4YW1wbGUgOToge29iamVjdH0gYW5kIG9iamVj dGZvcm08L2gzPgoKCTxwPlRoZSBkZWZhdWx0IDxjb2RlPntvYmplY3R9PC9jb2RlPiBvdXRw dXRzIGEgc2ltcGxlIGh5cGVybGlua2VkIHRodW1ibmFpbC4gSWYgeW91IHdhbnQgc29tZXRo aW5nIGEgYml0IG1vcmUgZXhvdGljLCBsaWtlIGxhdW5jaGluZyBhIHNoYWRvd2JveCBlZmZl Y3QgZnJvbSBhIHNpbmdsZSB0aHVtYm5haWwgdGhhdCBhbHNvIGhhcyB0aGUgY2FwdGlvbiBi ZW5lYXRoIGl0LCB5b3UgbmVlZCB0byBjdXN0b21pc2UgdGhlIDxjb2RlPntvYmplY3R9PC9j b2RlPiB2aWEgdGhlIDxjb2RlPm9iamVjdGZvcm08L2NvZGU+IGF0dHJpYnV0ZS4gUHV0IGEg bGlzdCBvZiBpbWFnZSBJRHMgaW4geW91ciBhcnRpY2xlIGltYWdlIGZpZWxkIGFuZCB0aGVu OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6 c21kX2dhbGxlcnkgdGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7CiAgICAgaWQ9JnF1b3Q7P2Fy dGljbGVfaW1hZ2UmcXVvdDsgd3JhcHRhZz0mcXVvdDtkaXYmcXVvdDsKICAgICBjbGFzcz0m cXVvdDt0aHVtYnMmcXVvdDsgb2JqZWN0Zm9ybT0mcXVvdDtteV9vYmomcXVvdDsKICAgICBj b21ibz0mcXVvdDthcnRpZDo/dGhpc2lkJnF1b3Q7Jmd0OwogICZsdDthIHJlbD0mcXVvdDtz aGFkb3dib3hbe2FydGlkfV07CiAgICAgb3B0aW9ucz17Y291bnRlclR5cGU6JiMzOTtza2lw JiMzOTssCiAgICAgY29udGludW91czp0cnVlLAogICAgIGFuaW1hdGU6ZmFsc2UsCiAgICAg YW5pbVNlcXVlbmNlOiYjMzk7c3luYyYjMzk7fSZxdW90OwogICAgIGhyZWY9JnF1b3Q7e3Vy bH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDt7YWx0fSZxdW90OyZndDt7b2JqZWN0fSZsdDsv YSZndDsKJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5BbmQg aW4gPGNvZGU+bXlfb2JqPC9jb2RlPiwgeW91IGNvdWxkIHB1dDo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnRodW1ibmFpbCBpZD0mcXVv dDt7aWR9JnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7e3RpdGxlfQo8L2NvZGU+PC9wcmU+CgoJ PHA+Tm90aWNlIGhvdyB0aGUgcmVwbGFjZW1lbnQgdGFncyBzdGlsbCB3b3JrIGluIHRoZSA8 Y29kZT5vYmplY3Rmb3JtPC9jb2RlPj8gVGhpcyBhbGxvd3MgeW91IHRvIGJ1aWxkIHVwIGEg Y29tcGxldGUgbGF5b3V0IGZvciB0aGUgbGF1bmNoYWJsZSB0aHVtYm5haWwgYW5kIGhhdmUg aXQgb25seSByZW5kZXJlZCBvbmNlIG9uIHRoZSBwYWdlLiBUaGUgcmVzdCBvZiB0aGUgY29u dGFpbmVyIGluIHRoaXMgZXhhbXBsZSByZW5kZXJzIGFsbCB0aGUgJiM4MjIwO2hpZGRlbiYj ODIyMTsgaW1hZ2VzIGluIHRoZSBzaGFkb3dib3ggZ2FsbGVyeS48L3A+CgoJPGgyIGlkPSJj aGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHA+QWxsIGF2YWlsYWJsZSB2ZXJzaW9ucyBh bmQgY2hhbmdlcyBhcmUgbGlzdGVkIGhlcmUuPC9wPgoKCTxwPjxzdHJvbmc+QmV0YTwvc3Ry b25nPjwvcD4KCgk8dWw+CgkJPGxpPjE0IEZlYiAwOCB8IDAuMSB8IEluaXRpYWwgcmVsZWFz ZSAmIzgyMTE7IEhhcHB5IFZhbGVudGluZXMgRGF5IDotKTwvbGk+CgkJPGxpPjE5IEZlYiAw OCB8IDAuMiB8IEFkZGVkIHtnYWxsZXJ5aWR9ICh0aGFua3MgcmxvYWRlcnJvKSBhbmQgc29t ZSBza2VsZXRvbiBkb2NzPC9saT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5PZmZpY2lhbDwvc3Ry b25nPjwvcD4KCgk8dWw+CgkJPGxpPjExIE1hciAwOCB8IDAuMyB8IE9mZmljaWFsIHB1Ymxp YyByZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0eSBmaWVsZCBidWc7IGFkZGVkIHtjb3VudGVy fSwge2luZGV4fSBhbmQgdGhlIHRvdGFscyAoYWxsIHRoYW5rcyBqYWtvYik8L2xpPgoJCTxs aT4xNSBNYXIgMDggfCAwLjMxIHwgRml4ZWQgYSBjb3VwbGUgb2YgdW5kZWZpbmVkIGluZGV4 ZXMgYW5kIGFkZGVkIHtjYXRlZ29yeV90aXRsZX0gKHRoYW5rcyBqc3R1YmJzKTwvbGk+CgkJ PGxpPjE3IE1hciAwOCB8IDAuMzIgfCBGaXhlZCBhbm90aGVyIHVuZGVmaW5lZCBpbmRleCBh bmQgcmVtb3ZlZCBib2d1cyBjYWxsIHRvIHNtZF9saWIgKGJvdGggdGhhbmtzIHNlY3VuZGFy KTwvbGk+CgkJPGxpPjIxIE1hciAwOCB8IDAuMzMgfCBEaWQgdjAuMzEgcHJvcGVybHksIGlu Y2x1ZGluZyB0YWJsZSBwcmVmaXggKHRoYW5rcyBuYXJkbyk8L2xpPgoJCTxsaT4wMSBBcHIg MDggfCAwLjM0IHwgRml4ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlNRTDwvc3Bhbj4gcGFyZW50 aGVzaXMgYnVnIDsgYWRkZWQgZW1wdHljbGFzcyBhbmQge21heGltYWdlc30gKHRoYW5rcyB0 aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDggQXByIDA4IHwgMC40IHwgQ2hhbmdlZCB0aHVtYiB0 byBhbGxvdyB0aHVtYi9mdWxsc2l6ZSBzd2FwcGluZyA7IEFkZGVkIHRodW1iY2hhbmdlLCB0 aHVtYmNoYW5nZXdyYXB0YWcsIHRodW1iY2hhbmdlY2xhc3MsIHt0aHVtYmluZGV4fSwge3Ro dW1iY291bnRlcn0gYW5kIHRoZSB7Y2hhbmdlZDoqfSByZXBsYWNlbWVudCB0YWdzICh0aGFu a3MgZnVscyk8L2xpPgoJCTxsaT4yNiBNYXkgMDggfCAwLjQxIHwgRml4ZWQgRGlyZWN0b3J5 IHNlcGFyYXRvciAodGhhbmtzIGN1ZGEpIDsgYWRkZWQgcmF3IHBhZ2UgPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj5zIHRvIHRoZSBuYXYgcmVwbGFjZW1lbnQgYXJyYXkgYW5kIG1h ZGUgdGhlIG5hdiBhcnJheSBhdmFpbGFibGUgaW4gdGhlIHN0YW5kYXJkIHJlcGxhY2VtZW50 cyBhcnJheSAodGhhbmtzIHZpc3VhbHBlb3BsZSk8L2xpPgoJCTxsaT4yNyBNYXkgMDggfCAw LjQyIHwgQWRkZWQgcGFnZXBvcyBhbmQgbWFkZSBwYWdlIGJsb2NrcyBpbmRlcGVuZGVudCBv ZiB0aHVtYiBibG9jayAodGhhbmtzIGR1Y2hhbXApPC9saT4KCQk8bGk+MTAgSnVuIDA4IHwg MC40MyB8IEZpeGVkIHNvcnQ9JiM4MjIwO2ZpeGVkJiM4MjIxOyB3aGVuIHVzaW5nIGxpbWl0 ICh0aGFua3Mgcm9iaW43NDYpIDsgYWRkZWQgcGVyLWdyb3VwIG9uY2hhbmdlIHdyYXBwaW5n IGFuZCBhbGxvd2VkIGZpeGVkIHNvcnRpbmcgb2YgY2F0ZWdvcmllcyAodGhhbmtzIGpzdHVi YnMpIDsgZGVwcmVjYXRlZCB0aHVtYmNoYW5nZSogYW5kIHJlbmFtZWQgYXMgb25jaGFuZ2Uq IDsgZml4ZWQgJGlkeCBjb3VudGVyIHByb2JsZW08L2xpPgoJCTxsaT4xMCBKdW4gMDggfCAw LjQ0IHwgQXR0ZW1wdCAjMiBhdCBwZXItZ3JvdXAgb25jaGFuZ2Ugd3JhcHBpbmcgKHRoYW5r cyBhZ2FpbiBqc3R1YmJzKTwvbGk+CgkJPGxpPjE0IEp1bCAwOCB8IDAuNDUgfCBGaXhlZCBs YWNrIG9mIG91dHB1dCB3aGVuIG5vdCB1c2luZyBjYXRlZ29yaWVzICh0aGFua3Mgcm9iaW43 NDYpPC9saT4KCQk8bGk+MTYgTm92IDA4IHwgMC40NiB8IEFkZGVkIGNvbGxhdGVkZWxpbSAo dGhhbmtzIGN1cmlvdXopIDsgZml4ZWQgKEkgaG9wZSkgdGhlIGNhdGVnb3J5IC8gaWQgYnVn IGZyb20gMC40NCBhbmQgMC40NSAodGhhbmtzIHJvYmluNzQ2L25hcmRvKTwvbGk+CgkJPGxp PjEzIEZlYiAwOSB8IDAuNSB8IFJlcXVpcmVzIHNtZF9saWIgOyBhZGRlZCA8c3BhbiBjbGFz cz0iY2FwcyI+TUxQPC9zcGFuPiBzdXBwb3J0ICh0aGFua3MgbmV0LWNhcnZlcikgOyBhZGRl ZCBzdXBwb3J0IGZvciBkaXNwbGF5aW5nIHVuY2F0ZWdvcmlzZWQgaW1hZ2VzICh0aGFua3Mg eHphbWVuKSA7ICYjODIxNjs/JiM4MjE3OyB2YXJzIGV4cGFuZGVkIHRvIGxpbmsgLyBpbWFn ZSAvIGZpbGUgLyA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBhbmQgPHNw YW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgOyBuZXcgYXR0cmlidXRlczog PGNvZGU+ZXNjYXBlPC9jb2RlPiwgPGNvZGU+aHRtbF9pZDwvY29kZT4sIDxjb2RlPmZvcm1h dDwvY29kZT4sIDxjb2RlPmdtdDwvY29kZT4sIDxjb2RlPmxhbmc8L2NvZGU+ICh0aGFua3Mg bWFuaXF1aSksIDxjb2RlPnN0cmljdGZpZWxkczwvY29kZT4gOyBpbXByb3ZlZCA8Y29kZT57 b2JqZWN0fTwvY29kZT4gc3VwcG9ydCBhbmQgYWRkZWQgPGNvZGU+b2JqZWN0Zm9ybTwvY29k ZT4gKHRoYW5rcyB0eWUvcnZ0dXJuYWdlKSA7IDxjb2RlPnt0aXRsZX08L2NvZGU+ID09IDxj b2RlPntjYXB0aW9ufTwvY29kZT4gYXQgbGFzdCEgOyByZW1vdmVkIDxjb2RlPnRodW1iY2hh bmdlPC9jb2RlPiogYXR0cmlidXRlcyA7IGltcHJvdmVkIHN1cHBvcnQgZm9yIHRhYmxlIGV4 dGVuc2lvbnMgKHZpYSB0aGUgPGNvZGU+Y29sdW1uczwvY29kZT4gYXR0cmlidXRlOiB0aGFu a3MgUmVkRm94KSA7IGFkZGVkIDxjb2RlPnNtZF9ldmVyeTwvY29kZT4gc3ludGF4IHRvIDxj b2RlPm9uY2hhbmdlPC9jb2RlPiAodGhhbmtzIGpha29iKSA7IGZpeGVkIG9mZnNldCBidWcg KHRoYW5rcyBmZXJhZ25vbGkpPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJjcmVkaXRzIj5DcmVk aXRzPC9oMj4KCgk8cD5UaGlzIHBsdWdpbiB3b3VsZG4mIzgyMTc7dCBoYXZlIGV4aXN0ZWQg d2l0aG91dCB0aGUgYXdlc29tZSBtaW5kIG9mIFJvYmVydCBXZXR6bG1heXIuIEhpcyB3ZXRf Zm9yX2VhY2hfaW1hZ2UgcGx1Z2luIGlzIHRydWUgZ2VuaXVzOyB0aGlzIHNpbXBseSBzdGFu ZHMgb24gdGhlIHNob3VsZGVycyBvZiB0aGF0IGlkZWEgYW5kIHJvbGxzIGluIGEgc291cGVk IHVwIHZlcnNpb24gb2YgdGhlIHRodW1ibmFpbCBnZW5lcmF0aW9uIGVuZ2luZSBmcm9tIHNt ZF9zbGltYm94LiBUbyB0aGF0IGVuZCwgdGhlIHBsdWdpbiBpcyBhbHNvIGluZGVidGVkIHRv IGFueW9uZSB3aG8gaGFzIHBvc3RlZCBmZWF0dXJlcyBvciBidWcgcmVwb3J0cyB0byBtZSBv ciB0aGUgc21kX3NsaW1ib3ggdGhyZWFkLiBZb3UmIzgyMTc7cmUgYWxsIG1hcnZlbGxvdXMu PC9wPgoKCTxwPjwvZGl2PjwvcD4KPCEtLSAtLS0gQkVHSU4gUExVR0lOIENTUyAtLS0gLS0+ CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7 fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAi Q291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNG RkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9y ZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxh eTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9o ZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiAjMDBjOyB0ZXh0LWRl Y29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5n LWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsg Y29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4 IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9y OiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4 dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBz b2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHgg R2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzA3OTsgZm9u dDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBt YXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3Jh dGlvbjp1bmRlcmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWws IHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3Rl eHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWln aHQ6Ym9sZDsgY29sb3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNl ZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5 MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAg dGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0g MDt9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxw IC5yZXF1aXJlZCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4 IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0 eWxlPgo8IS0tIC0tLSBFTkQgUExVR0lOIENTUyAtLS0gLS0+CiI7czozOiJtZDUiO3M6MzI6 ImU2N2QzMjJkMzU0OTc5ZjE1ODRmNmMwMmM1YjZkZWZjIjt9