# Name: smd_slimbox v0.34 # Type: Public side plugin # Image gallery lightbox wrapper that can use Slimbox, Litebox, Moonbox, Thickbox, etc # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJzbWRfc2xpbWJveCI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC4zNCI7czoxMToiZGVzY3JpcHRpb24iO3M6 ODQ6IkltYWdlIGdhbGxlcnkgbGlnaHRib3ggd3JhcHBlciB0aGF0IGNhbiB1c2UgU2xpbWJv eCwgTGl0ZWJveCwgTW9vbmJveCwgVGhpY2tib3gsIGV0YyI7czo0OiJjb2RlIjtzOjE1NTA0 OiIvLyBERVBSRUNBVEVEDQpmdW5jdGlvbiBzbWRfc2xpbWJveF9pbmMoJGF0dHMpIHsNCgln bG9iYWwgJHByb2R1Y3Rpb25fc3RhdHVzOw0KCWlmIChpbl9hcnJheSgkcHJvZHVjdGlvbl9z dGF0dXMsIGFycmF5KCdkZWJ1ZycsICd0ZXN0aW5nJykpKSB7DQoJCXRyaWdnZXJfZXJyb3Io InNtZF9zbGltYm94X2luYyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBQbGVhc2UgcmVtb3Zl IGl0IGFuZCBpbmNsdWRlIHRoZSByZWxldmFudCBqYXZhc2NyaXB0IGxpYnJhcmllcyBtYW51 YWxseSBvbiB5b3VyIHBhZ2UuIik7DQoJfQ0KCXJldHVybjsNCn0NCnJlcXVpcmVfcGx1Z2lu KCdzbWRfbGliJyk7DQovLyBNTFAgc3VwcG9ydA0KZ2xvYmFsICRzbWRfc2JveExhbmc7DQok c21kX3Nib3hTdHIgPSBhcnJheSgNCgknbmV4dF9sYmwnID0+ICdOZXh0JywNCgkncHJldl9s YmwnID0+ICdQcmV2JywNCik7DQokc21kX3Nib3hMYW5nID0gbmV3IHNtZF9NTFAoJ3NtZF9z bGltYm94JywgJ3NtZF9zYm94JywgJHNtZF9zYm94U3RyKTsNCg0KZnVuY3Rpb24gc21kX3Ns aW1ib3goJGF0dHMsICR0aGluZz0nJykgew0KCWdsb2JhbCAkcHJvZHVjdGlvbl9zdGF0dXMs ICRwcmV0ZXh0LCAkdGhpc2FydGljbGUsICRpbWdfZGlyLCAkc21kX3Nib3hMYW5nOw0KDQoJ Ly8gKiogTE9PS1VQIFRBQkxFUw0KCS8vIEhvbGRzIGRhdGFiYXNlIGZpZWxkIGFzIGtleSBp bmRleCBhbmQgcGx1Z2luIG9wdGlvbiBuYW1lcyBhcyB2YWx1ZS4NCgkvLyBVc2UgYXJyYXlf c2VhcmNoIHRvIGZpbmQgaWYgdmFsdWUgZXhpc3RzIGFuZCByZXR1cm4gY29ycmVjdCBrZXkg Zm9yIHVzZSBpbiBkYiBjYWxscy4NCgkkZmllbGRNYXAgPSBhcnJheSgNCgkJIm5hbWUiID0+ ICJuYW1lIiwNCgkJImlkIiA9PiAiaWQiLA0KCQkiYWx0IiA9PiAiYWx0IiwNCgkJImNhcHRp b24iID0+ICJjYXB0aW9uIiwNCgkJImNhdGVnb3J5IiA9PiAiY2F0ZWdvcnkiLA0KCQkiYXV0 aG9yIiA9PiAiYXV0aG9yIiwNCgkJImRhdGUiID0+ICJkYXRlIiwNCgkJImV4dCIgPT4gImV4 dCIsDQoJCSJ3IiA9PiAid2lkdGgiLA0KCQkiaCIgPT4gImhlaWdodCIsDQoJKTsNCgkkc2hv d0xvY3MgPSBhcnJheSgiYmVsb3ciLCJhYm92ZSIsImFmdGVyIiwiYmVmb3JlIiwib25jaGFu Z2UiKTsNCi8vCSRjbGFzc1R5cGVzID0gYXJyYXlfbWVyZ2UoYXJyYXkoImdyb3VwIiwiY2Vs bCIsImxpbmsiLCJpbWciLCJ0aHVtYnRleHQiLCJuYXYiLCJwcmV2IiwibmV4dCIpLCRzaG93 TG9jcyk7DQovLwkkb3BlcmFuZHMgPSBhcnJheSgiY2hhbmdlcyIsICJjb250YWlucyIsICJl cSIsICJsdCIsICJndCIsICJsdGUiLCAiZ3RlIiwgIm5vdCIpOw0KCSR0aHVtYmhvbGRlciA9 ICI6OlNCT1hfUkVQTDo6IjsNCg0KCSRhdHRlbXB0TWF0Y2ggPSAoaXNzZXQoJGF0dHNbJ2Nh dGVnb3J5J10pIHx8IGlzc2V0KCRhdHRzWydpbWFnZWlkJ10pKSA/IHRydWUgOiBmYWxzZTsN Cg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2RlbGlt JwkJCQk9PiAnLCcsDQoJCSdwYXJhbWRlbGltJwkJPT4gJzonLA0KCQknaW1hZ2VpZCcJCQk9 PiAnJywNCgkJJ2NhdGVnb3J5JwkJCT0+ICcnLA0KCQknc3ViY2F0cycJCQk9PiAnMCcsDQoJ CSd0cmlnZ2VyJwkJCT0+ICdsaWdodGJveC0nLA0KCQknZ3JvdXBuYW1lJwkJCT0+ICdzbWQn LA0KCQkndGh1bWInCQkJCT0+ICcwOjEnLA0KCQknbGltaXQnCQkJCT0+ICcwJywNCgkJJ21h eGxpbWl0JwkJCT0+ICc5OTk5OScsDQoJCSdzb3J0JwkJCQk9PiAnY2F0ZWdvcnkgYXNjJywg Ly8gd2FzIG9yZGVyYnkNCgkJJ29yZGVyYnknCQkJPT4gJycsIC8vIERFUFJFQ0FURUQNCgkJ J3Nob3dwYWdlbGlua3MnCT0+ICcxJywNCgkJJ2dhbGxlcnlpZCcJCQk9PiAnPzQ6NicsDQoJ CSdpbWFnZWNhcHRpb24nCQk9PiAnP2NhcHRpb24nLA0KCQkndGh1bWJzaXplJwkJCT0+ICcn LA0KCQkndGh1bWJ0ZXh0JwkJCT0+ICcnLA0KCQkndGh1bWJ0ZXh0d3JhcCcJPT4gJ3NwYW4n LA0KCQkndGh1bWJ0ZXh0Y2xhc3MnCT0+ICcnLA0KCQknd3JhcHRhZycJCQk9PiAnJywNCgkJ J25hdndyYXB0YWcnCQk9PiAnJywNCgkJJ3ByZXZsYWJlbCcJCQk9PiAkc21kX3Nib3hMYW5n LT5nVHh0KCdwcmV2X2xibCcpLA0KCQknbmV4dGxhYmVsJwkJCT0+ICRzbWRfc2JveExhbmct PmdUeHQoJ25leHRfbGJsJyksDQoJCSdwcmV2Y2xhc3MnCQkJPT4gJ3NtZF9zbGltYm94X3By ZXYnLA0KCQknbmV4dGNsYXNzJwkJCT0+ICdzbWRfc2xpbWJveF9uZXh0JywNCgkJJ25hdmNs YXNzJwkJCT0+ICcnLA0KCQknY2VsbGNsYXNzJwkJCT0+ICcnLA0KCQknbGlua2NsYXNzJwkJ CT0+ICcnLA0KCQknaW1nY2xhc3MnCQkJPT4gJycsDQoJCSdkZWJ1ZycJCQk9PiAnMCcsDQoJ KSwgJGF0dHMpKTsNCg0KCS8vIERFUFJFQ0FURUQ6IENvbnZlcnQgb3JkZXJieSB0byB0aGUg bmV3IHNvcnQuIFJlbW92ZSBpbiBsYXRlciB2ZXJzaW9ucw0KCWlmICgkb3JkZXJieSkgew0K CQkkc29ydCA9IHN0cl9yZXBsYWNlICgiOiIsICIgIiwgJG9yZGVyYnkpOw0KCQlpZiAoaW5f YXJyYXkoJHByb2R1Y3Rpb25fc3RhdHVzLCBhcnJheSgnZGVidWcnLCAndGVzdGluZycpKSkg ew0KCQkJdHJpZ2dlcl9lcnJvcigiJ29yZGVyYnknIGlzIG5vdyByZW5hbWVkICdzb3J0Jy4g VXNlIGEgc3BhY2UgaW5zdGVhZCBvZiBhIGNvbG9uIHRvIHNwZWNpZnkgc29ydCBvcmRlciAo ZS5nLiBvcmRlcmJ5PSdjYXRlZ29yeTphc2MnIGlzIG5vdyBzb3J0PSdjYXRlZ29yeSBhc2Mn KS4iKTsNCgkJfQ0KCX0NCgkvLyBDYXRlZ29yeSByZWxpZXMgb24gd2hldGhlciBpbWFnZWlk IGhhcyBiZWVuIHNwZWNpZmllZCBvciBub3QuDQoJLy8gbEF0dHMoKSB3b24ndCBsZXQgdXMg aGFuZGxlIHRoaXMgbG9naWMgc28gaXQgaGFzIHRvIGJlIGRvbmUgbWFudWFsbHkNCgkkY2F0 ZWdvcnkgPSBpc3NldCgkY2F0ZWdvcnkpID8gZG9TbGFzaCgkY2F0ZWdvcnkpIDogKCgkaW1h Z2VpZD09IiIpID8gJHByZXRleHRbJ2MnXTogJycpOw0KDQoJLy8gVGhlIGdhbGxlcnkgaWRl bnRpZmllciBpcyB1c2VkIGZvciBrZWVwaW5nIHRyYWNrIG9mIG5leHQvcHJldiB0aHVtYnBh Z2UgbGlua3MuDQoJLy8gRG9uJ3QgdXNlIHBhcmFtZGVsaW0gaGVyZSBvciB0aGUgZGVmYXVs dCBvcHRpb24gYnJlYWtzDQoJJGdhbGxJRCA9ICIiOw0KCWlmICgkZ2FsbGVyeWlkID09ICIi IHx8IHN1YnN0cigkZ2FsbGVyeWlkLDAsMSkgPT0gIj8iKSB7DQoJCS8vIEdlbmVyYXRlIGEg dW5pcXVlIElEIGZvciB0aGlzIGdhbGxlcnkgaW5zdGFuY2UNCgkJJGdhbGxUbXAgPSBtZDUo JGNhdGVnb3J5LiRpbWFnZWlkLiRvcmRlcmJ5LiRsaW1pdC4kbWF4bGltaXQuJHdyYXB0YWcp Ow0KCQlsaXN0KCRnYWxsTGVuLCAkZ2FsbFNraXApID0gZXhwbG9kZSgiOiIsIHN1YnN0cigk Z2FsbGVyeWlkLDEpKTsNCgkJJGdhbGxMZW4gPSAgKGVtcHR5KCRnYWxsTGVuKSkgPyAiNCIg OiAkZ2FsbExlbjsNCgkJJGdhbGxTa2lwID0gIChlbXB0eSgkZ2FsbFNraXApKSA/ICIxIiA6 ICRnYWxsU2tpcDsNCgkJZm9yICgkaWR4ID0gMCwgJGNudCA9IDA7ICRjbnQgPCAkZ2FsbExl bjsgJGNudCsrLCAkaWR4ID0gKCgkaWR4KyRnYWxsU2tpcCkgJSBzdHJsZW4oJGdhbGxUbXAp KSkgew0KCQkJJGdhbGxJRCAuPSAkZ2FsbFRtcFskaWR4XTsNCgkJfQ0KCX0gZWxzZSB7DQoJ CSRnYWxsSUQgPSAkZ2FsbGVyeWlkOw0KCX0NCg0KCS8vIFNldCB1cCB0aGUgdmFyaWFibGVz IGZyb20gdGhlIHRodW1iIG9wdGlvbi4NCgkvLyBEb24ndCB1c2UgcGFyYW1kZWxpbSBoZXJl IG9yIHRoZSBkZWZhdWx0IG9wdGlvbiBicmVha3MNCgkkdGh1bWJPcHRzID0gZG9fbGlzdCgk dGh1bWIsICI6Iik7DQoJaWYgKGNvdW50KCR0aHVtYk9wdHMpID09IDEpIHsNCgkJJGZ1bGxt b2QgPSAkdGh1bWJtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCX0g ZWxzZSB7DQoJCSRmdWxsbW9kID0gKCR0aHVtYk9wdHNbMF0gPT0gMSkgPyAidCIgOiAiIjsN CgkJJHRodW1ibW9kID0gKCR0aHVtYk9wdHNbMV0gPT0gMSkgPyAidCIgOiAiIjsNCgl9DQoN CgkvLyBFeHRyYWN0IHRoZSBnaXZlbiBjYXRlZ29yeS9pbWFnZWlkIGxpc3RzIGFuZCBtYWtl IHVwIHRoZSBiZWdpbm5pbmdzIG9mIGEgV0hFUkUgY2xhdXNlDQoJJGNsYXVzZVtdID0gJzE9 MSc7DQoJJGNsYXVzZU9SID0gYXJyYXkoKTsNCgkkc3ViaW5mbyA9ICgkc3ViY2F0cykgPyAi aW1hZ2U6Ii4kc3ViY2F0cyA6ICcnOw0KCWxpc3QoJGZ1bGxJRExpc3QsICRub3RJRExpc3Qp ID0gc21kX2RvTGlzdCgkaW1hZ2VpZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxpbSk7DQoJbGlz dCgkZnVsbENhdExpc3QsICRub3RDYXRMaXN0KSA9IHNtZF9kb0xpc3QoJGNhdGVnb3J5LCBm YWxzZSwgJHN1YmluZm8sIHRydWUsICRkZWxpbSk7DQoJaWYgKCRmdWxsSURMaXN0KSB7DQoJ CSRjbGF1c2VPUltdID0gJ3R4cF9pbWFnZS5pZCBJTiAoJy5pbXBsb2RlKCIsIiwgJGZ1bGxJ RExpc3QpLicpJzsNCgl9DQoJaWYgKCRmdWxsQ2F0TGlzdCkgew0KCQkkY2xhdXNlT1JbXSA9 ICd0eHBfaW1hZ2UuY2F0ZWdvcnkgSU4gKCcuaW1wbG9kZSgiLCIsICRmdWxsQ2F0TGlzdCku JyknOw0KCX0NCglpZiAoIWVtcHR5KCRjbGF1c2VPUikpIHsNCgkJJGNsYXVzZVtdID0gaW1w bG9kZSgiIE9SICIsICRjbGF1c2VPUik7DQoJfQ0KDQoJJGNsYXVzZSA9IGltcGxvZGUoIiBB TkQgIiwgJGNsYXVzZSk7DQoJJGNsYXVzZSAuPSAoJG5vdENhdExpc3QpID8gJyBBTkQgdHhw X2ltYWdlLmNhdGVnb3J5IE5PVCBJTiAoJy5pbXBsb2RlKCIsIiwgJG5vdENhdExpc3QpLicp JyA6ICcnOw0KCSRjbGF1c2UgLj0gKCRub3RJRExpc3QpID8gJyBBTkQgdHhwX2ltYWdlLmlk IE5PVCBJTiAoJy5pbXBsb2RlKCIsIiwgJG5vdElETGlzdCkuJyknIDogJyc7DQoNCgkvLyBJ ZiBhIGNhdGVnb3J5L2ltYWdlaWQgb3B0aW9uIHdhcyBjaG9zZW4gYW5kIHRoZXkgbWF0Y2hl ZCBub3RoaW5nLCB1c2UgYSBib2d1cyBjYXRlZ29yeSB0aGF0IHNob3VsZCBub3QgZXhpc3Qu DQoJLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHBsdWdpbiBkb2VzIHRoZSBleHBlY3RlZCB0 aGluZyBvZiBtYXRjaGluZyBub3RoaW5nIGluIHRoZSBldmVudCBpdCBmaW5kcyBub3RoaW5n Lg0KCWlmICgkY2xhdXNlID09ICIxPTEiICYmICRhdHRlbXB0TWF0Y2gpIHsNCiAgCQkkY2xh dXNlID0gJ3R4cF9pbWFnZS5jYXRlZ29yeSA9ICJzbWRfJyAubXRfcmFuZCgpLiAnIic7DQoJ fQ0KDQoJLy8gQ29udmVydCB0aGUgc29ydCBpbnRvIGEgdmFsaWQgc29ydGluZyBoaWVyYXJj aHkuDQoJLy8gTm90ZSB0aGF0IHJhbmRvbSBpcyBhIHNwZWNpYWwgY2FzZSBhbmQgdGhlIGZv bGxvd2luZyBydWxlcyBhcHBseToNCgkvLyAgMSkgQW55dGhpbmcgYXBwZWFyaW5nIGJlZm9y ZSByYW5kb20gaXMgcGFzc2VkIHRvIHRoZSBkYXRhYmFzZSBxdWVyeSBmb3Igb3JkZXJpbmcN CgkvLyAgMikgQXMgc29vbiBhcyByYW5kb20gaXMgZW5jb3VudGVyZWQsIHRoZSByZXN0IG9m IHRoZSBzb3J0IHN0cmluZyBpcyBpZ25vcmVkLg0KCS8vICAgICBUaGUgcmVzdWx0c2V0IHdp bGwgYmUgc29ydGVkIHJhbmRvbWx5IGluc3RlYWQNCgkvLyAgMykgSWYgcmFuZG9tIGFwcGVh cnMgZmlyc3QgaW4gdGhlIGxpc3QsIHRoZSBkYXRhIGlzIHJldHJpZXZlZCByYW5kb21seSB0 aGVuIHRoZQ0KCS8vICAgICByZW1haW5pbmcgb3B0aW9ucyBzb3J0IHRoZSByZXN1bHRzZXQN CgkkY2xhdXNlU29ydCA9IGFycmF5KCk7DQoJJHBvc3RPcmRlciA9IGFycmF5KCk7DQoJJHJ1 bGUgPSAic3FsIjsNCgkkcG9zdFByZWZpeCA9ICJTT1JUXyI7DQoJJGZpeGVkT3JkZXIgPSAk cmFuZHNvcnQgPSBmYWxzZTsNCgkkc29ydCA9IGRvX2xpc3QoJHNvcnQsICRkZWxpbSk7DQoJ Zm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRzb3J0KTsgJGlkeCsrKSB7DQoJCSRzb3J0 X2RpciA9IGV4cGxvZGUoJyAnLCAkc29ydFskaWR4XSk7DQoJCSRkaXJlY3Rpb24gPSAkY29s UmVmID0gJyc7DQoJCWlmIChjb3VudCgkc29ydF9kaXIpIDw9IDEpIHsNCgkJCSRzb3J0X2Rp clsxXSA9ICJhc2MiOw0KCQl9DQoJCWlmICgkcnVsZSA9PSAic3FsIikgew0KCQkJJGRpcmVj dGlvbiA9ICgkc29ydF9kaXJbMV0gPT0gImRlc2MiKSA/ICcgZGVzYycgOiAnIGFzYyc7DQoJ CX0gZWxzZSB7DQoJCQkkZGlyZWN0aW9uID0gKCRzb3J0X2RpclsxXSA9PSAiZGVzYyIpID8g JHBvc3RQcmVmaXguJ0RFU0MnIDogJHBvc3RQcmVmaXguJ0FTQyc7DQoJCX0NCg0KCQlzd2l0 Y2ggKCRzb3J0X2RpclswXSkgew0KCQkJY2FzZSAncmFuZG9tJzoNCgkJCQkkcnVsZSA9ICJw b3N0IjsNCgkJCQlpZiAoJGlkeCA9PSAwKSB7DQoJCQkJCSRjbGF1c2VTb3J0W10gPSAncmFu ZCgpJzsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkcmFuZHNvcnQgPSB0cnVlOw0KCQkJCX0NCgkJ CQlicmVhazsNCgkJCWNhc2UgJ2ZpeGVkJzoNCgkJCQkvLyAnZml4ZWQnIG9ubHkgd29ya3Mg b24gaWRzDQoJCQkJJGZpeGVkT3JkZXIgPSAoJGltYWdlaWQgPT0gJycpID8gZmFsc2UgOiB0 cnVlOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoNCgkJCQkkY29sUmVmID0gYXJyYXlfc2Vh cmNoKCRzb3J0X2RpclswXSwgJGZpZWxkTWFwKTsNCgkJCQlicmVhazsNCgkJfQ0KCQlpZiAo JHJ1bGUgPT0gInNxbCIpIHsNCgkJCWlmICgkY29sUmVmICE9ICcnKSB7DQoJCQkJJGNsYXVz ZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWlm ICghJHJhbmRzb3J0KSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJJHBvc3RP cmRlcltdID0gYXJyYXkoImNvbCIgPT4gJGNvbFJlZiwgInNvcnQiID0+ICRkaXJlY3Rpb24p Ow0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCWlmIChjb3VudCgkY2xhdXNlU29ydCkgPiAw KSB7DQoJCSRjbGF1c2UgLj0gJyBPUkRFUiBCWSAnIC4gaW1wbG9kZSgiLCIsJGNsYXVzZVNv cnQpOw0KCX0NCg0KCS8vIFRoZSBkYXRhYmFzZSBmaWVsZHMgcmVxdWlyZWQNCgkkZmllbGRz ID0gJ2lkLG5hbWUsY2FwdGlvbixhbHQsY2F0ZWdvcnksZGF0ZSxhdXRob3IsZXh0LHcsaCc7 DQoNCgkvLyBIYW5kbGUgcGFnaW5nDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkc2hvd3BhZ2Vs aW5rcykgew0KCQkkcnMgPSBzYWZlX3Jvd3MoJGZpZWxkcywgJ3R4cF9pbWFnZScsICRjbGF1 c2UgLicgTElNSVQgMCwnLiRtYXhsaW1pdCwgJGRlYnVnKTsNCgkJJG51bXRodW0gPSBjb3Vu dCgkcnMpOw0KCQkkbnVtUGFnZXMgPSAoJG51bXRodW0gPiAwKSA/IGNlaWwoJG51bXRodW0v JGxpbWl0KSA6IDE7DQoJCSR0aHVtYnBhZ2UgPSAoIWdwcygkZ2FsbElEKSkgPyAxIDogZ3Bz KCRnYWxsSUQpOw0KCQkkb2Zmc2V0ID0gKCR0aHVtYnBhZ2UgLSAxKSAqICRsaW1pdDsNCgl9 IGVsc2Ugew0KCQkvLyBObyBwYWdpbmcgcmVxdWlyZWQNCgkJJG51bVBhZ2VzID0gMTsNCgkJ JHRodW1icGFnZSA9IDE7DQoJCSRycyA9IHNhZmVfcm93cygkZmllbGRzLCAndHhwX2ltYWdl JywgJGNsYXVzZSAuJyBMSU1JVCAwLCcuICgoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRs aW1pdCksICRkZWJ1Zyk7DQoJfQ0KDQoJLy8gSXMgcG9zdC1vcmRlcmluZyByZXF1aXJlZD8g RG8gaXQNCglpZiAoJHJhbmRzb3J0KSB7DQoJCXNodWZmbGUoJHJzKTsNCgl9IGVsc2UgaWYg KGNvdW50KCRwb3N0T3JkZXIpID4gMCkgew0KCQkvLyBUcmFuc2xhdGUgdGhlIHJvd3MgaW50 byBjb2x1bW5zIHRoYXQgY2FuIGJlIHNvcnRlZA0KCQlmb3JlYWNoKCRycyBhcyAka2V5ID0+ ICRyb3cpIHsNCgkJCSRjb2xfaWRbJGtleV0gPSAkcm93WydpZCddOw0KCQkJJGNvbF9uYW1l WyRrZXldID0gJHJvd1snbmFtZSddOw0KCQkJJGNvbF9jYXB0aW9uWyRrZXldID0gJHJvd1sn Y2FwdGlvbiddOw0KCQkJJGNvbF9hbHRbJGtleV0gPSAkcm93WydhbHQnXTsNCgkJCSRjb2xf Y2F0ZWdvcnlbJGtleV0gPSAkcm93WydjYXRlZ29yeSddOw0KCQkJJGNvbF9kYXRlWyRrZXld ID0gJHJvd1snZGF0ZSddOw0KCQkJJGNvbF9leHRbJGtleV0gPSAkcm93WydleHQnXTsNCgkJ CSRjb2xfYXV0aG9yWyRrZXldID0gJHJvd1snYXV0aG9yJ107DQoJCQkkY29sX3dbJGtleV0g PSAkcm93Wyd3J107DQoJCQkkY29sX2hbJGtleV0gPSAkcm93WydoJ107DQoJCX0NCgkJLy8g TWFrZSB1cCBhbiBhcnJheV9tdWx0aXNvcnQgYXJnIGxpc3QgYW5kIGV4ZWN1dGUgaXQNCgkJ Zm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRwb3N0T3JkZXIpOyAkaWR4KyspIHsNCgkJ CSRzb3J0YXJnc1tdID0gJyRjb2xfJy4kcG9zdE9yZGVyWyRpZHhdWydjb2wnXTsNCgkJCSRz b3J0YXJnc1tdID0gJHBvc3RPcmRlclskaWR4XVsnc29ydCddOw0KCQl9DQoJCSRzb3J0aXQg PSAnYXJyYXlfbXVsdGlzb3J0KCcuaW1wbG9kZSgiLCAiLCRzb3J0YXJncykuJywgJHJzKTsn Ow0KCQlldmFsKCRzb3J0aXQpOw0KCX0NCg0KCS8vIElzIGZpeGVkLW9yZGVyIG91dHB1dCBk ZXNpcmVkPyBJZiBzbywgcmUtb3JkZXIgdGhlICRycw0KCWlmICgkZml4ZWRPcmRlcikgew0K CQkkb3JkZXJlZFJTID0gQXJyYXkoKTsNCgkJJGlnbm9yZUxpc3QgPSBBcnJheSgpOw0KCQkk cmVtYWluaW5nUlMgPSBBcnJheSgpOw0KCQkvLyBTdWNrIG91dCB0aGUgZml4ZWQgaXRlbXMg Zmlyc3QNCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRmdWxsSURMaXN0KTsgJGlk eCsrKSB7DQoJCQlmb3JlYWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCInIi4kcm93Wydp ZCddLiInIiA9PSAkZnVsbElETGlzdFskaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJTW10gPSAk cm93Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQl9DQoJCQl9DQoJ CX0NCgkJLy8gVGFjayBvbiB0aGUgcmVtYWluaW5nIHJvd3MNCgkJZm9yZWFjaCgkcnMgYXMg JHJvdykgew0KCQkJaWYgKCFpbl9hcnJheSgkcm93WydpZCddLCAkaWdub3JlTGlzdCkpIHsN CgkJCQkkcmVtYWluaW5nUlNbXSA9ICRyb3c7DQoJCQl9DQoJCX0NCgkJJHJzID0gYXJyYXlf bWVyZ2UoJG9yZGVyZWRSUywgJHJlbWFpbmluZ1JTKTsNCgl9DQoNCglpZiAoKCRsaW1pdCA+ IDApICYmICRzaG93cGFnZWxpbmtzKSB7DQoJCSRycyA9IGFycmF5X3NsaWNlKCRycywgJG9m ZnNldCwgJGxpbWl0KTsNCgl9DQoNCgkvLyBIYW5kbGUgdGh1bWJzaXplDQoJJHRodW1iV2lk dGggPSAkdGh1bWJIZWlnaHQgPSAnJzsNCgkkdGh1bWJXVW5pdHMgPSAkdGh1bWJIVW5pdHMg PSAnJzsNCglpZiAoJHRodW1ic2l6ZSkgew0KCQkkdGh1bWJTaXplcyA9IGRvX2xpc3QoJHRo dW1ic2l6ZSwgJGRlbGltKTsNCgkJaWYgKGNvdW50KCR0aHVtYlNpemVzKSA9PSAxKSB7DQoJ CQkkdGh1bWJXaWR0aCA9ICR0aHVtYkhlaWdodCA9IHByZWdfcmVwbGFjZSgiL1teMC05XS8i LCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHVuaXRzID0gcHJlZ19yZXBsYWNlKCIvWzAt OV0vIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICR0aHVtYkhV bml0cyA9ICgkdW5pdHMgPT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0KCQl9IGVs c2Ugew0KCQkJJHRodW1iV2lkdGggPSBwcmVnX3JlcGxhY2UoIi9bXjAtOV0vIiwgJycsICR0 aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYkhlaWdodCA9IHByZWdfcmVwbGFjZSgiL1teMC05 XS8iLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHVuaXRzID0gcHJlZ19yZXBsYWNlKCIv WzAtOV0vIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICgkdW5p dHMgPT0gJycgJiYgJHRodW1iV2lkdGggIT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRz Ow0KCQkJJHVuaXRzID0gcHJlZ19yZXBsYWNlKCIvWzAtOV0vIiwgJycsICR0aHVtYlNpemVz WzFdKTsNCgkJCSR0aHVtYkhVbml0cyA9ICgkdW5pdHMgPT0gJycgJiYgJHRodW1iSGVpZ2h0 ICE9ICcnKSA/ICR0aHVtYkhVbml0cyA6ICR1bml0czsNCgkJfQ0KCX0NCg0KCS8vIFNldCB1 cCB0aGUgdGh1bWJ0ZXh0IHBvc2l0aW9ucw0KCSRwb3NBcnJheSA9IGFycmF5KCk7DQoJJHNo b3dvcHRzID0gZG9fbGlzdCgkdGh1bWJ0ZXh0LCAkZGVsaW0pOw0KCWZvcmVhY2ggKCRzaG93 b3B0cyBhcyAkaXRlbSkgew0KCQkkc2hvd3BvcyA9IGRvX2xpc3QoJGl0ZW0sICRwYXJhbWRl bGltKTsNCgkJaWYgKGNvdW50KCRzaG93cG9zKSA+IDEgJiYgaW5fYXJyYXkoJHNob3dwb3Nb MF0sJHNob3dMb2NzKSkgew0KCQkJJHBvc0FycmF5WyRzaG93cG9zWzBdXSA9ICRzaG93cG9z WzFdOw0KCQl9IGVsc2Ugew0KCQkJJHBvc0FycmF5WyRzaG93TG9jc1swXV0gPSAoKGNvdW50 KCRzaG93cG9zKT4xKSA/ICRzaG93cG9zWzFdIDogJHNob3dwb3NbMF0pOw0KCQl9DQoJfQ0K DQoJLy8gQ29uc3RydWN0IHRoZSBvdXRwdXQNCgkkZmllbGRSRSA9ICcvXD8oJy5pbXBsb2Rl KCd8JywgJGZpZWxkTWFwKS4nfHVybCkvJzsNCgkkdGh1bWJ0ZXh0UGxhdGUgPSAoKCR0aHVt YnRleHR3cmFwKSA/ICc8JyAuICR0aHVtYnRleHR3cmFwIC4gKCgkdGh1bWJ0ZXh0Y2xhc3Mg IT0gIiIpID8gJyBjbGFzcz0iJyAuJHRodW1idGV4dGNsYXNzLiAnIicgOiAnJykgLiAnPicg OiAnJykgLiR0aHVtYmhvbGRlci4gKCgkdGh1bWJ0ZXh0d3JhcCkgPyAnPC8nIC4gJHRodW1i dGV4dHdyYXAuICc+JyA6ICcnKTsNCgkkb3V0U3RyID0gJyc7DQoNCglpZiAoJGRlYnVnKSB7 DQoJCWRtcCgkcnMpOw0KCX0NCg0KCWlmKCRycykgew0KCQkkdGh1bWJ0ZXh0Q3Vycj0iIjsN CgkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJJHRoZVRodW1iID0gaHUuJGltZ19kaXIu Jy8nIC4gJHJvd1snaWQnXSAuICR0aHVtYm1vZCAuICRyb3dbJ2V4dCddOw0KCQkJJGZ1bGwg PSBodS4kaW1nX2Rpci4nLycgLiAkcm93WydpZCddIC4gJGZ1bGxtb2QgLiRyb3dbJ2V4dCdd Ow0KCQkJaWYgKCRncm91cG5hbWUgPT09ICI/YyIpIHsNCgkJCQkkZ3JwID0gJHJvd1snY2F0 ZWdvcnknXTsNCgkJCX0gZWxzZSBpZiAoJGdyb3VwbmFtZSA9PT0gIj9pZCIpIHsNCgkJCQkk Z3JwID0gJHJvd1snaWQnXTsNCgkJCX0gZWxzZSBpZiAoJGdyb3VwbmFtZSA9PT0gIj9hdXRo b3IiKSB7DQoJCQkJJGdycCA9ICRyb3dbJ2F1dGhvciddOw0KCQkJfSBlbHNlIGlmICgkZ3Jv dXBuYW1lID09PSAiP2RhdGUiKSB7DQoJCQkJJGdycCA9ICRyb3dbJ2RhdGUnXTsNCgkJCX0g ZWxzZSBpZiAoJGdyb3VwbmFtZSA9PT0gIj9hbHQiKSB7DQoJCQkJJGdycCA9ICRyb3dbJ2Fs dCddOw0KCQkJfSBlbHNlIGlmICgkZ3JvdXBuYW1lID09PSAiP2NhcHRpb24iKSB7DQoJCQkJ JGdycCA9ICRyb3dbJ2NhcHRpb24nXTsNCgkJCX0gZWxzZSBpZiAoJGdyb3VwbmFtZSA9PT0g Ij9leHQiKSB7DQoJCQkJJGdycCA9ICRyb3dbJ2V4dCddOw0KCQkJfSBlbHNlIGlmICgkZ3Jv dXBuYW1lID09PSAiP25hbWUiKSB7DQoJCQkJJGdycCA9ICRyb3dbJ25hbWUnXTsNCgkJCX0g ZWxzZSBpZiAoJGdyb3VwbmFtZSA9PT0gIj93aWR0aCIpIHsNCgkJCQkkZ3JwID0gJHJvd1sn dyddOw0KCQkJfSBlbHNlIGlmICgkZ3JvdXBuYW1lID09PSAiP2hlaWdodCIpIHsNCgkJCQkk Z3JwID0gJHJvd1snaCddOw0KCQkJfSBlbHNlIGlmIChzdWJzdHIoJGdyb3VwbmFtZSwwLDEp ID09PSAiPyIpIHsNCgkJCQkvLyBTcGxpdCBvZmYgdGhlIGZpZWxkIG5hbWUgZnJvbSB0aGUg cXVlc3Rpb24gbWFyaw0KCQkJCSRmaWVsZG5hbWUgPSBzdWJzdHIoJGdyb3VwbmFtZSwxKTsN CgkJCQlpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRmaWVsZG5hbWVdKSkgew0KCQkJCQkkZ3Jw ID0gJHRoaXNhcnRpY2xlWyRmaWVsZG5hbWVdOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRncnAg PSAnJzsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCSRncnAgPSAkZ3JvdXBuYW1lOw0KCQkJ fQ0KDQoJCQkvLyBIYW5kbGUgaW1hZ2VjYXB0aW9uDQoJCQkkY2FwdGlvbk1zZyA9ICRpbWFn ZWNhcHRpb247DQoJCQkkbWF0Y2hlcyA9IGFycmF5KCk7DQoJCQkkY3RyID0gcHJlZ19tYXRj aF9hbGwoJGZpZWxkUkUsICRjYXB0aW9uTXNnLCAkbWF0Y2hlcywgUFJFR19TRVRfT1JERVIp Ow0KCQkJZm9yICgkaWR4ID0gMDsgJGlkeCA8ICRjdHI7ICRpZHgrKykgew0KCQkJCSRmaWVs ZG5hbWUgPSAkbWF0Y2hlc1skaWR4XVsxXTsNCgkJCQkka2V5ID0gYXJyYXlfc2VhcmNoKCRm aWVsZG5hbWUsICRmaWVsZE1hcCk7DQoJCQkJaWYgKCRrZXkpIHsNCgkJCQkJJHJlcCA9ICRy b3dbJGtleV07DQoJCQkJfSBlbHNlIGlmICgkZmllbGRuYW1lID09ICJ1cmwiKSB7DQoJCQkJ CSRyZXAgPSAkZnVsbDsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkcmVwID0gJGZpZWxkbmFtZTsN CgkJCQl9DQoJCQkJJGNhcHRpb25Nc2cgPSBzdHJfcmVwbGFjZSgkbWF0Y2hlc1skaWR4XVsw XSwgJHJlcCwgJGNhcHRpb25Nc2cpOw0KCQkJfQ0KDQoJCQkvLyBIYW5kbGUgdGh1bWJ0ZXh0 DQoJCQkkdGh1bWJ0ZXh0QXJyYXkgPSBhcnJheV9jb21iaW5lKCRzaG93TG9jcywgYXJyYXko IiIsIiIsIiIsIiIsIiIpKTsgLy8gSW5pdGlhbGlzZSBldmVyeSBlbGVtZW50DQoJCQlmb3Jl YWNoICgkcG9zQXJyYXkgYXMgJHBvcyA9PiAkdGV4dCkgew0KCQkJCSRtYXRjaGVzID0gYXJy YXkoKTsNCgkJCQkkY3RyID0gcHJlZ19tYXRjaF9hbGwoJGZpZWxkUkUsICR0ZXh0LCAkbWF0 Y2hlcywgUFJFR19TRVRfT1JERVIpOw0KCQkJCWZvciAoJGlkeCA9IDA7ICRpZHggPCAkY3Ry OyAkaWR4KyspIHsNCgkJCQkJJGZpZWxkbmFtZSA9ICRtYXRjaGVzWyRpZHhdWzFdOw0KCQkJ CQkka2V5ID0gYXJyYXlfc2VhcmNoKCRmaWVsZG5hbWUsICRmaWVsZE1hcCk7DQoJCQkJCWlm ICgka2V5KSB7DQoJCQkJCQkkcmVwID0gJHJvd1ska2V5XTsNCgkJCQkJfSBlbHNlIGlmICgk ZmllbGRuYW1lID09ICJ1cmwiKSB7DQoJCQkJCQkkcmVwID0gJGZ1bGw7DQoJCQkJCX0gZWxz ZSB7DQoJCQkJCQkkcmVwID0gJGZpZWxkbmFtZTsNCgkJCQkJfQ0KCQkJCQkkdGV4dCA9IHN0 cl9yZXBsYWNlKCRtYXRjaGVzWyRpZHhdWzBdLCAkcmVwLCAkdGV4dCk7DQoJCQkJfQ0KCQkJ CSR0aHVtYnRleHRBcnJheVskcG9zXSA9ICR0ZXh0Ow0KCQkJfQ0KDQoJCQkvLyBDb25zdHJ1 Y3QgdGhlIGxpbmsgYW5kIHB1dCB0aHVtYnRleHQgaW4gdGhlIGFwcHJvcHJpYXRlIHBvc2l0 aW9ucw0KCQkJJG91dFN0ciAuPSAoJHRodW1idGV4dEFycmF5WyJvbmNoYW5nZSJdICYmICR0 aHVtYnRleHRBcnJheVsib25jaGFuZ2UiXSAhPSAkdGh1bWJ0ZXh0Q3VycikgPyBzdHJfcmVw bGFjZSgkdGh1bWJob2xkZXIsIGh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlKCR0aHVtYnRleHRB cnJheVsib25jaGFuZ2UiXSksICR0aHVtYnRleHRQbGF0ZSkgOiAnJzsNCgkJCSRvdXRTdHIg Lj0gKCR3cmFwdGFnICE9ICIiKSA/ICc8JyAuJHdyYXB0YWcuICgoJGNlbGxjbGFzcyAhPSAi IikgPyAnIGNsYXNzPSInIC4kY2VsbGNsYXNzLiAnIicgOiAnJykgLiAnPicgOiAnJzsNCgkJ CSRvdXRTdHIgLj0gKCR0aHVtYnRleHRBcnJheVsiYWJvdmUiXSkgPyBzdHJfcmVwbGFjZSgk dGh1bWJob2xkZXIsIGh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlKCR0aHVtYnRleHRBcnJheVsi YWJvdmUiXSksICR0aHVtYnRleHRQbGF0ZSkgOiAnJzsNCgkJCSRvdXRTdHIgLj0gJzxhIGhy ZWY9IicuJGZ1bGwuJyInLigoJHRyaWdnZXIgfHwgJGdycCkgPyAnIHJlbD0iJyAuJHRyaWdn ZXIuJGdycC4gJyInIDogJycpLicgdGl0bGU9IicgLiRjYXB0aW9uTXNnLiAnIicgLigoJGxp bmtjbGFzcyAhPSAiIikgPyAnIGNsYXNzPSInIC4kbGlua2NsYXNzLiAnIicgOiAnJykuICc+ JyAuKCgkdGh1bWJ0ZXh0QXJyYXlbImJlZm9yZSJdKSA/IHN0cl9yZXBsYWNlKCR0aHVtYmhv bGRlciwgaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoJHRodW1idGV4dEFycmF5WyJiZWZvcmUi XSksICR0aHVtYnRleHRQbGF0ZSkgOiAnJykuICc8aW1nIHNyYz0iJyAuJHRoZVRodW1iLiAn IiBhbHQ9IicgLiRyb3dbJ2FsdCddLiAnIicgLiAoKCRpbWdjbGFzcyAhPSAiIikgPyAnIGNs YXNzPSInIC4kaW1nY2xhc3MuICciJyA6ICcnKSAuICgoJHRodW1iV2lkdGgpID8gJyB3aWR0 aD0iJyAuICR0aHVtYldpZHRoLiR0aHVtYldVbml0cy4gJyInIDogJycpIC4gKCgkdGh1bWJI ZWlnaHQpID8gJyBoZWlnaHQ9IicgLiAkdGh1bWJIZWlnaHQuJHRodW1iSFVuaXRzLiAnIicg OiAnJykgLiAnIC8+JyAuKCgkdGh1bWJ0ZXh0QXJyYXlbImFmdGVyIl0pID8gc3RyX3JlcGxh Y2UoJHRodW1iaG9sZGVyLCBodG1sc3BlY2lhbGNoYXJzX2RlY29kZSgkdGh1bWJ0ZXh0QXJy YXlbImFmdGVyIl0pLCAkdGh1bWJ0ZXh0UGxhdGUpIDogJycpLiAnPC9hPicubjsNCgkJCSRv dXRTdHIgLj0gKCR0aHVtYnRleHRBcnJheVsiYmVsb3ciXSkgPyBzdHJfcmVwbGFjZSgkdGh1 bWJob2xkZXIsIGh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlKCR0aHVtYnRleHRBcnJheVsiYmVs b3ciXSksICR0aHVtYnRleHRQbGF0ZSkgOiAnJzsNCgkJCSRvdXRTdHIgLj0gKCR3cmFwdGFn ICE9ICIiKSA/ICc8LycgLiR3cmFwdGFnLiAnPicgOiAnJzsNCgkJCSRvdXRTdHIgLj0gbjsN CgkJCSR0aHVtYnRleHRDdXJyID0gJHRodW1idGV4dEFycmF5WyJvbmNoYW5nZSJdOw0KCQl9 DQoNCgkJLy8gQWRkIHRoZSBwYWdpbmcgZmVhdHVyZXMgaWYgcmVxdWlyZWQNCgkJaWYgKCgk bGltaXQgPiAwKSAmJiAkc2hvd3BhZ2VsaW5rcykgew0KCQkJJG5leHQgPSAoJG51bVBhZ2Vz ID4gMSAmJiAkdGh1bWJwYWdlICE9ICRudW1QYWdlcyk7DQoJCQkkcHJldiA9ICgkbnVtUGFn ZXMgPiAxICYmICR0aHVtYnBhZ2UgPiAxKTsNCg0KCQkJLy8gUmVwbGFjZSBhbnkgcGFnaW5n IGluZm8gaW4gdGhlIHF1ZXJ5IHN0cmluZw0KCQkJJHByZXZQYWdlID0gc21kX2FkZFFTVmFy KCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bWJwYWdlLTEpOw0KCQkJ JG5leHRQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2Fs bElELCAkdGh1bWJwYWdlKzEpOw0KDQoJCQkkb3V0U3RyIC49ICgkbmF2d3JhcHRhZyAhPSAi IikgPyAnPCcgLiRuYXZ3cmFwdGFnLiAoKCRuYXZjbGFzcyAhPSAiIikgPyAnIGNsYXNzPSIn IC4kbmF2Y2xhc3MuICciJyA6ICcnKSAuICc+JyA6ICcnOw0KCQkJJG91dFN0ciAuPSAoJHBy ZXYpID8gJzxhJyAuICgoJHByZXZjbGFzcyAhPSAiIikgPyAnIGNsYXNzPSInIC4kcHJldmNs YXNzLiAnIicgOiAnJykgLiAnIGhyZWY9IicgLiRwcmV2UGFnZS4gJyI+JyAuJHByZXZsYWJl bC4gJzwvYT4nLm4gOiAnJzsNCgkJCSRvdXRTdHIgLj0gKCRuZXh0KSA/ICc8YScgLiAoKCRu ZXh0Y2xhc3MgIT0gIiIpID8gJyBjbGFzcz0iJyAuJG5leHRjbGFzcy4gJyInIDogJycpIC4g JyBocmVmPSInIC4kbmV4dFBhZ2UuICciPicgLiRuZXh0bGFiZWwuICc8L2E+Jy5uIDogJyc7 DQoJCQkkb3V0U3RyIC49ICgkbmF2d3JhcHRhZyAhPSAiIikgPyAnPC8nIC4kbmF2d3JhcHRh Zy4gJz4nIDogJyc7DQoJCQkkb3V0U3RyIC49IG47DQoJCX0NCgl9DQoNCglyZXR1cm4gJG91 dFN0cjsNCn0iO3M6NDoidHlwZSI7czoxOiIwIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NToi ZmxhZ3MiO3M6MToiMCI7czo0OiJoZWxwIjtzOjM4MDQ1OiI8ZGl2IGlkPSJzbWRfaGVscCI+ CgoJPGgxIGlkPSJ0b3AiPnNtZF9zbGltYm94PC9oMT4KCgk8aDIgaWQ9ImZlYXR1cmVzIj5G ZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5HZW5lcmF0ZXMgYSBsaXN0IG9mIHRodW1ibmFp bHMgdGhhdCBjYW4gYmUgc3R5bGVkIGFueSB3YXkgeW91IGxpa2U8L2xpPgoJCTxsaT5GbGV4 aWJsZSB3YXkgb2YgZXh0cmFjdGluZyBpbWFnZXMgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNh cHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2U7IGFyYml0cmFyeSBpbmNsdXNpb24vZXhjbHVzaW9u IG9mIGNhdGVnb3JpZXMgb3IgaW1hZ2UgSURzPC9saT4KCQk8bGk+TGlzdHMgb2YgY2F0ZWdv cmllcyBhbmQgSURzIGNhbiBiZSBwdWxsZWQgZnJvbSBhbnkgZmllbGQgaW4gdGhlIGN1cnJl bnQgYXJ0aWNsZSwgaW5jbHVkaW5nIGN1c3RvbSBmaWVsZHM8L2xpPgoJCTxsaT5TdXBwb3J0 cyBnbHpfY3VzdG9tX2ZpZWxkcyBmb3IgZXZlbiBncmVhdGVyIGZsZXhpYmlsaXR5IChjdXJy ZW50bHkgcmVxdWlyZXMgYSBzbWFsbCBtb2QgdG8gcHVibGlzaC5waHApPC9saT4KCQk8bGk+ U3ViY2F0ZWdvcmllczogc3BlY2lmeSBhIHBhcmVudCBhbmQgYWxsIGNoaWxkIGNhdGVnb3Jp ZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW5jbHVkZWQ8L2xpPgoJCTxsaT5TaG93IGFzc29jaWF0 ZWQgaW1hZ2UgdGV4dCBpbiB2YXJpb3VzIGxvY2F0aW9ucyBhcm91bmQgdGhlIHRodW1ibmFp bHM8L2xpPgoJCTxsaT5QYWdpbmcgYW5kIG11bHRpcGxlIGdhbGxlcmllcyBwZXIgcGFnZTwv bGk+CgkJPGxpPlN1cHBvcnRzIFNsaW1ib3gsIExpZ2h0Ym94LCBMaXRlYm94LCBNb29uYm94 LCBUaGlja2JveCBhbmQgcGVyaGFwcyBzb21lIG1vcmUgYmVzaWRlcy4gRm9yIGEgd2lkZXIg cmFuZ2UsIHNlZSA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTU3 L3NtZF9nYWxsZXJ5Ij5zbWRfZ2FsbGVyeTwvYT48L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImF1 dGhvciI+QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20v Y29udGFjdCI+U3RlZiBEYXdzb248L2E+Jmd0Oy4gRm9yIG90aGVyIHNvZnR3YXJlIGJ5IG1l LCBvciB0byBtYWtlIGEgZG9uYXRpb24sIHNlZSB0aGUgJiM4MjIwO3NvZnR3YXJlIHBhZ2U6 JiM4MjIwO2h0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdy48L3A+CgoJPHA+T3JpZ2luYWxseSBi YXNlZCBvbiAmIzgyMjA7c2xpbWJveCwgYSBsaWdodHdlaWdodCBMaWdodGJveCBjbG9uZTom IzgyMjA7aHR0cDovL3d3dy5kaWdpdGFsaWEuYmUvc29mdHdhcmUvc2xpbWJveCBieSBDaHJp c3RvcGhlIEJleWxzLiBGb3IgbW9yZSBpbmZvIG9yIHRyb3VibGVzaG9vdGluZyBvbiB0aGUg bGlnaHRib3ggc2lkZSBvZiB0aGluZ3MgKGFzIG9wcG9zZWQgdG8gdGhlIHRodW1ibmFpbCBn ZW5lcmF0aW9uIHNpZGUgb2YgdGhpbmdzKSA8YSBocmVmPSJodHRwOi8vd3d3LmZyZWV3ZWJz ZmFybXMuY29tL2ZvcnVtcy92aWV3dG9waWMucGhwP3BpZD0zMzE2I3AzMzE2Ij5zZWUgQ2hy aXN0b3BoZSYjODIxNztzIGZvcnVtPC9hPi48L3A+CgoJPGgyIGlkPSJpbnN0YWxsIj5JbnN0 YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHAgY2xhc3M9ImltcG9ydGFudCI+ UmVxdWlyZXMgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3NtZF9saWIiPnNtZF9s aWI8L2E+IHRvIGJlIGluc3RhbGxlZCBhbmQgYWN0aXZhdGVkLjwvcD4KCgk8cD5Eb3dubG9h ZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5v cmcvcGx1Z2lucy83NDEvc21kX3NsaW1ib3giPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRo ZSAmIzgyMjA7c29mdHdhcmUgcGFnZTomIzgyMjA7aHR0cDovL3N0ZWZkYXdzb24uY29tL3N3 LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1 Z2luLjwvcD4KCgk8cD5Zb3Ugd2lsbCBhbHNvIG5lZWQgYSBqYXZhc2NyaXB0IGxpYnJhcnkg dG8gcGVyZm9ybSB0aGUgbGlnaHRib3ggZWZmZWN0LCB3aGljaCB5b3UgbXVzdCBsb2FkIG9u IHlvdXIgcGFnZSBhcyBwZXIgdGhlIGluc3RydWN0aW9ucyBmb3IgdGhhdCBsaWJyYXJ5LiBB bHRob3VnaCB0aGUgZXhhbXBsZXMgaW4gdGhpcyBwYWdlIGFyZSBmb3IgU2xpbWJveCwgdGhl IHBsdWdpbiB3aWxsIHdvcmsgd2l0aCBhIG51bWJlciBvZiBmcmVlbHktYXZhaWxhYmxlIGph dmFzY3JpcHQgbGlicmFyaWVzICYjODIxMjsgb2Z0ZW4gd2l0aG91dCBtb2RpZmljYXRpb24u IFNvbWUgbGlicmFyaWVzIChlLmcuIFRoaWNrYm94KSBzaW1wbHkgcmVxdWlyZSBhbiBhZGRp dGlvbmFsIGNsYXNzIHRvIGJlIHNldCBvbiB0aGUgaW1hZ2UgdGFncy48L3A+CgoJPHA+Vmlz aXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGlj LnBocD9pZD0yMDcxNCI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJl cG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJ PHA+VG8gcmVtb3ZlIHRoZSBwbHVnaW4sIHNpbXBseSBkZWxldGUgaXQgZnJvbSB0aGUgQWRt aW4tJmd0O1BsdWdpbnMgdGFiIGFuZCByZW1vdmUgeW91ciB0aGlyZCBwYXJ0eSBsaWJyYXJp ZXMuPC9wPgoKCTxoMiBpZD0idXNhZ2UiPlVzYWdlPC9oMj4KCgk8cD5UaGUgcGx1Z2luIG9w dGlvbnMgZ292ZXJuIHdoaWNoIHRodW1ibmFpbHMgdG8gdXNlIGFuZCBob3cgdGhleSBhcmUg ZGlzcGxheWVkLiBPbmNlIGEgdGh1bWIgaXMgY2xpY2tlZCwgY29udHJvbCBpcyBoYW5kZWQg b3ZlciB0byBtb290b29scy9qUXVlcnkvcHJvdG90eXBlIHRvIGRvIHRoZSBmYW5jeSB3b3Jr LiBUaGVyZWZvcmUsIGlmIHlvdSB3aXNoIHRvIGNvbmZpZ3VyZSB0aGUgbG9vayBvZiB0aGUg JiM4MjIwO2xpZ2h0Ym94JiM4MjIxOyBwYXJ0LCB5b3UgbmVlZCB0byBlZGl0IGl0cyBqYXZh c2NyaXB0IGFuZC9vciBhc3NvY2lhdGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+ LjwvcD4KCgk8cD5CZWZvcmUgeW91IGNhbiB1c2Ugc21kX3NsaW1ib3ggeW91IGhhdmUgdG8g ZW5zdXJlIHRoYXQgdGhlIHBhZ2UgY2FuIHJlYWQgdGhlIGV4dGVybmFsIGxpYnJhcnkgZmls ZXMuIFlvdSBkbyB0aGlzIGJ5IHB1dHRpbmcgPGNvZGU+Jmx0O3NjcmlwdCZndDs8L2NvZGU+ IGFuZCA8Y29kZT4mbHQ7bGluayZndDs8L2NvZGU+IHRhZ3MgYXMgdXN1YWwgaW4geW91ciBw YWdlIDxjb2RlPiZsdDtoZWFkJmd0OzwvY29kZT4uPC9wPgoKCTxoMyBpZD0iY2hhbmdlcyI+ Q2hhbmdlcyBmcm9tIDAuMnggdmVyc2lvbnM8L2gzPgoKCTxwPkV4cGVyaWVuY2VkIHVzZXJz IG9mIHNtZF9zbGltYm94LCBwbGVhc2Ugbm90ZSB0aGVzZSBpbXBvcnRhbnQgY2hhbmdlcyB0 byB0aGUgcGx1Z2luOjwvcD4KCgk8dWw+CgkJPGxpPkFmdGVyIG92ZXJ3aGVsbWluZyBzdXBw b3J0IGZyb20gdGhlIHBvbGwsIDxjb2RlPnNtZF9zbGltYm94X2luYzwvY29kZT4gaXMgbm93 IHJlbW92ZWQuIElmIHlvdSB1c2UgaXQsIGEgd2FybmluZyB3aWxsIGJlIGlzc3VlZDwvbGk+ CgkJPGxpPkFjY29yZGluZ2x5LCA8Y29kZT5saWJjaGVjazwvY29kZT4gaGFzIGJlZW4gcmVt b3ZlZDwvbGk+CgkJPGxpPjxjb2RlPmNhdGxhYmVsPC9jb2RlPiBoYXMgYmVlbiByZW1vdmVk LiBXaXRoIG1vcmUgPGNvZGU+PzwvY29kZT4gYW5kIDxjb2RlPiE8L2NvZGU+IDxhIGhyZWY9 IiNmaWVsZHMiPmFydGljbGUgZmllbGQgY29kZXM8L2E+IG5vdyBhdmFpbGFibGUsIGFuZCB0 aGUgYWJpbGl0eSB0byBjb21iaW5lIHRoZW0gKGUuZy4gP3MtP2MpIHlvdSBjYW4gbm93IHBl cmZvcm0gdGhlIHNhbWUgZnVuY3Rpb24gYXMgPGNvZGU+Y2F0bGFiZWw8L2NvZGU+IGJ5IHVz aW5nIDxjb2RlPmNhdGVnb3J5PSZxdW90O2FydGljbGUtP2lkJnF1b3Q7PC9jb2RlPjwvbGk+ CgkJPGxpPjxjb2RlPnN1YmNhdHM8L2NvZGU+IGltcHJvdmVkLiBOb3cgdGFrZXMgYW4gaW50 ZWdlciAmIzgyMjA7bGV2ZWwmIzgyMjE7IHRoYXQgc3BlY2lmaWVzIGhvdyBmYXIgZG93biB0 aGUgdHJlZSB0byBnby4gRm9yIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBiZWZvcmUsIHVzZSA8 Y29kZT5zdWJjYXRzPSZxdW90O2FsbCZxdW90OzwvY29kZT48L2xpPgoJCTxsaT5zaG93YWx0 L3Nob3djYXB0aW9uL2FsdGNsYXNzL2NhcHRpb25jbGFzcy90ZXh0cG9zIGhhdmUgYmVlbiBy ZW1vdmVkLiBVc2UgPGNvZGU+dGh1bWJ0ZXh0PC9jb2RlPiwgPGNvZGU+dGh1bWJ0ZXh0d3Jh cDwvY29kZT4gYW5kIDxjb2RlPnRodW1idGV4dGNsYXNzPC9jb2RlPiBpbnN0ZWFkPC9saT4K CQk8bGk+PGNvZGU+b3JkZXJieTwvY29kZT4gaXMgbm93IGNhbGxlZCA8Y29kZT5zb3J0PC9j b2RlPiBpbiBsaW5lIHdpdGggb3RoZXIgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g dGFncywgYW5kIHRha2VzIGEgc3BhY2UtZGVsaW1pdGVkIGRpcmVjdGlvbiBtb2RpZmllciBp bnN0ZWFkIG9mIHRoZSBvbGQgY29sb24gZGVsaW1pdGVyLiA8Y29kZT5vcmRlcmJ5PC9jb2Rl PiBpcyBzdGlsbCBzdXBwb3J0ZWQgZm9yIG5vdyBhbmQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8g dGhlIG5ldyA8Y29kZT5zb3J0PC9jb2RlPiB0YWcgYnV0IHdpbGwgaXNzdWUgYSB3YXJuaW5n IGluIHByb2R1Y3Rpb24vZGVidWcgbW9kZXM8L2xpPgoJCTxsaT48Y29kZT50aHVtYjwvY29k ZT4gaXMgbm93IGVuaGFuY2VkIHRvIGFsbG93IHlvdSB0byBzcGVjaWZ5IHdoZXRoZXIgdGhl IGZ1bGwtc2l6ZSBpbWFnZSBhbmQvb3IgdGhlIHRodW1ibmFpbCBhcmUgZGlzcGxheWVkIHVz aW5nIHRoZSAmIzgyMTY7dCYjODIxNzsgaW1hZ2Ugb3Igbm90LiBTbyB5b3UgY2FuIG5vdyBz d2FwIHRodW1ibmFpbCBhbmQgZnVsbC1zaXplIGlmIHlvdSB3aXNoLCBvciBtYWtlIHRoZW0g c2hvdyBpZGVudGljYWwgaW1hZ2VzPC9saT4KCQk8bGk+PGNvZGU+dHJpZ2dlcjwvY29kZT4g YWRkZWQuIFRoaXMgZGVmYXVsdHMgdG8gJiM4MjIwO2xpZ2h0Ym94LSYjODIyMTsgd2hpY2gg aXMgd2hhdCBzbGltYm94IHVzZXMgaW4gdGhlIDxjb2RlPnJlbDwvY29kZT4gYXR0cmlidXRl IG9mIHRoZSBhbmNob3JzLiBPdGhlciBsaWJyYXJpZXMgbWF5IHVzZSBvdGhlciB3b3JkcyB0 byBpZGVudGlmeSB0aGVtc2VsdmVzLCBzbyB0aGlzIGFsbG93cyB5b3UgdG8gbW9kaWZ5IHRo ZSBzdHJpbmcgdG8gc3VpdDwvbGk+CgkJPGxpPjxjb2RlPmRlbGltPC9jb2RlPiBhZGRlZC4g SWYgeW91IGRvbiYjODIxNzt0IGxpa2UgdXNpbmcgYSBjb21tYSBhcyBhIGRlbGltaXRlciwg Y2hhbmdlIGl0LiBTZXQgPGNvZGU+ZGVsaW09JnF1b3Q7fCZxdW90OzwvY29kZT4gaWYgdXNp bmcgY2hlY2tib3hlcyBhbmQgbXVsdGktc2VsZWN0cyB3aXRoIGdsel9jdXN0b21fZmllbGRz PC9saT4KCQk8bGk+PGNvZGU+bmF2d3JhcHRhZzwvY29kZT4gYWRkZWQgc28gdGhlIG5hdmln YXRpb24gYmxvY2sgY2FuIGJlIHdyYXBwZWQgaW4gYSBkaWZmZXJlbnQgdGFnIHRvIGVhY2gg aW1hZ2U8L2xpPgoJCTxsaT48Y29kZT5saW5rY2xhc3M8L2NvZGU+IGFkZGVkIHNvIHlvdSBj YW4gc3BlY2lmeSBhIHNlcGFyYXRlIGNsYXNzIGZvciB0aGUgaW1hZ2UgYW5jaG9ycyBpZiB5 b3Ugd2lzaDwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0iYXR0cyIgaWQ9ImF0dHMiPkF0dHJp YnV0ZXM8L2gzPgoKCTxwPldpdGhvdXQgYW55IG9wdGlvbnMgdGhlIHBsdWdpbiBkaXNwbGF5 cyBldmVyeSBpbWFnZSBpbiB5b3VyIGVudGlyZSBjb2xsZWN0aW9uIGFuZCB3b24mIzgyMTc7 dCBsb29rIHZlcnkgcHJldHR5ICh0aG91Z2ggeW91IGNhbiBoZWxwIGEgYml0IGJ5IHN0YXJ0 aW5nIHdpdGggdGhlIDxhIGhyZWY9IiNzdHlsZSI+PHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwv c3Bhbj48L2E+KS4gVGhlIGZvbGxvd2luZyBvcHRpb25zIHRhbWUgdGhlIHBsdWdpbiBhIGxp dHRsZTo8L3A+CgoJPGg0PkZpbHRlcnM8L2g0PgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5jYXRlZ29yeTwvc3Bhbj4gOiBhIGxpc3Qgb2YgaW1hZ2Ug Y2F0ZWdvcmllcy4gQnkgZGVmYXVsdCB0aGUgbGlzdCBzaG91bGQgYmUgY29tbWEtc2VwYXJh dGVkIGJ1dCB0aGlzIGNhbiBiZSBjaGFuZ2VkIHdpdGggdGhlIDxjb2RlPmRlbGltPC9jb2Rl PiBvcHRpb24uIFRoaXMgYXR0cmlidXRlIG1heSB0YWtlIGFueSBvZiB0aGUgc3BlY2lhbCA8 YSBocmVmPSIjZmllbGRzIj5maWVsZCBjb2RlczwvYT4gYnkgZ2l2aW5nIGl0cyBuYW1lIGFm dGVyIGEgPGNvZGU+PzwvY29kZT4gKHRvIGluY2x1ZGUgdGhhdCBmaWVsZCkgb3IgPGNvZGU+ ITwvY29kZT4gKHRvIGV4Y2x1ZGUgdGhhdCBmaWVsZCk8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+aW1hZ2VpZDwvc3Bhbj4gOiBhIGxpc3Qgb2YgaW1hZ2UgSURzLiBUYWtlcyBl eGFjdGx5IHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+IGF0 dHJpYnV0ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdWJjYXRzPC9zcGFuPiA6 IGhvdyBmYXIgJiM4MjE2O2Rvd24mIzgyMTc7IHRvIHRyYXZlcnNlIGltYWdlIHN1Yi1jYXRl Z29yaWVzLiBUYWtlcyBhbiBpbnRlZ2VyIHZhbHVlIG9yICYjODIxNjthbGwmIzgyMTc7LiAw ICh0aGUgZGVmYXVsdCkgbWVhbnMgbm8gY2hpbGQgY2F0ZWdvcmllczsgMSB1c2VzIHRoZSBt YWluIGNhdGVnb3JpZXMgYW5kIHRoZSBmaXJzdCBsZXZlbCBvZiBjaGlsZHJlbjsgMiB1c2Vz IHRoZSBtYWluIGNhdGVnb3JpZXMgYW5kIHVwIHRvIHR3byBjaGlsZCBzdWItY2F0ZWdvcmll czsgYW5kIHNvIG9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNvcnQ8L3NwYW4+ IDogYSBsaXN0IG9mIHdheXMgdG8gb3JkZXIgdGhlIHJlc3VsdHM7IGJ5IGRlZmF1bHQgaXQg aXMgYnkgY2F0ZWdvcnkuIFNwZWNpZnkgdGhlIHNvcnQgb3JkZXIgYnkgYWRkaW5nIDxjb2Rl PmFzYzwvY29kZT4gb3IgPGNvZGU+ZGVzYzwvY29kZT4gdG8gYW55IHZhbHVlLCBlLmcuIDxj b2RlPnNvcnQ9JnF1b3Q7Y2F0ZWdvcnksIGRhdGUgZGVzYyZxdW90OzwvY29kZT4gd291bGQg c29ydCBieSBjYXRlZ29yeSBmaXJzdCwgdGhlbiBkZXNjZW5kaW5nIGRhdGUuIFRha2VzIGFu eSBvZiB0aGUgPGEgaHJlZj0iI2ltYWdlX2ZpZWxkcyI+aW1hZ2UgZmllbGQgY29kZXM8L2E+ IHBsdXMgdHdvIHNwZWNpYWwgY29kZXM6PGRpdiBjbGFzcz0iYnJlYWsiPjxjb2RlPmZpeGVk PC9jb2RlPiBmb3JjZXMgdGh1bWJzIHRvIGJlIG91dHB1dCBpbiB0aGUgb3JkZXIgZ2l2ZW4g aW4gPGNvZGU+aW1hZ2VpZDwvY29kZT4uPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPjxjb2Rl PnJhbmRvbTwvY29kZT4gYWN0cyBzbGlnaHRseSBkaWZmZXJlbnRseSBmcm9tIHRoZSBvdGhl cnM6IGlmIGl0IGFwcGVhcnMgYXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QsIHJhbmRv bSBpbWFnZXMgd2lsbCBiZSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHRoZXkgd2ls bCB0aGVuIGJlIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIG9wdGlvbnMgbGlzdGVkIGFmdGVy IGl0LiBIb3dldmVyLCBpZiBpdCBhcHBlYXJzIGFueXdoZXJlIGVsc2UgaW4gdGhlIGxpc3Qs IGFueSBzb3J0IGl0ZW1zIGJlZm9yZSBpdCB3aWxsIGRldGVybWluZSB0aGUgb3JkZXIgb2Yg ZGF0YSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGFuZCB0aGUgcmVzdWx0cyB3aWxsIDxl bT50aGVuPC9lbT4gYmUgb3JkZXJlZCByYW5kb21seSAoaW4gdGhhdCBjYXNlLCBhbnkgaXRl bXMgbGlzdGVkIGFmdGVyIDxjb2RlPnJhbmRvbTwvY29kZT4gd2lsbCBiZSBpZ25vcmVkLCB0 aG91Z2ggPGNvZGU+Zml4ZWQ8L2NvZGU+IGlzIHN0aWxsIGhvbm91cmVkKS4gU2VlIDxhIGhy ZWY9IiNlZzIiPmV4YW1wbGUgMjwvYT4gZm9yIG1vcmU8L2Rpdj48L2xpPgoJPC91bD4KCgk8 aDQ+TGltaXRzIC8gc2l6ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmxpbWl0PC9zcGFuPiA6IHRoZSBudW1iZXIgb2YgaW1hZ2UgdGh1bWJuYWlscyB0byBzaG93 IHBlciBwYWdlLiAwIChvciBvbWl0dGVkKSBtZWFucyBlc3NlbnRpYWxseSB1bmxpbWl0ZWQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bWF4bGltaXQ8L3NwYW4+IDogdGhlIGFi c29sdXRlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyB0byBwdWxsIGZyb20gdGhlIGRhdGFi YXNlLiAwIChvciBvbWl0dGVkKSBtZWFucyBlc3NlbnRpYWxseSB1bmxpbWl0ZWQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJzaXplPC9zcGFuPiA6IGVpdGhlciBmb3Ig c3BlY2lhbCBlZmZlY3RzLCBvciBpbiBvcmRlciB0byB2YWxpZGF0ZSBhZ2FpbnN0IDxzcGFu IGNsYXNzPSJjYXBzIj5YSFRNTDwvc3Bhbj4sIHRoZSBpbWFnZSB0aHVtYm5haWxzIHNob3Vs ZCBoYXZlIDxjb2RlPndpZHRoPC9jb2RlPiBhbmQgPGNvZGU+aGVpZ2h0PC9jb2RlPiBhdHRy aWJ1dGVzLiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBjYW5ub3Qgc3VwcGx5IHRo aXMgYXV0b21hdGljYWxseSwgYnV0IHRoaXMgYXR0cmlidXRlIHdpbGwuPGRpdiBjbGFzcz0i YnJlYWsiPlNpbXBseSBzcGVjaWZ5IHVwIHRvIHR3byB2YWx1ZXMgc2VwYXJhdGVkIGJ5IGEg Y29tbWEgKHlvdSBjYW4gb3ZlcnJpZGUgdGhpcyB3aXRoIDxjb2RlPmRlbGltPC9jb2RlPikg dG8gZGVmaW5lIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHlvdXIgdGh1bWJuYWlscyAoaW4g cGl4ZWxzIGJ5IGRlZmF1bHQpLiBGb3IgZXhhbXBsZTogPGNvZGU+dGh1bWJzaXplPSZxdW90 OzQwLCA2MCZxdW90OzwvY29kZT4gd2lsbCBzZXQgNDAtcGl4ZWwgeCA2MC1waXhlbCB0aHVt Ym5haWxzLiBTdXBwbHlpbmcgb25seSBvbmUgdmFsdWUgd2lsbCBzZXQgYm90aCB3aWR0aCBh bmQgaGVpZ2h0IHRvIHRoZSBzYW1lIHZhbHVlLiBBZGRpbmcgdW5pdHMgYWZ0ZXIgZWFjaCB2 YWx1ZSAoJiM4MjIwO3B4JiM4MjIxOywgJiM4MjIwO2VtJiM4MjIxOywgJiM4MjIwOyUmIzgy MjE7IGV0Yykgd2lsbCB1c2UgdGhvc2UgdW5pdHMgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBw aXhlbHMuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPlRvIHNwZWNpZnkganVzdCB0aGUgd2lk dGgsIHB1dCB0aGUgY29tbWEgaW4gYnV0IGxlYXZlIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGVt cHR5IChlLmcuIDxjb2RlPnRodW1ic2l6ZT0mcXVvdDsyZW0sJnF1b3Q7PC9jb2RlPikuIFNp bWlsYXJseSB0byBzcGVjaWZ5IHRoZSBoZWlnaHQgb25seSwgbGVhdmUgdGhlIGZpcnN0IHZh bHVlIGVtcHR5IGJ5IHN0YXJ0aW5nIHdpdGggYSBjb21tYSAoZS5nLiA8Y29kZT50aHVtYnNp emU9JnF1b3Q7LDEwJSZxdW90OzwvY29kZT4pPC9kaXY+PC9saT4KCTwvdWw+CgoJPGg0Pkdy b3VwaW5nIC8gcGFnaW5nIGltYWdlczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+Z3JvdXBuYW1lPC9zcGFuPiA6IHdoZW4gbWFraW5nIG11bHRpcGxlIGdhbGxlcmll cyBvciBmb3Igc3BlY2lhbCBiZWhhdmlvdXJzLCB0aGlzIGF0dHJpYnV0ZSBhbGxvd3MgeW91 IHRvIGxvZ2ljYWxseSAmIzgyMjA7Z3JvdXAmIzgyMjE7IHRodW1ibmFpbHMuIE9uY2UgYSB2 aXNpdG9yIGNsaWNrcyBhIHRodW1ibmFpbCBhbmQgY29udHJvbCBpcyBwYXNzZWQgdG8gdGhl IGphdmFzY3JpcHQgY29kZSwgbmF2aWdhdGlvbiBpcyB2aWEgdGhlIE5leHQvUHJldiBsaW5r cy4gV2l0aG91dCBzdXBwbHlpbmcgYSA8Y29kZT5ncm91cG5hbWU8L2NvZGU+LCA8ZW0+YWxs PC9lbT4gbGlnaHRib3hhYmxlIGltYWdlcyBmcm9tIDxlbT5hbGw8L2VtPiBzbWRfc2xpbWJv eCB0YWdzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIG5hdmlnYXRpb24uIFNvIGlmIHlvdSBo YWQgMyBzbGltYm94IHRhZ3Mgb24gdGhlIHBhZ2UsIGVhY2ggd2l0aCAyMCBpbWFnZXMgaW4g dGhlbSwgdGhlIGxpZ2h0Ym94IHdvdWxkIHNob3cgJiM4MjIwO0ltYWdlIDEgb2YgNjAmIzgy MjE7IGFuZCBhbGxvdyB5b3UgdG8gbmF2aWdhdGUgYW1vbmcgYWxsIG9mIHRoZW0uPGRpdiBj bGFzcz0iYnJlYWsiPk9uIGFydGljbGUgbGlzdCBwYWdlcywgdGhpcyBpcyBvZnRlbiB1bmRl c2lyYWJsZSBzbyB0byBjaGFuZ2UgdGhpcyBiZWhhdmlvdXIsIGdpdmUgZWFjaCBzbGltYm94 IHRhZyBhIHVuaXF1ZSA8Y29kZT5ncm91cG5hbWU8L2NvZGU+OyB0aGF0IHdpbGwgbGltaXQg dGhlIG5hdmlnYXRpb24gb25seSB0byB0aGUgZ3JvdXAgb2YgaW1hZ2VzIGluIHRoYXQgdGFn LiA8Y29kZT5ncm91cG5hbWU8L2NvZGU+IGNhbiBiZSBhbnkgdGV4dCB5b3UgbGlrZSAoaXQg ZGVmYXVsdHMgdG8gJiM4MjIwO3NtZCYjODIyMTspLCBvciB5b3UgY2FuIHN1cHBseSBhbnkg b2YgdGhlIDxhIGhyZWY9IiNpbWFnZV9maWVsZHMiPmltYWdlIGZpZWxkIGNvZGVzPC9hPiB0 byBzbGljZSBhbmQgZGljZSB0aGUgdGh1bWJuYWlscyBhbnkgd2F5IHlvdSBjaG9vc2UuIFNl ZSA8YSBocmVmPSIjZWc0Ij5leGFtcGxlIDQ8L2E+IGZvciBtb3JlPC9kaXY+PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRyaWdnZXI8L3NwYW4+IDogaW4gb3JkZXIgdG8gaW5k aWNhdGUgdG8gdGhlIGphdmFzY3JpcHQgbGlicmFyeSB0aGF0IGltYWdlcyBhcmUgdG8gYmUg JiM4MjIwO2xpZ2h0Ym94ZWQmIzgyMjE7IHRoZSAmIzgyMTY7cmVsJiM4MjE3OyBhdHRyaXV0 ZSBvZiBhbmNob3IgaW1hZ2VzIGlzIG9mdGVuIHVzZWQgKHRoaWNrYm94IGlzIHRoZSBleGNl cHRpb24gYW5kIHVzZXMgaXRzIG93biBjbGFzcykuIFNpbmNlIHRoZSBtZXRob2Qgb2YgaW5k aWNhdGluZyBob3cgdG8gbGlnaHRib3ggYW4gaW1hZ2UgdmFyaWVzLCB0aGlzIGF0dHJpYnV0 ZSBjYW4gYmUgdGFpbG9yZWQgdG8gbWF0Y2ggd2hpY2hldmVyIGphdmFzY3JpcHQgbGlicmFy eSB5b3UgYXJlIHVzaW5nIChzZWUgdGhlaXIgaW5zdHJ1Y3Rpb25zKS4gQnkgZGVmYXVsdCwg aXQgaXMgc2V0IHRvICYjODIyMDtsaWdodGJveC0mIzgyMjE7IHdoaWNoIHNob3VsZCBjb3Zl ciBtb3N0IG1ham9yIGxpZ2h0Ym94IGdhbGxlcnkgZWZmZWN0cy4gSWYgeW91IHdpc2ggdG8g cmVtb3ZlIHRoZSA8Y29kZT5yZWw8L2NvZGU+LCBlbXB0eSBib3RoIDxjb2RlPnRyaWdnZXI8 L2NvZGU+IGFuZCA8Y29kZT5ncm91cG5hbWU8L2NvZGU+IGF0dHJpYnV0ZXM8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+c2hvd3BhZ2VsaW5rczwvc3Bhbj4gOiBkaXNwbGF5cyBj bGlja2FibGUgbmV4dC9wcmV2aW91cyBsaW5rcyB1bmRlciB0aGUgdGh1bWJuYWlscywgYWxs b3dpbmcgeW91IHRvIG5hdmlnYXRlIGZyb20gcGFnZSB0byBwYWdlIGFuZCBvbmx5IHNob3cg PGNvZGU+bGltaXQ8L2NvZGU+IHRodW1icyBwZXIgcGFnZS4gSXQgaXMgb24gKDxjb2RlPjE8 L2NvZGU+KSBieSBkZWZhdWx0IGlmIGxpbWl0IGlzIGdyZWF0ZXIgdGhhbiAwLiBVc2UgPGNv ZGU+c2hvd3BhZ2VsaW5rcz0mcXVvdDswJnF1b3Q7PC9jb2RlPiB0byB0dXJuIGl0IG9mZjwv bGk+Cgk8L3VsPgoKCTxoND5BZGRpbmcgdGV4dCB0byBpbWFnZXM8L2g0PgoKCTx1bD4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmltYWdlY2FwdGlvbjwvc3Bhbj4gOiB0aGUgdGV4dCB0 byBkaXNwbGF5IHVuZGVyIHRoZSBsYXJnZSBsaWdodGJveCBpbWFnZS4gSXQgY2FuIGJlIGFu eSBmaXhlZCBzdHJpbmcgKHJhdGhlciBwb2ludGxlc3MhKSBvciBhIGNvbWJpbmF0aW9uIG9m IGZpeGVkIHRleHQgYW5kIDxhIGhyZWY9IiNpbWFnZV9maWVsZHMiPmltYWdlIGZpZWxkIGNv ZGVzPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aHVtYnRleHQ8L3NwYW4+ IDogeW91IGNhbiBwbGFjZSB0ZXh0IGFyb3VuZCBlYWNoIHRodW1ibmFpbC4gTGlrZSA8Y29k ZT5pbWFnZWNhcHRpb248L2NvZGU+LCBnaXZlIGFueSBmaXhlZCB0ZXh0IGFuZC9vciA8YSBo cmVmPSIjaW1hZ2VfZmllbGRzIj5pbWFnZSBmaWVsZCBjb2RlczwvYT4gdG8gYWRkIGl0IGJl bG93IGV2ZXJ5IHRodW1ibmFpbCAoaW5zaWRlIHRhZyA8Y29kZT50aHVtYnRleHR3cmFwPC9j b2RlPiB3aXRoIGEgY2xhc3Mgb2YgPGNvZGU+dGh1bWJ0ZXh0Y2xhc3M8L2NvZGU+KS4gQnkg ZGVmYXVsdCwgdGV4dCBpcyBwbGFjZWQgPGNvZGU+YmVsb3c8L2NvZGU+IHRoZSBpbWFnZSBi dXQgY2FuIGJlIHBsYWNlZCBpbiBhbnkgb2YgNSBwb3NpdGlvbnMsIGFzIGdpdmVuIGluIHRo ZSB0YWJsZSBiZWxvdy4gPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGlzIHZlcnkgdXNlZnVsIGZv ciBhcHBseWluZyBoZWFkZXJzIHdoZW4gdGhlIGNhdGVnb3J5IGNoYW5nZXMuIFNlZSA8YSBo cmVmPSIjZWc2Ij5leGFtcGxlIDY8L2E+LiBDYW4gdGFrZSB0aGUgZm9sbG93aW5nIG9wdGlv bnM6Cgk8dWw+CgkJPGxpPjxjb2RlPmFib3ZlPC9jb2RlPiA6IGFib3ZlIHRoZSB0aHVtYm5h aWwsIG5vdCBjbGlja2FibGU8L2xpPgoJCTxsaT48Y29kZT5iZWxvdzwvY29kZT4gOiBiZWxv dyB0aGUgdGh1bWJuYWlsLCBub3QgY2xpY2thYmxlIChkZWZhdWx0KTwvbGk+CgkJPGxpPjxj b2RlPmJlZm9yZTwvY29kZT4gOiBpbW1lZGlhdGVseSBpbiBmcm9udCBvZiB0aGUgdGh1bWJu YWlsLCBjbGlja2FibGUgYXMgcGFydCBvZiB0aGUgbGluazwvbGk+CgkJPGxpPjxjb2RlPmFm dGVyPC9jb2RlPiA6IGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgdGh1bWJuYWlsLCBjbGlj a2FibGUgYXMgcGFydCBvZiB0aGUgbGluazwvbGk+CgkJPGxpPjxjb2RlPm9uY2hhbmdlPC9j b2RlPiA6IGFib3ZlIGV2ZXJ5IHRodW1ibmFpbCBidXQgPGVtPm9ubHk8L2VtPiBpZiBpdHMg Y29udGVudHMgY2hhbmdlcyBmcm9tIHRoZSBpbWFnZSBiZWZvcmUgaXQ8L2xpPgoJPC91bD48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJ0ZXh0d3JhcDwvc3Bhbj4gOiAo WClIVE1MIHRhZyB0byB3cmFwIGFyb3VuZCBlYWNoIHRodW1idGV4dCBpdGVtLiBEbyBub3Qg c3BlY2lmeSB0aGUgPGNvZGU+Jmx0OzwvY29kZT4gb3IgPGNvZGU+Jmd0OzwvY29kZT4gY2hh cmFjdGVycy4gRGVmYXVsdDogc3BhbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50 aHVtYnRleHRjbGFzczwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBj bGFzcyB0byBhcHBseSB0byBldmVyeSB0aHVtYnRleHQgaXRlbS4gRGVmYXVsdDogZW1wdHkg KGkuZS4gbm8gY2xhc3MpPC9saT4KCTwvdWw+CgoJPGg0PlRhZyAvIGNsYXNzIC8gZm9ybWF0 dGluZyBhdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53 cmFwdGFnPC9zcGFuPiA6IChYKUhUTUwgdGFnIHRvIHdyYXAgZWFjaCAmIzgyMTY7Y2VsbCYj ODIxNzsgKGVmZmVjdGl2ZWx5IGEgdGh1bWJuYWlsIGltYWdlKSB3aXRoLiBEbyBub3Qgc3Bl Y2lmeSB0aGUgJmx0OyBvciAmZ3Q7IGNoYXJhY3RlcnMuIEZvciBhIHZhbGlkIHBhZ2UsIHRo ZSBvbmx5IHVzZWZ1bCBvcHRpb25zIGFyZSAmIzgyMjA7ZGl2JiM4MjIxOywgJiM4MjIwO2xp JiM4MjIxOyBvciAmIzgyMjA7cCYjODIyMTsuIERlZmF1bHQ6IGVtcHR5IChpLmUuIG5vIHRh Zyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2VsbGNsYXNzPC9zcGFuPiA6IDxz cGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIGZvciBlYWNoICYjODIxNjtjZWxs JiM4MjE3OyB0aGF0IGRpc3BsYXlzIGEgdGh1bWJuYWlsLiBEZWZhdWx0OiBlbXB0eSAoaS5l LiBubyBjbGFzcyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGlua2NsYXNzPC9z cGFuPiA6IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIGZvciB0aGUgYW5j aG9yIHRhZyBvZiBlYWNoIGltYWdlLiBEZWZhdWx0OiBlbXB0eSAoaS5lLiBubyBjbGFzcyk8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aW1nY2xhc3M8L3NwYW4+IDogPHNwYW4g Y2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgZm9yIGVhY2ggaW1nIHRhZy4gRGVmYXVs dDogZW1wdHkgKGkuZS4gbm8gY2xhc3MpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pm5hdndyYXB0YWc8L3NwYW4+IDogd2hlbiA8Y29kZT5zaG93cGFnZWxpbmtzPC9jb2RlPiBp cyBvbiwgc29tZSBuZXh0L3ByZXYgbGlua3MgYXJlIHBsYWNlZCB1bmRlciBlYWNoIGdhbGxl cnkgdG8gcGFnZSB0aHJvdWdoIDxjb2RlPmxpbWl0PC9jb2RlPiB0aHVtYm5haWxzIGF0IGEg dGltZS4gVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSAoWClIVE1MIHRhZyB0byB3cmFw IGFyb3VuZCB0aGUgd2hvbGUgbmF2aWdhdGlvbiBibG9jay4gRG8gbm90IHNwZWNpZnkgdGhl ICZsdDsgb3IgJmd0OyBjaGFyYWN0ZXJzLiBEZWZhdWx0OiBlbXB0eSAoaS5lLiBubyB0YWcp PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdmNsYXNzPC9zcGFuPiA6IDxzcGFu IGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIGZvciB0aGUgbmV4dC9wcmV2IGNvbnRh aW5lci4gRGVmYXVsdDogZW1wdHkgKGkuZS4gbm8gY2xhc3MpPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnByZXZsYWJlbDwvc3Bhbj4gOiBMYWJlbCBmb3IgdGhlICYjODIxNjtw cmV2aW91cyBwYWdlJiM4MjE3OyBvZiBwaWN0dXJlcyB3aGVuIHVzaW5nIDxjb2RlPnNob3dw YWdlbGlua3M8L2NvZGU+LiBEZWZhdWx0OiAmIzgyMjA7UHJldiYjODIyMTsuIEN1c3RvbWlz YWJsZSBpbiBkaWZmZXJlbnQgbGFuZ3VhZ2VzIHZpYSA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQ PC9zcGFuPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uZXh0bGFiZWw8L3NwYW4+ IDogTGFiZWwgZm9yIHRoZSAmIzgyMTY7bmV4dCBwYWdlJiM4MjE3OyBvZiBwaWN0dXJlcyB3 aGVuIHVzaW5nIDxjb2RlPnNob3dwYWdlbGlua3M8L2NvZGU+LiBEZWZhdWx0OiAmIzgyMjA7 TmV4dCYjODIyMTsuIEN1c3RvbWlzYWJsZSBpbiBkaWZmZXJlbnQgbGFuZ3VhZ2VzIHZpYSA8 c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5wcmV2Y2xhc3M8L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4g Y2xhc3MgZm9yIHRoZSAmIzgyMTY7cHJldiYjODIxNzsgbGluay4gRGVmYXVsdDogc21kX3Ns aW1ib3hfcHJldjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uZXh0Y2xhc3M8L3Nw YW4+IDogPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgZm9yIHRoZSAmIzgy MTY7bmV4dCYjODIxNzsgbGluay4gRGVmYXVsdDogc21kX3NsaW1ib3hfbmV4dDwvbGk+Cgk8 L3VsPgoKCTxoND5QbHVnaW4gY3VzdG9taXNhdGlvbjwvaDQ+CgoJPHVsPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+ZGVsaW08L3NwYW4+IDogVGhlIGRlbGltaXRlciB0byB1c2UgYmV0 d2VlbiBpdGVtcyBpbiBsaXN0cyAoPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+LCA8Y29kZT5pbWFn ZWlkPC9jb2RlPiwgPGNvZGU+dGh1bWJ0ZXh0PC9jb2RlPiBldGMpLiBJZiB1c2luZyBnbHpf Y3VzdG9tX2ZpZWxkcyAmIzgyMTI7IGVzcGVjaWFsbHkgd2l0aCBjaGVja2JveGVzIG9yIGEg bXVsdGkgc2VsZWN0ICYjODIxMjsgeW91IHNob3VsZCBjaGFuZ2UgPGNvZGU+ZGVsaW08L2Nv ZGU+IHRvIGEgcGlwZSAmIzgyMTY7fCYjODIxNzsgY2hhcmFjdGVyPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnBhcmFtZGVsaW08L3NwYW4+IDogYnkgZGVmYXVsdCBpbiB0aGUg PGNvZGU+dGh1bWJ0ZXh0PC9jb2RlPiBhdHRyaWJ1dGUsIHlvdSBzZXBhcmF0ZSBwYXJhbWV0 ZXJzIGZyb20gb3B0aW9uIG5hbWVzIHVzaW5nIHRoZSBjb2xvbi4gSW4gc29tZSBjYXNlIHlv dSBtYXkgd2lzaCB0byB1c2UgdGhlIGNvbG9uIGluIHlvdXIgc3RyaW5nIG9mIHRleHQgc28g eW91IHdpbGwgbmVlZCB0byBzZXQgdGhlIGRlbGltaXRlciB0byBzb21ldGhpbmcgZWxzZS4g SXQgY2FuIGJlIHByZXR0eSBtdWNoIGFueSBzdHJpbmcgeW91IGxpa2UgKGUuZy4gPGNvZGU+ cGFyYW1kZWxpbT0mcXVvdDtbW1NRVUlEJnF1b3Q7PC9jb2RlPiksIGp1c3QgbWFrZSBzdXJl IGl0IGRvZXNuJiM4MjE3O3QgYXBwZWFyIGFueXdoZXJlIGVsc2UgaW4geW91ciB0ZXh0PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdhbGxlcnlpZDwvc3Bhbj4gOiBpZiB1c2lu ZyA8Y29kZT5zaG93cGFnZWxpbmtzPC9jb2RlPiwgdGhpcyBpcyB0aGUgc3RyaW5nIHRoYXQg aXMgdXNlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbXVsdGlwbGUgc2xpbWJveCBnYWxs ZXJpZXMgb24gYSBzaW5nbGUgcGFnZS4gSXQgYWxsb3dzIHBhZ2luZyB0byBiZSBjb250cm9s bGVkIG9uIGEgcGVyLWdhbGxlcnkgYmFzaXMsIHNvIGNsaWNraW5nIE5leHQvUHJldiBpbiBv bmUgZ2FsbGVyeSB3b24mIzgyMTc7dCBhZmZlY3QgdGhlIHRodW1ibmFpbHMgaW4gb3RoZXIg Z2FsbGVyaWVzIG9uIHRoZSBzYW1lIHBhZ2UuIEVhY2ggZ2FsbGVyeSBvbiBhIHBhZ2UgPGVt Pm11c3Q8L2VtPiBoYXZlIGEgdW5pcXVlIDxjb2RlPmdhbGxlcnlpZDwvY29kZT4gaW4gb3Jk ZXIgZm9yIHBhZ2luZyB0byB3b3JrLiBUaGUgZ29vZCBuZXdzIGlzIHlvdSYjODIxNztsbCBw cm9iYWJseSBuZXZlciBoYXZlIHRvIHVzZSB0aGlzIGF0dHJpYnV0ZSBiZWNhdXNlIGl0IHdv cmtzIGF1dG9tYXRpY2FsbHkgZm9yIHlvdS4gSW4gdGhlICh2ZXJ5KSB1bmxpa2VseSBldmVu dCBpdCBnZW5lcmF0ZXMgdHdvIGlkZW50aWNhbCBzdHJpbmdzLCB5b3UgY2FuIHVzZSB0aGlz IG9wdGlvbiB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuPGRpdiBjbGFzcz0i YnJlYWsiPkl0IHRha2VzIGVpdGhlciBhIGZpeGVkIHN0cmluZyAoZS5nLiA8Y29kZT5nYWxs ZXJ5aWQ9JnF1b3Q7bXlHYWxsZXJ5MSZxdW90OzwvY29kZT4pOyBvciBhICYjODIxNjs/JiM4 MjE3OyBmb2xsb3dlZCBieSB1cCB0byB0d28gbnVtYmVycyBzZXBhcmF0ZWQgYnkgYSBjb2xv biAodGhlIGNvbG9uIGNhbiBiZSBjaGFuZ2VkIHdpdGggPGNvZGU+cGFyYW1kZWxpbTwvY29k ZT4pLiBTZWUgPGEgaHJlZj0iI2dhbGxlcnlpZCI+dXNpbmcgZ2FsbGVyeWlkPC9hPiBmb3Ig bW9yZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aHVtYjwvc3Bhbj4g OiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLCB0aHVtYm5haWxzIHVzZSB0aGUgJiM4MjE2O3Qm IzgyMTc7IGltYWdlIGluIHlvdXIgPGNvZGU+aW1hZ2VzPC9jb2RlPiBkaXJlY3RvcnkgYW5k IHRoZSBmdWxsIHNpemUgcGljdHVyZXMgZG9uJiM4MjE3O3QuIElmIHlvdSB3aXNoIHRvIHJl ZGVmaW5lIHRoaXMgeW91IG1heSBzcGVjaWZ5IHVwIHRvIHR3byB2YWx1ZXMgc2VwYXJhdGVk IGJ5IGEgY29sb24uIFRoZSBmaXJzdCBpbmRpY2F0ZXMgdGhlIHN0YXRlIG9mIHRoZSBmdWxs IHNpemUgaW1hZ2UsIGFuZCB0aGUgc2Vjb25kIGlzIHRoZSBzdGF0ZSBvZiB0aGUgdGh1bWJu YWlsOgoJPHVsPgoJCTxsaT50aHVtYj0wOjEgJiM4MjEyOyBmdWxsc2l6ZSA9IHJlZ3VsYXIg aW1hZ2UgOiB0aHVtYm5haWwgPSB0aHVtYiAodGhlIGRlZmF1bHQpPC9saT4KCQk8bGk+dGh1 bWI9MTowICYjODIxMjsgZnVsbHNpemUgPSB0aHVtYiA6IHRodW1ibmFpbCA9IHJlZ3VsYXIg aW1hZ2U8L2xpPgoJCTxsaT50aHVtYj0wOjAgKG9yIHRodW1iPTApICYjODIxMjsgZnVsbHNp emUgPSByZWd1bGFyIGltYWdlIDogdGh1bWJuYWlsID0gcmVndWxhciBpbWFnZTwvbGk+CgkJ PGxpPnRodW1iPTE6MSAob3IgdGh1bWI9MSkgJiM4MjEyOyBmdWxsc2l6ZSA9IHRodW1iIDog dGh1bWJuYWlsID0gdGh1bWI8L2xpPgoJPC91bD48L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImZp ZWxkcyI+QXJ0aWNsZSBmaWVsZCBjb2RlczwvaDM+CgoJPHA+VXNlIHRoZXNlIGNvZGVzIHRv IGdyYWIgaXRlbXMgZnJvbSB0aGUgY3VycmVudGx5IGRpc3BsYXllZCBhcnRpY2xlIGFuZCBp bmplY3QgdGhlbSBpbnRvIHNtZF9zbGltYm94IHRhZyBhdHRyaWJ1dGVzLiBBbGwgb2YgdGhl IHRhZ3MgY2FuIGJlIGNvbWJpbmVkIHdpdGggZml4ZWQgdGV4dCAoZS5nLiA8Y29kZT5jYXRl Z29yeT0mcXVvdDtteWNhdC0/YXJ0aWNsZV9pbWFnZV8/cyZxdW90OzwvY29kZT4gbWlnaHQg Y2hvb3NlIGltYWdlcyBmcm9tIHRoZSBjYXRlZ29yeSAmIzgyMjA7bXljYXQtMTJfbGlvbiYj ODIyMTsgaWYgdGhlIGN1cnJlbnQgYXJ0aWNsZSB3YXMgaW4gc2VjdGlvbiAmIzgyMTY7bGlv biYjODIxNzsgYW5kIGhhZCBhbiBhcnRpY2xlIGltYWdlIG9mICYjODIxNjsxMiYjODIxNzsp LiBOb3RlIHRoYXQgYW55IGFydGljbGUgb3IgY3VzdG9tIGZpZWxkcyAmIzgyMTI7IGluY2x1 ZGluZyB0aG9zZSB1dGlsaXNpbmcgZ2x6X2N1c3RvbV9maWVsZHMgJiM4MjEyOyBtYXkgY29u dGFpbiBsaXN0cyBvZiBpdGVtcy48L3A+CgoJPHVsPgoJCTxsaT48Y29kZT4/YzwvY29kZT4g OiB1c2UgdGhlIGN1cnJlbnQgZ2xvYmFsIChhcnRpY2xlKSBjYXRlZ29yeTwvbGk+CgkJPGxp Pjxjb2RlPiFjPC9jb2RlPiA6IHVzZXMgZXZlcnl0aGluZyBleGNlcHQgdGhlIGN1cnJlbnQg Z2xvYmFsIGNhdGVnb3J5PC9saT4KCQk8bGk+PGNvZGU+P3M8L2NvZGU+IDogdXNlIHRoZSBj dXJyZW50IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHNlY3Rpb248L2xpPgoJCTxs aT48Y29kZT4hczwvY29kZT4gOiB1c2VzIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBjdXJyZW50 IHNlY3Rpb248L2xpPgoJCTxsaT48Y29kZT4/dDwvY29kZT4gOiB1c2UgdGhlIGN1cnJlbnQg YXJ0aWNsZSYjODIxNztzIHVybC10aXRsZTwvbGk+CgkJPGxpPjxjb2RlPiF0PC9jb2RlPiA6 IHVzZXMgYWxsIHVybC10aXRsZXMgZXhjZXB0IHRoZSBjdXJyZW50IGFydGljbGUgKHByb2Jh Ymx5IG5vdCBtdWNoIHVzZSEpPC9saT4KCQk8bGk+PGNvZGU+P2lkPC9jb2RlPiA6IHVzZSB0 aGUgY3VycmVudCBhcnRpY2xlJiM4MjE3O3MgSUQgYXMgdGhlIG5hbWUgb2YgYW4gaW1hZ2Ug Y2F0ZWdvcnkuIFVzZWZ1bCB0byBtYWtlIGEgcGVyLWFydGljbGUgaW1hZ2UgZ2FsbGVyeSAo ZS5nLiA8Y29kZT5jYXRlZ29yeT0mcXVvdDthcnRpY2xlLT9pZCZxdW90OzwvY29kZT4pPC9s aT4KCQk8bGk+PGNvZGU+IWlkPC9jb2RlPiA6IHVzZXMgYWxsIGltYWdlIElEcyBleGNlcHQg dGhlIGN1cnJlbnQgYXJ0aWNsZTwvbGk+CgkJPGxpPjxjb2RlPj9maWVsZG5hbWU8L2NvZGU+ IDogbG9va3MgaW4gdGhlIGdpdmVuIGZpZWxkbmFtZSBvZiB0aGUgY3VycmVudCBhcnRpY2xl LiBEZXNpZ25lZCBwcmltYXJpbHkgZm9yIHVzZSB3aXRoIGN1c3RvbSBmaWVsZHMgKGUuZy4g PGNvZGU+aW1hZ2VpZD0mcXVvdDs/Y3VzdG9tMSZxdW90OzwvY29kZT4pLCBpdCBjYW4gYWxz byBiZSBhbnkgb3RoZXIgZmllbGQgZnJvbSB5b3VyIGFydGljbGUuIENvbW1vbiBmaWVsZHMg YXJlIDxjb2RlPj9leGNlcnB0PC9jb2RlPiBAP2NhdGVnb3J5MUAgPGNvZGU+P2tleXdvcmRz PC9jb2RlPiBAP2FydGljbGVfaW1hZ2VAIG9yIDxjb2RlPj9hdXRob3JpZDwvY29kZT4uPC9s aT4KCTwvdWw+CgoJPHA+VG8gbmVnYXRlIGFueSBjYXRlZ29yeSBzZWxlY3Rpb24sIHVzZSA8 Y29kZT4hY2F0ZWdvcnk8L2NvZGU+IG9yIDxjb2RlPiFmaWVsZF9uYW1lPC9jb2RlPi4gSWYg eW91IGxpc3Qgc3BlY2lmaWMgaW1hZ2UgY2F0ZWdvcmllcyAoZS5nLiA8Y29kZT5jYXRlZ29y eT0mcXVvdDshbGFuZHNjYXBlLCAhYmlyZHMmcXVvdDs8L2NvZGU+KSB0aG9zZSBjYXRlZ29y aWVzIHdpbGwgYmUgZXhjbHVkZWQuIElmIHlvdSBzcGVjaWZ5IGEgZmllbGQgbmFtZSBzdWNo IGFzIDxjb2RlPiFrZXl3b3JkczwvY29kZT4sIHRoZSBjb250ZW50cyBvZiB0aGF0IGZpZWxk IHdpbGwgYmUgcmVhZCBhbmQgdGhlIGxpc3Qgb2YgaW1hZ2UgY2F0ZWdvcmllcyBmb3VuZCB0 aGVyZSB3aWxsIGJlIGV4Y2x1ZGVkLjwvcD4KCgk8cD5Ob3RlIHRoYXQgaWYgeW91IHNwZWNp ZnkgYSBmaWVsZCBuYW1lIGFuZCB0aGF0IGZpZWxkIGluIHRoZSBhcnRpY2xlIGlzIGVtcHR5 LCB0aGUgbmFtZSB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2FzIGFuIGFjdHVhbCBpbWFn ZSBjYXRlZ29yeS4gU28gaWYgeW91IHNwZWNpZmllZCA8Y29kZT5jYXRlZ29yeT0mcXVvdDs/ a2V5d29yZHMmcXVvdDs8L2NvZGU+IGFuZCB0aGUgJiM4MjE2O2tleXdvcmRzJiM4MjE3OyBm aWVsZCBpbiB0aGUgY3VycmVudCBhcnRpY2xlIHdhcyBlbXB0eSwgaXQgd291bGQgbG9vayBm b3IgYW4gaW1hZ2UgY2F0ZWdvcnkgbmFtZWQgJiM4MjIwO2tleXdvcmRzJiM4MjIxOy48L3A+ CgoJPHA+QWxzbyBub3RlIHRoYXQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyIHlvdSBsaXN0 IHRoZW0sIGFsbCAmIzgyMTY7cG9zaXRpdmVzJiM4MjE3OyB3aWxsIGJlIHByb2Nlc3NlZCBm aXJzdCwgdGhlbiBhbnkgZXhjbHVzaW9ucyBhcHBsaWVkLjwvcD4KCgk8aDMgaWQ9ImltYWdl X2ZpZWxkcyI+SW1hZ2UgZmllbGQgY29kZXM8L2gzPgoKCTxwPkxpa2UgPGEgaHJlZj0iI2Zp ZWxkcyI+YXJ0aWNsZSBmaWVsZCBjb2RlczwvYT4sIHRoZXNlIGNhbiBiZSBzcGVjaWZpZWQg dG8gZ3JhYiBwaWVjZXMgb2YgaW5mb3JtYXRpb24gZnJvbSB0aGUgY3VycmVudCBpbWFnZS4g Tm90ZSB0aGF0IHRoZSAmIzgyMTY7bmVnYXRpb24mIzgyMTc7IHZlcnNpb25zIGRvbiYjODIx Nzt0IG1ha2Ugc2Vuc2UgaGVyZSBzbyB0aGUgY29kZXMgYXJlICYjODIxNjtpbmNsdWRlIG9u bHkmIzgyMTc7OjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPj9jYXRlZ29yeTwvY29kZT4gOiBp bWFnZSBjYXRlZ29yeTwvbGk+CgkJPGxpPjxjb2RlPj9jYXB0aW9uPC9jb2RlPiA6IGltYWdl IGNhcHRpb248L2xpPgoJCTxsaT48Y29kZT4/YWx0PC9jb2RlPiA6IGltYWdlIGFsdCB0ZXh0 PC9saT4KCQk8bGk+PGNvZGU+P25hbWU8L2NvZGU+IDogaW1hZ2UgKHVzdWFsbHkgZmlsZSkg bmFtZTwvbGk+CgkJPGxpPjxjb2RlPj9pZDwvY29kZT4gOiBpbWFnZSBJRDwvbGk+CgkJPGxp Pjxjb2RlPj9kYXRlPC9jb2RlPiA6IGltYWdlIHVwbG9hZCBkYXRlc3RhbXA8L2xpPgoJCTxs aT48Y29kZT4/YXV0aG9yPC9jb2RlPiA6IGltYWdlIGF1dGhvciAod2hvIHVwbG9hZGVkIGl0 IHRvIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+KTwvbGk+CgkJPGxpPjxjb2RlPj9l eHQ8L2NvZGU+IDogaW1hZ2UgZmlsZSBleHRlbnNpb248L2xpPgoJCTxsaT48Y29kZT4/d2lk dGg8L2NvZGU+IDogaW1hZ2Ugd2lkdGggaW4gcGl4ZWxzPC9saT4KCQk8bGk+PGNvZGU+P2hl aWdodDwvY29kZT4gOiBpbWFnZSBoZWlnaHQgaW4gcGl4ZWxzPC9saT4KCQk8bGk+PGNvZGU+ P3VybDwvY29kZT4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gb2YgdGhl IGZ1bGwtc2l6ZSBpbWFnZSAmIzgyMTI7IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCA8Y29kZT5p bWFnZWNhcHRpb248L2NvZGU+IG9yIDxjb2RlPnRodW1idGV4dDwvY29kZT48L2xpPgoJPC91 bD4KCgk8cD5Gb3IgZXhhbXBsZSwgdG8gc2hvdyB0aGUgYWx0IHRleHQgdW5kZXIgdGhlIG1h aW4gaW1hZ2UgaW5zdGVhZCBvZiB0aGUgY2FwdGlvbiAod2hpY2ggaXQgb3RoZXJ3aXNlIHVz ZXMgYnkgZGVmYXVsdCkgOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPmltYWdlY2FwdGlvbj0mcXVvdDs/YWx0JnF1b3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5Gb3IgdGhlIGFkdmVudHVyb3VzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPmltYWdlY2FwdGlvbj0mcXVvdDs/Y2FwdGlvbiBieSA/YXV0aG9yCiAg ICAgWz9leHQgcGljdHVyZTogP3dpZHRoeD9oZWlnaHRweF0mcXVvdDsKPC9jb2RlPjwvcHJl PgoKCTxwPlRoYXQgbWlnaHQgc2hvdyBhIGNhcHRpb24gc3VjaCBhcyAmIzgyMjA7TGFrZSBX aW5kZXJtZXJlIGF0IG5pZ2h0IGJ5IFN0ZWYgW2pwZyBwaWN0dXJlOiA4MDAmIzIxNTs2MDBw eF0mIzgyMjE7LjwvcD4KCgk8cD5UbyBwdXQgKGFib3ZlIGVhY2ggdGh1bWJuYWlsKSB0aGUg dGV4dCAmIzgyMjA7RmlsZWQgaW4mIzgyMjE7IGFuZCB0aGVuIHRoZSBjYXRlZ29yeSBuYW1l IG9mIHRoZSBpbWFnZSwgZm9sbG93ZWQgYnkgaXRzIGZpbGVuYW1lIGluIHNxdWFyZSBicmFj a2V0czo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj50aHVt YnRleHQ9JnF1b3Q7YWJvdmU6IEZpbGVkIGluID9jYXRlZ29yeSBbP25hbWVdJnF1b3Q7Jmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+WW91IGNhbiBjb21iaW5lIGRlZmluaXRpb25zLCBlYWNo IHNlcGFyYXRlZCBieSBhIGNvbW1hLCBmb3IgZXhhbXBsZTo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj50aHVtYnRleHQ9JnF1b3Q7YWJvdmU6RmlsZWQg aW4gP2NhdGVnb3J5IFs/bmFtZSAoP3dpZHRoIHggP2hlaWdodCldLAogICAgIGJlbG93Oj9h dXRob3ImcXVvdDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd291bGQgYWRkIHRoZSBjYXRl Z29yeSwgZmlsZW5hbWUsIHdpZHRoIGFuZCBoZWlnaHQgYWJvdmUgdGhlIGltYWdlIGFuZCB0 aGUgYXV0aG9yICh0aGUgcGVyc29uIHdobyB1cGxvYWRlZCBpdCkgYmVsb3cgdGhlIHRodW1i bmFpbC4gWW91IGNhbiBnZXQgYXMgY3JlYXRpdmUgYXMgeW91IGxpa2UuPC9wPgoKCTxwPk5v dGUgdGhhdCBpZiB5b3Ugd2FudCB0byB1c2UgYSBjb2xvbiBpbiB0aGUgdGV4dCBpdHNlbGYs IHlvdSB3aWxsIG5lZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYW5kIHNldCBpdCB0byBh bnkgc3RyaW5nIG9mIGNoYXJhY3RlcnMgeW91IHByZWZlciB1c2luZyB0aGUgPGNvZGU+cGFy YW1kZWxpbTwvY29kZT4gb3B0aW9uLjwvcD4KCgk8aDMgaWQ9ImdhbGxlcnlpZCI+VXNpbmcg PGNvZGU+Z2FsbGVyeWlkPC9jb2RlPjwvaDM+CgoJPHA+SW50ZXJuYWxseSwgdGhlIHBsdWdp biBnZW5lcmF0ZXMgYSB1bmlxdWUgKDMyLWNoYXJhY3Rlcikgc3RyaW5nIGJhc2VkIG9uIHRo ZSBvdGhlciBhdHRyaWJ1dGVzIGdpdmVuLiBZb3UgY2FuIHVzZSB0d28gbnVtYmVycyBpbiBn YWxsZXJ5aWQgdG8gY29udHJvbCB3aGljaCBjaGFyYWN0ZXJzIGZyb20gdGhpcyBzdHJpbmcg dG8gdXNlIGluIHlvdXIgdW5pcXVlIGNvZGUuIFRoZSBmaXJzdCBudW1iZXIgaXMgdGhlIGxl bmd0aCBvZiB0aGUgc3RyaW5nIHRvIGdlbmVyYXRlIGFuZCB0aGUgMm5kIG51bWJlciBpcyBo b3cgbWFueSBjaGFyYWN0ZXJzIHRvIHNraXAgZWFjaCB0aW1lIGl0IHBpY2tzIG9uZSBmcm9t IHRoZSBzdHJpbmcgKHdyYXBwaW5nIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcg aWYgaXQgZmFsbHMgb2ZmIHRoZSBlbmQpLjwvcD4KCgk8cD5BbiBleGFtcGxlOiBzdXBwb3Nl IHRoZSB0YWcgZ2VuZXJhdGVkIHRoaXMgc3RyaW5nIGludGVybmFsbHk6IDxjb2RlPjJjYjVi YmY4YjBjMmMwMjhkOGYyMzRiNGJkNDZmZGRlPC9jb2RlPi4gVGhlc2UgYXJlIHRoZSByZXN1 bHRzIG9mIHZhcmlvdXMgdmFsdWVzOjwvcD4KCgk8dGFibGU+CgkJPHRyPgoJCQk8dGg+Z2Fs bGVyeWlkPSA8L3RoPgoJCQk8dGg+cmVzdWx0IDwvdGg+CgkJCTx0aD5yZW1hcmtzIDwvdGg+ CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gPGNvZGU+JnF1b3Q7JnF1b3Q7PC9jb2RlPiBvciA8 Y29kZT4mcXVvdDs/NDo2JnF1b3Q7PC9jb2RlPiA8L3RkPgoJCQk8dGQ+IDJmY2YgPC90ZD4K CQkJPHRkPiB0aGUgZGVmYXVsdCA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IDxjb2Rl PiZxdW90Oz84JnF1b3Q7PC9jb2RlPiA8L3RkPgoJCQk8dGQ+IDJjYjViYmY4IDwvdGQ+CgkJ CTx0ZD4gdGhlIGZpcnN0IDggY2hhcmFjdGVycyA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8 dGQ+IDxjb2RlPiZxdW90Oz83OjMmcXVvdDs8L2NvZGU+IDwvdGQ+CgkJCTx0ZD4gMjVmMGM4 ZiA8L3RkPgoJCQk8dGQ+IGxlbmd0aCA3LCBjaG9vc2luZyBldmVyeSAzcmQgY2hhcmFjdGVy IDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gPGNvZGU+JnF1b3Q7Pzg6NyZxdW90Ozwv Y29kZT4gPC90ZD4KCQkJPHRkPiAyODI0ZjVjOCA8L3RkPgoJCQk8dGQ+IGxlbmd0aCA4LCBj aG9vc2luZyBldmVyeSA3dGggY2hhcmFjdGVyICh3cmFwcykgPC90ZD4KCQk8L3RyPgoJPC90 YWJsZT4KCgk8aDIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+CgoJPGgzIGlkPSJlZzEi PkV4YW1wbGUgMTogc2ltcGxlIHNsaW1ib3ggZ2FsbGVyeTwvaDM+CgoJPHA+U2hvdyBhbGwg aW1hZ2VzIGluIHRoZSBsYW5kc2NhcGUgY2F0ZWdvcnksIHRlbiBhdCBhIHRpbWU6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfc2xp bWJveCBjYXRlZ29yeT0mcXVvdDtsYW5kc2NhcGUmcXVvdDsgbGltaXQ9JnF1b3Q7MTAmcXVv dDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI6IGFkZGlu ZyBjYXB0aW9uczwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9zbGltYm94IGNhdGVnb3J5PSZxdW90O2RvZ3MsIGJpcmRzJnF1b3Q7 IGxpbWl0PSZxdW90OzkmcXVvdDsKICAgICB0aHVtYnRleHQ9JnF1b3Q7YWZ0ZXI6P2NhcHRp b24mcXVvdDsgd3JhcHRhZz0mcXVvdDtsaSZxdW90OwogICAgIGNlbGxjbGFzcz0mcXVvdDtj ZWxsJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaG93IGFsbCBpbWFnZXMgaW4g dGhlIGRvZ3MgYW5kIGJpcmRzIGNhdGVnb3JpZXMsIDkgcGVyIHBhZ2UuIEFkZCB0aGUgY2Fw dGlvbnMgdW5kZXIgdGhlIHRodW1ibmFpbHMgYW5kIG1ha2UgdGhlbSBjbGlja2FibGUgdG9v LiBXcmFwIGVhY2ggaW1hZ2UgaW4gYSA8Y29kZT5saTwvY29kZT4gdGFnIGFuZCBnaXZlIGVh Y2ggYSBjbGFzcyBvZiAmIzgyMTY7Y2VsbCYjODIxNzsgKGltcGxpZXMgeW91IG11c3QgbWFu dWFsbHkgYWRkIGEgY29ycmVzcG9uZGluZyA8Y29kZT4mbHQ7dWwmZ3Q7PC9jb2RlPiB0YWcg YXJvdW5kIHRoZSBwbHVnaW4gaW4gb3JkZXIgdG8gbWFpbnRhaW4gcGFnZSB2YWxpZGl0eSku PC9wPgoKCTxwPklmIHlvdSBhZGRlZCA8Y29kZT5zb3J0PSZxdW90O2RhdGUgZGVzYywgcmFu ZG9tJnF1b3Q7PC9jb2RlPiB0byB0aGUgYWJvdmUgdGFnLCB5b3Ugd291bGQgZ2V0IHRoZSBt b3N0IHJlY2VudCA5IGltYWdlcyBvbiB0aGUgZmlyc3QgcGFnZSwgYnV0IHNob3duIGluIGEg cmFuZG9tIG9yZGVyLiBUaGUgbmV4dCBwYWdlIHdvdWxkIHNob3cgdGhlIG5leHQgbW9zdC1y ZWNlbnQgOSBpbWFnZXMsIGFnYWluIHNvcnRlZCByYW5kb21seSB3aXRoaW4gdGhlbXNlbHZl cy48L3A+CgoJPHA+SG93ZXZlciwgc3dpdGNoaW5nIHRoZSBhdHRyaWJ1dGVzIHRvOiA8Y29k ZT5zb3J0PSZxdW90O3JhbmRvbSwgZGF0ZSBkZXNjJnF1b3Q7PC9jb2RlPiB3b3VsZCBjaGFu Z2UgdGhlIG91dHB1dC4gWW91IHdvdWxkIHRoZW4gZ2V0IDkgcmFuZG9tIGltYWdlcyBvbiB0 aGUgZmlyc3QgcGFnZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgb25lcyBvZiB0aGUgZ3JvdXAg c2hvd24gZmlyc3QuIENsaWNraW5nICYjODIxNjtOZXh0JiM4MjE3OyB3b3VsZCBzaG93IGFu b3RoZXIgOSByYW5kb20gaW1hZ2VzIChzb21lIG1heSBiZSB0aGUgc2FtZSBhcyBwYWdlIDEp LCBhZ2FpbiBzb3J0ZWQgaW4gZGVzY2VuZGluZyBvcmRlciBvZiBkYXRlLiBGb3IgdGhpcyBy ZWFzb24gKHVubGVzcyB5b3UmIzgyMTc7cmUgc2ltcGx5IHVzaW5nIHRoZSBwbHVnaW4gdG8g cHJldHR5IHVwIGEgcGFnZSB3aXRoIHJhbmRvbSBpbWFnZXMpIGlmIHlvdSYjODIxNztyZSB1 c2luZyByYW5kb20gYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIDxjb2RlPnNvcnQ8L2NvZGU+ LCB5b3UgcHJvYmFibHkgd2FudCB0byBkaXNhYmxlIHBhZ2luZyBieSBzZXR0aW5nIDxjb2Rl PnNob3dwYWdlbGlua3M9JnF1b3Q7MCZxdW90OzwvY29kZT4uPC9wPgoKCTxoMyBpZD0iZWcz Ij5FeGFtcGxlIDM6IHVzaW5nIDxjb2RlPmltYWdlaWQ8L2NvZGU+PC9oMz4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3NsaW1ib3ggaW1h Z2VpZD0mcXVvdDs0OCwgMjUsIDQmcXVvdDsKICAgICBjYXRlZ29yeT0mcXVvdDtkb2dzLCA/ Y3VzdG9tMSZxdW90OyBzdWJjYXRzPSZxdW90O2FsbCZxdW90OyBsaW1pdD0mcXVvdDsyMCZx dW90OwogICAgIHByZXZsYWJlbD0mcXVvdDtCYWNrJnF1b3Q7IHNvcnQ9JnF1b3Q7bmFtZSBk ZXNjLCBjYXRlZ29yeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+U2hvdyBpbWFn ZXMgd2l0aCBJRHMgNDgsIDI1IGFuZCA0IGFzIHdlbGwgYXMgYWxsIGltYWdlcyBpbiB0aGUg ZG9ncyBjYXRlZ29yeSBhbmQgYWxzbyBwdWxsIHRoZSBpbWFnZSBjYXRlZ29yeSBuYW1lcyBm cm9tIHRoZSBjdXJyZW50IGFydGljbGUmIzgyMTc7cyBjdXN0b20xIGZpZWxkIChpZiBjdXN0 b20xIGhlbGQgPGNvZGU+YmlyZHMsIGxhbmRzY2FwZXM8L2NvZGU+IHlvdSYjODIxNztkIGdl dCBwaWN0dXJlcyBmcm9tIGFsbCB0aHJlZSBjYXRlZ29yaWVzIGFuZCBhbGwgdGhlaXIgc3Vi LWNhdGVnb3JpZXMpLiBUaGUgdGFnIGFsc28gbGltaXRzIHRoZSBudW1iZXIgb2YgdGh1bWJz IHBlciBwYWdlIHRvIDIwLCBjaGFuZ2VzIHRoZSBwcmV2aW91cyBwYWdlIGxhYmVsIHRvICYj ODIyMDtCYWNrJiM4MjIxOyBhbmQgc29ydHMgdGhlIGltYWdlcyBpbiBkZXNjZW5kaW5nIG9y ZGVyIG9mIG5hbWUsIHRoZW4gY2F0ZWdvcnkuPC9wPgoKCTxoMyBpZD0iZWc0Ij5FeGFtcGxl IDQ6IGltYWdlIG5lZ2F0aW9uPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDt0eHA6c21kX3NsaW1ib3ggY2F0ZWdvcnk9JnF1b3Q7c3RhdGljLCBj YXQtP2lkJnF1b3Q7CiAgICAgaW1hZ2VpZD0mcXVvdDshYXJ0aWNsZV9pbWFnZSZxdW90OyBs aW1pdD0mcXVvdDs2JnF1b3Q7IGdyb3VwbmFtZT0mcXVvdDs/YyZxdW90OwogICAgIHNob3dw YWdlbGlua3M9JnF1b3Q7MCZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+SWYgdGhl IHZpc2l0b3IgaXMgY3VycmVudGx5IHZpZXdpbmcgYXJ0aWNsZSBJRCA2Nywgc2hvdyBhbGwg aW1hZ2VzIGZyb20gdGhlICYjODIxNjtzdGF0aWMmIzgyMTc7IGNhdGVnb3J5IGFuZCB0aGUg JiM4MjE2O2NhdC02NyYjODIxNzsgY2F0ZWdvcnkuIElmIGFueSBpbWFnZSBpbiBlaXRoZXIg b2YgdGhvc2UgY2F0ZWdvcmllcyBpcyBmb3VuZCB0byBoYXZlIGFuIElEIG9mIHRoZSBhcnRp Y2xlIGltYWdlIGZyb20gdGhlIGN1cnJlbnQgYXJ0aWNsZSwgdGhhdCBwaWN0dXJlIHdpbGwg YmUgaWdub3JlZC4gT25seSBzaG93IDYgcGljdHVyZXMgYW5kIGRvbiYjODIxNzt0IHNob3cg dGhlIG5leHQvcHJldiBsaW5rcyBvbiB0aGUgcGFnZS48L3A+CgoJPHA+QWxzbywgZ3JvdXAg dGhlIGxpZ2h0Ym94IHBpY3R1cmVzIGJ5IGltYWdlIGNhdGVnb3J5LiBUaGlzIG1lYW5zIHRo YXQgaWYgc29tZW9uZSBjbGlja3Mgb24gYSBwaWN0dXJlIGZyb20gdGhlICYjODIyMDtzdGF0 aWMmIzgyMjE7IGNhdGVnb3J5LCB0aGUgU2xpbWJveCBuZXh0L3ByZXYgbGlua3Mgb25seSBu YXZpZ2F0ZSBiZXR3ZWVuIHRob3NlIHBpY3R1cmVzLiBUaGUgdXNlciB3aWxsIGhhdmUgdG8g Y2xvc2UgdGhlIGxpZ2h0Ym94IGFuZCBjbGljayBhIHBpY3R1cmUgaW4gdGhlIGNhdC02NyBj YXRlZ29yeSB0byBzaG93IHBpY3R1cmVzIGZyb20gdGhlIG90aGVyIGdyb3VwLjwvcD4KCgk8 cD5PbiB0aGUgc3VyZmFjZSB0aGUgZ3JvdXBuYW1lIG9wdGlvbiBtYXkgc2VlbSBhIGxpdHRs ZSBzdXBlcmZsdW91cyBidXQgaXQgY2FuIGJlIHVzZWZ1bCB0byBhbGxvdyBwZW9wbGUgdG8g b25seSBmbGljayB0aHJvdWdoIGEgc3Vic2V0IG9mIHRoZSBwaWN0dXJlcyBvbiBlYWNoIHBh Z2UsIGJhc2VkIG9uIHRoZWlyIGNhdGVnb3J5LCBmaWxlIG5hbWUsIGF1dGhvciwgd2lkdGgv aGVpZ2h0LCBhbHQvY2FwdGlvbiwgZXZlbiBJRCBpZiB5b3Ugd2FudCB0aGVtIHRvIGFsbCBi ZSB1bmlxdWUgZW50aXRpZXMuIFlvdSBjYW4gYWxzbyB1c2UgYSBmaXhlZCB2YWx1ZSByZWFk IGZyb20gYSBmaWVsZCBpbiB0aGUgY3VycmVudCBhcnRpY2xlLCBlLmcuIDxjb2RlPmdyb3Vw bmFtZT0mcXVvdDs/Y3VzdG9tMiZxdW90OzwvY29kZT4uIFVzZWZ1bCB3aGVuIHVzZWQgaW4g Y29uanVuY3Rpb24gd2l0aCA8Y29kZT5zb3J0PC9jb2RlPi48L3A+CgoJPGgzIGlkPSJlZzUi PkV4YW1wbGUgNTogY29tYmluaW5nIGZpZWxkIHZhcmlhYmxlczwvaDM+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9zbGltYm94IGNhdGVn b3J5PSZxdW90Oz9jLCA/Y3VzdG9tMSwgIWN1c3RvbTIsICFzdGF0aWMmcXVvdDsKICAgICBs aW1pdD0mcXVvdDs4JnF1b3Q7IG1heGxpbWl0PSZxdW90OzMyJnF1b3Q7IC8mZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5BIGJpdCBvZiBhIGNvbnRyaXZlZCBleGFtcGxlIHRoYXQgc2hvd3Mg aG93IGNyYXp5IHlvdSBjYW4gZ2V0OiBUaGlzIHdpbGwgc2hvdyBhIG1heGltdW0gb2YgMzIg aW1hZ2VzIGZyb20gYW4gaW1hZ2UgY2F0ZWdvcnkgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRo ZSBjdXJyZW50IGdsb2JhbCBjYXRlZ29yeSwgcGx1cyBhbGwgaW1hZ2VzIGZyb20gY2F0ZWdv cmllcyBsaXN0ZWQgaW4gdGhlIGN1c3RvbTEgZmllbGQgb2YgdGhlIGN1cnJlbnQgYXJ0aWNs ZSBidXQgPGVtPmV4Y2x1ZGluZzwvZW0+IGltYWdlcyBmcm9tIGNhdGVnb3JpZXMgbGlzdGVk IGluIGN1c3RvbTIgYW5kIGFsc28gZXhjbHVkaW5nIHRoZSAmIzgyMTY7c3RhdGljJiM4MjE3 OyBjYXRlZ29yeS4gU2hvdyA4IGltYWdlIHRodW1ibmFpbHMgYXQgYSB0aW1lIChpLmUuIDQg cGFnZXMpLjwvcD4KCgk8aDMgaWQ9ImVnNiI+RXhhbXBsZSA2OiB1c2luZyA8Y29kZT5vbmNo YW5nZTwvY29kZT48L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3R4cDpzbWRfc2xpbWJveCBjYXRlZ29yeT0mcXVvdDs/UGhvdG8gY291bnRyeSZx dW90OyBzdWJjYXRzPSZxdW90O2FsbCZxdW90OwogICAgIHRodW1idGV4dD0mcXVvdDtvbmNo YW5nZTogJmFtcDthbXA7YW1wO2x0O2g0JmFtcDthbXA7YW1wO2d0Oz9jYXRlZ29yeSZhbXA7 YW1wO2FtcDtsdDsvaDQmYW1wO2FtcDthbXA7Z3Q7JnF1b3Q7CiAgICAgZ3JvdXBuYW1lPSZx dW90Oz9jJnF1b3Q7IHRodW1idGV4dHdyYXA9JnF1b3Q7JnF1b3Q7IC8mZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5BIHdvcmstc2F2aW5nIHRhZyEgUHVsbHMgb3V0IGFsbCBwaWN0dXJlcyBm cm9tIHRoZSBjYXRlZ29yeSBnaXZlbiBpbiB0aGUgY3VzdG9tIGZpZWxkIGxhYmVsbGVkICYj ODIxNjtQaG90byBjb3VudHJ5JiM4MjE3OywgaW5jbHVkaW5nIGFueSBzdWItY2F0ZWdvcmll cy4gQnkgZGVmYXVsdCBpdCBzb3J0cyB0aGVtIGJ5IGNhdGVnb3J5LCB3aGljaCBpcyBwZXJm ZWN0LiBUaGUgY2xldmVyIGJpdCBpcyA8Y29kZT50aHVtYnRleHQ8L2NvZGU+LCB3aGljaCB0 ZWxscyB0aGUgcGx1Z2luIHRvIGRpc3BsYXkgdGhlIGNhdGVnb3J5IG5hbWUgYWJvdmUgdGhl IGltYWdlcyBidXQgPGVtPm9ubHk8L2VtPiB3aGVuIHRoZSBjYXRlZ29yeSBjaGFuZ2VzLiBU aGUgcmVzdWx0IGlzIGNhdGVnb3J5IGhlYWRpbmdzIChzdXJyb3VuZGVkIGJ5IGg0IHRhZ3Ms IHdpdGhvdXQgdGhlIGRlZmF1bHQgPGNvZGU+dGh1bWJ0ZXh0d3JhcDwvY29kZT4gc3Bhbikg YWJvdmUgZWFjaCBncm91cCBvZiBpbWFnZXMuIE5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byBp bmNsdWRlIHNpbXBsZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFncyB5b3Ug Y2FuLCBidXQgdGhleSBtdXN0IGJlIGVuY29kZWQgd2l0aCB0aGVpciBjaGFyYWN0ZXIgY29k ZSBlcXVpdmFsZW50cyBvciA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBnZXRzIG1h ZC48L3A+CgoJPHA+VGhlIDxjb2RlPmdyb3VwbmFtZTwvY29kZT4gb3B0aW9uIHRlbGxzIHNs aW1ib3ggdG8gb25seSBwZXJtaXQgc3RlcHBpbmcgdGhyb3VnaCBlYWNoIGltYWdlIGluIGVh Y2ggY2F0ZWdvcnkuIFlvdSBjYW5ub3QgJiM4MjE2O2ZhbGwgb2ZmJiM4MjE3OyB0aGUgZW5k IG9mIG9uZSBjYXRlZ29yeSBpbnRvIHRoZSBuZXh0IHdoZW4gdXNpbmcgdGhlIE5leHQvUHJl diBsaW5rcyBpbiB0aGUgbGlnaHRib3guPC9wPgoKCTxwPklmIHlvdSB3YW50ZWQgdG8gc2hv dyBjYXRlZ29yeSBoZWFkaW5ncyB0aGF0IGdyb3VwZWQgcGljdHVyZXMgYnkgYXV0aG9yIGFz IHdlbGwgeW91IGNvdWxkIHVzZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj5zb3J0PSZxdW90O2NhdGVnb3J5LCBhdXRob3ImcXVvdDsKICAgICB0aHVt YnRleHQ9JnF1b3Q7b25jaGFuZ2U6ICZhbXA7YW1wO2FtcDtsdDtoNCZhbXA7YW1wO2FtcDtn dDs/Y2F0ZWdvcnkKICAgICAoYnkgP2F1dGhvcikmYW1wO2FtcDthbXA7bHQ7L2g0JmFtcDth bXA7YW1wO2d0OyZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+QWRkIGEgbGl0dGxlIGJpdCBv ZiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBhbmQgeW91ciBzaW5nbGUgc2xpbWJv eCB0YWcgY2FuIGxvb2sgbGlrZSBpdCYjODIxNztzIGNyZWF0aW5nIG11bHRpcGxlIGdhbGxl cmllcywgYWxsIGF1dG9tYXRpY2FsbHkuPC9wPgoKCTxoMiBpZD0ic3R5bGUiPlN0eWxpbmcg d2l0aCA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPjwvaDI+CgoJPHA+VGhlcmUgYXJl IChkZWxpYmVyYXRlbHkpIHZlcnkgZmV3IGxheW91dCBhdHRyaWJ1dGVzIGZvciB0aGUgcGx1 Z2luIGJlY2F1c2UgcHJldHR5IG11Y2ggZXZlcnl0aGluZyBjYW4gYmUgYWNjZXNzZWQgZnJv bSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiB0byBsYXkgeW91ciBpbWFnZXMgb3V0 IGhvd2V2ZXIgeW91IGxpa2UgdGhlbS4gV2FudCB0byBjaGFuZ2UgdGhlIG51bWJlciBvZiBp bWFnZXMgcGVyIHJvdz8gQ2hhbmdlIHRoZSB3aWR0aCBvZiB0aGUgY29udGFpbmluZyA8ZGl2 PiBhbmQgc2V0IHRoZSB3aWR0aCBvZiBlYWNoIHRodW1ibmFpbCBzcGFjZSB0byBhIHBhcnRp Y3VsYXIgc2l6ZS48L3A+CgoJPHA+VGhlIGZvbGxvd2luZyBsb2dpY2FsIHN0cnVjdHVyZSBh cHBsaWVzOjwvcD4KCgk8dWw+CgkJPGxpPkFuIG9wdGlvbmFsIHdyYXB0YWcgYW5kIGNlbGxj bGFzcyBhcm91bmQgZWFjaCAmIzgyMjA7Y2VsbCYjODIyMTsgKGkuZS4gbGlua2VkIHRodW1i bmFpbCk8L2xpPgoJCTxsaT5BIGxpbmsgZWxlbWVudCBjb250YWluaW5nIHRoZSB0aHVtYm5h aWwmIzgyMTc7cyA8Y29kZT4mbHQ7aW1nJmd0OzwvY29kZT4gdGFnIHdpdGggYW4gb3B0aW9u YWwgaW1nY2xhc3M8L2xpPgoJCTxsaT5UaGUgdGh1bWJ0ZXh0IGlzIGEgPHNwYW4+IHdpdGgg YW4gb3B0aW9uYWwgdGh1bWJ0ZXh0Y2xhc3MgYW5kIGNhbiBhcHBlYXIgYWJvdmUsIGJlbG93 IG9yIHdpdGhpbiB0aGUgbGluayBlbGVtZW50PC9saT4KCQk8bGk+VGhlIG5leHQvcHJldiBs aW5rcyBhcmUgd3JhcHBlZCBpbiB0aGUgb3B0aW9uYWwgbmF2d3JhcHRhZyBjb250YWluZXIg YW5kIGNhbiBiZSBnaXZlbiBhbiBvcHRpb25hbCBuYXZjbGFzczwvbGk+CgkJPGxpPlRoZSBu ZXh0IGxpbmsgaGFzIGEgKGRlZmF1bHQpIGNsYXNzIG9mICYjODIyMDtzbWRfc2xpbWJveF9u ZXh0JiM4MjIxOyBhbmQgcHJldiBoYXMgJiM4MjIwO3NtZF9zbGltYm94X3ByZXYmIzgyMjE7 LiBUaGVzZSBjYW4gYmUgY2hhbmdlZCBvciByZW1vdmVkIGlmIHlvdSB3aXNoPC9saT4KCTwv dWw+CgoJPHA+VXNpbmcgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gc2VsZWN0b3Jz IHlvdSBjYW4gYWNjZXNzIGV2ZXJ5IHBhcnQgb2YgdGhlIHN0cnVjdHVyZS4gQW4gZXhhbXBs ZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBsYXlvdXQgaXMgZ2l2ZW4gaGVyZSB0 byBnZXQgeW91IHN0YXJ0ZWQgKGFzc3VtZXMgYSB3cmFwdGFnIG9mICYjODIxNjtsaSYjODIx NzssIGEgY29udGFpbmluZyAmIzgyMTY7dWwmIzgyMTc7IGFyb3VuZCB0aGUgcGx1Z2luIHRh ZyB3aXRoIGEgY2xhc3Mgb2YgPGNvZGU+c21kX3NsaW1ib3g8L2NvZGU+IGFuZCA8Y29kZT5u YXZjbGFzcz0mcXVvdDtzbWRfc2xpbWJveF9uYXYmcXVvdDs8L2NvZGU+KS4gUGFzdGUgaXQg aW50byB5b3VyIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IHRlbXBsYXRlIGFuZCB5 b3UmIzgyMTc7cmUgZ29vZCB0byBnby48L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4uc21kX3NsaW1ib3ggewoJZmxvYXQ6bGVmdDsKCXdpZHRoOjYwMHB4 OwoJbWFyZ2luOjFlbSAwOwoJY2xlYXI6Ym90aDsKCWxpc3Qtc3R5bGU6bm9uZTsKfQouc21k X3NsaW1ib3ggbGkgewoJd2lkdGg6MTUwcHg7CgloZWlnaHQ6MTUwcHg7CglmbG9hdDpsZWZ0 OwoJbWFyZ2luOjFlbSBhdXRvOwoJdGV4dC1hbGlnbjpjZW50ZXI7Cn0KLnNtZF9zbGltYm94 IGltZyB7CgltYXJnaW46MCBhdXRvOwp9Ci5zbWRfc2xpbWJveCBzcGFuIHsKCWZsb2F0Omxl ZnQ7Cgl3aWR0aDoxNDBweDsKCXBhZGRpbmc6MnB4IDAgMCA1cHg7Cn0KLnNtZF9zbGltYm94 X25hdiB7CgljbGVhcjpib3RoOwoJd2lkdGg6NTAwcHg7CglwYWRkaW5nOjIwcHg7Cn0KLnNt ZF9zbGltYm94X3ByZXYgewoJZmxvYXQ6bGVmdDsKfQouc21kX3NsaW1ib3hfbmV4dCB7Cglm bG9hdDpyaWdodDsKfQo8L2NvZGU+PC9wcmU+CgoJPGgyIGlkPSJjaGFuZ2Vsb2ciPkNoYW5n ZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4xOSBKYW4gMDcgfCAwLjEwIHwgSW5pdGlhbCByZWxl YXNlPC9saT4KCQk8bGk+MjAgSmFuIDA3IHwgMC4xMSB8IEFkZGVkICFjYXRlZ29yeSAobmVn YXRpb24pIHN1cHBvcnQuIFRoYW5rcyBWaXRydXZpdXM8L2xpPgoJCTxsaT4wMiBGZWIgMDcg fCAwLjEyIHwgQWRkZWQgaW1hZ2VpZCwgd2l0aCBuZWdhdGlvbiBzdXBwb3J0ICh0aGFua3Mg d291YXJlbikgYW5kIHRleHRwb3Mgb3B0aW9uICh0aGFua3MgbGVlKTwvbGk+CgkJPGxpPjA2 IEZlYiAwNyB8IDAuMjAgfCBqcyBhbmQgY3NzIGNhbiBub3cgYmUgbG9hZGVkIGVsc2V3aGVy ZSAodGhhbmtzIGpzdHViYnMpLiBBZGRlZCB3cmFwdGFnIGFuZCBjaGFuZ2VkIGRlZmF1bHRz IHRvIG1ha2Ugb3V0cHV0IGxlc3MgbGlrZSB0YWctc291cCAodGhhbmtzIHdvdWFyZW4pPC9s aT4KCQk8bGk+MTMgRmViIDA3IHwgMC4yMSB8IEFkZGVkIG9yZGVyYnk9JiM4MjE2O2ZpeGVk JiM4MjE3OyAodGhhbmtzIGxlZSkgYW5kIG1pbm9yIHdhcm5maXggKHRoYW5rcyBiZW5qaWJv dCk8L2xpPgoJCTxsaT4wNCBNYXIgMDcgfCAwLjIyIHwgQWRkZWQgPHNwYW4gY2xhc3M9ImNh cHMiPk1MUDwvc3Bhbj4gc3VwcG9ydCwgc3ViY2F0ZWdvcnkgc3VwcG9ydCBhbmQgZXh0ZW5k ZWQgdGhlIGNhdGVnb3J5L2ltYWdlaWQgb3B0aW9ucy4gTm93IHJlcXVpcmVzIDxhIGhyZWY9 Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2xpYl92MC4yLnR4dCI+c21k X2xpYjwvYT4gKGluY2x1ZGVkIGluIHRoZSB6aXAgZmlsZSBmb3IgY29udmVuaWVuY2UgYnV0 IGF2YWlsYWJsZSBzZXBhcmF0ZWx5IGFzIHdlbGwpPC9saT4KCQk8bGk+MDQgTWFyIDA3IHwg MC4yMyB8IEZpeGVkIG9yZGVyYnkgd2hlbiB1c2luZyByYW5kb20gICh0aGFua3MgbXJkYWxl KSBhbmQgYWRkZWQgYWJpbGl0eSB0byBvdmVycmlkZSBtYXhsaW1pdDwvbGk+CgkJPGxpPjE5 IE1hciAwNyB8IDAuMjQgfCBBbGxvd2VkIHNtZF9zbGltYm94X2luYyB0byBiZSBpZ25vcmVk IHZpYSA8Y29kZT5saWJjaGVjaz0mcXVvdDswJnF1b3Q7PC9jb2RlPiAodGhhbmtzIHBhcHVh c3MpPC9saT4KCQk8bGk+MzAgSnVuIDA3IHwgMC4yNGIgfCBGaXhlZCBwYWdpbmcgaW4gc3Vi LWRpcmVjdG9yeSBpbnN0YWxsYXRpb25zICh0aGFua3MgdWx0cmFtZWdhIGFuZCBRd2VzdCk8 L2xpPgoJCTxsaT4yOCBKdWwgMDcgfCAwLjI1IHwgU3VwZXJjaGFyZ2VkIHRoZSBncm91cG5h bWUgb3B0aW9uICh0aGFua3MgW0F4ZWxdKTwvbGk+CgkJPGxpPjMxIEp1bCAwNyB8IDAuMjVh IHwgTWFpbnRlbmFuY2UgdXBncmFkZSBvbmx5LiBObyBmZWF0dXJlcywganVzdCBidW5kbGVk IHRoZSBsYXRlc3Qgc2xpbWJveC9tb290b29scyBsaWJyYXJ5IGFuZCBmaXhlZCB0aGUgaGVs cCBmaWxlPC9saT4KCQk8bGk+MDQgQXVnIDA3IHwgMC4yNiB8IEZpeGVkIHBhZ2luZyB0byBh bGxvdyBtdWx0aXBsZSBzbGltYm94IHRhZ3MgcGVyIHBhZ2UgdG8gY28tZXhpc3QgKHRoYW5r cyB3aGVhdGljdXMpPC9saT4KCQk8bGk+MjIgQXVnIDA3IHwgMC4yNyB8IEFkZGVkIHRodW1i bmFpbHMtYXMtbWFpbi1pbWFnZSBvcHRpb24gKHRoYW5rcyBwcm9ncmU1NSk8L2xpPgoJCTxs aT4zMCBBdWcgMDcgfCAwLjI4IHwgQWRkZWQgY3VzdG9taXNhYmxlIGNhcHRpb25zIHVuZGVy IHRoZSBtYWluIGltYWdlICh0aGFua3MgQWRhbV9WKSBhbmQgY29uc29saWRhdGVkIG9yZGVy YnkgKGludGVybmFsIGNvZGUpPC9saT4KCQk8bGk+MTQgU2VwIDA3IHwgMC4yOSB8IEFkZGVk IHRoZSB0aHVtYnNpemUgb3B0aW9uIHRvIHNldCB0aHVtYm5haWwgZGltZW5zaW9ucyAodGhh bmtzIFNpbWFuZWspPC9saT4KCQk8bGk+MjAgU2VwIDA3IHwgMC4yOWEgfCBGaXhlZCB1bmRl Y2xhcmVkIGluZGV4IHdhcm5pbmdzICh0aGFua3MgQW1iaXRpb3VzbGVtb24pPC9saT4KCQk8 bGk+MjAgT2N0IDA3IHwgMC4yOWIgfCBGaXhlZCB0aGUgZml4IHRoYXQgYnJva2UgaW4gdjAu MjQgKHRoYW5rcyBNci5TbWl0aCYjODIyMTspIGFuZCB0aGUgJiM4MjE2O3B4JiM4MjE3OyB0 aHVtYnNpemUgaXNzdWUgKHRoYW5rcyByb2Jpbjc0Nik8L2xpPgoJCTxsaT4wMyBOb3YgMDcg fCAwLjIxMCB8IFVzZXMgc21kX2xpYiB2MC4zIHNvIGludGVnZXIgcmFuZ2VzIGFyZSBub3cg b25seSBhbGxvd2VkIGluIGltYWdlaWQuIEFkZGVkIHRodW1idGV4dC90aHVtYnRleHRjbGFz cy9wYXJhbWRlbGltLiBEZXByZWNhdGVkIHNob3dhbHQvc2hvd2NhcHRpb24vYWx0Y2xhc3Mv Y2FwdGlvbmNsYXNzL3RleHRwb3M8L2xpPgoJCTxsaT4yOCBOb3YgMDcgfCAwLjIxMSB8IFVz ZXMgc21kX2xpYiB2MC4zMS4gRml4ZWQgc29tZSB3YXJuaW5ncyBhbmQgYWRkZWQgb25jaGFu Z2UgaGVhZGluZyBzdXBwb3J0ICh0aGFua3Mga2FybC5zcGVuY2VyLCBkZWNvZGVybHRkKTwv bGk+CgkJPGxpPjIwIEphbiAwOCB8IDAuMjEyIHwgQWRkZWQgdGh1bWJ0ZXh0d3JhcCAodGhh bmtzIGpvZGVjaSkgYW5kIDxjb2RlPj91cmw8L2NvZGU+ICh0aGFua3MgbWFya3VzZmFsaykg OyBmaXhlZCB3aGl0ZXNwYWNlIGFyb3VuZCAmIzgyMTY7PyYjODIxNzsgY29kZXM8L2xpPgoJ CTxsaT4wMSBBcHIgMDggfCAwLjMwIHwgVXNlcyA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nv bi5jb20vc21kX2xpYiI+c21kX2xpYjwvYT4uIEJhY2twb3J0ZWQgZmVhdHVyZXMgYW5kIHJl ZmFjdG9yaXNhdGlvbiBmcm9tIHNtZF9nYWxsZXJ5IDsgYWRkZWQgdHJpZ2dlciwgZGVsaW0s IG5hdndyYXB0YWcgYW5kIGxpbmtjbGFzcyAodGhhbmtzIG1hcmlvcykgOyBjaGFuZ2VkIHN1 YmNhdHMgYW5kIHRodW1iICh0aGFua3MgZmFuZ29uaykgOyBkZXByZWNhdGVkIHNtZF9zbGlt Ym94X2luYyA7IHJlbW92ZWQgY2F0bGFiZWwsIGxpYmNoZWNrIGFuZCB0aGUgZGVwcmVjYXRl ZCBhdHRzIGZyb20gdjAuMjEwIDsgcmVuYW1lZCBvcmRlcmJ5IGFzIHNvcnQgOyBNb29uYm94 LCBMaWdodGJveCwgTGl0ZWJveCwgSW1hZ2Vib3ggYW5kIFRoaWNrYm94IChqUXVlcnkpIG5v dyBzdXBwb3J0ZWQgOyBhbHNvIHdvcmtzIHdpdGggZ2x6X2N1c3RvbV9maWVsZHMgKHRoYW5r cyBwcm9ncmU1NSBhbmQgPGEgaHJlZj0iaHR0cDovL2dlcmhhcmRsYXp1LmNvbS9ibG9nLzUx L2dsel9jdXN0b21fZmllbGRzLTExLXJlbGVhc2VkIj5nZXJoYXJkPC9hPik8L2xpPgoJCTxs aT4wOSBKdW4gMDggfCAwLjMxIHwgRml4ZWQgc29ydCB3aGVuIHVzaW5nIGxpbWl0IGFuZCBz YXZlZCBhIHF1ZXJ5ICh0aGFua3Mgcm9iaW43NDYpPC9saT4KCQk8bGk+MTkgRGVjIDA4IHwg MC4zMiB8IEZpeGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+IHN0cmluZyBidWc8 L2xpPgoJCTxsaT4yMiBGZWIgMDkgfCAwLjMzIHwgQWxsb3dlZCByZWwgcmVtb3ZhbCAodGhh bmtzIDxzcGFuIGNsYXNzPSJjYXBzIj5PTUdDPC9zcGFuPmhyaXMpPC9saT4KCQk8bGk+MDkg RmViIDExIHwgMC4zNCB8IEZpeGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IDUu MysgY29tcGF0aWJpbHR5IChlcmVnX3JlcGxhY2UpIGFuZCA8Y29kZT50aHVtYjwvY29kZT4g YXR0cmlidXRlIChib3RoIHRoYW5rcyBha3VyZWk3Nyk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9 ImNyZWRpdHMiPkNyZWRpdHM8L2gyPgoKCTxwPlRoaXMgcGx1Z2luIG9yaWdpbmFsbHkgcGxh Z2lhcmlzZWQgaWRlYXMgZnJvbSBSb2IgU2FibGUmIzgyMTc7cyByc3NfdGh1bWJwb3AgYW5k IGhhcyBiZWVuIGJ1aWx0IHVwIGZyb20gdGhlcmUgd2l0aCBzdWdnZXN0aW9ucyBmcm9tIHZh cmlvdXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj5lcnMgaW4gdGhlIGNvbW11bml0 eS4gSXQgYWxzbyB3b3VsZG4mIzgyMTc7dCBleGlzdCB3aXRob3V0IHRoZSBoYXJkIHdvcmsg b2YgQ2hyaXN0b3BoZSBCZXlscyYjODIxNzsgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gb2Yg U2xpbWJveC4gTWFueSB0aGFua3MgdG8gYWxsIHdobyBoYXZlIGhlbHBlZCBjcmFmdCB0aGlz IHBsdWdpbiwgYW5kIG9mIGNvdXJzZSB0byB0aGUgYXdlc29tZSBUZXh0cGF0dGVybi48L3A+ Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0eXBl PSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAg Y29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXci LCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2OGM7IGNvbG9y OiMzMzM7IH0KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpub3JtYWw7IGJv cmRlcjoxcHggZG90dGVkICM5OTk7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHgg MjBweDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBoMSB7IGZvbnQ6IDIwcHggR2Vvcmdp YSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KI3NtZF9o ZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjEwcHgg MCAwOyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsg Zm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4 OyBtYXJnaW46IDIwcHggMCAwOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9CiNzbWRf aGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNw YWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2Fz ZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyB9CiNzbWRfaGVscCAu bWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21k X2hlbHAgdGFibGUgeyB3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJv dHRvbToxZW07IH0KI3NtZF9oZWxwIHRkLCAjc21kX2hlbHAgdGggeyBib3JkZXI6MXB4IHNv bGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwOyB9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUt dHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIC5pbXBvcnRhbnQgeyBjb2xvcjpyZWQ7IH0KI3Nt ZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJl YWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lOIENT UyAqKiogLS0+CiI7czozOiJtZDUiO3M6MzI6IjA0NThmY2E2ZjA0MWFhYzkwNTU4M2M0NTU0 YzcyNjgxIjt9