PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkVjbGlwc2UgRm91bmRhdGlvbiBMYXVuY2hlcyBEYXRhIFRvb2xzIFBsYXRmb3JtIDEuMCI7CgkkcGFnZUtleXdvcmRzCT0gIkVjbGlwc2Vjb24sIDIwMDcsIGdvbGQsIHNwb25zb3IiOwoJJHBhZ2VBdXRob3IJCT0gIklhbiBTa2VycmV0dCI7CgkKCSMgZCBwYWdlLXNwZWNpZmljIE5hdiBiYXJzIGhlcmUKCSMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuaykKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJNeSBMaW5rIiwgIm15cGFnZS5waHAiLCAiX3NlbGYiKTsKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJHb29nbGUiLCAiaHR0cDovL3d3dy5nb29nbGUuY29tLyIsICJfYmxhbmsiKTsKCgkjIEVuZDogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncwoJIwoJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKCSRodG1sID0gPDw8RU9IVE1MCjxkaXYgaWQ9Im1haW5jb250ZW50Ij4KCTxkaXYgaWQ9Im1pZGNvbHVtbiI+CgkJPGgyPlByZXNzIFJlbGVhc2U8L2gyPgoJCTxoMT4kcGFnZVRpdGxlPC9oMT4KCQk8cD48aT5PcGVuIFNvdXJjZSBDb21tdW5pdHkgUHJvamVjdCBTcGVhcmhlYWRlZCBieSBTeWJhc2UsIEFjdHVhdGUgYW5kIElCTTwvaT48L3A+CgkJPHA+PHN0cm9uZz5PVFRBV0EgLSBKYW51YXJ5IDIzLCAyMDA3IC0gPC9zdHJvbmc+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgYW4gb3BlbiBzb3VyY2UgY29tbXVuaXR5IGNvbW1pdHRlZCB0byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSB1bml2ZXJzYWwgZGV2ZWxvcG1lbnQgcGxhdGZvcm0sIHRvZGF5IGFubm91bmNlZCB0aGUgcmVsZWFzZSBvZiB0aGUgRWNsaXBzZSBEYXRhIFRvb2xzIFBsYXRmb3JtIChEVFApIDEuMCwgYSBjb2xsZWN0aW9uIG9mIGV4dGVuc2libGUgZnJhbWV3b3JrcyBhbmQgZXhlbXBsYXJ5IHRvb2xzIGZvciBkZXZlbG9waW5nIGRhdGEtY2VudHJpYyBhcHBsaWNhdGlvbnMgaW4gdGhlIEVjbGlwc2UgZW52aXJvbm1lbnQuIFdpdGggRFRQIDEuMCwgZGV2ZWxvcGVycyBjYW4gbm93IGVhc2lseSBsZXZlcmFnZSBleGlzdGluZyBkYXRhIHNvdXJjZXMsIHN1Y2ggYXMgZW50ZXJwcmlzZSBkYXRhYmFzZXMsIHdpdGhpbiB0aGUgZXh0ZW5zaWJsZSBFY2xpcHNlIFBsYXRmb3JtLiAgRGF0YS1yZWxhdGVkIGFwcGxpY2F0aW9ucyBhcmUgZ3Jvd2luZyBpbiBzaWduaWZpY2FuY2UsIHNvIHRoaXMgcmVsZWFzZSBtZWV0cyBhbiBpbXBvcnRhbnQgZGV2ZWxvcG1lbnQgcmVxdWlyZW1lbnQgaW4gdGhlIHNvZnR3YXJlIGluZHVzdHJ5LiAKCQk8L3A+CgkJPHA+k0RUUCAxLjAgcHJvdmlkZXMgYSByaWNoIHNldCBvZiBmcmFtZXdvcmtzIHRoYXQgc29sdmUgcmVhbC13b3JsZCBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgZGV2ZWxvcG1lbnQgb2YgZGF0YS1jZW50cmljIGFwcGxpY2F0aW9ucywgc2FpZCBNaWtlIE1pbGlua292aWNoLCBleGVjdXRpdmUgZGlyZWN0b3Igb2YgdGhlIEVjbGlwc2UgRm91bmRhdGlvbi4gIJNUaGUgZ3Jvd3RoIGFuZCBtb21lbnR1bSBvZiB0aGUgRWNsaXBzZSBEYXRhIFRvb2xpbmcgUGxhdGZvcm0gcHJvamVjdCBoYXMgcmVzdWx0ZWQgZnJvbSB0aGUgZWZmb3J0cyBvZiBjb21taXR0ZXJzIGZyb20gdGhlIEVjbGlwc2UgY29tbXVuaXR5LCBpbmNsdWRpbmcgbWFueSBmcm9tIFN5YmFzZSwgSUJNIGFuZCBBY3R1YXRlLpQ8L3A+CgkJPHA+RFRQIDEuMCBncmVhdGx5IHNpbXBsaWZpZXMgZGV2ZWxvcG1lbnQgb2YgZGF0YS1jZW50cmljIGFwcGxpY2F0aW9ucyBpbiBoZXRlcm9nZW5lb3VzIGVudmlyb25tZW50cyBieSBvZmZlcmluZyBhIHJhbmdlIG9mIGFnaWxlIGRldmVsb3BtZW50IHRvb2xzLiAgRFRQIDEuMCBmZWF0dXJlcyB0aHJlZSBtYWpvciBjb21wb25lbnRzOiBtb2RlbC1kcml2ZW4gZGV2ZWxvcG1lbnQsIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBhbmQgZGF0YSBhY2Nlc3MgZnJhbWV3b3JrLCBhbmQgU1FMIGRldmVsb3BtZW50IHRvb2xzLiA8L3A+CgoJCTxwPkFjY29yZGluZyB0byBhbiBFdmFucyBEYXRhIHN1cnZleSwgNTMgcGVyY2VudCBvZiBkZXZlbG9wZXJzIHNhaWQgZGF0YSBhY2Nlc3MgYW5kIG1hbmFnZW1lbnQgdG9vbHMgYXJlIGV4dHJlbWVseSBpbXBvcnRhbnQuICCTRGV2ZWxvcGVycyBzZWUgZGF0YSBhY2Nlc3MgYW5kIG1hbmFnZW1lbnQgdG9vbHMgYXMgYW4gaW50ZWdyYWwgcGFydCBvZiB0aGVpciBhcnNlbmFsIGluIGRhdGEgY2VudHJpYyBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCyUIHNhaWQgSm9obiBBbmRyZXdzLCBDRU8gb2YgRXZhbnMgRGF0YS4gIJNFY2xpcHNlIHdpbGwgbWVldCBhbiBpbXBvcnRhbnQgcmVxdWlyZW1lbnQgb2YgZGV2ZWxvcGVycyBieSBwcm92aWRpbmcgZGF0YSBjZW50cmljIHRvb2xzIGFuZCBmcmFtZXdvcmtzLpQ8L3A+CgkKCQk8cD6TU3liYXNlIGlzIGxldmVyYWdpbmcgRFRQIGFuZCB0aGUgRWNsaXBzZSBQbGF0Zm9ybSBmb3IgU3liYXNlJ3MgdW5pZmllZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgU3liYXNlIFdvcmtTcGFjZSyUIHNhaWQgSm9obiBHcmFoYW0sIGNoYWlyIG9mIHRoZSBFY2xpcHNlIERhdGEgVG9vbHMgUGxhdGZvcm0gUHJvamVjdCwgU3liYXNlLiCTQnkgaW5jb3Jwb3JhdGluZyBEVFAgaW50byBTeWJhc2UgV29ya1NwYWNlLCBkZXZlbG9wZXJzIGJlbmVmaXQgYnkgZ2FpbmluZyBkZXZlbG9wbWVudGFsIGVjb25vbWllcyBvZiBzY2FsZSwgdGhlIGZsZXhpYmlsaXR5IHRoYXQgb3BlbiBzb3VyY2Ugb2ZmZXJzLCBhbmQgYSBoaWdoIGxldmVsIG9mIHNvZnR3YXJlIHF1YWxpdHkgdGhhdCBjb21lcyBhbG9uZyB3aXRoIHRlc3RpbmcgYnkgYW4gYWN0aXZlIGNvbW11bml0eSBvZiB1c2Vycy4gTGVhZGVyc2hpcCBpbiB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCBlc3BlY2lhbGx5IHdpdGggdGhlIERUUCBQcm9qZWN0LCBhZGRyZXNzZXMgdGhlIG5lZWRzIG9mIGRldmVsb3BlcnMgYW5kIHRoaXMgZWZmb3J0IGlzIGEgY3JpdGljYWwgY29tcG9uZW50IG9mIFN5YmFzZSdzIG92ZXJhbGwgdmlzaW9uIGZvciBhbiBlbmQtdG8tZW5kIHNvbHV0aW9uIHRoYXQgc3VwcG9ydHMgaW5mb3JtYXRpb24gbWFuYWdlbWVudCwgZGF0YSBpbnRlZ3JhdGlvbiBhbmQgbW9iaWxlIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50LpQ8L3A+CgkJCgkJPHA+k0FjdHVhdGUgaGFzIGJlZW4gcGxlYXNlZCB0byBiZW5lZml0IGZyb20sIGFuZCBiZSBpbnZvbHZlZCBpbiBEVFAgMS4wLiAgV2UgaGF2ZSBsb25nIGJlZW4gY2hhbXBpb25zIG9mIGRhdGEtY2VudHJpYyBhcHBsaWNhdGlvbnMgYW5kIGJlbGlldmUgdGhhdCBFY2xpcHNlIHByb3ZpZGVzIHRoZSBpZGVhbCBmcmFtZXdvcmsgZm9yIHRoZWlyIGRldmVsb3BtZW50LJQgc2FpZCBNYXJrIENvZ2dpbnMsIHNlbmlvciB2aWNlIHByZXNpZGVudCBvZiBlbmdpbmVlcmluZyBhdCBBY3R1YXRlIENvcnBvcmF0aW9uLiAgk0RUUCBpcyB1c2VkIGZvciBkYXRhIGFjY2VzcyB3aXRoaW4gQklSVCwgYW4gRWNsaXBzZSBQcm9qZWN0IEFjdHVhdGUgY28tbGVhZHMsIGFuZCB0aGUgT3BlbiBEYXRhIEFjY2VzcyAoT0RBKSBwb3J0aW9uIG9mIERUUCB3YXMgY29udHJpYnV0ZWQgYnkgdXMuICBXZSBsb29rIGZvcndhcmQgdG8gZnVydGhlciBjcm9zcyBwb2xsaW5hdGlvbiBpbiB0aGUgZnV0dXJlLpQ8L3A+CgkJCgkJPHA+k0RUUCdzIHRlY2hub2xvZ2llcyBhcmUgaW1wb3J0YW50IGNvbXBvbmVudHMgb2YgSUJNJ3MgdG9vbGluZyBmb3IgaW5mb3JtYXRpb24gYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQsIGFuZCBJQk0gaXMgcGxlYXNlZCB0byBzZWUgdGhpcyBtaWxlc3RvbmUgcmVsZWFzZSBvZiB0aGUgRFRQIHByb2plY3QsIHNhaWQgRGF2aWQgRmFsbHNpZGUsIElCTSBJbmZvcm1hdGlvbiBNYW5hZ2VtZW50IE9wZW4gU291cmNlIE1hbmFnZS4gk0lCTSBoYXMgc3VwcG9ydGVkIHRoZSBEVFAgcHJvamVjdCBmcm9tIHRoZSBiZWdpbm5pbmcsIGFuZCBwbGFucyB0byBjb250aW51ZSBpdHMgc3VwcG9ydCBpbiB0aGUgZnV0dXJlLpQ8L3A+CgkJCgkJPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIEVjbGlwc2UgRFRQIFByb2plY3QsIHBsZWFzZSB2aXNpdDogPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9kYXRhdG9vbHMiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZGF0YXRvb2xzPC9hPi4gPC9wPgoJCQoJCTxwPjxzdHJvbmc+QWJvdXQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbjwvc3Ryb25nPjxiciAvPgoJCUVjbGlwc2UgaXMgYW4gb3BlbiBzb3VyY2UgY29tbXVuaXR5IHdob3NlIHByb2plY3RzIGFyZSBmb2N1c2VkIG9uIHByb3ZpZGluZyBhbiBleHRlbnNpYmxlIGRldmVsb3BtZW50IHBsYXRmb3JtIGFuZCBhcHBsaWNhdGlvbiBmcmFtZXdvcmtzIGZvciBidWlsZGluZyBzb2Z0d2FyZS4gRWNsaXBzZSBwcm92aWRlcyBleHRlbnNpYmxlIHRvb2xzIGFuZCBmcmFtZXdvcmtzIHRoYXQgc3BhbiB0aGUgc29mdHdhcmUgZGV2ZWxvcG1lbnQgbGlmZWN5Y2xlLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgbW9kZWxpbmcsIGxhbmd1YWdlIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBmb3IgSmF2YSwgQy9DKysgYW5kIG90aGVycywgdGVzdGluZyBhbmQgcGVyZm9ybWFuY2UsIGJ1c2luZXNzIGludGVsbGlnZW5jZSwgcmljaCBjbGllbnQgYXBwbGljYXRpb25zIGFuZCBlbWJlZGRlZCBkZXZlbG9wbWVudC4gQSBsYXJnZSwgdmlicmFudCBlY29zeXN0ZW0gb2YgbWFqb3IgdGVjaG5vbG9neSB2ZW5kb3JzLCBpbm5vdmF0aXZlIHN0YXJ0LXVwcywgdW5pdmVyc2l0aWVzIGFuZCByZXNlYXJjaCBpbnN0aXR1dGlvbnMgYW5kIGluZGl2aWR1YWxzIGV4dGVuZCwgY29tcGxlbWVudCBhbmQgc3VwcG9ydCB0aGUgRWNsaXBzZSBQbGF0Zm9ybS48L3A+CgkJPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBhIG5vdC1mb3ItcHJvZml0LCBtZW1iZXIgc3VwcG9ydGVkIGNvcnBvcmF0aW9uIHRoYXQgaG9zdHMgdGhlIEVjbGlwc2UgcHJvamVjdHMuIEZ1bGwgZGV0YWlscyBvZiBFY2xpcHNlIGFuZCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGFyZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+d3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CgkJCgkJPHA+PGNlbnRlcj48aT5BbGwgY29tcGFueS9wcm9kdWN0IG5hbWVzIGFuZCBzZXJ2aWNlIG1hcmtzIG1heSBiZSB0cmFkZW1hcmtzIG9yIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBhbmllcy48L2k+PC9jZW50ZXI+PC9wPgoJCQoJCTxiciAvPjxiciAvPjxzdHJvbmc+UHJlc3MgQ29udGFjdDwvc3Ryb25nPjxicj4JCgkJSm9obiBNb3Jhbjxici8+CgkJU2Nod2FydHogQ29tbXVuaWNhdGlvbnMgZm9yIHRoZSBFY2xpcHNlIEZvdW5kYXRpb248YnIvPgoJCTc4MS02ODQtMDc3MDxici8+CgkJZWNsaXBzZUBzY2h3YXJ0ei1wci5jb20gPGJyLz4KCQk8YnIgLz4KCQk8YnIvPgoJCUxvcm5hIEZlcm5hbmRlczxici8+CgkJU3liYXNlLCBJbmMuPGJyLz4KCQk5MjUtMjM2LTQxMDc8YnIvPgoJCWxvcm5hLmZlcm5hZGVzQHN5YmFzZS5jb208YnIvPgoJCQoJCTxjZW50ZXI+IyAjICM8L2NlbnRlcj4gCgkJPGJyIC8+CgkJPGJyPgoJCQk8YnI+Cgk8L2Rpdj4KCjwvZGl2PgoKCgkJCgpFT0hUTUw7CgoKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4KCg==