PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgojCiMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuCiRwYWdlVGl0bGUgCQk9ICJFY2xpcHNlIEFubm91bmNlcyBFY2xpcHNlTGluayBQcm9qZWN0IHRvIERlbGl2ZXIgSlBBIDIuMCBSZWZlcmVuY2UgSW1wbGVtZW50YXRpb24iOwokcGFnZUtleXdvcmRzCT0gImVjbGlwc2UsIGVjbGlwc2VsaW5rLCBwcmVzcywgcmVsZWFzZSI7CiRwYWdlQXV0aG9yCQk9ICJJYW4gU2tlcnJldHQiOwoKIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCiMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuaykKIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIpOwojICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIik7CgojIEVuZDogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncwojCgojIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQokaHRtbCA9IDw8PEVPSFRNTAoJCTxzdHlsZT4KCQkucGFkZGVkbGlzdCBsaSB7CXBhZGRpbmctYm90dG9tOjdweDsJfQoJPC9zdHlsZT4KPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDI+UHJlc3MgUmVsZWFzZTwvaDI+CgkJCgkJPGNlbnRlcj4KCQk8aDE+JHBhZ2VUaXRsZTwvaDE+CgkJPHA+PGk+T3BlbiBTb3VyY2UgUGVyc2lzdGVuY2UgRnJhbWV3b3JrIEJ1aWxkcyBvbiBDb250cmlidXRpb24gZnJvbSBPcmFjbGUgPC9pPjwvcD4JCQoJCTwvY2VudGVyPgoKCQk8cD48c3Ryb25nPkVjbGlwc2VDb24gMjAwOCwgU0FOVEEgQ0xBUkEsIENBICYjMTUwOyBNYXJjaCAxNywgMjAwOCAmIzE1MDsgPC9zdHJvbmc+CgkJVGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0b2RheSBhbm5vdW5jZWQgdGhhdCBTdW4sIHRoZSBsZWFkIGZvciB0aGUgSmF2YShUTSkgUGVyc2lzdGVuY2UgQVBJIChKUEEpIDIuMCwgSlNSIDMxNyBzdGFuZGFyZCBoYXMgc2VsZWN0ZWQgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZWNsaXBzZWxpbmsiPkVjbGlwc2VMaW5rPC9hPiBwcm9qZWN0IGFzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uIFRoZSBFY2xpcHNlIFBlcnNpc3RlbmNlIFNlcnZpY2VzIFByb2plY3QgKEVjbGlwc2VMaW5rKSwgbGVkIGJ5IE9yYWNsZSwgZGVsaXZlcnMgYW4gb3BlbiBzb3VyY2UgcnVudGltZSBmcmFtZXdvcmsgc3VwcG9ydGluZyBrZXkgcGVyc2lzdGVuY2Ugc3RhbmRhcmRzLiBUaGUgRWNsaXBzZUxpbmsgcHJvamVjdCBwcm92aWRlcyBhIHJpY2ggc2V0IG9mIHNlcnZpY2VzIHRoYXQgYWRkcmVzcyBjb21wbGV4IG1hcHBpbmcsIHBlcmZvcm1hbmNlIGFuZCBzY2FsYWJpbGl0eSBhbmQgYWR2YW5jZWQgZnVuY3Rpb25hbGl0eSByZXF1aXJlZCBmb3IgZW50ZXJwcmlzZSBKYXZhIGFwcGxpY2F0aW9ucy4gPC9wPgoJCQoJCTxwPkpTUiAzMTcsIHRoZSBKYXZhIFBlcnNpc3RlbmNlIEFQSSwgaXMgdGhlIEphdmEgQVBJIGZvciB0aGUgbWFuYWdlbWVudCBvZiBwZXJzaXN0ZW5jZSBhbmQgb2JqZWN0L3JlbGF0aW9uYWwgbWFwcGluZyBmb3IgSmF2YSBQbGF0Zm9ybSwgRW50ZXJwcmlzZSBFZGl0aW9uIChKYXZhIEVFKSBhbmQgSmF2YSBQbGF0Zm9ybSwgU3RhbmRhcmQgRWRpdGlvbiBlbnZpcm9ubWVudHMuIEFzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24sIEVjbGlwc2VMaW5rIHdpbGwgcHJvdmlkZSBhIHByb3ZlbiwgY29tbWVyY2lhbCBxdWFsaXR5IHBlcnNpc3RlbmNlIHNvbHV0aW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4gYm90aCBKYXZhIFNFIGFuZCBKYXZhIEVFIGFwcGxpY2F0aW9ucy48L3A+CgkJCgkJPHA+IlVzaW5nIEVjbGlwc2VMaW5rIGFzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgSlNSIDMxNyBpcyBhbm90aGVyIGdyZWF0IGV4YW1wbGUgb2YgdGhlIEpDUCBhbmQgRWNsaXBzZSBjb21tdW5pdGllcyB3b3JraW5nIHRvZ2V0aGVyIHRvIHN0cmVhbWxpbmUgdGhlIGRldmVsb3BtZW50IG9mIEphdmEgc29mdHdhcmUgYXBwbGljYXRpb25zLCIgc2FpZCBNaWtlIE1pbGlua292aWNoLCBleGVjdXRpdmUgZGlyZWN0b3Igb2YgdGhlIEVjbGlwc2UgRm91bmRhdGlvbi4gIk9wZW4gY29sbGFib3JhdGlvbiBzdWNoIGFzIHRoaXMgaGVscHMgZHJpdmUgdGhlIHdpZGUgYWRvcHRpb24gb2YgdGVjaG5vbG9neS4iIAoJCTwvcD4KCQkKCQk8cD5UbyBwcm92aWRlIGFuIGV4dGVuc2libGUgZnJhbWV3b3JrIHRoYXQgZW5hYmxlcyBKYXZhIHNvZnR3YXJlIGRldmVsb3BlcnMgdG8gaW50ZXJhY3Qgd2l0aCByZWxhdGlvbmFsIGRhdGFiYXNlcywgWE1MLCBhbmQgRW50ZXJwcmlzZSBJbmZvcm1hdGlvbiBTeXN0ZW1zIChFSVMpIGluIGFuIGVmZmljaWVudCBhbmQgcHJvZHVjdGl2ZSBtYW5uZXIsIHRoZSBFY2xpcHNlTGluayBwcm9qZWN0IHdpbGwgZGVsaXZlciBwZXJzaXN0ZW5jZSBzZXJ2aWNlcyB0aGF0IGZvY3VzIG9uIHBlcmZvcm1hbmNlLCBwcm9kdWN0aXZpdHksIGFuZCBmbGV4aWJpbGl0eS4gVGhlIEVjbGlwc2VMaW5rIHByb2plY3Qgd2FzIGluaXRpYXRlZCB3aXRoIE9yYWNsZSdzIGNvbnRyaWJ1dGlvbiBvZiB0aGUgZnVsbCBzb3VyY2UgY29kZSBhbmQgdGVzdCBzdWl0ZSBmb3IgT3JhY2xlriBUb3BMaW5rLiBUaGUgcHJvamVjdCBidWlsZHMgb24gdGhlIHN1Y2Nlc3Mgb2YgVG9wTGluayBFc3NlbnRpYWxzIHdoaWNoIGlzIGZlYXR1cmVkIGluIFN1biBNaWNyb3N5c3RlbXMnIEdsYXNzRmlzaChUTSkgT3BlbiBTb3VyY2UgQXBwbGljYXRpb24gU2VydmVyLCB0aGUgSlBBIDEuMCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24sIHdoaWNoIHdhcyBhbHNvIGJhc2VkIG9uIE9yYWNsZSBUb3BMaW5rLgoJCTwvcD4KCQkKCQk8cD4iVGhlIGRlY2lzaW9uIHRvIHVzZSBFY2xpcHNlTGluayB3aXRoaW4gR2xhc3NGaXNoIFYzLCBTdW4ncyBvcGVuIHNvdXJjZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIEphdmEgRUUgNiBzdGFuZGFyZCwgaXMgaW4gZGlyZWN0IHJlc3BvbnNlIHRvIHRoZSByZXF1ZXN0cyBmb3IgYWR2YW5jZWQgZmVhdHVyZXMgd2UgaGF2ZSByZWNlaXZlZCBmcm9tIG91ciB1c2VyIGNvbW11bml0eSBhbmQgZXhlbXBsaWZpZXMgdGhlIGlubm92YXRpb24gYW5kIHN1Y2Nlc3Mgb2YgdGhlIG9wZW4gc291cmNlIGluaXRpYXRpdmVzIGF0IFN1bi4gU2VlaW5nIHlldCBhbm90aGVyIGNvbW11bml0eSBoZWxwIGFkdmFuY2UgYSBKQ1Agc3RhbmRhcmQgZGVtb25zdHJhdGVzIHRoZSBzdHJvbmcgYWRvcHRpb24gb2YgSmF2YSB0ZWNobm9sb2d5IGFuZCB0aGUgSkNQLiBXZSBhcmUgZW50aHVzaWFzdGljIHdpdGggdGhpcyBvcHBvcnR1bml0eSB0byB3b3JrIHdpdGggT3JhY2xlIGFuZCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCIgU2FpZCBLYXJlbiBUZWdhbiBQYWRpciwgdmljZSBwcmVzaWRlbnQgb2YgSW5mcmFzdHJ1Y3R1cmUgU29mdHdhcmUsIFN1bi4gIlRoZSBHbGFzc0Zpc2ggY29tbXVuaXR5IGNvbnRpbnVlcyB0byBncm93IGFuZCBkZW1hbmQgZW50ZXJwcmlzZS1jbGFzcyBzb2x1dGlvbnMuIE91ciBhc3NvY2lhdGlvbiB3aXRoIEVjbGlwc2VMaW5rIGlzIGFuIGV4YW1wbGUgb2YgbXVsdGlwbGUgY29tbXVuaXRpZXMgYW5kIHBhcnRuZXJzIHdvcmtpbmcgdG9nZXRoZXIgdG8gZGVsaXZlciBvbiB0aGUgSmF2YSBzb2Z0d2FyZSBjb21tdW5pdHkncyByZXF1ZXN0cy4iPC9wPgoJCQoJCTxwPiJBcyB0aGUgRWNsaXBzZUxpbmsgcHJvamVjdCBsZWFkLCBwcm92aWRpbmcgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBmb3IgSlBBIDIuMCBjb21wbGVtZW50cyBPcmFjbGUncyBvbmdvaW5nIGNvbW1pdG1lbnQgdG8gcHJvdmlkZSBmbGV4aWJpbGl0eSBhbmQgY2hvaWNlIHRvIHRoZSBKYXZhIHNvZnR3YXJlIGFuZCBvcGVuIHNvdXJjZSBkZXZlbG9wZXIgY29tbXVuaXRpZXMsIiBzYWlkIERlbm5pcyBMZXVuZywgdmljZSBwcmVzaWRlbnQgb2YgRW5naW5lZXJpbmcsIE9yYWNsZS4gIkxldmVyYWdpbmcgb3ZlciBhIGRlY2FkZSBvZiBjb21tZXJjaWFsIHVzYWdlLCB0aGUgRWNsaXBzZUxpbmsgcHJvamVjdCBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgb3BlbiBzb3VyY2Ugc29sdXRpb24gZm9jdXNlZCBvbiBzdGFuZGFyZHMgYW5kIHRoZSBhZHZhbmNlZCBmZWF0dXJlcyByZXF1aXJlZCBieSB0aGUgbmV4dCBnZW5lcmF0aW9uIG9mIGVudGVycHJpc2UgSmF2YSBzb2Z0d2FyZSBhcHBsaWNhdGlvbnMuIjwvcD4KCQkKCQk8cD5Nb3JlIGRldGFpbHMgYWJvdXQgdGhlIEVjbGlwc2VMaW5rIHByb2plY3QgYW5kIEpTUiAzMTcgY2FuIGJlIGZvdW5kIGF0OiA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VjbGlwc2VsaW5rLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lY2xpcHNlbGluay88L2E+ICA8YSBocmVmPSJodHRwOi8vamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTMxNyI+aHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0zMTc8L2E+PC9wPgoJCQoJCTxwPjxiPkFib3V0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb248L2I+PGJyPgoJCUVjbGlwc2UgaXMgYW4gb3BlbiBzb3VyY2UgY29tbXVuaXR5IHdob3NlIHByb2plY3RzIGFyZSBmb2N1c2VkIG9uIHByb3ZpZGluZyBhbiBleHRlbnNpYmxlIGRldmVsb3BtZW50IHBsYXRmb3JtIGFuZCBhcHBsaWNhdGlvbgoJCWZyYW1ld29ya3MgZm9yIGJ1aWxkaW5nIHNvZnR3YXJlLiBFY2xpcHNlIHByb3ZpZGVzIGV4dGVuc2libGUgdG9vbHMgYW5kIGZyYW1ld29ya3MgdGhhdCBzcGFuIHRoZSBzb2Z0d2FyZSBkZXZlbG9wbWVudAoJCWxpZmVjeWNsZSwgaW5jbHVkaW5nIHN1cHBvcnQgZm9yIG1vZGVsaW5nLCBsYW5ndWFnZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgZm9yIEphdmEsIEMvQysrIGFuZCBvdGhlcnMsIHRlc3RpbmcgYW5kCgkJcGVyZm9ybWFuY2UsIGJ1c2luZXNzIGludGVsbGlnZW5jZSwgcmljaCBjbGllbnQgYXBwbGljYXRpb25zIGFuZCBlbWJlZGRlZCBkZXZlbG9wbWVudC4gQSBsYXJnZSwgdmlicmFudCBlY29zeXN0ZW0gb2YgbWFqb3IKCQl0ZWNobm9sb2d5IHZlbmRvcnMsIGlubm92YXRpdmUgc3RhcnQtdXBzLCB1bml2ZXJzaXRpZXMgYW5kIHJlc2VhcmNoIGluc3RpdHV0aW9ucyBhbmQgaW5kaXZpZHVhbHMgZXh0ZW5kLCBjb21wbGVtZW50IGFuZCBzdXBwb3J0CgkJdGhlIEVjbGlwc2UgUGxhdGZvcm0uPC9wPgoJCQoJCTxwPkFsbCBjb21wYW55L3Byb2R1Y3QgbmFtZXMgYW5kIHNlcnZpY2UgbWFya3MgbWF5IGJlIHRyYWRlbWFya3Mgb3IgcmVnaXN0ZXJlZCB0cmFkZW1hcmtzIG9mIHRoZWlyIHJlc3BlY3RpdmUgY29tcGFuaWVzLiA8YnIvPjxici8+CgkJU3VuLCB0aGUgU3VuIGxvZ28sIFN1biBNaWNyb3N5c3RlbXMsIEphdmEsIEpDUCwgR2xhc3NGaXNoIGFuZCBUaGUgTmV0d29yayBJcyBUaGUgQ29tcHV0ZXIgYXJlIHRyYWRlbWFya3Mgb3IgcmVnaXN0ZXJlZCB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYW5kIG90aGVyIGNvdW50cmllcy48YnIvPjxici8+CgkJT3JhY2xlIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgT3JhY2xlIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgYWZmaWxpYXRlcy48L3A+CgkJCgkJCgkJPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBhIG5vdC1mb3ItcHJvZml0LCBtZW1iZXIgc3VwcG9ydGVkIGNvcnBvcmF0aW9uIHRoYXQgaG9zdHMgdGhlIEVjbGlwc2UgcHJvamVjdHMuIEZ1bGwgZGV0YWlscyBvZgoJCUVjbGlwc2UgYW5kIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gYXJlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIiB0YXJnZXQ9ImJsYW5rIj53d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KCQkKCgk8L2Rpdj4KCjwvZGl2PgoKCgoJCQoKRU9IVE1MOwoKCSRodG1sID0gbWJfY29udmVydF9lbmNvZGluZygkaHRtbCwgIkhUTUwtRU5USVRJRVMiLCAiYXV0byIpOwoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/PgoK