# Name: smd_gallery v0.44 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTE6InNtZF9nYWxsZXJ5IjtzOjY6ImF1dGhvciI7czoxMToi U3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjQ0IjtzOjExOiJkZXNjcmlwdGlvbiI7czo2 OToiQShub3RoZXIpIHRodW1ibmFpbCBnYWxsZXJ5L3NsaWRlc2hvdyBjcmVhdG9yIHdpdGgg dW5yZWFsIGZsZXhpYmlsaXR5IjtzOjQ6ImNvZGUiO3M6Mjg3MTQ6ImZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXI7DQoNCgkvLyAqKiBMT09LVVAgVEFCTEUNCgkvLyBIb2xkcyBkYXRh YmFzZSBmaWVsZCBhcyBrZXkgaW5kZXggYW5kIHBsdWdpbiBvcHRpb24gbmFtZXMgYXMgdmFs dWUuDQoJLy8gVXNlIGFycmF5X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVlIGV4aXN0cyBhbmQg cmV0dXJuIGNvcnJlY3Qga2V5IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJyYXkgcmVmcy4NCgkk ZmllbGRNYXAgPSBhcnJheSgNCgkJInR4cF9pbWFnZS5uYW1lIiA9PiAibmFtZSIsDQoJCSJ0 eHBfaW1hZ2UuaWQiID0+ICJpZCIsDQoJCSJ0eHBfaW1hZ2UuYWx0IiA9PiAiYWx0IiwNCgkJ InR4cF9pbWFnZS5jYXB0aW9uIiA9PiAiY2FwdGlvbiIsDQoJCSJ0eHBfaW1hZ2UuY2F0ZWdv cnkiID0+ICJjYXRlZ29yeSIsDQoJCSJ0eHBfaW1hZ2UuYXV0aG9yIiA9PiAiYXV0aG9yIiwN CgkJInR4cF9pbWFnZS5kYXRlIiA9PiAiZGF0ZSIsDQoJCSJ0eHBfaW1hZ2UuZXh0IiA9PiAi ZXh0IiwNCgkJInR4cF9pbWFnZS53IiA9PiAid2lkdGgiLA0KCQkidHhwX2ltYWdlLmgiID0+ ICJoZWlnaHQiLA0KCQkidHhwX2ltYWdlLnRodW1ibmFpbCIgPT4gImhhc3RodW1iIiwNCgkp Ow0KDQoJLy8gUGx1Z2luIG9wdGlvbnMNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndHlw ZScgPT4gJ2ltYWdlJywNCgkJJ2RlbGltJyA9PiAnLCcsDQoJCSdwYXJhbWRlbGltJyA9PiAn OicsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAn JywNCgkJJ2RpcmVjdG9yeScgPT4gJycsDQoJCSdtYXRjaCcgPT4gJycsDQoJCSdzdWJsZXZl bCcgPT4gJzAnLA0KCQknc29ydCcgPT4gJ2NhdGVnb3J5JywNCgkJJ29mZnNldCcgPT4gJzAn LA0KCQknbGltaXQnID0+ICcwJywNCgkJJ21heGxpbWl0JyA9PiAnOTk5OTknLA0KCQkndGh1 bWJsaW1pdCcgPT4gJzk5OTk5JywNCgkJJ3RodW1ib2Zmc2V0JyA9PiAnMCcsDQoJCSd0aHVt YicgPT4gJzA6MScsDQoJCSd0aHVtYnNpemUnID0+ICcnLA0KCQkndGh1bWJjaGFuZ2UnID0+ ICcnLCAvLyBERVBSRUNBVEVEDQoJCSd0aHVtYmNoYW5nZXdyYXB0YWcnID0+ICcnLCAvLyBE RVBSRUNBVEVEDQoJCSd0aHVtYmNoYW5nZWNsYXNzJyA9PiAnJywgLy8gREVQUkVDQVRFRA0K CQknb25jaGFuZ2UnID0+ICdjYXRlZ29yeScsDQoJCSdvbmNoYW5nZXdyYXB0YWcnID0+ICcn LA0KCQknb25jaGFuZ2VjbGFzcycgPT4gJycsDQoJCSdncm91cHRhZycgPT4gJycsDQoJCSdn cm91cGNsYXNzJyA9PiAnJywNCgkJJ3RleHQnID0+ICcnLA0KCQknY29sbGF0ZScgPT4gJycs DQoJCSdjb21ibycgPT4gJycsDQoJCSdwYWdpbmcnID0+ICcwJywNCgkJJ3BhZ2Vmb3JtJyA9 PiAnJywNCgkJJ3BhZ2Vwb3MnID0+ICdiZWxvdycsDQoJCSduYXZ3cmFwdGFnJyA9PiAndWwn LA0KCQknbmF2YnJlYWsnID0+ICdsaScsDQoJCSduYXZjbGFzcycgPT4gJ3NtZF9nYWxsZXJ5 X25hdicsDQoJCSdlbXB0eWNsYXNzJyA9PiAnZW1wdHknLA0KCQknZ2FsbGVyeWlkJyA9PiAn PzQ6NicsDQoJCSd3cmFwdGFnJyA9PiAnJywNCgkJJ2JyZWFrJyA9PiAnJywNCgkJJ2NsYXNz JyA9PiAnJywNCgkJJ2RlYnVnJyA9PiAnMCcsDQoJKSwgJGF0dHMpKTsNCg0KCS8vIENhdGVn b3J5IHJlbGllcyBvbiB3aGV0aGVyIGlkIGhhcyBiZWVuIHNwZWNpZmllZCBvciBub3QuDQoJ Ly8gbEF0dHMoKSB3b24ndCBsZXQgdXMgaGFuZGxlIHRoaXMgbG9naWMgc28gaXQgaGFzIHRv IGJlIGRvbmUgbWFudWFsbHkNCgkkYXR0ZW1wdE1hdGNoID0gKGVtcHR5KCRjYXRlZ29yeSkg JiYgZW1wdHkoJGlkKSkgPyBmYWxzZSA6IHRydWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQoJGNh dGVnb3J5KSA/IGRvU2xhc2goJGNhdGVnb3J5KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4dFsn YyddOiAnJyk7DQoNCgkvLyBIYW5kbGUgZm9ybXMgYW5kIHNldCBhIGRlZmF1bHQgdGFnIGlm IG5vbmUgc3BlY2lmaWVkDQoJJHRoaW5nID0gKGVtcHR5KCRmb3JtKSkgPyAkdGhpbmcgOiBm ZXRjaF9mb3JtKCRmb3JtKTsNCgkkdGhpbmcgPSAoZW1wdHkoJHRoaW5nKSkgPyAnPGEgaHJl Zj0ie3VybH0iIGFsdD0ie2FsdH0iPjx0eHA6aW1hZ2UgaWQ9IntpZH0iIC8+PC9hPicgOiAk dGhpbmc7DQoNCgkvLyBQYWdpbmcgaW5pdA0KCSRwYWdlUG9zQWxsb3dlZCA9IGFycmF5KCJi ZWxvdyIsICJhYm92ZSIpOw0KCSRwYWdlb3V0ID0gYXJyYXkoKTsNCglpZiAoJHBhZ2Vmb3Jt KSB7DQoJCSRwYWdpbmcgPSAxOw0KCQkkcGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRwYWdlZm9y bSk7DQoJCSRwYWdlcG9zID0gZG9fbGlzdCgkcGFnZXBvcywgJGRlbGltKTsNCgkJZm9yZWFj aCAoJHBhZ2Vwb3MgYXMgJHBhZ2VpdGVtKSB7DQoJCQkkcGFnZW91dFtdID0gKGluX2FycmF5 KCRwYWdlaXRlbSwgJHBhZ2VQb3NBbGxvd2VkKSkgPyAkcGFnZWl0ZW0gOiAkcGFnZVBvc0Fs bG93ZWRbMF07DQoJCX0NCgl9DQoNCgkvLyBUZW1wb3JhcnkgcmVkaXJlY3QgZm9yIGRlcHJl Y2F0ZWQgb3B0aW9ucw0KCSRvbmNoYW5nZSA9ICgkb25jaGFuZ2UpID8gJG9uY2hhbmdlIDog JHRodW1iY2hhbmdlOw0KCSRvbmNoYW5nZXdyYXB0YWcgPSAoJG9uY2hhbmdld3JhcHRhZykg PyAkb25jaGFuZ2V3cmFwdGFnIDogJHRodW1iY2hhbmdld3JhcHRhZzsNCgkkb25jaGFuZ2Vj bGFzcyA9ICgkb25jaGFuZ2VjbGFzcykgPyAkb25jaGFuZ2VjbGFzcyA6ICR0aHVtYmNoYW5n ZWNsYXNzOw0KDQoJLy8gb25jaGFuZ2UgdmVyaWZpY2F0aW9uDQoJJG9uY2hhbmdlID0gZG9f bGlzdCgkb25jaGFuZ2UsICRkZWxpbSk7DQoJJG9uY2hhbmdlID0gKCRvbmNoYW5nZVswXSA9 PSAiIikgPyBhcnJheSgpIDogJG9uY2hhbmdlOw0KCSRyZXNldE9wdHMgPSBhcnJheSgpOw0K CWZvcmVhY2ggKCRvbmNoYW5nZSBhcyAkcmVzZXRPcHQpIHsNCgkJJHJlc2V0T3B0c1skcmVz ZXRPcHRdID0gIiI7DQoJfQ0KDQoJLy8gVGhlIGdhbGxlcnkgaWRlbnRpZmllciBpcyB1c2Vk IGZvciBrZWVwaW5nIHRyYWNrIG9mIG5leHQvcHJldiB0aHVtYm5haWwgcGFnZSBsaW5rcw0K CSRnYWxsSUQgPSAnJzsNCglpZiAoJGdhbGxlcnlpZCA9PSAnJyB8fCBzdWJzdHIoJGdhbGxl cnlpZCwwLDEpID09ICI/Iikgew0KCQkvLyBHZW5lcmF0ZSBhIChmYWlybHkgbGlrZWx5KSB1 bmlxdWUgSUQgZm9yIHRoaXMgZ2FsbGVyeSBpbnN0YW5jZQ0KCQkkZ2FsbFRtcCA9IG1kNSgk Y2F0ZWdvcnkuJGlkLiRkaXJlY3RvcnkuJG1hdGNoLiRzdWJsZXZlbC4kc29ydC4kbGltaXQu JG1heGxpbWl0KTsNCgkJbGlzdCgkZ2FsbExlbiwgJGdhbGxTa2lwKSA9IGV4cGxvZGUoIjoi LCBzdWJzdHIoJGdhbGxlcnlpZCwxKSk7DQoJCSRnYWxsTGVuID0gIChlbXB0eSgkZ2FsbExl bikpID8gIjQiIDogJGdhbGxMZW47DQoJCSRnYWxsU2tpcCA9ICAoZW1wdHkoJGdhbGxTa2lw KSkgPyAiMSIgOiAkZ2FsbFNraXA7DQoJCWZvciAoJGlkeCA9IDAsICRjbnQgPSAwOyAkY250 IDwgJGdhbGxMZW47ICRjbnQrKywgJGlkeCA9ICgoJGlkeCskZ2FsbFNraXApICUgc3RybGVu KCRnYWxsVG1wKSkpIHsNCgkJCSRnYWxsSUQgLj0gJGdhbGxUbXBbJGlkeF07DQoJCX0NCgl9 IGVsc2Ugew0KCQkkZ2FsbElEID0gJGdhbGxlcnlpZDsNCgl9DQoJJGdhbGxJRCA9ICJzbWRf Z2xyeV8iLiRnYWxsSUQ7IC8vIEF2b2lkIChhbHJlYWR5IGluY3JlZGlibHkgdW5saWtlbHkp IG5hbWVzcGFjZSBjbGFzaGVzDQoNCgkvLyBTZXQgdXAgdGhlIHZhcmlhYmxlcyBmcm9tIHRo ZSB0aHVtYiBvcHRpb24uDQoJLy8gRG9uJ3QgdXNlIHBhcmFtZGVsaW0gaGVyZSBvciB0aGUg ZGVmYXVsdCBvcHRpb24gYnJlYWtzDQoJJHRodW1iT3B0cyA9IGRvX2xpc3QoJHRodW1iLCAi OiIpOw0KCWlmIChjb3VudCgkdGh1bWJPcHRzKSA9PSAxKSB7DQoJCSRmdWxsbW9kID0gKCR0 aHVtYk9wdHNbMF0gPT0gMSkgPyAidCIgOiAiIjsNCgkJJHRodW1ibW9kID0gInQiOw0KCX0g ZWxzZSB7DQoJCSRmdWxsbW9kID0gKCR0aHVtYk9wdHNbMF0gPT0gMSkgPyAidCIgOiAiIjsN CgkJJHRodW1ibW9kID0gKCR0aHVtYk9wdHNbMV0gPT0gMSkgPyAidCIgOiAiIjsNCgl9DQoN CgkvLyBUaGUgbWFubmVyIG9mIG9idGFpbmluZyBmaWxlcyBkaWZmZXJzIGlmIHVzaW5nIGRp cmVjdG9yeSB2cyBjYXRlZ29yeS9pZA0KCSRycyA9IGFycmF5KCk7DQoJaWYgKCRkaXJlY3Rv cnkpIHsNCgkJJHJzID0gc21kX2RvRGlyZWN0b3J5KCRkaXJlY3RvcnksIDAsICRzdWJsZXZl bCwgJG1hdGNoLCAkZGVsaW0pOw0KCQlsaXN0KCRhbGxJbWFnZXMsICRudW1QYWdlcywgJHRo dW1QYWdlLCAkb2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0LCAk b2Zmc2V0LCAkcGFnaW5nKTsNCgkJJGRpcmxpbWl0ID0gKCRsaW1pdD09MCkgPyAkbWF4bGlt aXQgOiAkbGltaXQ7DQoJCSRwb3N0T3JkZXIgPSBhcnJheSgpOw0KCQkkZml4ZWRPcmRlciA9 IDA7DQoJCSRyYW5kc29ydCA9IGZhbHNlOw0KCX0gZWxzZSB7DQoJCS8vIFByb2Nlc3MgY2F0 ZWdvcmllcy9JRHMgYW5kIG1ha2UgdXAgdGhlIGNydXggb2YgdGhlIHdoZXJlIGNsYXVzZS4N CgkJLy8gQ2xhdXNlIG9yZGVyID0gSURzIE9SIGNhdHMgQU5EICFjYXRzIEFORCAhSURzDQoJ CSRjbGF1c2VbXSA9ICcxPTEnOw0KCQkkY2xhdXNlT1IgPSBhcnJheSgpOw0KDQoJCS8vIFN1 cnJvdW5kIGVhY2ggZW50cnkgaW4gdGhlIElEIGxpc3Qgd2l0aCBxdW90ZXMgYW5kIG1ha2Ug YW4gU1FMICJpbiIgbGlzdA0KCQkkc3ViaW5mbyA9ICgkc3VibGV2ZWwpID8gImltYWdlOiIu JHN1YmxldmVsIDogJyc7DQoJCWxpc3QoJGlkaW5jLCAkaWRleGMpID0gc21kX2RvTGlzdCgk aWQsIHRydWUsICcnLCB0cnVlLCAkZGVsaW0pOw0KCQlsaXN0KCRjYXRpbmMsICRjYXRleGMp ID0gc21kX2RvTGlzdCgkY2F0ZWdvcnksIGZhbHNlLCAkc3ViaW5mbywgdHJ1ZSwgJGRlbGlt KTsNCgkJaWYgKCRpZGluYykgew0KCQkJJGNsYXVzZU9SW10gPSAndHhwX2ltYWdlLmlkIElO ICgnLmltcGxvZGUoIiwiLCAkaWRpbmMpLicpJzsNCgkJfQ0KCQlpZiAoJGNhdGluYykgew0K CQkJJGNsYXVzZU9SW10gPSAndHhwX2ltYWdlLmNhdGVnb3J5IElOICgnLmltcGxvZGUoIiwi LCAkY2F0aW5jKS4nKSc7DQoJCX0NCgkJaWYgKCFlbXB0eSgkY2xhdXNlT1IpKSB7DQoJCQkk Y2xhdXNlW10gPSAnICgnLmltcGxvZGUoIiBPUiAiLCAkY2xhdXNlT1IpLicpICc7DQoJCX0N Cg0KCQkkY2xhdXNlID0gaW1wbG9kZSgiIEFORCAiLCAkY2xhdXNlKTsNCgkJJGNsYXVzZSAu PSAoJGNhdGV4YykgPyAnIEFORCB0eHBfaW1hZ2UuY2F0ZWdvcnkgTk9UIElOICgnLmltcGxv ZGUoIiwiLCAkY2F0ZXhjKS4nKScgOiAnJzsNCgkJJGNsYXVzZSAuPSAoJGlkZXhjKSA/ICcg QU5EIHR4cF9pbWFnZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4YykuJyknIDog Jyc7DQoNCgkJLy8gSWYgYSBjYXRlZ29yeS9pZCBvcHRpb24gd2FzIGNob3NlbiBhbmQgdGhl eSBtYXRjaGVkIG5vdGhpbmcsIHVzZSBhIGJvZ3VzIGNhdGVnb3J5IHRoYXQgc2hvdWxkIG5v dCBleGlzdC4NCgkJLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHBsdWdpbiBkb2VzIHRoZSBl eHBlY3RlZCB0aGluZyBvZiBtYXRjaGluZyBub3RoaW5nIGluIHRoZSBldmVudCBpdCBmaW5k cyBub3RoaW5nLg0KCQlpZiAoJGNsYXVzZSA9PSAiMT0xIiAmJiAkYXR0ZW1wdE1hdGNoKSB7 DQoJICAJCSRjbGF1c2UgPSAndHhwX2ltYWdlLmNhdGVnb3J5ID0gInNtZF8nIC5tdF9yYW5k KCkuICciJzsNCgkJfQ0KDQoJCWlmICgkZGVidWcgPiAxKSB7DQoJCQllY2hvICIrKyBJTkNM VURFRC9FWENMVURFRCBJRHMgQU5EIENBVHMgKysiOw0KCQkJZG1wKCRpZGluYyk7DQoJCQlk bXAoJGlkZXhjKTsNCgkJCWRtcCgkY2F0aW5jKTsNCgkJCWRtcCgkY2F0ZXhjKTsNCgkJfQ0K DQoJCS8vIENvbnZlcnQgdGhlIHNvcnQgaW50byBhIHZhbGlkIHNvcnRpbmcgaGllcmFyY2h5 Lg0KCQkvLyBOb3RlIHRoYXQgcmFuZG9tIGlzIGEgc3BlY2lhbCBjYXNlIGFuZCB0aGUgZm9s bG93aW5nIHJ1bGVzIGFwcGx5Og0KCQkvLyAgMSkgQW55dGhpbmcgYXBwZWFyaW5nIGJlZm9y ZSByYW5kb20gaXMgcGFzc2VkIHRvIHRoZSBkYXRhYmFzZSBxdWVyeSBmb3Igb3JkZXJpbmcN CgkJLy8gIDIpIEFzIHNvb24gYXMgcmFuZG9tIGlzIGVuY291bnRlcmVkLCB0aGUgcmVzdCBv ZiB0aGUgc29ydCBzdHJpbmcgaXMgaWdub3JlZC4NCgkJLy8gICAgIFRoZSByZXN1bHRzZXQg d2lsbCBiZSBzb3J0ZWQgcmFuZG9tbHkgaW5zdGVhZA0KCQkvLyAgMykgSWYgcmFuZG9tIGFw cGVhcnMgZmlyc3QgaW4gdGhlIGxpc3QsIHRoZSBkYXRhIGlzIHJldHJpZXZlZCByYW5kb21s eSB0aGVuIHRoZQ0KCQkvLyAgICAgcmVtYWluaW5nIG9wdGlvbnMgc29ydCB0aGUgcmVzdWx0 c2V0DQoJCSRjbGF1c2VTb3J0ID0gYXJyYXkoKTsNCgkJJHBvc3RPcmRlciA9IGFycmF5KCk7 DQoJCSRydWxlID0gInNxbCI7DQoJCSRwb3N0UHJlZml4ID0gIlNPUlRfIjsNCgkJJGZpeGVk T3JkZXIgPSAkcmFuZHNvcnQgPSBmYWxzZTsNCgkJJHNvcnQgPSBkb19saXN0KCRzb3J0LCAk ZGVsaW0pOw0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHNvcnQpOyAkaWR4Kysp IHsNCgkJCSRzb3J0X2RpciA9IGV4cGxvZGUoJyAnLCAkc29ydFskaWR4XSk7DQoJCQkkZGly ZWN0aW9uID0gJGNvbFJlZiA9ICcnOw0KCQkJaWYgKGNvdW50KCRzb3J0X2RpcikgPD0gMSkg ew0KCQkJCSRzb3J0X2RpclsxXSA9ICJhc2MiOw0KCQkJfQ0KCQkJaWYgKCRydWxlID09ICJz cWwiKSB7DQoJCQkJJGRpcmVjdGlvbiA9ICgkc29ydF9kaXJbMV0gPT0gImRlc2MiKSA/ICcg ZGVzYycgOiAnIGFzYyc7DQoJCQl9IGVsc2Ugew0KCQkJCSRkaXJlY3Rpb24gPSAoJHNvcnRf ZGlyWzFdID09ICJkZXNjIikgPyAkcG9zdFByZWZpeC4nREVTQycgOiAkcG9zdFByZWZpeC4n QVNDJzsNCgkJCX0NCg0KCQkJc3dpdGNoICgkc29ydF9kaXJbMF0pIHsNCgkJCQljYXNlICdy YW5kb20nOg0KCQkJCQkkcnVsZSA9ICJwb3N0IjsNCgkJCQkJaWYgKCRpZHggPT0gMCkgew0K CQkJCQkJJGNsYXVzZVNvcnRbXSA9ICdyYW5kKCknOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJ JHJhbmRzb3J0ID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICdmaXhl ZCc6DQoJCQkJCS8vICdmaXhlZCcgb25seSB3b3JrcyBvbiBpZHMgb3IgY2F0ZWdvcmllcw0K CQkJCQkkZml4ZWRPcmRlciA9ICgkaWQgPT0gJycgJiYgJGNhdGVnb3J5ID09ICcnKSA/IGZh bHNlIDogdHJ1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJZGVmYXVsdDoNCgkJCQkJJGNvbFJlZiA9 IGFycmF5X3NlYXJjaCgkc29ydF9kaXJbMF0sICRmaWVsZE1hcCk7DQoJCQkJCWJyZWFrOw0K CQkJfQ0KCQkJaWYgKCRydWxlID09ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycp IHsNCgkJCQkJJGNsYXVzZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCQl9DQoJ CQl9IGVsc2Ugew0KCQkJCWlmICghJHJhbmRzb3J0KSB7DQoJCQkJCWlmICgkY29sUmVmICE9 ICcnKSB7DQoJCQkJCQkkcG9zdE9yZGVyW10gPSBhcnJheSgiY29sIiA9PiAkY29sUmVmLCAi c29ydCIgPT4gJGRpcmVjdGlvbik7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlp ZiAoY291bnQoJGNsYXVzZVNvcnQpID4gMCkgew0KCQkJJGNsYXVzZSAuPSAnIE9SREVSIEJZ ICcgLiBpbXBsb2RlKCIsIiwkY2xhdXNlU29ydCk7DQoJCX0NCgkJaWYgKCRkZWJ1ZyA+IDAp IHsNCgkJCWVjaG8gIisrIFdIRVJFIENMQVVTRSArKyI7DQoJCQlkbXAoJGNsYXVzZSk7DQoJ CX0NCgkJLy8gVGhlIGRhdGFiYXNlIGZpZWxkcyByZXF1aXJlZA0KCQkkZmllbGRzID0gaW1w bG9kZSgiLCIsIGFycmF5X2tleXMoJGZpZWxkTWFwKSk7DQoNCgkJLy8gVGltZSB0byBncmFi IHRoZSBtYXRjaGluZyByb3dzIGZyb20gdGhlIGRhdGFiYXNlDQoJCSRycyA9IHNhZmVfcm93 cygkZmllbGRzLicsIHR4cF9jYXRlZ29yeS50aXRsZSBBUyBjYXRlZ29yeV90aXRsZScsICd0 eHBfaW1hZ2UsIHR4cF9jYXRlZ29yeScsICd0eHBfY2F0ZWdvcnkubmFtZSA9IHR4cF9pbWFn ZS5jYXRlZ29yeSBBTkQgdHhwX2NhdGVnb3J5LnR5cGU9ImltYWdlIiBBTkQgJyAuJGNsYXVz ZSAuJyBMSU1JVCAwLCcuICRtYXhsaW1pdCwgJGRlYnVnKTsNCgkJbGlzdCgkYWxsSW1hZ2Vz LCAkbnVtUGFnZXMsICR0aHVtUGFnZSwgJG9mZnNldCkgPSBzbWRfZ2V0UGFnZSgkcnMsICRn YWxsSUQsICRsaW1pdCwgJG9mZnNldCwgJHBhZ2luZyk7DQoJfQ0KDQoJLy8gSXMgcG9zdC1v cmRlcmluZyByZXF1aXJlZD8gRG8gaXQNCglpZiAoJHJhbmRzb3J0KSB7DQoJCXNodWZmbGUo JHJzKTsNCgl9IGVsc2UgaWYgKGNvdW50KCRwb3N0T3JkZXIpID4gMCkgew0KCQkvLyBUcmFu c2xhdGUgdGhlIHJvd3MgaW50byBjb2x1bW5zIHRoYXQgY2FuIGJlIHNvcnRlZA0KCQlmb3Jl YWNoKCRycyBhcyAka2V5ID0+ICRyb3cpIHsNCgkJCSRjb2xfaWRbJGtleV0gPSAkcm93Wydp ZCddOw0KCQkJJGNvbF9uYW1lWyRrZXldID0gJHJvd1snbmFtZSddOw0KCQkJJGNvbF9jYXB0 aW9uWyRrZXldID0gJHJvd1snY2FwdGlvbiddOw0KCQkJJGNvbF9hbHRbJGtleV0gPSAkcm93 WydhbHQnXTsNCgkJCSRjb2xfY2F0ZWdvcnlbJGtleV0gPSAkcm93WydjYXRlZ29yeSddOw0K CQkJJGNvbF9kYXRlWyRrZXldID0gJHJvd1snZGF0ZSddOw0KCQkJJGNvbF9leHRbJGtleV0g PSAkcm93WydleHQnXTsNCgkJCSRjb2xfYXV0aG9yWyRrZXldID0gJHJvd1snYXV0aG9yJ107 DQoJCQkkY29sX3dbJGtleV0gPSAkcm93Wyd3J107DQoJCQkkY29sX2hbJGtleV0gPSAkcm93 WydoJ107DQoJCQkkY29sX3RodW1ibmFpbFska2V5XSA9ICRyb3dbJ3RodW1ibmFpbCddOw0K CQl9DQoJCS8vIE1ha2UgdXAgYW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVj dXRlIGl0DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkcG9zdE9yZGVyKTsgJGlk eCsrKSB7DQoJCQkkc29ydGFyZ3NbXSA9ICckY29sXycuJHBvc3RPcmRlclskaWR4XVsnY29s J107DQoJCQkkc29ydGFyZ3NbXSA9ICRwb3N0T3JkZXJbJGlkeF1bJ3NvcnQnXTsNCgkJfQ0K CQkkc29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgnLmltcGxvZGUoIiwgIiwkc29ydGFyZ3Mp LicsICRycyk7JzsNCgkJZXZhbCgkc29ydGl0KTsNCgl9DQoNCgkvLyBJcyBmaXhlZC1vcmRl ciBvdXRwdXQgZGVzaXJlZD8gSWYgc28sIHJlLW9yZGVyIHRoZSAkcnMNCglpZiAoJGZpeGVk T3JkZXIpIHsNCgkJJG9yZGVyZWRSUyA9IEFycmF5KCk7DQoJCSRpZ25vcmVMaXN0ID0gQXJy YXkoKTsNCgkJJHJlbWFpbmluZ1JTID0gQXJyYXkoKTsNCgkJLy8gU3VjayBvdXQgdGhlIGZp eGVkIGl0ZW1zIGZpcnN0LiBJRHMgdGhlbiBjYXRlZ29yaWVzDQoJCWZvciAoJGlkeCA9IDA7 ICRpZHggPCBjb3VudCgkaWRpbmMpOyAkaWR4KyspIHsNCgkJCWZvcmVhY2goJHJzIGFzICRy b3cpIHsNCgkJCQlpZiAoJGlkICYmIGRvUXVvdGUoJHJvd1snaWQnXSkgPT0gJGlkaW5jWyRp ZHhdKSB7DQoJCQkJCSRvcmRlcmVkUlNbXSA9ICRyb3c7DQoJCQkJCSRpZ25vcmVMaXN0W10g PSAkcm93WydpZCddOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJZm9yICgk aWR4ID0gMDsgJGlkeCA8IGNvdW50KCRjYXRpbmMpOyAkaWR4KyspIHsNCgkJCWZvcmVhY2go JHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoJGNhdGVnb3J5ICYmIGRvUXVvdGUoJHJvd1snY2F0 ZWdvcnknXSkgPT0gJGNhdGluY1skaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJTW10gPSAkcm93 Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQl9DQoJCQl9DQoJCX0N CgkJLy8gVGFjayBvbiB0aGUgcmVtYWluaW5nIHJvd3MNCgkJZm9yZWFjaCgkcnMgYXMgJHJv dykgew0KCQkJaWYgKCFpbl9hcnJheSgkcm93WydpZCddLCAkaWdub3JlTGlzdCkpIHsNCgkJ CQkkcmVtYWluaW5nUlNbXSA9ICRyb3c7DQoJCQl9DQoJCX0NCgkJJHJzID0gYXJyYXlfbWVy Z2UoJG9yZGVyZWRSUywgJHJlbWFpbmluZ1JTKTsNCgl9DQoNCgkvLyBHcmFiIHRoZSBwb3J0 aW9uIG9mIHRoZSByZWNvcmQgc2V0IGFjdHVhbGx5IHJlcXVpcmVkIHRvIGl0ZXJhdGUgb3Zl cg0KCSRycyA9IGFycmF5X3NsaWNlKCRycywgJG9mZnNldCwgKCgkZGlyZWN0b3J5KSA/ICRk aXJsaW1pdCA6ICgoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdCkpKTsNCg0KCS8v IEhhbmRsZSB0aHVtYnNpemUgLSBvZiBsaW1pdGVkIHVzZSBub3cgYnV0IHN0aWxsIGF2YWls YWJsZQ0KCSR0aHVtYldpZHRoID0gJHRodW1iSGVpZ2h0ID0gJyc7DQoJJHRodW1iV1VuaXRz ID0gJHRodW1iSFVuaXRzID0gJyc7DQoJaWYgKCR0aHVtYnNpemUpIHsNCgkJJHRodW1iU2l6 ZXMgPSBkb19saXN0KCR0aHVtYnNpemUsICRkZWxpbSk7DQoJCWlmIChjb3VudCgkdGh1bWJT aXplcykgPT0gMSkgew0KCQkJJHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSBlcmVnX3Jl cGxhY2UoIlteMC05XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdW5pdHMgPSBlcmVn X3JlcGxhY2UoIlswLTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0 cyA9ICR0aHVtYkhVbml0cyA9ICgkdW5pdHMgPT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVu aXRzOw0KCQl9IGVsc2Ugew0KCQkJJHRodW1iV2lkdGggPSBlcmVnX3JlcGxhY2UoIlteMC05 XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJIZWlnaHQgPSBlcmVnX3JlcGxh Y2UoIlteMC05XSIsICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJCQkkdW5pdHMgPSBlcmVnX3Jl cGxhY2UoIlswLTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9 ICgkdW5pdHMgPT0gJycgJiYgJHRodW1iV2lkdGggIT0gJycpID8gJHRodW1iV1VuaXRzIDog JHVuaXRzOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcnLCAkdGh1bWJT aXplc1sxXSk7DQoJCQkkdGh1bWJIVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYkhl aWdodCAhPSAnJykgPyAkdGh1bWJIVW5pdHMgOiAkdW5pdHM7DQoJCX0NCgl9DQoNCgkvLyBD b2xsYXRpb24gZGVmZXJzIHBhcnNpbmcgdGhlIGZvcm0gZm9yIGVhY2ggcmV0dXJuZWQgaXRl bS4NCgkvLyBJbnN0ZWFkIGl0IG91dHB1dHMgdGhlIGRhdGEgYXMgYSBsaXN0IGF0IHRoZSBl bmQgKGl0ZW1zIG1heSBiZSBpbmRpdmlkdWFsbHkgcXVvdGVkIG9yIGV4dHJhY3RlZCBpZiBy ZXF1aXJlZCkNCgkvL1RPRE8gOiBBZGQgQUxXQVlTIHN3aXRjaCBhcyBhIHNob3J0Y3V0IHRv IHNwZWNpZnkgdGhhdCBhbGwgbWF0Y2hpbmcgaXRlbXMgKHJlZ2FyZGxlc3Mgb2YgIzEsICMy LCAjMyBldGMpIGFyZSB0byBiZSBxdW90ZWQNCglpZiAoJGNvbGxhdGUpIHsNCgkJJGRibFF1 b3RlID0gJHNnbFF1b3RlID0gYXJyYXkoJ1NNRE5PTkUnKTsNCgkJJGNvbGxhdGVPcHRzID0g ZG9fbGlzdCgkY29sbGF0ZSwgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbGxhdGVPcHRzIGFz ICRvcHRpb24pIHsNCgkJCSRpbmRleGVzID0gZG9fbGlzdCgkb3B0aW9uLCAkcGFyYW1kZWxp bSk7DQoJCQkkY29sVHlwZSA9IGFycmF5X3NoaWZ0KCRpbmRleGVzKTsNCgkJCS8vIFN1cHBs eWluZyAncXVvdGUnIG9uIGl0cyBvd24gd2lsbCBlbXB0eSB0aGUgcmVsZXZhbnQgYXJyYXks IGltcGx5aW5nICJBTEwiIGZpZWxkcyBhcmUgdG8gYmUgcXVvdGVkDQoJCQlzd2l0Y2ggKCRj b2xUeXBlKSB7DQoJCQkJY2FzZSAic2dscXVvdGUiOg0KCQkJCQkkc2dsUXVvdGUgPSAkaW5k ZXhlczsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiZGJscXVvdGUiOg0KCQkJCWNhc2UgInF1 b3RlIjoNCgkJCQkJJGRibFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFrOw0KCQkJfQ0K CQl9DQoJfQ0KDQoJLy8gQ29tYm9zIGFyZSB1c2VyLWRlZmluZWQgY29tYmluYXRpb25zIG9m IHJlcGxhY2VtZW50IG1vZGlmaWVycyAoZS5nLiBpZGV4dDoge2lkfXtleHR9LCAuLi4NCgkk Y29tYm9zID0gYXJyYXkoKTsNCglpZiAoJGNvbWJvKSB7DQoJCSRjb21ibyA9IGRvX2xpc3Qo JGNvbWJvLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29tYm8gYXMgJG5ld0RlZikgew0KCQkJ bGlzdCgkZGVmUGFydHMsICR1bndhbnRlZCkgPSBzbWRfZG9MaXN0KCRuZXdEZWYsIGZhbHNl LCAnJywgZmFsc2UsICRwYXJhbWRlbGltKTsNCgkJCSRkZWZOYW1lID0gInsiLmFycmF5X3No aWZ0KCRkZWZQYXJ0cykuIn0iOw0KCQkJJGNvbWJvc1skZGVmTmFtZV0gPSAkZGVmUGFydHNb MF07DQoJCX0NCgl9DQoJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJZWNobyAiKysgQ09NQk9zICsr IjsNCgkJZG1wKCRjb21ib3MpOw0KCX0NCgkvLyBDb25zdHJ1Y3QgdGhlIG91dHB1dA0KCSR0 aHVtYm91dCA9IGFycmF5KCk7DQoJJGdyb3Vwb3V0ID0gYXJyYXkoKTsNCgkkbmF2b3V0ID0g YXJyYXkoKTsNCgkkb3V0ID0gYXJyYXkoKTsNCgkkY29sbGF0aW9ucyA9IGFycmF5KCk7DQoJ JGNoSWRlbnRpZmllciA9ICgkdGh1bWJjaGFuZ2UpID8gImNoYW5nZWQiIDogIm9uY2hhbmdl IjsgLy8gVE9ETzogRml4IHdoZW4gJHRodW1iY2hhbmdlIGlzIHJlbW92ZWQNCg0KCWlmICgk ZGVidWcgPiAyKSB7DQoJCWVjaG8gIisrIFJFQ09SRCBTRVQgKysiOw0KCQlkbXAoJHJzKTsN Cgl9DQoJaWYgKCRkZWJ1ZyA+IDMpIHsNCgkJZWNobyAiKysgQVZBSUxBQkxFICc/JyBWQVJT ICsrIjsNCgkJZG1wKCRwcmV0ZXh0KTsNCgkJZG1wKCR0aGlzYXJ0aWNsZSk7DQoJfQ0KDQoJ aWYoJHJzKSB7DQoJCSRpZHggPSAwOw0KCQkkY3RyID0gMTsNCgkJJHRodW1iSWR4ID0gMDsN CgkJJHRodW1iQ3RyID0gMTsNCgkJJG51bUltYWdlcyA9IGNvdW50KCRycyk7DQoJCSRyZXBh Z2VtZW50cyA9IGFycmF5KCk7DQoNCgkJLy8gU2V0IHVwIHRoZSBwYWdpbmcgZmVhdHVyZXMg aWYgcmVxdWlyZWQNCgkJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCQkkbmV4 dCA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSAhPSAkbnVtUGFnZXMpOw0KCQkJJHBy ZXYgPSAoJG51bVBhZ2VzID4gMSAmJiAkdGh1bVBhZ2UgPiAxKTsNCg0KCQkJLy8gUmVwbGFj ZSBhbnkgcGFnaW5nIGluZm8gaW4gdGhlIHF1ZXJ5IHN0cmluZw0KCQkJJHByZXZQYWdlID0g c21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBh Z2UtMSk7DQoJCQkkbmV4dFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3Rf dXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZSsxKTsNCgkJCSR0aGlzUGFnZSA9IHNtZF9hZGRR U1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlKTsNCgkJ CSRmaXJzdFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRn YWxsSUQsIDEpOw0KCQkJJGxhc3RQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1 ZXN0X3VyaSddLCAkZ2FsbElELCAkbnVtUGFnZXMpOw0KDQoJCQkvLyBMYWJlbHMgY2FuIGJl IHNwZWNpZmllZCBpbiB0aGUgcmVwbGFjZW1lbnQgdGFnIGFmdGVyIGEgcGFyYW1kZWxpbS4N CgkJCS8vICdlYXJsaWVyJyBhbmQgJ2xhdGVyJyBkb24ndCBoYXZlIGxhYmVscy4gQW55dGhp bmcgc3BlY2lmaWVkIGFmdGVyIHBhcmFtZGVsaW0gaXMgdGhlIG1heCBudW1iZXIgb2YgcGFn ZXMgdG8gc2hvdzsgZW1wdHkgPSBhbGwgcGFnZXMNCgkJCSRsYWJlbCA9IGFycmF5KA0KCQkJ CQkne25hdmZpcnN0fScgPT4gJ0ZpcnN0JywNCgkJCQkJJ3tuYXZwcmV2fScgPT4gJyZsYXF1 bzsnLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAnJywNCgkJCQkJJ3tuYXZ0aGlzfScgPT4g JHRodW1QYWdlLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9PiAkdGh1bVBhZ2UsDQoJCQkJCSd7 bmF2bGF0ZXJ9JyA9PiAnJywNCgkJCQkJJ3tuYXZuZXh0fScgPT4gJyZyYXF1bzsnLA0KCQkJ CQkne25hdmxhc3R9JyA9PiAnTGFzdCcsDQoJCQkJKTsNCg0KCQkJJGxhYmVsUkUgPSAnL1x7 KG5hdlthLXpdKyknLiRwYXJhbWRlbGltLicoLis/KVx9Lyc7DQoJCQkkbnVtTGFiZWxzID0g cHJlZ19tYXRjaF9hbGwoJGxhYmVsUkUsICRwYWdlZm9ybSwgJGxhYmVscyk7DQoNCgkJCWZv ciAoJGxhYmVsQ3RyID0gMDsgJGxhYmVsQ3RyIDwgJG51bUxhYmVsczsgJGxhYmVsQ3RyKysp IHsNCgkJCQkkZmllbGRuYW1lID0gJ3snLiRsYWJlbHNbMV1bJGxhYmVsQ3RyXS4nfSc7DQoJ CQkJJGxhYmVsWyRmaWVsZG5hbWVdID0gJGxhYmVsc1syXVskbGFiZWxDdHJdOw0KCQkJCSRw YWdlZm9ybSA9IHN0cl9yZXBsYWNlKCRsYWJlbHNbMF1bJGxhYmVsQ3RyXSwgJ3snLiRsYWJl bHNbMV1bJGxhYmVsQ3RyXS4nfScsICRwYWdlZm9ybSk7DQoJCQl9DQoNCgkJCWlmICgkZGVi dWcgPiAxKSB7DQoJCQkJZWNobyAiKysgUEFHSU5HIExBQkVMUyArKyI7DQoJCQkJZG1wKCRs YWJlbCk7DQoJCQl9DQoNCgkJCS8vIEdlbmVyYXRlICdlYXJsaWVyJyBhbmQgJ2xhdGVyJyBs aXN0cw0KCQkJJG51bUVhcmxpZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2ZWFybGllcn0nXSk7 DQoJCQkkbnVtTGF0ZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2bGF0ZXJ9J10pOw0KCQkJJG51 bUVhcmxpZXIgPSAoJG51bUVhcmxpZXIgJiYgKCR0aHVtUGFnZS0kbnVtRWFybGllciA+IDEp KSA/ICRudW1FYXJsaWVyIDogJHRodW1QYWdlLTE7DQoJCQkkbnVtTGF0ZXIgPSAoJG51bUxh dGVyICYmICgkdGh1bVBhZ2UrJG51bUxhdGVyIDwgJG51bVBhZ2VzKSkgPyAkbnVtTGF0ZXIg OiAkbnVtUGFnZXMtJHRodW1QYWdlOw0KCQkJJG5hdkVhcmxpZXIgPSAkbmF2TGF0ZXIgPSBh cnJheSgpOw0KCQkJZm9yICgkY29kID0gJHRodW1QYWdlLSRudW1FYXJsaWVyOyAkY29kIDwg JHRodW1QYWdlOyAkY29kKyspIHsNCgkJCQkkbmF2RWFybGllcltdID0gJzxhIGhyZWY9Iicu c21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkY29kKS4n Ij4nLiRjb2QuJzwvYT4nOw0KCQkJfQ0KCQkJZm9yICgkY29kID0gJHRodW1QYWdlKzE7ICRj b2QgPD0gJHRodW1QYWdlKyRudW1MYXRlcjsgJGNvZCsrKSB7DQoJCQkJJG5hdkxhdGVyW10g PSAnPGEgaHJlZj0iJy5zbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRn YWxsSUQsICRjb2QpLiciPicuJGNvZC4nPC9hPic7DQoJCQl9DQoJCQkkbmF2RWFybGllciA9 IGRvV3JhcCgkbmF2RWFybGllciwgJycsICRuYXZicmVhaywgJycpOw0KCQkJJG5hdkxhdGVy ID0gZG9XcmFwKCRuYXZMYXRlciwgJycsICRuYXZicmVhaywgJycpOw0KDQoJCQkvLyBNYWtl IHVwIHRoZSByZXBhZ2VtZW50cyBhcnJheSBmb3IgcGFnZWZvcm0NCgkJCSRyZXBhZ2VtZW50 cyA9IGFycmF5KA0KCQkJCQkne25hdmZpcnN0fScgPT4gKCgkcHJldikgPyBkb1RhZygnPGEg aHJlZj0iJy4kZmlyc3RQYWdlLiciPicuJGxhYmVsWyd7bmF2Zmlyc3R9J10uJzwvYT4nLCAk bmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2Zmlyc3R9J10sICRuYXZicmVhaywgJGVt cHR5Y2xhc3MpKSwNCgkJCQkJJ3tuYXZwcmV2fScgPT4gKCgkcHJldikgPyBkb1RhZygnPGEg aHJlZj0iJy4kcHJldlBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZwcmV2fSddLic8L2E+JywgJG5h dmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdnByZXZ9J10sICRuYXZicmVhaywgJGVtcHR5 Y2xhc3MpKSwNCgkJCQkJJ3tuYXZlYXJsaWVyfScgPT4gJG5hdkVhcmxpZXIsDQoJCQkJCSd7 bmF2dGhpc30nID0+IGRvVGFnKCRsYWJlbFsne25hdnRoaXN9J10sICRuYXZicmVhaywgJ2N1 cnJlbnQgJy4kZW1wdHljbGFzcyksDQoJCQkJCSd7bmF2dGhpc3VybH0nID0+IGRvVGFnKCc8 YSBocmVmPSInLiR0aGlzUGFnZS4nIj4nLiRsYWJlbFsne25hdnRoaXN1cmx9J10uJzwvYT4n LCAkbmF2YnJlYWssICdjdXJyZW50JyksDQoJCQkJCSd7bmF2bGF0ZXJ9JyA9PiAkbmF2TGF0 ZXIsDQoJCQkJCSd7bmF2bmV4dH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9Iicu JG5leHRQYWdlLiciPicuJGxhYmVsWyd7bmF2bmV4dH0nXS4nPC9hPicsICRuYXZicmVhaykg OiBkb1RhZygkbGFiZWxbJ3tuYXZuZXh0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSks DQoJCQkJCSd7bmF2bGFzdH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9IicuJGxh c3RQYWdlLiciPicuJGxhYmVsWyd7bmF2bGFzdH0nXS4nPC9hPicsICRuYXZicmVhaykgOiBk b1RhZygkbGFiZWxbJ3tuYXZsYXN0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJ CQkJCSd7bmF2dGhpc3BhZ2V1cmx9JyA9PiAkdGhpc1BhZ2UsDQoJCQkJCSd7bmF2bmV4dHBh Z2V1cmx9JyA9PiAoKCRuZXh0KSA/ICRuZXh0UGFnZSA6ICcnKSwNCgkJCQkJJ3tuYXZwcmV2 cGFnZXVybH0nID0+ICgoJHByZXYpID8gJHByZXZQYWdlIDogJycpLA0KCQkJCQkne25hdmZp cnN0cGFnZXVybH0nID0+ICRmaXJzdFBhZ2UsDQoJCQkJCSd7bmF2bGFzdHBhZ2V1cmx9JyA9 PiAkbGFzdFBhZ2UsDQoJCQkJCSd7dG90YWxpbWFnZXN9JyA9PiAkbnVtSW1hZ2VzLA0KCQkJ CQkne3RvdGFscGFnZXN9JyA9PiAkbnVtUGFnZXMsDQoJCQkJCSd7bWF4aW1hZ2VzfScgPT4g JGFsbEltYWdlcywNCgkJCQkpOw0KDQoJCQkJLy8gUGVyZm9ybSB0aGUgc3Vic3RpdHV0aW9u cw0KCQkJCSRuYXZvdXRbXSA9IHBhcnNlKHN0cnRyKCRwYWdlZm9ybSwgJHJlcGFnZW1lbnRz KSk7DQoJCX0NCg0KCQkvLyBGb3IgZXZlcnkgaW1hZ2UgaW4gdGhlIGdhbGxlcnkuLi4NCgkJ Zm9yZWFjaCgkcnMgYXMgJGtleSA9PiAkcm93KSB7DQoJCQlpZiAoJGRpcmVjdG9yeSkgew0K CQkJCSR1cmxQYXRoID0gJHJvd1sncGF0aCddLicvJzsNCgkJCX0gZWxzZSB7DQoJCQkJJHVy bFBhdGggPSBodS4kaW1nX2Rpci4nLyc7DQoJCQl9DQoJCQkkdGhlVGh1bWIgPSAkdXJsUGF0 aCAuICRyb3dbJ2lkJ10gLiAkdGh1bWJtb2QgLiAkcm93WydleHQnXTsNCgkJCSRmdWxsU2l6 ZSA9ICR1cmxQYXRoIC4gJHJvd1snaWQnXSAuICRmdWxsbW9kIC4kcm93WydleHQnXTsNCg0K CQkJLy8gRG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGh1bWIgY291bnRlciB0aGlzIHRpbWU/ DQoJCQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsN CgkJCQlpZiAoJHJvd1skcmVzZXRPcHRdICE9ICRyZXNldFZhbCkgew0KCQkJCQkkdGh1bWJJ ZHggPSAwOw0KCQkJCQkkdGh1bWJDdHIgPSAxOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9 DQoNCgkJCS8vIElzIGEgdGh1bWIvdGV4dCBvYmplY3QgcmVxdWlyZWQgdGhpcyB0aW1lPw0K CQkJJG9iamVjdCA9ICcnOw0KCQkJaWYgKCR0aHVtYklkeCA+PSAkdGh1bWJvZmZzZXQgJiYg JHRodW1iSWR4IDwgJHRodW1ib2Zmc2V0KyR0aHVtYmxpbWl0KSB7DQoJCQkJc3dpdGNoICgk dHlwZSkgew0KCQkJCQljYXNlICdpbWFnZSc6DQoJCQkJCQkkb2JqZWN0ID0gKCR0ZXh0KSA/ ICR0ZXh0IDogJzxpbWcgc3JjPSInLiR0aGVUaHVtYi4nIicgLigoJHJvd1snYWx0J10pID8g JyBhbHQ9IicuJHJvd1snYWx0J10uJyInIDogJycpIC4oKCR0aHVtYldpZHRoKSA/ICcgd2lk dGg9IicuJHRodW1iV2lkdGguJHRodW1iV1VuaXRzLiciJyA6ICcnKSAuKCgkdGh1bWJIZWln aHQpID8gJyBoZWlnaHQ9IicuJHRodW1iSGVpZ2h0LiR0aHVtYkhVbml0cy4nIicgOiAnJykg LicgLz4nOw0KCQkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBDb25zdHJ1Y3Qg dGhlIHJlcGxhY2VtZW50IGFycmF5DQoJCQkkcmVwbGFjZW1lbnRzID0gYXJyYXkoDQoJCQkJ CSd7aWR9JyA9PiAkcm93WydpZCddLA0KCQkJCQkne25hbWV9JyA9PiAkcm93WyduYW1lJ10s DQoJCQkJCSd7ZXh0fScgPT4gJHJvd1snZXh0J10sDQoJCQkJCSd7Y2F0ZWdvcnl9JyA9PiAk cm93WydjYXRlZ29yeSddLA0KCQkJCQkne2NhdGVnb3J5X3RpdGxlfScgPT4gJHJvd1snY2F0 ZWdvcnlfdGl0bGUnXSwNCgkJCQkJJ3thdXRob3J9JyA9PiAkcm93WydhdXRob3InXSwNCgkJ CQkJJ3toYXN0aHVtYn0nID0+ICRyb3dbJ3RodW1ibmFpbCddLA0KCQkJCQkne3VybH0nID0+ ICRmdWxsU2l6ZSwNCgkJCQkJJ3t0aHVtYnVybH0nID0+ICR0aGVUaHVtYiwNCgkJCQkJJ3tp bWFnZXBhdGh9JyA9PiAkdXJsUGF0aCwNCgkJCQkJJ3tpbWFnZWRlZn0nID0+IGJhc2VuYW1l KCRmdWxsU2l6ZSksDQoJCQkJCSd7dGh1bWJkZWZ9JyA9PiBiYXNlbmFtZSgkdGhlVGh1bWIp LA0KCQkJCQkne2FsdH0nID0+ICRyb3dbJ2FsdCddLA0KCQkJCQkne3RpdGxlfScgPT4gJHJv d1snY2FwdGlvbiddLA0KCQkJCQkne3RodW1id2lkdGh9JyA9PiAkdGh1bWJXaWR0aCwNCgkJ CQkJJ3t0aHVtYmhlaWdodH0nID0+ICR0aHVtYkhlaWdodCwNCgkJCQkJJ3t0aHVtYnd1bml0 c30nID0+ICR0aHVtYldVbml0cywNCgkJCQkJJ3t0aHVtYmh1bml0c30nID0+ICR0aHVtYkhV bml0cywNCgkJCQkJJ3t3aWR0aH0nID0+ICRyb3dbJ3cnXSwNCgkJCQkJJ3toZWlnaHR9JyA9 PiAkcm93WydoJ10sDQoJCQkJCSd7ZGF0ZX0nID0+ICRyb3dbJ2RhdGUnXSwNCgkJCQkJJ3tv YmplY3R9JyA9PiAkb2JqZWN0LA0KCQkJCQkne2dhbGxlcnlpZH0nID0+ICRnYWxsSUQsDQoJ CQkJCSd7aW5kZXh9JyA9PiAkaWR4LA0KCQkJCQkne2NvdW50ZXJ9JyA9PiAkY3RyLA0KCQkJ CQkne3RodW1iaW5kZXh9JyA9PiAkdGh1bWJJZHgsDQoJCQkJCSd7dGh1bWJjb3VudGVyfScg PT4gJHRodW1iQ3RyLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51bUltYWdlcywNCgkJ CQkJJ3ttYXhpbWFnZXN9JyA9PiAkYWxsSW1hZ2VzLA0KCQkJCSk7DQoNCgkJCS8vIEFwcGVu ZCBhbnkgY2hhbmdlZCBpdGVtcyB0aGF0IGFyZSByZXF1aXJlZA0KCQkJJGVuZHRhZyA9IGZh bHNlOw0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFs KSB7DQoJCQkJJHJlcGxhY2VtZW50c1sneycuJGNoSWRlbnRpZmllci4kcGFyYW1kZWxpbS4k cmVzZXRPcHQuJ30nXSA9ICgkdGh1bWJJZHggPT0gMCkgPyBkb1RhZygkcm93WyRyZXNldE9w dF0sICRvbmNoYW5nZXdyYXB0YWcsICRvbmNoYW5nZWNsYXNzKSA6ICcnOw0KCQkJCS8vIERv IGEgc25lYWt5ICh5dWspIGxvb2thaGVhZA0KCQkJCWlmIChpc3NldCgkcnNbJGtleSsxXSkp IHsNCgkJCQkJaWYoJHJzWyRrZXkrMV1bJHJlc2V0T3B0XSAhPSAkcm93WyRyZXNldE9wdF0p IHsNCgkJCQkJCSRlbmR0YWcgPSB0cnVlOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJ JGVuZHRhZyA9IHRydWU7IC8vIExhc3QgaW1hZ2UNCgkJCQl9DQoJCQl9DQoNCgkJCSRyZXBs YWNlbWVudHNbJ3tncm91cHRhZ2VuZH0nXSA9ICgkZ3JvdXB0YWcgJiYgJGVuZHRhZykgPyAn PC8nIC4gJGdyb3VwdGFnIC4gJz4nIDogJyc7DQoJCQkkcmVwbGFjZW1lbnRzWyd7Z3JvdXB0 YWdzdGFydH0nXSA9ICgkZ3JvdXB0YWcgJiYgJHRodW1iSWR4ID09IDApID8gJzwnIC4gJGdy b3VwdGFnIC4gKCgkZ3JvdXBjbGFzcykgPyAnIGNsYXNzPSInLiRncm91cGNsYXNzLiciJyA6 ICcnKSAuICc+JyA6ICcnOw0KDQoJCQkvLyBBcHBlbmQgYW55IGNvbWJvcw0KCQkJZm9yZWFj aCAoJGNvbWJvcyBhcyAkZGVmTmFtZSA9PiAkbmV3RGVmKSB7DQoJCQkJaWYgKCFhcnJheV9r ZXlfZXhpc3RzKCRkZWZOYW1lLCAkcmVwbGFjZW1lbnRzKSkgew0KCQkJCQkkcmVwbGFjZW1l bnRzWyRkZWZOYW1lXSA9IHN0cnRyKCRuZXdEZWYsICRyZXBsYWNlbWVudHMpOw0KCQkJCX0N CgkJCX0NCg0KCQkJLy8gU29sb3MgYXJlIGl0ZW1zIGluIHRoZSBvdXRwdXQgZm9ybSB0aGF0 IHJlcXVpcmUgZGV0YWlscyBmcm9tIGEgc3BlY2lmaWMgcm93LiBVc2VmdWwgb25seSBpbiBj b2xsYXRpb24NCgkJCS8vIG1vZGUsIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSByZXBsYWNlbWVu dHMgYXJyYXkgb24gYW4gYXMtbmVlZGVkIGJhc2lzIHRvIHNhdmUgc3BhY2UvdGltZQ0KCQkJ JHNvbG9SRSA9ICcvXHsoW2EtejAtOV0rKSMnLiRjdHIuJ1x9Lyc7DQoJCQkkbnVtU29sb3Mg PSBwcmVnX21hdGNoX2FsbCgkc29sb1JFLCAkdGhpbmcsICRzb2xvcyk7DQoJCQlmb3IgKCRz b2xvQ3RyID0gMDsgJHNvbG9DdHIgPCAkbnVtU29sb3M7ICRzb2xvQ3RyKyspIHsNCgkJCQkk ZmllbGRuYW1lID0gJ3snLiRzb2xvc1sxXVskc29sb0N0cl0uJyMnLiRjdHIuJ30nOw0KCQkJ CSRncmFiZmllbGQgPSAneycuJHNvbG9zWzFdWyRzb2xvQ3RyXS4nfSc7DQoJCQkJJHJlcGxh Y2VtZW50c1skZmllbGRuYW1lXSA9ICRyZXBsYWNlbWVudHNbJGdyYWJmaWVsZF07DQoJCQl9 DQoNCgkJCS8vIEFkZCB0aGUgbmF2aWdhdGlvbiBpdGVtcyBpZiB0aGV5J3JlIGRlZmluZWQN CgkJCWlmIChjb3VudCgkcmVwYWdlbWVudHMpID4gMCkgew0KCQkJCSRyZXBsYWNlbWVudHMg PSBhcnJheV9tZXJnZSgkcmVwYWdlbWVudHMsICRyZXBsYWNlbWVudHMpOw0KCQkJfQ0KDQoJ CQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFJFUExBQ0VNRU5UUyA6IElNQUdF ICIuJGN0ci4iICsrIjsNCgkJCQlkbXAoJHJlcGxhY2VtZW50cyk7DQoJCQl9DQoNCgkJCS8v IEluIGNvbGxhdGUgbW9kZSB0aGUgZm9ybSBpcyBvbmx5IHBhcnNlZCBhdCB0aGUgZW5kOiBi dWlsZCBhIGNvbGxvc2FsIG11bHRpLWRpbWVuc2lvbiBhcnJheSBvZiBhbGwgaXRlbXMgaGVy ZQ0KCQkJaWYgKCRjb2xsYXRlKSB7DQoJCQkJZm9yZWFjaCAoJHJlcGxhY2VtZW50cyBhcyAk ZGVmTmFtZSA9PiAkZGVmVmFsKSB7DQoJCQkJCSRjb2xsYXRpb25zWyRkZWZOYW1lXVtdID0g JGRlZlZhbDsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCSR0aHVtYm91dFtdID0gcGFyc2Uo c3RydHIoJHRoaW5nLCAkcmVwbGFjZW1lbnRzKSk7DQoJCQl9DQoNCgkJCS8vIEtlZXAgdHJh Y2sgb2YgdGhlIGN1cnJlbnQgdmFsdWVzIHNvIHdlIGtub3cgaWYgdGhleSBjaGFuZ2UgbmV4 dCB0aW1lDQoJCQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRW YWwpIHsNCgkJCQkkcmVzZXRPcHRzWyRyZXNldE9wdF0gPSAkcm93WyRyZXNldE9wdF07DQoJ CQl9DQoJCQkkdGh1bWJJZHgrKzsNCgkJCSR0aHVtYkN0cisrOw0KCQkJJGlkeCsrOw0KCQkJ JGN0cisrOw0KCQl9DQoJCWlmICgkY29sbGF0ZSkgew0KCQkJZm9yZWFjaCAoJGNvbGxhdGlv bnMgYXMgJGl0ZW0gPT4gJGxpc3QpIHsNCgkJCQkvLyBRdW90ZSB0aGUgbGlzdHMgaWYgcmVx dWlyZWQNCgkJCQkkbGlzdCA9IChlbXB0eSgkZGJsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVt LCAkZGJsUXVvdGUpKSA/IGRvQXJyYXkoJGxpc3QsICdzbWRfZG9EYmxRdW90ZScpIDogJGxp c3Q7DQoJCQkJJGxpc3QgPSAoZW1wdHkoJHNnbFF1b3RlKSB8fCBpbl9hcnJheSgkaXRlbSwg JHNnbFF1b3RlKSkgPyBkb0FycmF5KCRsaXN0LCAnZG9RdW90ZScpIDogJGxpc3Q7DQoJCQkJ JGNvbGxhdGlvbnNbJGl0ZW1dID0gaW1wbG9kZSgkZGVsaW0sICRsaXN0KTsNCgkJCX0NCgkJ CWlmICgkZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgQ09MTEFUSU9OUyArKyI7DQoJCQkJ ZG1wKCRjb2xsYXRpb25zKTsNCgkJCX0NCgkJCSR0aHVtYm91dFtdID0gcGFyc2Uoc3RydHIo JHRoaW5nLCAkY29sbGF0aW9ucykpOw0KCQl9DQoNCgkJLy8gVGFjayBvbiB0aGUgcGFnaW5n IGZyb20gZWFybGllciBpZiBpdCdzIHRvIGdvIGFmdGVyd2FyZHMNCgkJaWYgKCgkbGltaXQg PiAwKSAmJiAkcGFnaW5nKSB7DQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisr IFBBR0lORyBSRVBMQUNFTUVOVFMgKysiOw0KCQkJCWRtcCgkcmVwYWdlbWVudHMpOw0KCQkJ fQ0KCQl9DQoJfQ0KDQoJLy8gQWRkIHRoZSBwYWdpbmcgdG8gdGhlIG91dHB1dCBpZiBpdCdz IHRvIGdvIGFib3ZlIHRoZSB0aHVtYnMNCglpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcp IHsNCgkJaWYgKGluX2FycmF5KCJhYm92ZSIsICRwYWdlb3V0KSkgew0KCQkJJG91dFtdID0g ZG9XcmFwKCRuYXZvdXQsICRuYXZ3cmFwdGFnLCAnJywgJG5hdmNsYXNzKTsNCgkJfQ0KCX0N Cg0KCSRvdXRbXSA9IGRvV3JhcCgkdGh1bWJvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFz cyk7DQoNCglpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJaWYgKGluX2FycmF5 KCJiZWxvdyIsICRwYWdlb3V0KSkgew0KCQkJJG91dFtdID0gZG9XcmFwKCRuYXZvdXQsICRu YXZ3cmFwdGFnLCAnJywgJG5hdmNsYXNzKTsNCgkJfQ0KCX0NCg0KCWlmICgkZGVidWcgPiAy KSB7DQoJCWVjaG8gIisrIEZJTkFMIE9VVFBVVCArKyI7DQoJCWRtcCgkb3V0KTsNCgl9DQoN CglyZXR1cm4gam9pbigiICIsICRvdXQpOw0KfQ0KDQovLyBSZXR1cm4gYW4gZXhwYW5kZWQg bGlzdCBvZiBpdGVtczoNCi8vIDEpIEFueXRoaW5nIGNvbnRhaW5pbmcgJz8nIG9yICchJyBp cyBjaGVja2VkIGZvciBhIG1hdGNoIHdpdGggYSBUWFAgZmllbGQNCi8vIDIpIEFueSByYW5n ZXMgb2YgaXRlbXMgYXJlIGV4cGFuZGVkIChlLmcuIDQtNyA9IDQsNSw2LDcpDQovLyAzKSBU WFAgZmllbGRzIG1heSB0aGVtc2VsdmVzIGJlIGxpc3RzIG9yIHJhbmdlcw0KLy8gNCkgQW55 dGhpbmcgdGhhdCBpcyBub3QgYSBUWFAgZmllbGQgaXMgdXNlZCB2ZXJiYXRpbQ0KLy8gNSkg VGhlIGl0ZW1zIGFyZSByZXR1cm5lZCBhcyAyIGxpc3RzOyBpbmNsdXNpb24gYW5kIGV4Y2x1 c2lvbg0KLy8gQXJnczoNCi8vICBsc3QgPSB0aGUgbGlzdCBhcyBhIGRlbGltaXRlZCBzdHJp bmcNCi8vICBybmcgPSB3aGV0aGVyIHRvIGFsbG93IHJhbmdlcyBvciBub3QgKGJvb2wpDQov LyAgc3ViID0gdGhlIHR5cGUgb2Ygc3ViY2F0ZWdvcnkgdG8gdHJhdmVyc2UgKGltYWdlLCBm aWxlLCBsaW5rLCBhcnRpY2xlLCBub25lPSIiKSBhbmQgaG93IG1hbnkgbGV2ZWxzIHRvIGdv IGRvd24gKGUuZy4gaW1hZ2U6MikNCi8vICBxdGUgPSB3aGV0aGVyIHRvIHF1b3RlIGVhY2gg aXRlbSBpbiB0aGUgYXJyYXkgb3Igbm90IChib29sKQ0KLy8gIGRsbSA9IHRoZSBkZWxpbWl0 ZXIgKHN0cmluZykNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJzbWRfZG9MaXN0IikpIHsNCmZ1 bmN0aW9uIHNtZF9kb0xpc3QoJGxzdCwgJHJuZz10cnVlLCAkc3ViPSIiLCAkcXRlPXRydWUs ICRkbG09IiwiKSB7DQoJZ2xvYmFsICR0aGlzYXJ0aWNsZSwgJHByZXRleHQ7DQoNCgkkaW5j ID0gJGV4YyA9IGFycmF5KCk7DQoJJGxzdCA9IGRvX2xpc3QoJGxzdCwgJGRsbSk7DQoJJG1v ZFJFID0gJy8oXD98XCEpKFtBLVphLXowLTlfXC0gXSspLyc7DQoJZm9yZWFjaCAoJGxzdCBh cyAkaXRlbSkgew0KCQkkbW9kID0gMDsgLy8gMCA9IGluY2x1ZGUsIDEgPSBleGNsdWRlDQoJ CSRudW1Nb2RzID0gcHJlZ19tYXRjaF9hbGwoJG1vZFJFLCAkaXRlbSwgJG1vZHMpOw0KDQoJ CWZvciAoJG1vZEN0ciA9IDA7ICRtb2RDdHIgPCAkbnVtTW9kczsgJG1vZEN0cisrKSB7DQoJ CQkvLyBtb2QgInR5cGUiIGlzIGdvdmVybmVkIGJ5IHRoZSBmaXJzdCBvbmUgZm91bmQgb25s eS4gaS5lLiBpZiAiYXJ0aWNsZS0/YyFzIiB3YXMgdXNlZCBpbiBvbmUgZmllbGQNCgkJCS8v IGl0IHdvdWxkIGJlIGFuICJpbmNsdWRlIiBvZiB0aGUgd29yZCAiYXJ0aWNsZS0iIHBsdXMg dGhlIGNhdGVnb3J5IGFuZCBzZWN0aW9uIGNvbmNhdGVuYXRlZA0KCQkJJG1vZCA9ICgkbW9k c1sxXVswXSA9PT0gIiEiKSA/IDEgOiAwOw0KCQkJJG1vZENoYXIgPSAkbW9kc1sxXVskbW9k Q3RyXTsNCgkJCSRtb2RJdGVtID0gdHJpbSgkbW9kc1syXVskbW9kQ3RyXSk7DQoJCQkkbG93 aXRlbSA9IHN0cnRvbG93ZXIoJG1vZEl0ZW0pOw0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMo JGxvd2l0ZW0sICRwcmV0ZXh0KSkgew0KCQkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENo YXIuJG1vZEl0ZW0sICRwcmV0ZXh0WyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQkJfSBlbHNlIGlm IChpc3NldCgkdGhpc2FydGljbGVbJGxvd2l0ZW1dKSkgew0KCQkJCSRpdGVtID0gc3RyX3Jl cGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICR0aGlzYXJ0aWNsZVskbG93aXRlbV0sICRpdGVt KTsNCgkJCX0gZWxzZSB7DQoJCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9k SXRlbSwgJG1vZEl0ZW0sICRpdGVtKTsNCgkJCX0NCgkJfQ0KDQoJCS8vIEhhbmRsZSByYW5n ZXMgb2YgdmFsdWVzDQoJCWlmICgkcm5nICYmIHByZWdfbWF0Y2goJy9eKFxkKylcLShcZCsp JC8nLCAkaXRlbSkpIHsNCgkJCWxpc3QoJGxvLCAkaGkpID0gZXhwbG9kZSgiLSIsICRpdGVt LCAyKTsNCgkJCSRpdGVtID0gaW1wbG9kZSgkZGxtLCByYW5nZSgkbG8sICRoaSkpOw0KCQl9 DQoNCgkJLy8gSXRlbSBtYXkgYmUgZW1wdHk7IGlnbm9yZSBpdCBpZiBzbw0KCQlpZiAoJGl0 ZW0pIHsNCgkJCSRpdGVtID0gZG9fbGlzdCgkaXRlbSwgJGRsbSk7DQoJCQkvLyBIYW5kbGUg c3ViLWNhdGVnb3JpZXMNCgkJCWlmICgkc3ViKSB7DQoJCQkJbGlzdCgkc3VidHlwZSwgJGxl dmVsKSA9IGV4cGxvZGUoIjoiLCAkc3ViKTsNCgkJCQkkbGV2ZWwgPSAoZW1wdHkoJGxldmVs KSkgPyAwIDogJGxldmVsOw0KCQkJCSRsZXZlbCA9IChzdHJ0b2xvd2VyKCRsZXZlbCk9PSJh bGwiKSA/IDk5OTk5IDogJGxldmVsOw0KCQkJCWZvcmVhY2ggKCRpdGVtIGFzICRjYXQpIHsN CgkJCQkJJGNhdHMgPSBnZXRUcmVlKGRvc2xhc2goJGNhdCksICRzdWJ0eXBlKTsNCgkJCQkJ Zm9yZWFjaCAoJGNhdHMgYXMgJGpkeCA9PiAkdmFsKSB7DQoJCQkJCQlpZiAoJGNhdHNbJGpk eF1bJ2xldmVsJ10gPD0gJGxldmVsKSB7DQoJCQkJCQkJJGl0ZW1bXSA9ICRjYXRzWyRqZHhd WyduYW1lJ107DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCS8vIFF1b3Rl IGlmIGFza2VkDQoJCQkkaXRlbSA9ICgkcXRlKSA/IGRvQXJyYXkoJGl0ZW0sICdkb1F1b3Rl JykgOiAkaXRlbTsNCgkJCWlmICgkbW9kID09PSAwKSB7DQoJCQkJJGluYyA9IGFycmF5X3Vu aXF1ZShhcnJheV9tZXJnZSgkaW5jLCAkaXRlbSkpOw0KCQkJfSBlbHNlIHsNCgkJCQkkZXhj ID0gYXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCRleGMsICRpdGVtKSk7DQoJCQl9DQoJCX0N Cgl9DQoJcmV0dXJuIGFycmF5KCRpbmMsICRleGMpOw0KfQ0KfQ0KDQovLyBBbHRlcm5hdGl2 ZSB0byB0aGUgY29yZSdzIGRvUXVvdGUoKS4gVGhpcyBvbmUgZGJsLXF1b3RlcyBpbnN0ZWFk IG9mIHNnbC1xdW90ZXMNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJzbWRfZG9EYmxRdW90ZSIp KSB7DQpmdW5jdGlvbiBzbWRfZG9EYmxRdW90ZSgkdmFsKSB7DQoJcmV0dXJuICciJy4kdmFs LiciJzsNCn0NCn0NCg0KLy8gV29yayBvdXQgd2hpY2ggcGFnZSB0aGlzIGdhbGxlcnkgaXMg b24gYW5kIHJldHVybiB0aGUgcmVsZXZhbnQgaW5mbw0KZnVuY3Rpb24gc21kX2dldFBhZ2Uo JHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpIHsNCgkkbnVtVGh1bXMg PSBjb3VudCgkcnMpOw0KCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQkkbnVt UGFnZXMgPSAoJG51bVRodW1zID4gMCkgPyBjZWlsKCRudW1UaHVtcy8kbGltaXQpIDogMTsN CgkJJHRodW1QYWdlID0gKCFncHMoJGdhbGxJRCkpID8gMSA6IGdwcygkZ2FsbElEKTsNCgkJ JG9mZnNldCA9ICgkdGh1bVBhZ2UgLSAxKSAqICRsaW1pdDsNCgl9IGVsc2Ugew0KCQkvLyBO byBwYWdpbmcgcmVxdWlyZWQNCgkJJG51bVBhZ2VzID0gMTsNCgkJJHRodW1QYWdlID0gMTsN Cgl9DQoJcmV0dXJuIGFycmF5KCRudW1UaHVtcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRv ZmZzZXQpOw0KfQ0KDQovLyBSZWFkIHRoZSBnaXZlbiBkZWxpbWl0ZWQgZGlyZWN0b3JpZXMg YW5kIGdldCBhbGwgZmlsZXMgdGhhdCBtYXRjaC4NCi8vIEdvIGRvd24gYXMgbWFueSBzdWJk aXIgbGV2ZWxzIGFzIGdpdmVuIGluIHRoZSAkc3ViIHBhcmFtZXRlcg0KZnVuY3Rpb24gc21k X2RvRGlyZWN0b3J5KCRsc3QsICRsdmw9MCwgJHN1Yj0wLCAkbWF0Y2g9IiIsICRkbG09Iiwi LCAkY3RyPTApIHsNCglsaXN0KCRkaXJpbmMsICRkaXJleGMpID0gc21kX2RvTGlzdCgkbHN0 LCBmYWxzZSwgJHN1YiwgZmFsc2UsICRkbG0pOw0KCWxpc3QoJG1hdGNoaW5jLCAkbWF0Y2hl eGMpID0gc21kX2RvTGlzdCgkbWF0Y2gsIGZhbHNlLCAnJywgZmFsc2UsICRkbG0pOw0KCSRt YXRjaGluYyA9ICIuKiIgLigoJG1hdGNoaW5jKSA/ICIoIiAuaW1wbG9kZSgifCIsJG1hdGNo aW5jKS4iKSsuKiIgOiAiIik7DQoJJG1hdGNoZXhjID0gKCRtYXRjaGV4YykgPyAiLiooIiAu aW1wbG9kZSgifCIsJG1hdGNoZXhjKS4iKSsuKiIgOiAic21kX2dscnlfIi5tdF9yYW5kKCk7 DQoNCgkkc3ViID0gKGVtcHR5KCRzdWIpKSA/IDAgOiAkc3ViOw0KCSRzdWIgPSAoc3RydG9s b3dlcigkc3ViKT09ImFsbCIpID8gOTk5OTkgOiAkc3ViOw0KCSRmaWxlTGlzdCA9IGFycmF5 KCk7DQoJZm9yZWFjaCAoJGRpcmluYyBhcyAkZGlyKSB7DQoJCWlmICgkaGFuZGxlID0gQG9w ZW5kaXIoJGRpcikpIHsNCgkJCXdoaWxlICgoJGZpbGUgPSBAcmVhZGRpcigkaGFuZGxlKSkg IT09IGZhbHNlKSB7DQoJCQkJJGZ1bGxwYXRoID0gJGRpci5EUy4kZmlsZTsNCgkJCQlpZiAo cHJlZ19tYXRjaCgiLyIuJG1hdGNoaW5jLiIvIiwgJGZ1bGxwYXRoKSAmJiAhcHJlZ19tYXRj aCgiLyIuJG1hdGNoZXhjLiIvIiwgJGZ1bGxwYXRoKSkgew0KCQkJCQlpZiAoaXNfZGlyKCRm dWxscGF0aCkpIHsNCgkJCQkJCWlmICgoJGZpbGUgPT0gIi4iKSB8fCAoJGZpbGU9PSAiLi4i KSB8fCAoaW5fYXJyYXkoJGZpbGUsICRkaXJleGMpKSB8fCAoJGx2bCA+PSAkc3ViKSkgew0K CQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkvLyBSZWN1cnNlIHRo ZSBzdWJkaXIuIE5vdGUgdGhhdCB0aGUgJyEnIGlzIHRlbXBvcmFyaWx5IGFkZGVkIGJhY2sg dG8gZWFjaCBkaXJleGMgaXRlbQ0KCQkJCQkJCSR0bXAgPSAkZGlyZXhjOyAvLyBEb24ndCBv dmVyd3JpdGUgdGhlIG9yaWdpbmFsIGFycmF5DQoJCQkJCQkJYXJyYXlfdW5zaGlmdCgkdG1w LCAkZnVsbHBhdGgpOw0KCQkJCQkJCSRzdWJGaWxlcyA9IHNtZF9kb0RpcmVjdG9yeShpbXBs b2RlKCRkbG0uIiEiLCAkdG1wKSwgJGx2bCsxLCAkc3ViLCAkbWF0Y2gsICRkbG0sICRjdHIp Ow0KCQkJCQkJCSRmaWxlTGlzdCA9IGFycmF5X21lcmdlKCRmaWxlTGlzdCwgJHN1YkZpbGVz KTsNCgkJCQkJCQkkY3RyICs9IGNvdW50KCRzdWJGaWxlcyk7DQoJCQkJCQkJY29udGludWU7 DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkZmlsZXN0YXQgPSBzdGF0KCRmdWxs cGF0aCk7DQoJCQkJCQkkaW1nc2l6ZSA9IGdldGltYWdlc2l6ZSgkZnVsbHBhdGgpOw0KCQkJ CQkJJGZpbGVMaXN0WyRjdHJdWydwYXRoJ10gPSAkZGlyOw0KCQkJCQkJJGZpbGVMaXN0WyRj dHJdWyduYW1lJ10gPSBiYXNlbmFtZSgkZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0WyRj dHJdWydpZCddID0gcHJlZ19yZXBsYWNlKCcvXC4uKyQvJywgJycsICRmaWxlKTsNCgkJCQkJ CSRmaWxlTGlzdFskY3RyXVsnYWx0J10gPSAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsn Y2FwdGlvbiddID0gJyc7DQoJCQkJCQkkcGFydHMgPSBleHBsb2RlKERTLCAkZGlyKTsNCgkJ CQkJCSRmaWxlTGlzdFskY3RyXVsnY2F0ZWdvcnknXSA9IChjb3VudCgkcGFydHMpID4gMSkg PyBlbmQoJHBhcnRzKSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydhdXRob3InXSA9 IHN0cnZhbCgkZmlsZXN0YXRbJ3VpZCddKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnZGF0 ZSddID0gc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNOiVTIiwgJGZpbGVzdGF0WydjdGltZSdd KTsNCgkJCQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi4iLCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxp c3RbJGN0cl1bJ2V4dCddID0gKGNvdW50KCRwYXJ0cykgPiAxKSA/ICIuIi5lbmQoJHBhcnRz KSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWyd3J10gPSAoaXNfYXJyYXkoJGltZ3Np emUpKSA/IHN0cnZhbCgkaW1nc2l6ZVswXSkgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3Ry XVsnaCddID0gKGlzX2FycmF5KCRpbWdzaXplKSkgPyBzdHJ2YWwoJGltZ3NpemVbMV0pIDog Jyc7DQoJCQkJCX0NCgkJCQkJJGN0cisrOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlpZiAoJGhh bmRsZSkgew0KCQkJQGNsb3NlZGlyKCRoYW5kbGUpOw0KCQl9DQoJfQ0KCXJldHVybiAkZmls ZUxpc3Q7DQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJzbWRfcmVtb3ZlUVNWYXIiKSkg ew0KZnVuY3Rpb24gc21kX3JlbW92ZVFTVmFyKCR1cmwsICRrZXkpIHsNCgkkdXJsID0gcHJl Z19yZXBsYWNlKCcvKC4qKShcP3wmKScgLiAka2V5IC4gJz1bXiZdKz8oJikoLiopL2knLCAn JDEkMiQ0JywgJHVybCAuICcmJyk7DQoJJHVybCA9IHN1YnN0cigkdXJsLCAwLCAtMSk7DQoJ cmV0dXJuICgkdXJsKTsNCn0NCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInNtZF9hZGRR U1ZhciIpKSB7DQpmdW5jdGlvbiBzbWRfYWRkUVNWYXIoJHVybCwgJGtleSwgJHZhbHVlKSB7 DQoJJHVybCA9IHNtZF9yZW1vdmVRU1ZhcigkdXJsLCAka2V5KTsNCglpZiAoc3RycG9zKCR1 cmwsICc/JykgPT09IGZhbHNlKSB7DQoJCXJldHVybiAoJHVybCAuICc/JyAuICRrZXkgLiAn PScgLiAkdmFsdWUpOw0KCX0gZWxzZSB7DQoJCXJldHVybiAoJHVybCAuICcmJyAuICRrZXkg LiAnPScgLiAkdmFsdWUpOw0KCX0NCn0NCn0iO3M6NDoidHlwZSI7czoxOiIwIjtzOjQ6Imhl bHAiO3M6NDIxNjQ6Igk8cD48ZGl2IGlkPSJzbWRfaGVscCI+PC9wPgoKCTxoMSBpZD0idG9w Ij5zbWRfZ2FsbGVyeTwvaDE+CgoJPGgyIGlkPSJjb250ZW50cyI+Q29udGVudHM8L2gyPgoK CTx1bD4KCQk8bGk+PGEgaHJlZj0iI2ZlYXR1cmVzIj5GZWF0dXJlczwvYT48L2xpPgoJCTxs aT48YSBocmVmPSIjYXV0aG9yIj5BdXRob3I8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2lu c3RhbGwiPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9hPjwvbGk+CgkJPGxpPjxh IGhyZWY9IiN1c2FnZSI+VGFnIHVzYWdlPC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjc21k X2dhbGxlcnkiPnNtZF9nYWxsZXJ5PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNnYWxsZXJ5 X2Zvcm0iPkdhbGxlcnkgZm9ybTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3JlcF9nYWxs ZXJ5Ij5SZXBsYWNlbWVudCB0YWdzPC9hPjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxhIGhy ZWY9IiNwYWdpbmdfZm9ybSI+UGFnaW5nIGZvcm08L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9 IiNyZXBfcGFnaW5nIj5SZXBsYWNlbWVudCB0YWdzPC9hPjwvbGk+Cgk8L3VsPjwvbGk+CgkJ PGxpPjxhIGhyZWY9IiNjb21ib3MiPkNvbWJvczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIj Y29sbGF0ZV9tb2RlIj5Db2xsYXRlIG1vZGU8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+ PGEgaHJlZj0iI2V4YW1wbGVzIj5FeGFtcGxlczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIj Y2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NyZWRpdHMi PkNyZWRpdHM8L2E+PC9saT4KCTwvdWw+CgoJPGgyIGlkPSJmZWF0dXJlcyI+RmVhdHVyZXM8 L2gyPgoKCTx1bD4KCQk8bGk+U3VwcG9ydHMgYWxsIGN1cnJlbnQgYW5kIChwcm9iYWJseSkg ZnV0dXJlIGdhbGxlcnkgc2NyaXB0cyBpbmNsdWRpbmcgdGh1bWJwb3AsIHJvbGxvdmVyLCB0 b29sdGlwLCBsaWdodGJveCwgbGl0ZWJveCwgc2xpbWJveCwgbW9vbmJveCwgdGhpY2tib3gs IHNsaWRlc2hvdywgZmFuY3l6b29tLCBldGM8L2xpPgoJCTxsaT5QdWxsIGltYWdlcyBmcm9t IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBkYXRhYmFzZSAob3Igb3B0aW9u YWxseSBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMpIHRoYXQgbWF0Y2ggY2F0ZWdvcmllcyBvciBJ RHM8L2xpPgoJCTxsaT5Vc2UgYXJ0aWNsZSBmaWVsZHMgdG8gaG9sZCBsaXN0cyBvZiBpbWFn ZSBjYXRlZ29yaWVzL0lEcyBmb3IgYXJ0aWNsZS1zcGVjaWZpYyBnYWxsZXJpZXM8L2xpPgoJ CTxsaT5NdWx0aS1sZXZlbCBzdWItY2F0ZWdvcnkgc3VwcG9ydDwvbGk+CgkJPGxpPkdhbGxl cnkgbGF5b3V0IGlzIGRlZmluZWQgaW4gYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBmb3JtPC9saT4KCQk8bGk+RGlyZWN0LWFjY2VzcyBwYWdpbmF0aW9uIGlzIHN1cHBvcnRl ZCBhbmQgdGhlIGxheW91dCBvZiBwYWdpbmcgZmVhdHVyZXMgaXMgY29udHJvbGxlZCBieSBh IHNlY29uZCBmb3JtPC9saT4KCQk8bGk+VXNlcyBhIHRhZy1yZXBsYWNlbWVudCBzeXN0ZW0g bGlrZSB0aGUgd2V0X2Zvcl9lYWNoX2ltYWdlIHBsdWdpbjwvbGk+Cgk8L3VsPgoKCTxoMiBp ZD0iYXV0aG9yIj5BdXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS9jb21tZW50Rm9ybSI+U3RlZiBEYXdzb248L2E+LiBGb3Igb3RoZXIgc29mdHdhcmUg YnkgbWUsIG9yIHRvIG1ha2UgYSBkb25hdGlvbiwgc2VlIHRoZSA8YSBocmVmPSJodHRwOi8v c3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LjwvcD4KCgk8aDIgaWQ9Imlu c3RhbGwiPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cD5Eb3dubG9h ZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5v cmcvcGx1Z2lucy85NTcvc21kX2dhbGxlcnkiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRo ZSBzb2Z0d2FyZSBwYWdlIGFib3ZlLCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3Rh bGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2Zv cnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTI2NDgyIj5mb3J1bSB0aHJl YWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90 aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyByZW1vdmUgdGhlIHBsdWdpbiwg c2ltcGx5IGRlbGV0ZSBpdCBmcm9tIHRoZSBBZG1pbi0mZ3Q7UGx1Z2lucyB0YWIuPC9wPgoK CTxoMiBpZD0idXNhZ2UiPlVzYWdlPC9oMj4KCgk8cD5Gb3Igc29tZSBpZGVhcyBvbiB1c2Fn ZSBzY2VuYXJpb3MsIHNlZSB0aGUgPGEgaHJlZj0iI2V4YW1wbGVzIj5leGFtcGxlczwvYT4u PC9wPgoKCTxwPlRoZSBnZW5lcmFsIGlkZWEgaXMgdGhhdCB0aGlzIHBsdWdpbiBhY3RzIGFz IGEgZmxleGlibGUgaW1hZ2UgZmlsdGVyOyBub3RoaW5nIG1vcmUuIFRoZSBwbHVnaW4gb3B0 aW9ucyBnb3Zlcm4gd2hhdCBpbWFnZXMgYXJlIHB1bGxlZCBvdXQgb2YgdGhlIGRhdGFiYXNl IGFuZCB0aGV5IGFyZSBzb3J0ZWQgaW50byB3aGF0ZXZlciBvcmRlciB5b3UgbGlrZS48L3A+ CgoJPHA+QWZ0ZXIgdGhhdCwgZWFjaCBpbWFnZSAmIzgyMTI7IG9uZSBieSBvbmUgJiM4MjEy OyBoYXMgYWxsIGl0cyBhdHRyaWJ1dGVzIHBhc3NlZCB0byB0aGUgPGNvZGU+Zm9ybTwvY29k ZT4gb2YgeW91ciBjaG9pY2U7IHlvdSBzaW1wbHkgY2hvb3NlIHRvIGRpc3BsYXkgd2hpY2hl dmVyIGltYWdlIGF0dHJpYnV0ZXMgeW91IGxpa2UgaW4gdGhpcyBmb3JtLiBUaGlzIG1lYW5z IGFueSBpbWFnZSBhdHRyaWJ1dGVzIGNhbiBiZSAmIzgyMjA7aW5qZWN0ZWQmIzgyMjE7IGRp cmVjdGx5IGludG8gYW55IG1hcmt1cDsgaXQgY291bGQgYmUgPHNwYW4gY2xhc3M9ImNhcHMi PlRYUDwvc3Bhbj4gdGFncywgaXQgY291bGQgYmUgY29udGVudCwgaXQgY291bGQgYmUgamF2 YXNjcmlwdCwgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj47IGFueXRoaW5nLiBQ YWdpbmF0aW9uIHdvcmtzIHRoZSBzYW1lIHdheSwgYWxsb3dpbmcgeW91IHRvIHNwZWNpZnkg aG93IHVzZXJzIGNhbiBzdGVwIHRocm91Z2ggeW91ciBpbWFnZSBnYWxsZXJpZXMuPC9wPgoK CTxwPlRoZXJlIGlzIGFsc28gYSBzcGVjaWFsIG1vZGUgY2FsbGVkICYjODIyMDtjb2xsYXRl JiM4MjIxOyB0aGF0IGFsbG93cyB5b3UgdG8gY29sbGVjdCBhbGwgaW1hZ2UgYXR0cmlidXRl cyB0b2dldGhlciBpbnRvIGEgc2VyaWVzIG9mIGJpZyBsb25nIGxpc3RzIDxlbT53aXRob3V0 PC9lbT4gY2FsbGluZyB0aGUgZm9ybSBldmVyeSB0aW1lLiBUaGUgZm9ybSBpcyB0aGVuIG9u bHkgcHJvY2Vzc2VkIG9uY2UgYXQgdGhlIGVuZC48L3A+CgoJPHA+QmV0d2VlbiB0aGVzZSB0 d28gbW9kZXMgeW91IDxlbT5zaG91bGQ8L2VtPiBiZSBhYmxlIHRvIHJlYWxpc2UgYW55IGdh bGxlcnlpbmcgc29sdXRpb247IG5vdyBhbmQgaW4gZnV0dXJlLjwvcD4KCgk8aDMgY2xhc3M9 InRhZyAiIGlkPSJzbWRfZ2FsbGVyeSI+c21kX2dhbGxlcnk8L2gzPgoKCTxwIGNsYXNzPSJ0 YWctc3VtbWFyeSI+UGxhY2Ugb25lIG9yIG1vcmUgc21kX2dhbGxlcnkgdGFncyBpbiBhbnkg YXJ0aWNsZSwgcGFnZSBvciBmb3JtLCBzdXBwbHkgYW55IG9mIHRoZSBmb2xsb3dpbmcgb3B0 aW9ucyB0byBjb25maWd1cmUgaXQgYW5kIHVzZSBhIGZvcm0gdG8gZGVmaW5lIGhvdyB0aGUg Z2FsbGVyeSBpcyBkaXNwbGF5ZWQuPC9wPgoKCTxoNCBpZD0iYXR0cmlidXRlcyI+QXR0cmli dXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aWQ8L3NwYW4+IDog bGlzdCBvZiBpbWFnZSBJRHMgdG8gZGlzcGxheS4gTWF5IGJlIGludGVnZXJzIG9yIHJhbmdl cywgZm9yIGV4YW1wbGUgPGNvZGU+aWQ9JnF1b3Q7NSwgNDIsIDgtMTEmcXVvdDs8L2NvZGU+ IHdvdWxkIGdyYWIgaW1hZ2VzIDUsIDgsIDksIDEwLCAxMSBhbmQgNDIuIFVzZSBhbiBleGNs YW1hdGlvbiBtYXJrIGluIGZyb250IG9mIGEgbnVtYmVyIG9yIHJhbmdlIHRvIGV4Y2x1ZGUg dGhvc2UgaW1hZ2VzLiBVc2UgYSBxdWVzdGlvbiBtYXJrIGFuZCB0aGUgbmFtZSBvZiBhIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkIHRvIHJlYWQgdGhlIGxpc3Qgb2Yg aW1hZ2UgSURzIGZyb20gdGhhdCBmaWVsZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5jYXRlZ29yeTwvc3Bhbj4gOiBsaXN0IG9mIGltYWdlIGNhdGVnb3JpZXMgdG8gZGlzcGxh eS4gWW91IG1heSBzcGVjaWZ5IGZpeGVkLW5hbWUgY2F0ZWdvcmllcyAoZS5nLiAmIzgyMjA7 YW5pbWFscyYjODIyMTspIG9yIGEgcXVlc3Rpb24gbWFyayBmb2xsb3dlZCBieSBhbiBhcnRp Y2xlIGZpZWxkIG5hbWUuIGUuZy4gPGNvZGU+Y2F0ZWdvcnk9JnF1b3Q7YW5pbWFscywgYXJ0 LT9pZCZxdW90OzwvY29kZT4gd291bGQgZ3JhYiBhbGwgaW1hZ2VzIGZyb20gY2F0ZWdvcnkg JiM4MjIwO2FuaW1hbHMmIzgyMjE7IGFuZCBjYXRlZ29yeSAmIzgyMjA7YXJ0LTQyJiM4MjIx OyAoYXNzdW1pbmcgdGhlIGN1cnJlbnQgYXJ0aWNsZSBoYXMgYW4gaWQgb2YgNDIpLjxkaXYg Y2xhc3M9ImJyZWFrIj5Vc2UgYW4gZXhjbGFtYXRpb24gbWFyayB0byBleGNsdWRlIHRoZSBn aXZlbiBjYXRlZ29yeSBvciBmaWVsZC4gRmllbGRzIG1heSB0aGVtc2VsdmVzIGNvbnRhaW4g bGlzdHMgb2YgY2F0ZWdvcmllcy4gVGhlIDxjb2RlPj88L2NvZGU+IGZpZWxkIG5hbWVzIG1h eSBiZSBjb21iaW5lZCAoZS5nLiA/cy0/YXJ0aWNsZV9pbWFnZSkgYnV0IGJlIGF3YXJlIHRo YXQgY3VzdG9tIGZpZWxkIG5hbWVzIG1heSBjb250YWluIHNwYWNlczwvZGl2PjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdWJsZXZlbDwvc3Bhbj4gOiBhbiBpbnRlZ2VyIHRo YXQgc3BlY2lmaWVzIGhvdyBtYW55ICYjODIxNjtsZXZlbHMmIzgyMTc7IGRvd24gdG8gdHJh dmVyc2UgZWFjaCBtYXRjaGluZyBjYXRlZ29yeS4gc3VibGV2ZWw9JiM4MjIwOzAmIzgyMjE7 ICh0aGUgZGVmYXVsdCkgaXMgb25seSB0aGUgdG9wLWxldmVsOyAxID0gdG9wLWxldmVsIHBs dXMgdGhlIDFzdCBzdWItY2F0OyAyID0gdG9wLWxldmVsIHBsdXMgdGhlIG5leHQgMiBzdWIt Y2F0cywgYW5kIHNvIG9uLiBzdWJsZXZlbD0mIzgyMjA7YWxsJiM4MjIxOyBpcyBhbGwgc3Vi LWNhdHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c29ydDwvc3Bhbj4gOiByZS1v cmRlciB0aGUgaW1hZ2VzIGJ5IDxjb2RlPmNhdGVnb3J5PC9jb2RlPiAodGhlIGRlZmF1bHQp LCA8Y29kZT5uYW1lPC9jb2RlPiwgPGNvZGU+ZGF0ZTwvY29kZT4sIDxjb2RlPmlkPC9jb2Rl PiwgZmlsZSA8Y29kZT5leHQ8L2NvZGU+ZW5zaW9uLCA8Y29kZT5hbHQ8L2NvZGU+LCA8Y29k ZT5jYXB0aW9uPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+d2lkdGg8L2Nv ZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8Y29kZT5oYXN0aHVtYjwvY29kZT4gaW4gZWl0 aGVyIDxjb2RlPmFzYzwvY29kZT5lbmRpbmcgb3IgPGNvZGU+ZGVzYzwvY29kZT5lbmRpbmcg b3JkZXIuIFR3byBzcGVjaWFsIGNhc2VzIGV4aXN0OiA8Y29kZT5maXhlZDwvY29kZT4gbWFp bnRhaW5zIHRoZSBvcmRlciB5b3Ugc3BlY2lmaWVkIGluIHRoZSBpZCBhbmQvb3IgY2F0ZWdv cnkgYXR0cmlidXRlLCB3aGlsZSA8Y29kZT5yYW5kb208L2NvZGU+IHNodWZmbGVzIHRoZSBv cmRlci48ZGl2IGNsYXNzPSJicmVhayI+Tm90ZSB0aGF0IGlmIDxjb2RlPnJhbmRvbTwvY29k ZT4gYXBwZWFycyBhcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCwgcmFuZG9tIGltYWdl cyB3aWxsIGJlIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdGhleSB3aWxsIHRoZW4g YmUgc29ydGVkIGFjY29yZGluZyB0byB0aGUgb3JkZXIgbGlzdGVkIGFmdGVyIGl0LiBJZiA8 Y29kZT5yYW5kb208L2NvZGU+IGFwcGVhcnMgYW55d2hlcmUgZWxzZSBpbiB0aGUgbGlzdCwg YW55IHNvcnQgaXRlbXMgYmVmb3JlIGl0IHdpbGwgZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiBk YXRhIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSByZXN1bHRzIHdpbGwgdGhl biBiZSBvcmRlcmVkIHJhbmRvbWx5IChpbiB0aGF0IGNhc2UsIGFueSBpdGVtcyBsaXN0ZWQg YWZ0ZXIgcmFuZG9tIHdpbGwgYmUgaWdub3JlZC4gPGNvZGU+Zml4ZWQ8L2NvZGU+IGlzLCBo b3dldmVyLCBzdGlsbCBob25vdXJlZCk8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+bGltaXQ8L3NwYW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyB0byBz aG93IDxlbT5wZXIgcGFnZTwvZW0+LiAwIG9yIG9taXR0ZWQgPSB1bmxpbWl0ZWQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bWF4bGltaXQ8L3NwYW4+IDogdGhlIGFic29sdXRl IG1heGltdW0gbnVtYmVyIG9mIGltYWdlIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJhc2UuIDAg b3Igb21pdHRlZCA9IHVubGltaXRlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5v ZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkgaW1hZ2VzIGFuZCBzdGFydCBjb3VudGlu ZyB0aGVyZWFmdGVyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1ibGltaXQ8 L3NwYW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9mIHRodW1ibmFpbHMgdG8gc2hvdy4gMCBv ciBvbWl0dGVkID0gYWxsIHRodW1icy4gTm90ZSB0aGF0IHRoaXMgZGlmZmVycyBmcm9tIGxp bWl0OyB5b3UgY2FuIGxhdW5jaCBhIDIwLWltYWdlIGdhbGxlcnkgYnV0IG9ubHkgc2hvdyAx IHRodW1ibmFpbCBvbiB0aGUgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50 aHVtYm9mZnNldDwvc3Bhbj4gOiBza2lwIHRoaXMgbWFueSB0aHVtYnMgYmVmb3JlIGRpc3Bs YXlpbmcgPGNvZGU+dGh1bWJsaW1pdDwvY29kZT4gdGh1bWJuYWlsczwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5vbmNoYW5nZTwvc3Bhbj4gOiBhIGxpc3Qgb2YgYXR0cmlidXRl cyB0byAmIzgyMjA7d2F0Y2gmIzgyMjE7LiBJdCB0ZWxscyB0aGUgcGx1Z2luIHRoYXQgeW91 IHdhbnQgdG8gYmUgbm90aWZpZWQgd2hlbiBpdGVtcyBpbiB0aGlzIGxpc3QgY2hhbmdlIGNv bXBhcmVkIHRvIHRoZSBwcmV2aW91cyBpbWFnZS4gVW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5j ZXMgdGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgeW91ciA8Y29kZT5zb3J0PC9jb2RlPiBw YXJhbWV0ZXIgb3IgeW91IG1heSBnZXQgc29tZSBmcmVha3kgcmVzdWx0cyEgSXQgZGVmYXVs dHMgdG8gPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+LjxkaXYgY2xhc3M9ImJyZWFrIj5UaGlzIGlz IHZlcnkgdXNlZnVsIGZvciBzcGxpdHRpbmcgZ2FsbGVyaWVzIGF0IGV2ZXJ5IGNoYW5nZSBp biBjYXRlZ29yeSBhbmQgZGlzcGxheWluZyB0aGUgY2F0ZWdvcnkgdGl0bGUgYWJvdmUgZWFj aCBncm91cC4gSXRlbXMgeW91IHdhdGNoIGFyZSBhZGRlZCB0byB0aGUgbGlzdCBvZiByZXBs YWNlbWVudCB0YWdzIGFuZCBhcmUgYXZhaWxhYmxlIGJ5IHB1dHRpbmcgJiM4MjIwO29uY2hh bmdlOiYjODIyMTsgaW4gZnJvbnQgb2YgdGhlaXIgbmFtZSAoZS5nLiA8Y29kZT57b25jaGFu Z2U6Y2F0ZWdvcnl9PC9jb2RlPiAmIzgyMTI7IHNlZSA8YSBocmVmPSIjZWc2Ij5leGFtcGxl IDY8L2E+IGZvciBtb3JlKS4gVGhlIGNvbG9uIGRlbGltaXRlciBjYW4gYmUgY2hhbmdlZCB3 aXRoIDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+PC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPm9uY2hhbmdld3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8g c3Vycm91bmQgYW55IDxjb2RlPm9uY2hhbmdlPC9jb2RlPiBlbGVtZW50cyB5b3UgYXJlIHdh dGNoaW5nLCBlLmcuIDxjb2RlPm9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OzwvY29k ZT4uIERlZmF1bHQgaXMgdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b25j aGFuZ2VjbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4g Y2xhc3MgbmFtZSBvZiBhbnkgb25jaGFuZ2UgZWxlbWVudHMgeW91IGFyZSB3YXRjaGluZy4g RGVmYXVsdCBpcyB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ncm91cHRh Zzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gbWFrZSBhdmFpbGFibGUgYXMgYSByZXBs YWNlbWVudCBzbyB5b3UgY2FuIHdyYXAgZ3JvdXBzIG9mIGVsZW1lbnRzIGF0IGVhY2ggPGNv ZGU+b25jaGFuZ2U8L2NvZGU+LiBEZWZhdWx0IGlzIHVuc2V0LiBTZWUgPGNvZGU+Z3JvdXB0 YWdzdGFydDwvY29kZT4gLyA8Y29kZT5ncm91cHRhZ2VuZDwvY29kZT4gPGEgaHJlZj0iI3Jl cF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5ncm91cGNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NT PC9zcGFuPiBjbGFzcyBuYW1lIG9mIGFueSA8Y29kZT5ncm91cHRhZzwvY29kZT4uIERlZmF1 bHQgaXMgdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGV4dDwvc3Bhbj4g OiBkaXNwbGF5IHRoZSBnaXZlbiB0ZXh0IGluc3RlYWQgb2YgdGh1bWJuYWlscy4gVGhlIHRl eHQgY2FuIGNvbnRhaW4gPGNvZGU+PzwvY29kZT4gYXJ0aWNsZSBmaWVsZHM8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWI8L3NwYW4+IDogaWYgeW91IHdpc2ggdGhlIGZ1 bGxzaXplIGltYWdlcyBkaXNwbGF5ZWQgYXMgdGh1bWJuYWlscywgb3IgaWYgeW91IHdhbnQg dGhlIHRodW1ibmFpbCBnYWxsZXJ5IHRvIHVzZSB0aGUgZnVsbHNpemUgaW1hZ2VzLCBzcGVj aWZ5IGl0IHdpdGggdGhpcyBhdHRyaWJ1dGUuIFVzZSA8Y29kZT50aHVtYj0mcXVvdDsxJnF1 b3Q7PC9jb2RlPiB0byBzcGVjaWZ5IHRoYXQgYm90aCBmdWxsc2l6ZSBpbWFnZSBhbmQgdGh1 bWJuYWlsIGRpc3BsYXkgdGhlICYjODIxNjt0JiM4MjE3OyAodGh1bWJuYWlsKSBpbWFnZS4g VXNlIDxjb2RlPnRodW1iPSZxdW90OzAmcXVvdDs8L2NvZGU+IHRvIHNwZWNpZnkgdGhhdCBi b3RoIGZ1bGxzaXplIGFuZCB0aHVtYm5haWxzIHVzZSB0aGUgZnVsbCBzaXplIGltYWdlcy4g WW91IGNhbiBhbHNvIGNob29zZSBvbmUgb3IgdGhlIG90aGVyIGJ5IGdpdmluZyB0aGlzIGF0 dHJpYnV0ZSB0d28gbnVtYmVycyBzZXBhcmF0ZWQgYnkgYSBjb2xvbi48ZGl2IGNsYXNzPSJi cmVhayI+Rm9yICYjODIxNjtub3JtYWwmIzgyMTc7IG9wZXJhdGlvbiAmIzgyMTI7IGkuZS4g ZnVsbHNpemUgaW1hZ2UgaXMgZnVsbCBzaXplLCB0aHVtYm5haWwgaXMgIHRodW1iIHNpemVk ICYjODIxMjsgc3BlY2lmeSA8Y29kZT50aHVtYj0mcXVvdDswOjEmcXVvdDs8L2NvZGU+LiBU byByZXZlcnNlIHRoaXMsIHVzZSA8Y29kZT50aHVtYj0mcXVvdDsxOjAmcXVvdDs8L2NvZGU+ LiBOb3RlIHRoYXQgPGNvZGU+MToxPC9jb2RlPiBhbmQgPGNvZGU+MDowPC9jb2RlPiBhbHNv IHdvcmsgdG8gc2V0IGJvdGggaW1hZ2VzIHRvIHRoZSBzYW1lIHNpemUgaWYgeW91IHByZWZl ciB0aGF0IHN5bnRheDwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aHVt YnNpemU8L3NwYW4+IDogdGFrZXMgb25lIG9yIHR3byBjb21tYS1zZXBhcmF0ZWQgbnVtYmVy cyB0byBzcGVjaWZ5IHdpZHRoIGFuZC9vciBoZWlnaHQgb2YgYWxsIHlvdXIgZ2FsbGVyeSB0 aHVtYm5haWxzLiBUaGUgZGVmYXVsdCBpcyBpbiBwaXhlbHMgaWYgeW91IGRvbiYjODIxNzt0 IHNwZWNpZnkgdW5pdHMuIE1pc3Npbmcgb3V0IG9uZSBvciB0aGUgb3RoZXIgcGFyYW1ldGVy IChpLmUuIGhhdmluZyBhbiAmIzgyMjA7ZW1wdHkmIzgyMjE7IHBhcmFtZXRlciBiZWZvcmUg b3IgYWZ0ZXIgdGhlIGNvbW1hKSB3aWxsIG9ubHkgc2V0IG9uZSBvZiB0aGUgZGltZW5zaW9u cy4gVXNlIGEgc2luZ2xlIHZhbHVlIHRvIG1ha2Ugc3F1YXJlIHRodW1iczwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gbGF5b3V0IHlvdXIgbWF0Y2hpbmcgaW1hZ2Vz LiBXaXRob3V0IHRoaXMgYXR0cmlidXRlIHRoZSBwbHVnaW4gYWN0cyBhcyBhIGNvbnRhaW5l ciB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnZWZvcm08L3NwYW4+IDog dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5 IHRoZSBsYXlvdXQgb2YgeW91ciBwYWdpbmcgbmF2aWdhdGlvbjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5wYWdpbmc8L3NwYW4+IDogc3dpdGNoIHBhZ2luZyBvbiB3aXRob3V0 IGhhdmluZyB0byBzcGVjaWZ5IGEgcGFnZWZvcm0uIFdoZW4gdGhpcyBpcyB1c2VkLCBhbGwg PGEgaHJlZj0iI3JlcF9wYWdpbmciPnBhZ2UgcmVwbGFjZW1lbnQgdGFnczwvYT4gYmVjb21l IGF2YWlsYWJsZSBpbiB0aGUgPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5nYWxsZXJ5IHJlcGxh Y2VtZW50IHRhZ3M8L2E+IGFzIHdlbGw8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ cGFnZXBvczwvc3Bhbj4gOiB0aGUgcG9zaXRpb24gb2YgdGhlIHBhZ2luZyBibG9jay4gT3B0 aW9ucyBhcmUgPGNvZGU+YmVsb3c8L2NvZGU+ICh0aGUgZGVmYXVsdCksIDxjb2RlPmFib3Zl PC9jb2RlPiwgb3IgYm90aCBvZiB0aGVtIHNlcGFyYXRlZCBieSA8Y29kZT5kZWxpbTwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z2FsbGVyeWlkPC9zcGFuPiA6IHVu ZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHlvdSBzaG91bGQgbmV2ZXIgbmVlZCB0aGlzLiBF YWNoIGdhbGxlcnkgaXMgYXNzaWduZWQgYSB1bmlxdWUgSUQgYmFzZWQgb24gdGhlIHN1cHBs aWVkIGF0dHJpYnV0ZXMuIEluIHRoZSB1bmxpa2VseSBldmVudCB0aGF0IHR3byBpZGVudGlj YWwgSURzIGFyZSBnZW5lcmF0ZWQgeW91IGNhbiBvdmVycmlkZSB0aGUgSUQgZm9yIGEgZ2Fs bGVyeSB3aXRoIHRoaXMgYXR0cmlidXRlLjxkaXYgY2xhc3M9ImJyZWFrIj5JbnRlcm5hbGx5 IHRoZSBwbHVnaW4gZ2VuZXJhdGVzIGEgMzItY2hhcmFjdGVyIGhhc2ggc3RyaW5nIGZvciBl YWNoIHRhZywgdGhlbiBwaWNrcyBhIDQtY2hhciBjb2RlIGZyb20gdGhpcyBzdHJpbmcgKGl0 IHRha2VzIGV2ZXJ5IDZ0aCBjaGFyYWN0ZXIgYnkgZGVmYXVsdCkuIFlvdSBjYW4gc3VwcGx5 IGEgdW5pcXVlIGZpeGVkIHN0cmluZyAoZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7TXlH YWwmcXVvdDs8L2NvZGU+KSBvciBnaXZlIGl0IGEgcXVlc3Rpb24gbWFyayBhbmQgMiBudW1i ZXJzIHNlcGFyYXRlZCBieSBhIGNvbG9uIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDs/ NTo0JnF1b3Q7PC9jb2RlPikuIFRoZSBmaXJzdCBudW1iZXIgaXMgdGhlIGxlbmd0aCBvZiB0 aGUgZmluYWwgc3RyaW5nIHRvIGdlbmVyYXRlLCB0aGUgc2Vjb25kIG51bWJlciBpcyBob3cg bWFueSBjaGFyYWN0ZXJzIHRvIHNraXAgaW4gdGhlIDMyLWNoYXIgc3RyaW5nIGVhY2ggdGlt ZSBpdCBwaWNrcyBvbmUuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPkluIHRoaXMgY2FzZSBp dCBnZW5lcmF0ZXMgYSA1LWNoYXJhY3RlciBzdHJpbmcgZnJvbSB0aGUgY2hhcmFjdGVycyBp dCBmaW5kcyBhdCBwb3NpdGlvbnMgMSw1LDksMTMsIGFuZCAxNy4gSWYgeW91IG9taXQgdGhl IDJuZCBudW1iZXIgKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90Oz82JnF1b3Q7PC9jb2Rl PikgaXQgd2lsbCBhc3N1bWUgaXQmIzgyMTc7cyBhbiBpbmNyZW1lbnQgb2YgMTwvZGl2Pjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClI VE1MIHRhZyB0byBzdXJyb3VuZCB0aGUgZW50aXJlIGdhbGxlcnksIGUuZy4gPGNvZGU+d3Jh cHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+LiBEZWZhdWx0IGlzIHVuc2V0PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0 byBzdXJyb3VuZCBlYWNoIHRodW1ibmFpbC4gRGVmYXVsdCBpcyB1bnNldDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNh cHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBvZiB0aGUgZW50aXJlIGdhbGxlcnkuIERlZmF1 bHQgaXMgdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2d3JhcHRhZzwv c3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSA8Y29kZT5w YWdlZm9ybTwvY29kZT4sIGUuZy4gPGNvZGU+d3JhcHRhZz0mcXVvdDtkaXYmcXVvdDs8L2Nv ZGU+LiBEZWZhdWx0IGlzICYjODIyMDt1bCYjODIyMTs8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+bmF2YnJlYWs8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5k IGVhY2ggaXRlbSB3aXRoaW4gdGhlIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPi4gRGVmYXVsdCBp cyAmIzgyMjA7bGkmIzgyMjE7PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdmNs YXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBu YW1lIG9mIHRoZSBuYXZpZ2F0aW9uIHdyYXB0YWcuIERlZmF1bHQgaXMgJiM4MjIwO3NtZF9n YWxsZXJ5X25hdiYjODIyMTs8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZW1wdHlj bGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3Mg bmFtZSBvZiB0aGUgbmF2aWdhdGlvbiBpdGVtcyB0aGF0IGFyZSA8ZW0+bm90PC9lbT4gbGlu a3MuIERlZmF1bHQgaXMgJiM4MjIwO2VtcHR5JiM4MjIxOzwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5kZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGltaXRlciBmb3Igc3Bl Y2lmeWluZyBhdHRyaWJ1dGUgbGlzdHMuIERlZmF1bHQgaXMgY29tbWEgKCwpPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhcmFtZGVsaW08L3NwYW4+IDogY2hhbmdlIHRoZSBk ZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcgaW50ZXItcGFyYW1ldGVyIGF0dHJpYnV0ZXMuIERl ZmF1bHQgaXMgY29sb24gKDopPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvbGxh dGU8L3NwYW4+IDogc3dpdGNoIHRoZSBwbHVnaW4gaW50byA8YSBocmVmPSIjY29sbGF0ZV9t b2RlIj5jb2xsYXRlIG1vZGU8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNv bWJvPC9zcGFuPiA6IHNwZWNpZnkgeW91ciBvd24gPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5y ZXBsYWNlbWVudCB0YWdzPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kaXJl Y3Rvcnk8L3NwYW4+IDogcmVhZCBpbWFnZXMgZnJvbSBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMg KG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+cykgaW5zdGVhZCBvZiB0aGUgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2UgKDxzdHJvbmc+ZXhwaXJpbWVu dGFsPC9zdHJvbmc+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYXRjaDwvc3Bh bj4gOiBsaW1pdCB0aGUgaW1hZ2VzIGFuZCBkaXJlY3RvcmllcyBjaG9zZW4gaW4gPGNvZGU+ ZGlyZWN0b3J5PC9jb2RlPiBtb2RlLiBHaXZlIGEgbGlzdCBvZiB3b3JkcyB0byBpbmNsdWRl IG9yICFleGNsdWRlIGFuZCBhbnkgbWF0Y2hpbmcgZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2ls bCBiZSBjaG9zZW4gb3IgaWdub3JlZCwgcmVzcGVjdGl2ZWx5LiBUaGUgbWF0Y2ggdGVybXMg YXJlIGF1dG9tYXRpY2FsbHkgYXNzdW1lZCB0byBiZSAmIzgyMjA7d2lsZCYjODIyMTsgc28g YW55IHBhcnQgb2YgdGhlIGZpbGUgbmFtZSAvIHBhdGggd2lsbCB0cmlnZ2VyIHRoZSBtYXRj aDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWJ1Zzwvc3Bhbj4gOiB0dXJuIG9u IGRpYWdub3N0aWNzLiBWYXJ5aW5nIGxldmVscyBvZiB2ZXJib3NpdHkgZnJvbSAwIChub25l KSB0byA0IChhIGxvdCk8L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImdhbGxlcnlfZm9ybSI+R2Fs bGVyeSBmb3JtPC9oMz4KCgk8cD5UaGUgPGNvZGU+Zm9ybTwvY29kZT4gaXMgd2hlcmUgeW91 IGRlc2lnbiB3aGF0IGV2ZXJ5IHRodW1ibmFpbCB3aWxsIGxvb2sgbGlrZSBvbiB0aGUgc2Ny ZWVuLiBZb3UgZG8gdGhpcyBieSBzcGVjaWZ5aW5nIG1hcmt1cCBvciB0YWdzIGFzIG5vcm1h bC4gSW4ga2V5IHBsYWNlcyB3aGVyZSB5b3Ugd2FudCwgc2F5LCBhbiBpbWFnZSBJRCAvIGFs dCB0YWcgLyBpbWFnZSB3aWR0aCB0byBiZSBkaXNwbGF5ZWQsIHlvdSBzcGVjaWZ5IHNwZWNp YWwgPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPi4gVGhlc2Ug YXJlIHJlcGxhY2VkIGZvciBlYWNoIGltYWdlIGluIHR1cm4sIHRodXMgYnVpbGRpbmcgdXAg dGhlIGdhbGxlcnkuPC9wPgoKCTxwPkluIGNvbGxhdGUgbW9kZSwgdGhlIGltYWdlIGRldGFp bHMgYXJlIGluc3RlYWQgbWFkZSBpbnRvIGxpc3RzLiBUaGUgZm9ybSBpcyBvbmx5IHByb2Nl c3NlZCBvbmNlIGFuZCB0aGUgcmVwbGFjZW1lbnQgdGFncyBvdXRwdXQgdGhlIGVudGlyZSBs aXN0LjwvcD4KCgk8aDQgY2xhc3M9ImF0dHMgIiBpZD0icmVwX2dhbGxlcnkiPlJlcGxhY2Vt ZW50IHRhZ3M6IGdhbGxlcnk8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PntpZH08L3NwYW4+IDogaW1hZ2UgSUQgKG9yLCBpbiBkaXJlY3RvcnkgbW9kZSwgdGhlIGZp bGVuYW1lIHdpdGhvdXQgaXRzIGV4dGVuc2lvbik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e25hbWV9PC9zcGFuPiA6IGZ1bGwgaW1hZ2UgZmlsZW5hbWUgYXMgZGVmaW5lZCBp biB0aGUgZGF0YWJhc2UsIHVzdWFsbHkgaW5jbHVkaW5nIGV4dGVuc2lvbjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57ZXh0fTwvc3Bhbj4gOiBmaWxlIGV4dGVuc2lvbiwgaW5j bHVkaW5nIGRvdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57Y2F0ZWdvcnl9PC9z cGFuPiA6IGltYWdlIGNhdGVnb3J5IG5hbWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e2NhdGVnb3J5X3RpdGxlfTwvc3Bhbj4gOiBpbWFnZSBjYXRlZ29yeSB0aXRsZTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57YXV0aG9yfTwvc3Bhbj4gOiB3aG8gdXBsb2Fk ZWQgdGhlIGltYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt1cmx9PC9zcGFu PiA6IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG9mIHRoZSBmdWxsc2l6ZSBpbWFn ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJ1cmx9PC9zcGFuPiA6IDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG9mIHRoZSB0aHVtYm5haWw8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e2ltYWdlcGF0aH08L3NwYW4+IDogZGlyZWN0b3J5IHRo ZSBpbWFnZSBpcyBpbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aW1hZ2VkZWZ9 PC9zcGFuPiA6IGp1c3QgdGhlIGZpbGUgbmFtZSBwYXJ0IG9mIHRoZSBpbWFnZSAoZS5nLiA1 LmpwZyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iZGVmfTwvc3Bhbj4g OiBqdXN0IHRoZSBmaWxlIG5hbWUgcGFydCBvZiB0aGUgdGh1bWJuYWlsIChlLmcuIDV0Lmpw Zyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2FsdH08L3NwYW4+IDogYWx0IHRl eHQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RpdGxlfTwvc3Bhbj4gOiBjYXB0 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 PC9wPgoKCTxwPklmIHlvdSB1c2VkIDxjb2RlPmdyb3VwdGFnPSZxdW90O2RpdiZxdW90Ozwv Y29kZT4gYXMgd2VsbCwgeW91IHdvdWxkIGJlIGdpdmVuIHR3byBuZXcgcmVwbGFjZW1lbnQg dGFncyBsYWJlbGxlZCA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+Z3Jv dXB0YWdlbmQ8L2NvZGU+LiBTZWUgJiM4MjIwO2V4YW1wbGUgNiYjODIyMTsjZWc2IGZvciBk ZXRhaWxzLjwvcD4KCgk8aDMgaWQ9InBhZ2luZ19mb3JtIj5QYWdpbmcgZm9ybTwvaDM+CgoJ PHA+QWRkIGdhbGxlcnkgbmF2aWdhdGlvbiB0byB5b3VyIHBhZ2UuIFdvcmtzIGluIGEgc2lt aWxhciBtYW5uZXIgdG8gdGhlIDxhIGhyZWY9IiNnYWxsZXJ5X2Zvcm0iPmdhbGxlcnkgZm9y bTwvYT46IGEgc2VyaWVzIG9mIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5SZXBsYWNlbWVudCBU YWdzPC9hPiBnb3Zlcm4gd2hpY2ggZ2FsbGVyeSBuYXZpZ2F0aW9uIGl0ZW1zIGFyZSBhdmFp bGFibGUuIFlvdSBjb3VsZCBjaG9vc2UgdG8gb25seSBzaG93IG5leHQvcHJldi4gT3IgcGVy aGFwcyAxc3QgcGFnZS9sYXN0IHBhZ2UuIE9yIG51bWJlcmVkIHBhZ2UgbGlua3MuPC9wPgoK CTxoNCBjbGFzcz0iYXR0cyAiIGlkPSJyZXBfcGFnaW5nIj5SZXBsYWNlbWVudCB0YWdzOiBw YWdpbmc8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZmaXJzdH08 L3NwYW4+IDogZmlyc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwO0ZpcnN0JiM4MjIx Oyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnByZXZ9PC9zcGFuPiA6IHBy ZXZpb3VzIHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYjODIyMDsmbGFxdW87JiM4MjIxOyk8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmVhcmxpZXJ9PC9zcGFuPiA6IGFueSBw YWdlIG51bWJlcnMgYmVmb3JlIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+e25hdnRoaXN1cmx9PC9zcGFuPiA6IGN1cnJlbnQgcGFnZSB3aXRoIGEg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluayB0byBpdHNlbGY8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXN9PC9zcGFuPiA6IGN1cnJlbnQgcGFnZSB3 aXRob3V0IGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluazwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bGF0ZXJ9PC9zcGFuPiA6IGFueSBwYWdlIG51bWJl cnMgYWZ0ZXIgdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57bmF2bmV4dH08L3NwYW4+IDogbmV4dCBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7 JnJhcXVvOyYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZsYXN0 fTwvc3Bhbj4gOiBsYXN0IHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYjODIyMDtMYXN0JiM4MjIx Oyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmZpcnN0cGFnZXVybH08L3Nw YW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIGZpcnN0IHBhZ2U8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnByZXZwYWdldXJsfTwvc3Bhbj4g OiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gcHJldmlvdXMgcGFnZTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2dGhpc3BhZ2V1cmx9PC9zcGFuPiA6 IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0byBjdXJyZW50IHBhZ2U8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdm5leHRwYWdldXJsfTwvc3Bhbj4gOiBy YXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gbmV4dCBwYWdlPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZsYXN0cGFnZXVybH08L3NwYW4+IDogcmF3IDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIGxhc3QgcGFnZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRvdGFsIG51bWJlciBv ZiBpbWFnZXMgbWF0Y2hlZCBvbiB0aGUgY3VycmVudCBwYWdlPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnt0b3RhbHBhZ2VzfTwvc3Bhbj4gOiB0b3RhbCBudW1iZXIgb2YgcGFn ZXMgaW4gdGhpcyBjb2xsZWN0aW9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntt YXhpbWFnZXN9PC9zcGFuPiA6IGFic29sdXRlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyBh Y3Jvc3MgYWxsIHBhZ2VzPC9saT4KCTwvdWw+CgoJPHA+VGhlIGN1cnJlbnQgcGFnZSBoYXMg YSBmaXhlZCBjbGFzcyBvZiAmIzgyMTY7Y3VycmVudCYjODIxNzsgYW5kIGVhY2ggaXRlbSBp cywgYnkgZGVmYXVsdCwgYSA8Y29kZT4mbHQ7bGkmZ3Q7PC9jb2RlPiBmb3IgZWFzeSBzdHls aW5nLiBUbyBhdm9pZCBhIHppbGxpb24gb3B0aW9ucywgY3VzdG9tIGxhYmVscyBhcmUgZGVm aW5lZCBkaXJlY3RseSBpbiB0aGUgZm9ybSBpdHNlbGYuIFRvIGxhYmVsIHRoZSBsaW5rIHRo YXQgdGFrZXMgdXNlcnMgdG8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGdhbGxlcnkgYXMgJiM4 MjIwOzFzdCYjODIyMTssIHVzZTo8L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OjFzdH08L2Nv ZGU+PC9wPgoKCTxwPldpdGggdGhpcyBzeW50YXggeW91IGNhbiBsYWJlbCBuYXZmaXJzdCwg bmF2bGFzdCwgbmF2cHJldiwgbmF2bmV4dCBhbmQgbmF2dGhpcyAodGhlICYjODIxNjs6JiM4 MjE3OyBkZWxpbWl0ZXIgaW4gdGhpcyBjYXNlIGlzIHNwZWNpZmllZCBieSA8Y29kZT5wYXJh bWRlbGltPC9jb2RlPikuIFlvdSBjYW4gdXNlIHRoaXMgbWVjaGFuaXNtIHRvIHJlYWQgPHNw YW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4gc25pcHBldHMsIGUuZzo8L3A+CgoJPHA+PGNv ZGU+e25hdmZpcnN0OiMjZmlyc3RMYWJlbCMjfTwvY29kZT48L3A+CgoJPHA+WW91IGNhbiBv dmVycmlkZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZCBieSBuYXZlYXJsaWVyIGFu ZCBuYXZsYXRlciBieSBzcGVjaWZ5aW5nIGEgY29sb24gYW5kIGEgbnVtYmVyLiBTbyB0byBv bmx5IHNob3cgMiBpdGVtcyB0byB0aGUgbGVmdCBvZiB0aGUgY3VycmVudCBwYWdlIGFuZCAz IGl0ZW1zIHRvIHRoZSByaWdodCwgdXNlIDxjb2RlPntuYXZlYXJsaWVyOjJ9IHtuYXZsYXRl cjozfTwvY29kZT4gaW4geW91ciBmb3JtLiBJZiB5b3Ugd2VyZSBvbiBwYWdlIDkgb2YgMTUs IHtuYXZlYXJsaWVyOjR9IHtuYXZsYXRlcjozfSB3b3VsZCBzaG93IDxjb2RlPiZsdDsmbHQ7 IDUgNiA3IDggOSAxMCAxMSAxMiAmZ3Q7Jmd0OzwvY29kZT48L3A+CgoJPHA+Q3VycmVudGx5 IDxjb2RlPntuYXZlYXJsaWVyfTwvY29kZT4gYW5kIDxjb2RlPntuYXZsYXRlcn08L2NvZGU+ IG9ubHkgZGlzcGxheSBhcmFiaWMgbnVtZXJhbHMuIEFueSBpZGVhcyBvbiBob3cgdG8gb2Zm ZXIgb3RoZXIgY2hhcmFjdGVyIHNldHMgZ3JlYXRseSBhcHByZWNpYXRlZC48L3A+CgoJPGgz IGlkPSJjb21ib3MiPkNvbWJvczwvaDM+CgoJPHA+SWYgdGhlIGJ1aWx0LWluIDxhIGhyZWY9 IiNyZXBfZ2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnczwvYT4gYXJlbiYjODIxNzt0IGVub3Vn aCBmb3IgeW91ciBuZWVkcyBvciB5b3UgZmluZCB5b3Vyc2VsZiByZXBlYXRpbmcgdGhlIHNh bWUgY29tYmluYXRpb24gYW5kIHdhbnQgdG8gc2F2ZSB5b3Vyc2VsZiBzb21lIHR5cGluZywg eW91IGNhbiBkZWZpbmUgeW91ciBvd24gcmVwbGFjZW1lbnQgdGFncy4gVGhlIHN5bnRheCBp czo8L3A+CgoJPHA+PGNvZGU+Y29tYm89JnF1b3Q7bmV3dGFnMTpkZWZpbml0aW9uLCBuZXd0 YWcyOmRlZmluaXRpb24sIC4uLiZxdW90OzwvY29kZT48L3A+CgoJPHA+JiM4MjE2O2RlZmlu aXRpb24mIzgyMTc7IGNhbiBiZSBhbnkgZml4ZWQgdGV4dCwgYW55IGV4aXN0aW5nIHJlcGxh Y2VtZW50IHRhZywgb3IgYW55IDxjb2RlPj88L2NvZGU+IGFydGljbGUgdmFyaWFibGUgc28g eW91IGNhbiBnZXQgcmVhbGx5IHdpbGQgaGVyZSwgZm9yIGV4YW1wbGU6PC9wPgoKCTxwPjxj b2RlPmNvbWJvPSZxdW90O2ltZ2luOmZvdW5kIGluID9zIFt0YWdnZWQgd2l0aCA/a2V5d29y ZHMuIFBob3RvIGJ5IHthdXRob3J9XSZxdW90OzwvY29kZT48L3A+CgoJPHA+T25jZSBkZWZp bmVkLCA8Y29kZT57aW1naW59PC9jb2RlPiBpcyBhdmFpbGFibGUgdG8geW91ciBnYWxsZXJ5 IDxjb2RlPmZvcm08L2NvZGU+IGFuZCBtaWdodCBiZSByZXBsYWNlZCB3aXRoICYjODIyMDtm b3VuZCBpbiB6b28gW3RhZ2dlZCB3aXRoIHplYnJhLCBhZnJpY2EsIHN0cmlwZXMuIFBob3Rv IGJ5IEJsb2tlXSYjODIyMTsuICRwcmV0ZXh0IGlzIGFsc28gYXZhaWxhYmxlIGZvciB0aG9z ZSBnZWVrcyB3aG8ga25vdyB3aGF0JiM4MjE3O3MgaW4gaXQgKHRlbXBvcmFyaWx5IHVzZSA8 Y29kZT5kZWJ1Zz0mcXVvdDs0JnF1b3Q7PC9jb2RlPiB0byB2aWV3IGFsbCBhdmFpbGFibGUg YXJ0aWNsZSB2YXJpYWJsZXMpLjwvcD4KCgk8cD5PbmUgdGhpbmcgdG8gd2F0Y2ggb3V0IGZv ciBpcyB0aGF0IHRoZSBzcGFjZSBjaGFyYWN0ZXIgaXNuJiM4MjE3O3QgbmVjZXNzYXJpbHkg YSBkZWxpbWl0ZXIgZm9yIDxjb2RlPj88L2NvZGU+IHZhcmlhYmxlcyAoYmVjYXVzZSBjdXN0 b20gZmllbGRzIGNhbiBoYXZlIHNwYWNlcyBpbiB0aGVtKS4gU28gPGNvZGU+Y29tYm89JnF1 b3Q7ZG9lc25vdHdvcms6P3MgaW4gP2NhdGVnb3J5MSZxdW90OzwvY29kZT4gd2lsbCBsb29r IGZvciBhIHZhcmlhYmxlIGxhYmVsbGVkICYjODIyMDtzIGluJiM4MjIxOyBhbmQgb25lIGNh bGxlZCAmIzgyMjA7Y2F0ZWdvcnkxJiM4MjIxOy4gT25seSBvbmUgb2YgdGhvc2UgZXhpc3Rz ISBDbGV2ZXIgdXNlIG9mIHBhcmVudGhlc2VzIG9yIG90aGVyIHB1bmN0dWF0aW9uIGNhbiB3 b3JrIHJvdW5kIHRoaXMuPC9wPgoKCTxoMyBpZD0iY29sbGF0ZV9tb2RlIj5Db2xsYXRlIG1v ZGU8L2gzPgoKCTxwPklmIHlvdSB3YW50IHRvIGdldCA8ZW0+cmVhbGx5PC9lbT4gZnVua3kg eW91IGNhbiBwdXQgdGhlIHBsdWdpbiBpbnRvIGEgMm5kIG1vZGUgY2FsbGVkICYjODIyMDtj b2xsYXRpb24gbW9kZSYjODIyMTsuIFRoaXMgbWVhbnMgeW91ciBjaG9zZW4gZm9ybSBpcyA8 c3Ryb25nPm5vdDwvc3Ryb25nPiBleGVjdXRlZCBmb3IgZXZlcnkgaW1hZ2U7IGl0IGlzIG9u bHkgdXNlZCBvbmNlIGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgbGlzdCwgYWZ0ZXIgYWxsIGlt YWdlcyBoYXZlIGJlZW4gaW50ZXJuYWxseSAmIzgyMjA7Y29sbGVjdGVkJiM4MjIxOy4gSW4g ZWZmZWN0LCB0aGUgcGx1Z2luIGJ1aWxkcyB1cCBhIGdpYW50IGFycmF5IG9mIGFsbCBtYXRj aGluZyBpbWFnZXMgcmVhZHkgZm9yIHlvdSB0byBvdXRwdXQgdGhlbSBhbGwgaW4gb25lIGdv LiBUaGlzIGlzIHZlcnkgaGFuZHkgZm9yIGRvaW5nIHNsaWRlc2hvd3MgYW5kIGlzIGJlc3Qg ZXhwbGFpbmVkIGJ5IGV4YW1wbGU6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7MSZx dW90OzwvY29kZT48L3A+CgoJPHA+c3dpdGNoZXMgY29sbGF0aW9uIG1vZGUgb24uIElmIHRo ZSBwbHVnaW4gbWF0Y2hlZCA0IGltYWdlcyBhbmQgeW91IHdlcmUgdG8gdXNlIHRoZSByZXBs YWNlbWVudCB0YWcgPGNvZGU+e25hbWV9PC9jb2RlPiBpbiB5b3VyIGZvcm0gbGlrZSB0aGlz OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRj aGluZyBpbWFnZXM6IHtuYW1lfQo8L2NvZGU+PC9wcmU+CgoJPHA+eW91IG1pZ2h0IGdldCB0 aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBt YXRjaGluZyBpbWFnZXM6IGhlcm9uLmpwZyxwZW5ndWluLmpwZyxlbXUuanBnLHB1ZmZpbi5q cGcKPC9jb2RlPjwvcHJlPgoKCTxwPlNvbWV0aW1lcyBpdCYjODIxNztzIHVzZWZ1bCB0byBi ZSBhYmxlIHRvIHB1dCBxdW90ZXMgYXJvdW5kIGVhY2ggaXRlbSBzbyB5b3UgY2FuIHRlbGwg Y29sbGF0ZSBtb2RlIHRvIGRvIHRoYXQgaW5zdGVhZDo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0 ZT0mcXVvdDtxdW90ZTp7bmFtZX0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPllvdSB3b3VsZCB0 aGVuIGdldDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5U aGUgbWF0Y2hpbmcgaW1hZ2VzOiAmcXVvdDtoZXJvbi5qcGcmcXVvdDssJnF1b3Q7cGVuZ3Vp bi5qcGcmcXVvdDssJnF1b3Q7ZW11LmpwZyZxdW90OywmcXVvdDtwdWZmaW4uanBnJnF1b3Q7 CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZGVsaW1pdGVyIChhIGNvbW1hIGluIHRoaXMgY2Fz ZSkgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUgPGNvZGU+ZGVsaW08L2NvZGU+IGF0dHJp YnV0ZS4gWW91IG1heSB1c2UgPGNvZGU+c2dscXVvdGU8L2NvZGU+IHRvIHdyYXAgc2luZ2xl IHF1b3RlcyByb3VuZCB0aGUgaXRlbXMsIG9yICYjODIyMDtkYmxxdW90ZSYjODIyMTsgYXMg YSBzeW5vbnltIGZvciAmIzgyMjA7cXVvdGUmIzgyMjE7IGlmIHlvdSBwcmVmZXIuIFlvdSBj YW4gcXVvdGUgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBvbmNlIGJ5IHNwZWNpZnlpbmcgdGhl IGl0ZW1zIGFzIGEgZGVsaW1pdGVkIGxpc3Q6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1 b3Q7cXVvdGU6e25hbWV9OnthbHR9OntpbWdpbn0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPlll cywgeW91IGNhbiB1c2UgY29tYm9zISBUaGUgZGVsaW1pdGVyIHVzZWQgYmV0d2VlbiBpdGVt cyBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+IGF0 dHJpYnV0ZS48L3A+CgoJPHA+VGhlIHNlY29uZCBzcGVjaWFsIGZlYXR1cmUgb2YgY29sbGF0 aW9uIG1vZGUgaXMgdGhhdCB5b3UgZG8gbm90IGhhdmUgdG8gYWx3YXlzIG91dHB1dCB0aGUg ZW50aXJlIGxpc3QuIFlvdSBjYW4gZ3JhYiBpbmRpdmlkdWFsIGVudGl0aWVzIGZyb20gd2l0 aGluIHRoZSBpbnRlcm5hbCBhcnJheSBieSB1c2luZyB0aGUgJiM4MjE2OyMmIzgyMTc7IG5v dGF0aW9uIHRodXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+e25hbWV9IG1pZ2h0IG91dHB1dCAmcXVvdDtoZXJvbi5qcGcmcXVvdDssJnF1b3Q7cGVu Z3Vpbi5qcGcmcXVvdDssJnF1b3Q7ZW11LmpwZyZxdW90OywmcXVvdDtwdWZmaW4uanBnJnF1 b3Q7IChhcyBiZWZvcmUpCihuYW1lIzF9IHdvdWxkIG9ubHkgb3V0cHV0IGhlcm9uLmpwZwoo bmFtZSMzfSB3b3VsZCBvbmx5IG91dHB1dCBlbXUuanBnCjwvY29kZT48L3ByZT4KCgk8cD5O b3RlIHRoYXQgd2hlbiBwdWxsaW5nIG91dCBpbmRpdmlkdWFsIGVudHJpZXMgdGhleSA8c3Ry b25nPmRvIG5vdDwvc3Ryb25nPiBnZXQgcXVvdGVzIGFkZGVkIHRvIHRoZW0sIHJlZ2FyZGxl c3Mgb2Ygd2hldGhlciB5b3UgdXNlZCA8Y29kZT5xdW90ZTwvY29kZT4gb3Igbm90LiBUaGlz IGlzIGJlY2F1c2UgaXQgaXMgYSBzaW5nbGUgaXRlbSBzbyB5b3UgY2FuIGVhc2lseSBwdXQg dGhlIHF1b3RlcyBpbiB0aGUgZm9ybSBpdHNlbGYgKHZpejogPGNvZGU+JnF1b3Q7e25hbWUj Mn0mcXVvdDs8L2NvZGU+KTwvcD4KCgk8cD5NZXNzaW5nIGFyb3VuZCB3aXRoIHB1bGxpbmcg b3V0IGluZGl2aWR1YWwgaXRlbXMgYW5kIGxpc3RzIGNhbiB5aWVsZCBzb21lIHZlcnkgaW50 ZXJlc3RpbmcgcmVzdWx0cyBhbmQgYWxsb3dzIHNvbWUgY29tcGxldGVseSB3YWNreSBnYWxs ZXJpZXMgdG8gYmUgZ2VuZXJhdGVkLiBUcnkgY29tYmluaW5nIHNtZF9nYWxsZXJ5IHRhZ3Mg d2l0aCA8Y29kZT4mbHQ7dHhwOmlmX2RpZmZlcmVudCZndDs8L2NvZGU+IGZvciBhIHJlYWwg bWluZCBzY3JhbWJsZSA6LSk8L3A+CgoJPGgyIGlkPSJleGFtcGxlcyI+RXhhbXBsZXM8L2gy PgoKCTxwPlRoZSBleGFtcGxlcyBhbGwgdXNlIHRoZSBjbGFzc2ljIHpvbyB3ZWJzaXRlLiBM ZXQmIzgyMTc7cyBzcGVjaWZ5IHNvbWUgcGljdHVyZXMgdG8gcHVsbCBvdXQgb2YgdGhlIGRh dGFiYXNlOjwvcD4KCgk8aDQgaWQ9ImVnMSI+RXhhbXBsZSAxOiBzaW1wbGUgLyBsaWdodGJv eGVkIGdhbGxlcnk8L2g0PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7IHN1 YmxldmVsPSZxdW90O2FsbCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgcHVsbHMgb3V0IGFsbCBwaWN0dXJlcyBmcm9tIHRo ZSBhbmltYWxzIGNhdGVnb3J5LCBpbmNsdWRpbmcgYWxsIHN1Yi1jYXRlZ29yaWVzLCBhbmQg cGFzc2VzIHRoZW0gdG8gdGhlIGZvcm0gY2FsbGVkICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBm b3IgcHJvY2Vzc2luZy4gVGhlIGZvcm0gY291bGQgYmU6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBjbGFzcz0mcXVvdDthbmltYWdlJnF1 b3Q7IHNyYz0mcXVvdDt7dXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZndDsK Jmx0O2RpdiBjbGFzcz0mcXVvdDthY2FwdGlvbiZxdW90OyZndDt7dGl0bGV9Jmx0Oy9kaXYm Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IG1lYW5zLCBmb3IgZXZlcnkgbWF0Y2hlZCBp bWFnZSwgc3Vic3RpdHV0ZSBpdHMgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4sIGFs dCBhbmQgdGl0bGUgdGFncyBpbnRvIHRoZSByZWxldmFudCBwbGFjZXMuIFRodXMgeW91IGdl dCBhIHNlcmllcyBvZiBpbWFnZXMgb24gdGhlIHBhZ2UsIHdoaWNoIHlvdSBjYW4gc3R5bGUg YWNjb3JkaW5nbHkuPC9wPgoKCTxwPkZvciBhIG1vcmUgZmFuY3kgb3V0cHV0IHVzaW5nLCBz YXksIHNsaW1ib3gsIHlvdSBjb3VsZCBsb2FkIHRoZSByZWxldmFudCBsaWJyYXJpZXMgYW5k IHN0eWxlcyBpbiB0aGUgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBvZiB5b3VyIHBhZ2U6 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3Njcmlw dCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL21vb3Rv b2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7 dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvc2xpbWJveC5qcyZxdW90OyZn dDsmbHQ7L3NjcmlwdCZndDsKJmx0O2xpbmsgcmVsPSZxdW90O3N0eWxlc2hlZXQmcXVvdDsg dHlwZT0mcXVvdDt0ZXh0L2NzcyZxdW90OyBocmVmPSZxdW90Oy9jc3Mvc2xpbWJveC5jc3Mm cXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZW4geW91ciAmIzgyMTY7Z2FsbGVy eSYjODIxNzsgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90 OyBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90OwogICAgIHRp dGxlPSZxdW90O0EgcGljdHVyZSBvZiB7dGl0bGV9JnF1b3Q7IGhlaWdodD0mcXVvdDt7aGVp Z2h0fSZxdW90OyB3aWR0aD0mcXVvdDt7d2lkdGh9JnF1b3Q7Jmd0OwogJmx0O3R4cDp0aHVt Ym5haWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7L2EmZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5Wb2lsYSEgVXNpbmcgdGhlIHNhbWUgc21kX2dhbGxlcnkgdGFnIHlvdSBoYXZl IGNoYW5nZWQgdGhlIHdheSB0aGUgZ2FsbGVyeSByZW5kZXJzIGZyb20gYSBzaW1wbGUgbGlz dCB0byBhIGZ1bGwtZmVhdHVyZWQgc2xpbWJveC4gV2l0aCB2aXJ0dWFsbHkgdGhlIHNhbWUg Zm9ybSB5b3UgY2FuIHN3aXRjaCB0aGUgb3V0cHV0IHRvIHRoaWNrYm94LCBsaWdodGJveCwg bGl0ZWJveCwgbW9vbmJveCBvciB3aGF0ZXZlci15b3UtbGlrZS1ib3ggZGVwZW5kaW5nIG9u IHdoaWNoIGxpYnJhcmllcyB5b3UgbG9hZC4gRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZm9y IHlvdXIgZmF2b3VyaXRlIGVmZmVjdCBhbmQgcGx1ZyBpdCBpbnRvIHNtZF9nYWxsZXJ5Ljwv cD4KCgk8aDQgaWQ9ImVnMiI+RXhhbXBsZSAyOiBsYXVuY2ggZnJvbSBvbmUgaW1hZ2U8L2g0 PgoKCTxwPkEgY29tbW9uIHJlcXVlc3QgaXMgdG8gYmUgYWJsZSB0byAmIzgyMjA7bGF1bmNo JiM4MjIxOyBhIHNsaW1ib3ggZ2FsbGVyeSBmcm9tIGEgc2luZ2xlIGltYWdlIG9yIHRleHQg bGluay4gVXNpbmcgYSBzaW5nbGUgaW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDth bmltYWxzJnF1b3Q7CiAgICAgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsgc3VibGV2 ZWw9JnF1b3Q7YWxsJnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHRodW1i bGltaXQ9JnF1b3Q7MSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0 IHRoaXMgdGltZSB3ZSBhcmUgYWRkaW5nIHRvIHRoZSBnYWxsZXJ5IHRoZSBpbWFnZShzKSBw dWxsZWQgZnJvbSB0aGUgYXJ0aWNsZSBpbWFnZSBmaWVsZCBvZiB0aGUgY3VycmVudCBhcnRp Y2xlLiBUaGUgZm9ybSB3aWxsIHVzZSB0aGUgc3BlY2lhbCA8Y29kZT57b2JqZWN0fTwvY29k ZT4gcmVwbGFjZW1lbnQgdGFnIHNvIGl0IG9ubHkgZGlzcGxheXMgdGhlIHRodW1ibmFpbCBp ZiB0aGUgdmFsdWUgb2YgdGh1bWJsaW1pdCBoYXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gYmVl biByZWFjaGVkOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDthIHJlbD0mcXVvdDtsaWdodGJveC1zbWQmcXVvdDsgaHJlZj0mcXVvdDt7dXJsfSZx dW90OwogICAgIHRpdGxlPSZxdW90O0EgcGljdHVyZSBvZiB7dGl0bGV9JnF1b3Q7Jmd0Owp7 b2JqZWN0fQombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5DaGFuZ2UgdGhlIHN0YXJ0 IGltYWdlIGJ5IHNwZWNpZnlpbmcgPGNvZGU+dGh1bWJvZmZzZXQ8L2NvZGU+ICYjODIxMjsg bm90ZSB0aGlzIHdpbGwgYWxzbyBzdGFydCB0aGUgbGlnaHRib3ggZWZmZWN0IGZyb20gdGhl IGltYWdlIHlvdSBjaG9vc2UuIElmIHlvdSB3YW50IHRvIHN0YXJ0IG9uIGEgc3BlY2lmaWMg aW1hZ2UgaW4gcG9zaXRpb24gMSwgdXNlIHRoZSA8Y29kZT5pZDwvY29kZT4gYXR0cmlidXRl IHRvIGJyaW5nIGl0IHRvIHRoZSB0b3Agb2YgdGhlIGxpc3QsIG9yIGNoYW5nZSB0aGUgc29y dCBvcmRlci48L3A+CgoJPHA+SWYgeW91IHdhbnRlZCB0byBsYXVuY2ggdGhlIGdhbGxlcnkg ZnJvbSBhIHRleHQgbGluaywgYWRkIDxjb2RlPnRleHQ9JnF1b3Q7Q2xpY2sgdG8gc3RhcnQg bGlnaHRib3gmcXVvdDs8L2NvZGU+LjwvcD4KCgk8aDQgaWQ9ImVnMyI+RXhhbXBsZSAzOiBw b3B1cCBnYWxsZXJ5PC9oND4KCgk8cD5UbyBhY2hpZXZlIGFuIGVmZmVjdCBzaW1pbGFyIHRv IHJzc190aHVtYnBvcCwgYWRkIGFuIGltYWdlIGFuZCBjYXB0aW9uIHBsYWNlaG9sZGVyIG91 dHNpZGUgdGhlIGNhbGwgdG8gc21kX2dhbGxlcnksIHRoZW4gaW5jbHVkZSB5b3VyIHNtZF9n YWxsZXJ5IHRhZyBhcyB1c3VhbC4gVGhpcyB0aW1lIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQg aW4gYWxsIHRoZSBwaWN0dXJlcyBmcm9tIHRoZSBjYXRlZ29yaWVzIHVwIHRvIHR3byBsZXZl bHMgYmVsb3cgYm90aCAmIzgyMjA7YW5pbWFscyYjODIyMTssIHBsdXMgd2hpY2hldmVyIGNh dGVnb3JpZXMgYXJlIGxpc3RlZCBpbiA8Y29kZT5teV9jdXN0b21fZmllbGQ8L2NvZGU+Ojwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtpbWcgaWQ9 JnF1b3Q7ZnVsbHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFnZXMvZW1wdHkuanBnJnF1b3Q7 IC8mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9uJnF1b3Q7Jmd0OyZsdDsvc3Bh biZndDsKJmx0O3R4cDpzbWRfZ2FsbGVyeSBzdWJsZXZlbD0mcXVvdDsyJnF1b3Q7CiAgICAg Y2F0ZWdvcnk9JnF1b3Q7YW5pbWFscywgP215X2N1c3RvbV9maWVsZCZxdW90OwogICAgIGZv cm09JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGdh bGxlcnkgZm9ybSBsb29rcyBzY2FyeSBidXQgaXMgb25seSBhIHRodW1ibmFpbCBpbWFnZSBz dXJyb3VuZGVkIGJ5IGEgc2ltcGxlIGFuY2hvciB0YWcgd2l0aCB0d28gYWN0aW9ucyBhc3Np Z25lZCB0byBpdDogYSBtb3VzZW92ZXIgdG8gY29weSB0aGUgcGljdHVyZSBhbmQgY2FwdGlv biBpbnRvIHRoZSBwbGFjZWhvbGRlcjsgYW5kIGEgbW91c2VvdXQgdG8gcmVtb3ZlIHRoZW06 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2EgaHJl Zj0mcXVvdDt7dXJsfSZxdW90OyB0aXRsZT0mcXVvdDt7dGl0bGV9JnF1b3Q7CiAgICAgb25t b3VzZW92ZXI9JnF1b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsc2l6ZSYj Mzk7KS5zcmMgPSB0aGlzLmhyZWY7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMz OTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5lckhUTUwgPSB0aGlzLnRpdGxlOyByZXR1cm4gZmFs c2U7JnF1b3Q7CiAgICAgb25tb3VzZW91dD0mcXVvdDtkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgmIzM5O2Z1bGxzaXplJiMzOTspLnNyYyA9ICYjMzk7L2ltYWdlcy8xNy5qcGcmIzM5OzsK ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxjYXB0aW9uJiMzOTspLmlu bmVySFRNTCA9ICYjMzk7JiMzOTs7IHJldHVybiBmYWxzZTsmcXVvdDsmZ3Q7CiAgJmx0O2lt ZyBzcmM9JnF1b3Q7e3RodW1idXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZn dDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGVyZSBhcmUgbXVjaCBu ZWF0ZXIgd2F5cyBvZiBkb2luZyB0aGlzIChqUXVlcnk/KSBhbmQgaXQmIzgyMTc7cyBub3Qg cmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZm9ybSBpbiBhIGxpdmUgc2l0ZSwgYnV0IGl0IGdp dmVzIGEgZmxhdm91ciBvZiB3aGF0IGlzIHBvc3NpYmxlLjwvcD4KCgk8aDQgaWQ9ImVnNCI+ RXhhbXBsZSA0OiBzbGlkZXNob3c8L2g0PgoKCTxwPlRoaXMgb25lIHVzZXMgY29sbGF0ZSBt b2RlIGJ1dCBpcyBub3QgbXVjaCBtb3JlIGRpZmZpY3VsdCB0byB1bmRlcnN0YW5kLiBJbiB5 b3VyIDxjb2RlPiZsdDtoZWFkJmd0OzwvY29kZT4gc2VjdGlvbjo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4 dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvbW9vdG9vbHMuanMmcXVvdDsmZ3Q7 Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQm cXVvdDsgc3JjPSZxdW90Oy9qcy9zbGlkZXNob3cuanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQm Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgdGFnOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkKICBjYXRlZ29yeT0m cXVvdDtiaXJkcywgZmlzaCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsKICBjb21i bz0mcXVvdDtpbWdsaXN0OntpZH17ZXh0fSZxdW90OwogIGNvbGxhdGU9JnF1b3Q7cXVvdGU6 e2ltZ2xpc3R9OnthbHR9JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IHB1 bGxzIGFsbCBwaWN0dXJlcyBmcm9tIHRoZSBiaXJkcyBhbmQgZmlzaCBjYXRlZ29yaWVzLiBB bHRob3VnaCB0ZWNobmljYWxseSB1bm5lY2Vzc2FyeSwgYSBjb21ibyBoYXMgYmVlbiBkZWZp bmVkIHRvIHNob3cgaG93IGl0IGNhbiBiZSB1c2VkLiBUaGlzIGNvbWJvIGlzIGNhbGxlZCA8 Y29kZT5pbWdsaXN0PC9jb2RlPiBhbmQgaXMgZGVmaW5lZCBhcyB0aGUgaW1hZ2UmIzgyMTc7 cyBJRCBudW1iZXIgcGx1cyBpdHMgZXh0ZW5zaW9uLiBXZSB1c2UgdGhpcyBpbiB0aGUgY29s bGF0ZSBhdHRyaWJ1dGUgYW5kIHRlbGwgaXQgdG8gcHV0IGRvdWJsZSBxdW90ZXMgcm91bmQg ZXZlcnkgaXRlbSBpbiAmIzgyMTY7aW1nbGlzdCYjODIxNzsgYW5kICYjODIxNjthbHQmIzgy MTc7LiBUaGVuIHdlIGNhbiBwdXQgdGhlc2UgdmFsdWVzIGludG8gdGhlIG5lY2Vzc2FyeSBq YXZhc2NyaXB0IHRvIGdlbmVyYXRlIHRoZSBzbGlkZXNob3c6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2RpdiBjbGFzcz0mcXVvdDtzbGlkZXNo b3cmcXVvdDsgaWQ9JnF1b3Q7c2xpZGVzaG93MSZxdW90OyZndDsKICZsdDtpbWcgc3JjPSZx dW90OyZsdDt0eHA6c2l0ZV91cmwgLyZndDtpbWFnZXMve2lkIzF9LmpwZyZxdW90OwogICAg IGFsdD0mcXVvdDt7YWx0IzF9JnF1b3Q7IHdpZHRoPSZxdW90O3t3aWR0aCMxfSZxdW90OyBo ZWlnaHQ9JnF1b3Q7e2hlaWdodCMxfSZxdW90OyAvJmd0OwombHQ7L2RpdiZndDsKPC9jb2Rl Pgo8Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFz Y3JpcHQmcXVvdDsmZ3Q7Cm15U2hvdzEgPSBuZXcgU2xpZGVzaG93KCZxdW90O3NsaWRlc2hv dzEmcXVvdDssCiAgeyBodTogJnF1b3Q7Jmx0O3R4cDpzaXRlX3VybCAvJmd0O2ltYWdlcy8m cXVvdDssCiAgICBpbWFnZXM6IFt7aW1nbGlzdH1dLAogICAgY2FwdGlvbnM6IFt7YWx0fV0s CiAgICBjbGFzc2VzOiBbJnF1b3Q7cHJldiZxdW90OywmcXVvdDtuZXh0JnF1b3Q7LCZxdW90 O2FjdGl2ZSZxdW90O10sCiAgICB0eXBlOiAmcXVvdDtmYWRlJnF1b3Q7CiAgfSk7CiZsdDsv c2NyaXB0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHRoZSBpbml0aWFsIHBv cnRpb24gKGluIHRoZSBkaXYgYW5kIGltZyB0YWdzKSB1c2VzIHRoZSAmIzgyMTY7IyYjODIx Nzsgbm90YXRpb24gYmVjYXVzZSB3ZSBvbmx5IHdhbnQgdG8gZGlzcGxheSBvbmUgaW1hZ2Ug dG8gJiM4MjIwO3N0YXJ0JiM4MjIxOyB0aGUgc2xpZGVzaG93LiBJbiB0aGlzIGNhc2Ugd2Um IzgyMTc7cmUgdXNpbmcgdGhlIGZpcnN0IGltYWdlIGluIHRoZSBsaXN0LCBidXQgeW91IGNh biBjaGFuZ2UgdGhlICMxIGZvciAjNDIgaWYgeW91IHdhbnRlZCB0byBzaG93IHRoZSBmb3J0 eS1zZWNvbmQgaW1hZ2UgaW5zdGVhZCEgVGhlIHBhcnQgaW4gdGhlIHNjcmlwdCB0YWcgdXNl cyB0aGUgZnVsbCwgcXVvdGVkIGxpc3RzIGJlY2F1c2UgdGhhdCYjODIxNztzIHRoZSBmb3Jt YXQgdGhlIGphdmFzY3JpcHQgcmVxdWlyZXMuPC9wPgoKCTxoNCBpZD0iZWc1Ij5FeGFtcGxl IDU6IHBhZ2luYXRpb248L2g0PgoKCTxwPlRvIGFkZCBwYWdpbmcgdG8gYSBnYWxsZXJ5IHlv dSB1c2UgdGhlIDxjb2RlPmxpbWl0PC9jb2RlPiBhdHRyaWJ1dGUgdG8gc2hvdyBhIG51bWJl ciBvZiB0aHVtYnMgcGVyIHBhZ2UuIEZvciBhIHBhZ2VkIHRodW1icG9wIGdhbGxlcnkgdGhh dCBzaG93cyBmaXZlIHRodW1icyBwZXIgcGFnZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGlkPSZxdW90O2Z1bGxzaXplJnF1b3Q7IHNy Yz0mcXVvdDsvaW1hZ2VzL2VtcHR5LmpwZyZxdW90OyAvJmd0OwombHQ7c3BhbiBpZD0mcXVv dDtmdWxsY2FwdGlvbiZxdW90OyZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDt0eHA6c21kX2dhbGxl cnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OwogIGZvcm09JnF1b3Q7Z2FsbGVyeSZx dW90OyBwYWdlZm9ybT0mcXVvdDtnYWxsZXJ5X25hdiZxdW90OwogIGxpbWl0PSZxdW90OzUm cXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSAmIzgyMTY7Z2FsbGVyeSYjODIx NzsgZm9ybSBpcyBpZGVudGljYWwgdG8gdGhlIG9uZSBpbiA8YSBocmVmPSIjZWc0Ij5leGFt cGxlIDQ8L2E+LCB3aGlsZSB5b3VyIGdhbGxlcnlfbmF2IGZvcm0gbWlnaHQgbG9vayBsaWtl IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O2RpdiBjbGFzcz0mcXVvdDt0b3RhbCZxdW90OyZndDsjIG9mIHBpY3M6IHt0b3RhbGltYWdl c30mbHQ7L2RpdiZndDsKICAgICB7bmF2Zmlyc3R9IHtuYXZwcmV2fQogICAgIHtuYXZlYXJs aWVyfSB7bmF2dGhpc30ge25hdmxhdGVyfQogICAgIHtuYXZuZXh0fSB7bmF2bGFzdH0KPC9j b2RlPjwvcHJlPgoKCTxwPlRoYXQgbWlnaHQgcmVuZGVyIHNvbWV0aGluZyBzaW1pbGFyIHRv IHRoaXMgYmVsb3cgdGhlIHRodW1iczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4jIG9mIHBpY3M6IDM4CiAgICAgRmlyc3QgJmx0OyAxIDIgMyA0IDUg NiA3IDggJmd0OyBMYXN0CjwvY29kZT48L3ByZT4KCgk8aDQgaWQ9ImVnNiI+RXhhbXBsZSA2 OiBvbmNoYW5nZTwvaDQ+CgoJPHA+SWYgeW91IHdhbnQgdG8gc2ltdWxhdGUgbXVsdGlwbGUg Z2FsbGVyaWVzIGZyb20gb25lIHNtZF9nYWxsZXJ5IHRhZyB5b3UgY2FuIHVzZSA8Y29kZT5v bmNoYW5nZTwvY29kZT4gdG8gJiM4MjIwO3dhdGNoJiM4MjIxOyBmb3Igd2hlbiBjZXJ0YWlu IGF0dHJpYnV0ZXMgb2YgaW1hZ2VzIGNoYW5nZSBhbmQgaW5zZXJ0IHNwZWNpYWwgdGFncyA8 ZW0+b25seSB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzPC9lbT4uIEluIHRoaXMgcmVnYXJkIGl0 IGFjdHMgbGlrZSBhIHNvdXBlZC11cCB2ZXJzaW9uIG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+JiM4MjE3O3MgYnVpbHQtaW4gPGNvZGU+Jmx0O3R4cDppZl9kaWZmZXJlbnQm Z3Q7PC9jb2RlPiB0YWcuPC9wPgoKCTxwPllvdSBjYW4gd2F0Y2ggdGhlIHVzdWFsIHRoaW5n cyBsaWtlIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNv ZGU+d2lkdGg8L2NvZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8Y29kZT5leHQ8L2NvZGU+ ZW5zaW9uIGFuZCBzbyBvbi4gSGVyZSYjODIxNztzIGFuIGV4YW1wbGU6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQog ICAgIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVy eSZxdW90OwogICAgIG9uY2hhbmdlPSZxdW90O2NhdGVnb3J5X3RpdGxlJnF1b3Q7CiAgICAg b25jaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5TaW5jZSB0aGUgcGx1Z2luIG5vcm1hbGx5IHNvcnRzIGJ5IGNhdGVnb3J5LCB0aGlzIHdp bGwgaGF2ZSB0aGUgZWZmZWN0IG9mIGFkZGluZyBvbmUgcmVwbGFjZW1lbnQgdGFnIDxjb2Rl PntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX08L2NvZGU+IGF0IHRoZSB2ZXJ5IGJlZ2lubmlu ZyBvZiB0aGUgdGh1bWIgbGlzdCBhbmQgYWxzbyB3aGVuIHRoZSBjYXRlZ29yeSBzd2l0Y2hl cyBmcm9tICYjODIxNjtiaXJkcyYjODIxNzsgdG8gJiM4MjE2O2Zpc2gmIzgyMTc7LiBUaHVz IHlvdXIgZ2FsbGVyeSBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX0KJmx0O2EgaHJl Zj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90 OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCB3b3Vs ZCBtYWtlIHR3byBsaWdodGJveGFibGUgc2V0cyBvZiB0aHVtYm5haWxzIHdpdGggYSBoZWFk aW5nIDMgYWJvdmUgZWFjaCBncm91cCBjb250YWluaW5nIHRoZSBjYXRlZ29yeSB0aXRsZS48 L3A+CgoJPHA+Tm90ZSB0aGF0IGlmIHlvdSBhZGQgPGNvZGU+dGh1bWJsaW1pdD0mcXVvdDsx JnF1b3Q7PC9jb2RlPiB0byB0aGUgc21kX2dhbGxlcnkgdGFnIHlvdSBjYW4gc2hvdyBqdXN0 IG9uZSB0aHVtYm5haWwgaW4gZWFjaCBncm91cCwgd2l0aCBoZWFkaW5ncyBhYm92ZSBlYWNo IHRodW1iLiBWaXNpdG9ycyBjbGlja2luZyB0aGUgdGh1bWIgd2lsbCBsYXVuY2ggdGhlIGxp Z2h0Ym94IGFuZCBiZSBhYmxlIHRvIGJyb3dzZSB0aGUgcmVsZXZhbnQgY2F0ZWdvcnkuPC9w PgoKCTxwPkFuIGV4dHJhIHBhaXIgb2YgcmVwbGFjZW1lbnQgdGFncyBhcmUgYXZhaWxhYmxl IGlmIHlvdSB3aXNoIHRvIHdyYXAgdGhlIG9iamVjdHMgdGhlbXNlbHZlcyB0byBncm91cCB0 aGVtLiBVc2UgdGhlIDxjb2RlPmdyb3VwdGFnPC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXBjbGFz czwvY29kZT4gYXR0cmlidXRlcyB0byBzZXQgaXQgdXAsIHRoZW4gdHdvIG5ldyByZXBsYWNl bWVudCB0YWdzIGNhbGxlZCA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+ Z3JvdXB0YWdlbmQ8L2NvZGU+IGJlY29tZSBhdmFpbGFibGUuIFRoZXkgYXJlIGNvbmRpdGlv bmFsIGFuZCBhcmUgb25seSBwb3B1bGF0ZWQgd2hlbiB0aGUgYXR0cmlidXRlcyB5b3UgYXJl IHdhdGNoaW5nL3NvcnRpbmcgYnkgY2hhbmdlLiBVc2UgaXQgbGlrZSB0aGlzOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxl cnkgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsKICAgICBjYXRlZ29yeT0mcXVvdDti aXJkcywgZmlzaCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsKICAgICBvbmNoYW5n ZT0mcXVvdDtjYXRlZ29yeV90aXRsZSZxdW90OwogICAgIG9uY2hhbmdld3JhcHRhZz0mcXVv dDtoMyZxdW90OwogICAgIGdyb3VwdGFnPSZxdW90O2RpdiZxdW90OyBncm91cGNsYXNzPSZx dW90O2JveCZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj57b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9Cntncm91cHRh Z3N0YXJ0fQombHQ7YSBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IHJlbD0mcXVvdDtsaWdodGJv eC17Y2F0ZWdvcnl9JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7Cntncm91cHRhZ2Vu ZH0KPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB5b3UgY2FuIG1vdmUgdGhlIDxjb2Rl Pmdyb3VwdGFnc3RhcnQ8L2NvZGU+IHRvIHN1cnJvdW5kIHRoZSA8Y29kZT5vbmNoYW5nZTwv Y29kZT5kIHRpdGxlIGlmIHlvdSB3aXNoLjwvcD4KCgk8aDIgaWQ9ImNoYW5nZWxvZyI+Q2hh bmdlbG9nPC9oMj4KCgk8cD5BbGwgYXZhaWxhYmxlIHZlcnNpb25zIGFuZCBjaGFuZ2VzIGFy ZSBsaXN0ZWQgaGVyZS48L3A+CgoJPHA+PHN0cm9uZz5CZXRhPC9zdHJvbmc+PC9wPgoKCTx1 bD4KCQk8bGk+MTQgRmViIDA4IHwgMC4xIHwgSW5pdGlhbCByZWxlYXNlICYjODIxMTsgSGFw cHkgVmFsZW50aW5lcyBEYXkgOi0pPC9saT4KCQk8bGk+MTkgRmViIDA4IHwgMC4yIHwgQWRk ZWQgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhw P3BpZD0xNzI0NTkjcDE3MjQ1OSI+e2dhbGxlcnlpZH08L2E+ICh0aGFua3MgcmxvYWRlcnJv KSBhbmQgc29tZSBza2VsZXRvbiBkb2NzPC9saT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5PZmZp Y2lhbDwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjExIE1hciAwOCB8IDAuMyB8IE9mZmlj aWFsIHB1YmxpYyByZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0eSBmaWVsZCBidWc7IGFkZGVk IHtjb3VudGVyfSwge2luZGV4fSBhbmQgdGhlIHRvdGFscyAoYWxsIHRoYW5rcyA8YSBocmVm PSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3MzQ5 MCNwMTczNDkwIj5qYWtvYjwvYT4pPC9saT4KCQk8bGk+MTUgTWFyIDA4IHwgMC4zMSB8IEZp eGVkIGEgY291cGxlIG9mIHVuZGVmaW5lZCBpbmRleGVzIGFuZCA8YSBocmVmPSJodHRwOi8v Zm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3NDgxOCNwMTc0ODE4 Ij5hZGRlZCB7Y2F0ZWdvcnlfdGl0bGV9PC9hPiAodGhhbmtzIDxhIGhyZWY9Imh0dHA6Ly9m b3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MTc0ODIwI3AxNzQ4MjAi PmpzdHViYnM8L2E+KTwvbGk+CgkJPGxpPjE3IE1hciAwOCB8IDAuMzIgfCBGaXhlZCBhbm90 aGVyIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBo cD9waWQ9MTc0OTQ3I3AxNzQ5NDciPnVuZGVmaW5lZCBpbmRleDwvYT4gYW5kIDxhIGhyZWY9 Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MTc0OTYx I3AxNzQ5NjEiPnJlbW92ZWQgYm9ndXMgY2FsbCB0byBzbWRfbGliPC9hPiAoYm90aCB0aGFu a3Mgc2VjdW5kYXIpPC9saT4KCQk8bGk+MjEgTWFyIDA4IHwgMC4zMyB8IERpZCB2MC4zMSBw cm9wZXJseSwgaW5jbHVkaW5nIHRhYmxlIHByZWZpeCAodGhhbmtzIDxhIGhyZWY9Imh0dHA6 Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MTc1MzAyI3AxNzUz MDIiPm5hcmRvPC9hPik8L2xpPgoJCTxsaT4wMSBBcHIgMDggfCAwLjM0IHwgRml4ZWQgPHNw YW4gY2xhc3M9ImNhcHMiPlNRTDwvc3Bhbj4gcGFyZW50aGVzaXMgYnVnIDsgYWRkZWQgPGEg aHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0x NzU2MzcjcDE3NTYzNyI+ZW1wdHljbGFzcyBhbmQge21heGltYWdlc308L2E+ICh0aGFua3Mg dGhlX2dob3N0KTwvbGk+CgkJPGxpPjA4IEFwciAwOCB8IDAuNCB8IENoYW5nZWQgdGh1bWIg dG8gYWxsb3cgdGh1bWIvZnVsbHNpemUgc3dhcHBpbmcgOyBBZGRlZCB0aHVtYmNoYW5nZSwg dGh1bWJjaGFuZ2V3cmFwdGFnLCB0aHVtYmNoYW5nZWNsYXNzLCB7dGh1bWJpbmRleH0sIHt0 aHVtYmNvdW50ZXJ9IGFuZCB0aGUge2NoYW5nZWQ6Kn0gcmVwbGFjZW1lbnQgdGFncyAodGhh bmtzIGZ1bHMpPC9saT4KCQk8bGk+MjYgTWF5IDA4IHwgMC40MSB8IEZpeGVkIERpcmVjdG9y eSBzZXBhcmF0b3IgKHRoYW5rcyBjdWRhKSA7IGFkZGVkIHJhdyBwYWdlIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+cyB0byB0aGUgbmF2IHJlcGxhY2VtZW50IGFycmF5IGFuZCBt YWRlIHRoZSBuYXYgYXJyYXkgYXZhaWxhYmxlIGluIHRoZSBzdGFuZGFyZCByZXBsYWNlbWVu dHMgYXJyYXkgKHRoYW5rcyB2aXN1YWxwZW9wbGUpPC9saT4KCQk8bGk+MjcgTWF5IDA4IHwg MC40MiB8IEFkZGVkIHBhZ2Vwb3MgYW5kIG1hZGUgcGFnZSBibG9ja3MgaW5kZXBlbmRlbnQg b2YgdGh1bWIgYmxvY2sgKHRoYW5rcyBkdWNoYW1wKTwvbGk+CgkJPGxpPjEwIEp1biAwOCB8 IDAuNDMgfCBGaXhlZCBzb3J0PSYjODIyMDtmaXhlZCYjODIyMTsgd2hlbiB1c2luZyBsaW1p dCAodGhhbmtzIHJvYmluNzQ2KSA7IGFkZGVkIHBlci1ncm91cCBvbmNoYW5nZSB3cmFwcGlu ZyBhbmQgYWxsb3dlZCBmaXhlZCBzb3J0aW5nIG9mIGNhdGVnb3JpZXMgKHRoYW5rcyBqc3R1 YmJzKSA7IGRlcHJlY2F0ZWQgdGh1bWJjaGFuZ2UqIGFuZCByZW5hbWVkIGFzIG9uY2hhbmdl KiA7IGZpeGVkICRpZHggY291bnRlciBwcm9ibGVtPC9saT4KCQk8bGk+MTAgSnVuIDA4IHwg MC40NCB8IEF0dGVtcHQgIzIgYXQgcGVyLWdyb3VwIG9uY2hhbmdlIHdyYXBwaW5nICh0aGFu a3MgYWdhaW4ganN0dWJicyk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNyZWRpdHMiPkNyZWRp dHM8L2gyPgoKCTxwPlRoaXMgcGx1Z2luIHdvdWxkbiYjODIxNzt0IGhhdmUgZXhpc3RlZCB3 aXRob3V0IHRoZSBhd2Vzb21lIG1pbmQgb2YgUm9iZXJ0IFdldHpsbWF5ci4gSGlzIHdldF9m b3JfZWFjaF9pbWFnZSBwbHVnaW4gaXMgdHJ1ZSBnZW5pdXM7IHRoaXMgc2ltcGx5IHN0YW5k cyBvbiB0aGUgc2hvdWxkZXJzIG9mIHRoYXQgaWRlYSBhbmQgcm9sbHMgaW4gYSBzb3VwZWQg dXAgdmVyc2lvbiBvZiB0aGUgdGh1bWJuYWlsIGdlbmVyYXRpb24gZW5naW5lIGZyb20gc21k X3NsaW1ib3guIFRvIHRoYXQgZW5kLCB0aGUgcGx1Z2luIGlzIGFsc28gaW5kZWJ0ZWQgdG8g YW55b25lIHdobyBoYXMgcG9zdGVkIGZlYXR1cmVzIG9yIGJ1ZyByZXBvcnRzIHRvIG1lIG9y IHRoZSBzbWRfc2xpbWJveCB0aHJlYWQuIFlvdSYjODIxNztyZSBhbGwgbWFydmVsbG91cy48 L3A+CgoJPHA+PC9kaXY+PC9wPgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4K PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9 CiNzbWRfaGVscCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJD b3VyaWVyIE5ldyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZG RkZDQzt9CiNzbWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3Jk ZXI6MXB4IGRvdHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5 OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hl bHAgYTpsaW5rLCAjc21kX2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6ICMwMGM7IHRleHQtZGVj b3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmct Ym90dG9tOjFweDt9CiNzbWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBj b2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHgg c29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6 ICMzNjk7IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0 LWFsaWduOiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNv bGlkIGJsYWNrOyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBH ZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMDc5OyBmb250 OiBib2xkIDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1h cmdpbjogMTBweCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0 aW9uOnVuZGVybGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwg c2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4 dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdo dDpib2xkOyBjb2xvcjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2Vl ZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkw JTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0 ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAw O30KI3NtZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAg bGkgeyBtYXJnaW46NXB4IDIwcHggNXB4IDMwcHg7IH0KI3NtZF9oZWxwIC5icmVhayB7IG1h cmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+CjwhLS0gLS0tIEVORCBQTFVHSU4gQ1NTIC0tLSAt LT4KIjtzOjM6Im1kNSI7czozMjoiMjQzYThlZWRjNTg2OTQzZjgzMTViYzI0NWQ0ZWViMTci O30=