PD9waHAKCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlyZXF1aXJlX29uY2UoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvZWNsaXBzZS5vcmctY29tbW9uL3N5c3RlbS9hcHAuY2xhc3MucGhwIik7CXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL25hdi5jbGFzcy5waHAiKTsgCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL21lbnUuY2xhc3MucGhwIik7IAkkQXBwIAk9IG5ldyBBcHAoKTsJJE5hdgk9IG5ldyBOYXYoKTsJJE1lbnUgCT0gbmV3IE1lbnUoKTsJCWluY2x1ZGUoIl9wcm9qZWN0Q29tbW9uLnBocCIpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgoJCgkjCgkjIEJlZ2luOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzLiAgQ2hhbmdlIHRoZXNlLiAKCSRwYWdlVGl0bGUgCQk9ICJQb2xhcnN5czogQSBOZXcgSW5kdXN0cnkgQ29sbGFib3JhdGlvbiB0byBCdWlsZCBPcGVuIFNvdXJjZSBUb29scyBmb3IgU2FmZXR5LUNyaXRpY2FsIFNvZnR3YXJlIERldmVsb3BtZW50IjsKCSRwYWdlS2V5d29yZHMJPSAicG9sYXJzeXMsIGVjbGlwc2UsIG9wZW4gc291cmNlLCBhZXJvc3BhY2UsIGRlZmVuc2UsIHRyYW5zcG9ydGF0aW9uLCB0ZWxlY29tbXVuaWNhdGlvbnMsIGVuZXJneSwgaGVhbHRoY2FyZSwgY29sbGFib3JhdGUgdG8gZGVmaW5lIGEgdG9vbCBjaGFpbiAiOwoJJHBhZ2VBdXRob3IJCT0gIkNocmlzdG9waGVyIEd1aW5kb24iOwoJCgkjIEFkZCBwYWdlLXNwZWNpZmljIE5hdiBiYXJzIGhlcmUKCSMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuaykKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJNeSBMaW5rIiwgIm15cGFnZS5waHAiLCAiX3NlbGYiKTsKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJHb29nbGUiLCAiaHR0cDovL3d3dy5nb29nbGUuY29tLyIsICJfYmxhbmsiKTsKCgkjIEVuZDogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncwoJIwoJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKCSRodG1sID0gPDw8RU9IVE1MCgk8c3R5bGU+CgkJLnBhZGRlZGxpc3QgbGkgewlwYWRkaW5nLWJvdHRvbTo3cHg7CX0KCTwvc3R5bGU+CgkKPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQoJCTxoMT4kcGFnZVRpdGxlPC9oMT4KCgkKCQk8YnI+CiAgCjxwPjxzdHJvbmc+THVkd2lnc2J1cmcsIEdlcm1hbnkgliBOb3ZlbWJlciAyLCAyMDExPC9zdHJvbmc+IC0gIEEgbmV3IG9wZW4gc291cmNlIGluZHVzdHJ5IGNvbGxhYm9yYXRpb24sIGNhbGxlZCBQb2xhcnN5cywgaXMgYmVpbmcgY3JlYXRlZCBhdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGZvY3VzIG9uIGJ1aWxkaW5nIGFuZCBtYWludGFpbmluZyB0b29scyBmb3Igc2FmZXR5IGNyaXRpY2FsIGFuZCBlbWJlZGRlZCBzeXN0ZW0gZGV2ZWxvcG1lbnQuIEludGVyZXN0ZWQgcGFydGllcyBpbiBQb2xhcnN5cyBpbmNsdWRlICBBaXJidXMsIEFzdHJpdW0gU2F0ZWxsaXRlcywgQVRPUywgQ0VBLCBDUyAoQ29tbXVuaWNhdGlvbiAmIFN5c3TobWVzKSwgRXJpY3Nzb24sIElSSVQgKEluc3RpdHV0IGRlIHJlY2hlcmNoZSBlbiBpbmZvcm1hdGlxdWUgZGUgVG91bG91c2UpLCBJbnJpYSwgS2F0aG9saWVrZSBVbml2ZXJzaXRlaXQgTGV1dmVuLCBPYmVvLCBVbml2ZXJzaWRhZCBQb2xpdOljbmljYSBkZSBWYWxlbmNpYSwgVGVjbmFsaWEsIFRoYWxlcywgYW5kIFhpcHAuICBQb2xhcnN5cyB3aWxsIG9wZXJhdGUgYXMgYSBFY2xpcHNlIEluZHVzdHJ5IFdvcmtpbmcgR3JvdXAgYW5kIGJlIG9wZW4gdG8gYW55IG9yZ2FuaXphdGlvbiBpbnRlcmVzdGVkIGluIHBhcnRpY2lwYXRpbmcgaW4gdGhlIGdvYWxzIG9mIHRoZSBncm91cC48L3A+Cgo8cD5UaGUgZ29hbCBvZiBQb2xhcnN5cyBpcyB0byBidWlsZCBhbmQgbWFpbnRhaW4gYW4gb3BlbiBzb3VyY2UgdG9vbHMgY2hhaW4gdGhhdCBpcyB1c2VkIGJ5IG9yZ2FuaXphdGlvbnMgYnVpbGRpbmcgc2FmZXR5LWNyaXRpY2FsIGFuZCBzb2Z0d2FyZSBpbnRlbnNpdmUgZW1iZWRkZWQgc3lzdGVtcy4gIEluZHVzdHJpZXMgc3VjaCBhcyBhZXJvc3BhY2UsIGRlZmVuc2UsIHRyYW5zcG9ydGF0aW9uLCB0ZWxlY29tbXVuaWNhdGlvbnMsIGVuZXJneSBhbmQgaGVhbHRoY2FyZSByZXF1aXJlIGRldmVsb3BtZW50IHRvb2wgY2hhaW5zIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lmaWMgcmVxdWlyZW1lbnRzOjwvcD4KCjx1bD4KPGxpPlRoZXkgcmVxdWlyZSBhZHZhbmNlZCBjZXJ0aWZpY2F0aW9uIG9mIHRoZWlyIGRldmVsb3BtZW50IHRvb2xzIHRvIGFkaGVyZSB0byBnb3Zlcm5tZW50IGFuZCBpbnRlcm5hdGlvbmFsIHJlZ3VsYXRpb25zLjwvbGk+ICAgCjxsaT5UaGV5IG11c3Qgc3VwcG9ydCBmb3IgZnVsbCBkZXZlbG9wbWVudCBsaWZlY3ljbGUsIGZyb20gcmVxdWlyZW1lbnRzIGNhcHR1cmUgdGhyb3VnaCB0byBzeXN0ZW0gdmVyaWZpY2F0aW9uLCBkZXBsb3ltZW50IGFuZCBpbi1maWVsZCBzdXBwb3J0IGFuZCBtYWludGVuYW5jZS48L2xpPgo8bGk+VGhleSBtdXN0IGxhc3QgZm9yIGEgdmVyeSBsb25nIHRpbWUsIGluIHNvbWUgY2FzZXMgMzAtNzAgeWVhcnM8L2xpPgo8L3VsPgoKPHA+VGhlIHBhcnRpY2lwYW50cyBpbiBQb2xhcnN5cyB3aWxsIGNvbGxhYm9yYXRlIHRvIGRlZmluZSBhIHRvb2wgY2hhaW4gdG8gbWVldCB0aGVzZSBkZW1hbmRpbmcgcmVxdWlyZW1lbnRzLgoKPHA+UG9sYXJzeXMgd2lsbCBidWlsZCBvbiB0aGUgdGVjaG5vbG9neSBhbmQgaW5ub3ZhdGlvbiBjcmVhdGVkIGluIHRoZSB2ZXJ5IHN1Y2Nlc3NmdWwgVG9wQ2FzZWQgb3BlbiBzb3VyY2UgcHJvamVjdCBvZiB0aGUgRnJlbmNoIGNsdXN0ZXIgQWVyb3NwYWNlIFZhbGxleS4gS2V5IGNvbnRyaWJ1dG9ycyBhbmQgc291cmNlIGNvZGUgZnJvbSB0aGUgVG9wQ2FzZWQgcHJvamVjdCB3aWxsIGJlIG1vdmVkIGludG8gdGhlIFBvbGFyc3lzIHdvcmtpbmcgZ3JvdXAuICBUb3BDYXNlZCBpcyBhIG1vZGVsLWRyaXZlbiBlbmdpbmVlcmluZyBlbnZpcm9ubWVudCBmb3IgZW1iZWRkZWQgZGV2ZWxvcG1lbnQgYW5kIHNhdGVmeS1jcml0aWNhbCBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudC4gICBUaGUgVG9wQ2FzZWQgb3BlbiBzb3VyY2UgcHJvamVjdCBoYXMgYmVlbiBkb3dubG9hZGVkIG1vcmUgdGhhbiAxMDAwMDAgdGltZXMgaW4gdGhlIGxhc3QgcGFzdCB5ZWFyIGFuZCBoYXMgbW9yZSB0aGFuIDIwIGFjdGl2ZSBjb250cmlidXRvcnMuCgo8cD4iU2luY2UgMjAwNCwgaW5kdXN0cmlhbCBhbmQgYWNhZGVtaWNzIHBhcnRuZXJzIGZyb20gYWVyb25hdXRpYywgc3BhY2UgYW5kIGF1dG9tb3RpdmUgaW5kdXN0cmllcyBoYXZlIGRldmVsb3BlZCBUb3BjYXNlZCBhcyBvdXIgcGxhdGZvcm0gZm9yIE1vZGVsIEJhc2VkIFN5c3RlbSBFbmdpbmVlcmluZy4gTm93LCB3ZSBuZWVkIHRvIGVubGFyZ2Ugb3VyIGVjb3N5c3RlbSwgc28gQWlyYnVzIGhhcyBqb2luZWQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBQb2xhcnN5cyBpbmR1c3RyeSB3b3JraW5nIGdyb3VwIHRvIGVuc3VyZSB0aGUgbG9uZyB0ZXJtIHN1cHBvcnQgZm9yIG91ciB0b29sIGNoYWluIGFuZCB0byBmb3N0ZXIgY29sbGFib3JhdGlvbiB3aXRoIG90aGVyIGluZHVzdHJ5IGRvbWFpbnMuIiBleHBsYWluZWQgUGF0cmljayBGYXJhaWwsIEhlYWQgb2YgU29mdHdhcmUgRGV2ZWxvcG1lbnQgTWV0aG9kcyBmb3IgQXZpb25pYyBTb2Z0d2FyZSwgQWlyYnVzLgoKPHA+UG9sYXJzeXMgaXMgdGhlIHJlc3VsdCBvZiB0aGUgd29yayBvZiB0aGUgZXhpc3RpbmcgT1BFRVMgZ3JvdXAsIGFuIElURUEyIGZ1bmRlZCBjb25zb3J0aXVtLiAgIFRoZSBPUEVFUyBwcm9qZWN0IHdhcyBlc3RhYmxpc2hlZCBvcmlnaW5hbGx5IGFzIGFuIEFlcm9zcGFjZSBWYWxsZXkgc3RydWN0dXJpbmcgcHJvamVjdCB0byBlbnN1cmUgbG9uZy10ZXJtIGF2YWlsYWJpbGl0eSBvZiBpbm5vdmF0aXZlIGVuZ2luZWVyaW5nIHRlY2hub2xvZ2llcyBpbiB0aGUgZG9tYWluIG9mIGRlcGVuZGFibGUgLyBjcml0aWNhbCBzb2Z0d2FyZS1pbnRlbnNpdmUgZW1iZWRkZWQgc3lzdGVtcy4gIE9QRUVTIGhhcyBub3cgcGFydGljaXBhdGlvbiBmcm9tIG92ZXIgMzAgb3JnYW5pemF0aW9ucyBmcm9tIDUgZGlmZmVyZW50IGNvdW50cmllcy4gICBUaGUgd29yayBiZWluZyBkb25lIHdpdGhpbiBPUEVFUyB3aWxsIG5vdyBiZSBtaWdyYXRlZCB0byBQb2xhcnN5cy4KCjxwPpNXZSBhcmUgdGhyaWxsZWQgdG8gaGF2ZSBQb2xhcnN5cyBob3N0ZWQgYXQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiyUIHNhaWQgTWlrZSBNaWxpbmtvdmljaCwgRXhlY3V0aXZlIERpcmVjdG9yLCBFY2xpcHNlIEZvdW5kYXRpb24uICCTUG9sYXJzeXMgaXMgZ29pbmcgdG8gc29sdmUgc29tZSB2ZXJ5IGltcG9ydGFudCBjaGFsbGVuZ2VzIGZvciBsYXJnZSBvcmdhbml6YXRpb25zIHRoYXQgcmVseSB1cG9uIG9wZW4gc291cmNlIHRvb2xzIGNoYWlucyBmb3IgZGV2ZWxvcGluZyBsb25nLWxpdmVkLCBzYWZldHkgY3JpdGljYWwgc29mdHdhcmUuICAgVGhpcyBpcyBhIGdyZWF0IGV4YW1wbGUgb2YgaG93IGluZHVzdHJ5IGNvbGxhYm9yYXRpb24gaW4gb3BlbiBzb3VyY2UgY2FuIHNvbHZlIGNvbXBsZXggaW5kdXN0cnkgcmVxdWlyZW1lbnRzLpQKCjxwPlBvbGFyc3lzIGhhcyBiZWVuIGVzdGFibGlzaGVkIGFzIGFuIEVjbGlwc2UgSW5kdXN0cnkgV29ya2luZyBHcm91cCBhbmQgd2lsbCBvcGVyYXRlIHVuZGVyIHRoZSBnb3Zlcm5hbmNlIG9mIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24uICAgQW55IG9yZ2FuaXphdGlvbiBtYXkgam9pbiBhbmQgcGFydGljaXBhdGUgaW4gdGhlIFBvbGFyc3lzIHdvcmtpbmcgZ3JvdXAuICBUaGUgZmlyc3QgZGVsaXZlcmFibGUgZnJvbSBQb2xhcnN5cyBpcyBleHBlY3RlZCBpbiBtaWQtMjAxMi4KCgoKCgoKCjxwPlByZXNzIENvbnRhY3Q6PGJyLz4KSWFuIFNrZXJyZXR0PGJyLz4KRWNsaXBzZSBGb3VuZGF0aW9uPGJyLz4KPGEgaHJlZj0ibWFpbHRvOmlhbi5za2VycmV0dEBlY2xpcHNlLm9yZyI+aWFuLnNrZXJyZXR0QGVjbGlwc2Uub3JnPC9hPjwvcD4KPGJyPgo8YnI+CTxzdHJvbmc+QWJvdXQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbjwvc3Ryb25nPgoJPHA+RWNsaXBzZSBpcyBhbiBvcGVuIHNvdXJjZSBjb21tdW5pdHksIHdob3NlIHByb2plY3RzIGFyZSBmb2N1c2VkIG9uIGJ1aWxkaW5nIGFuIG9wZW4gZGV2ZWxvcG1lbnQgcGxhdGZvcm0gY29tcHJpc2VkIG9mIGV4dGVuc2libGUgZnJhbWV3b3JrcywgdG9vbHMgYW5kIHJ1bnRpbWVzIGZvciBidWlsZGluZywgZGVwbG95aW5nIGFuZCBtYW5hZ2luZyBzb2Z0d2FyZSBhY3Jvc3MgdGhlIGxpZmVjeWNsZS4gQSBsYXJnZSwgdmlicmFudCBlY29zeXN0ZW0gb2YgbWFqb3IgdGVjaG5vbG9neSB2ZW5kb3JzLCBpbm5vdmF0aXZlIHN0YXJ0LXVwcywgdW5pdmVyc2l0aWVzIGFuZCByZXNlYXJjaCBpbnN0aXR1dGlvbnMgYW5kIGluZGl2aWR1YWxzIGV4dGVuZCwgY29tcGxlbWVudCBhbmQgc3VwcG9ydCB0aGUgRWNsaXBzZSBQbGF0Zm9ybS4KCTwvcD4KCTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgYSBub3QtZm9yLXByb2ZpdCwgbWVtYmVyIHN1cHBvcnRlZCBjb3Jwb3JhdGlvbiB0aGF0IGhvc3RzIHRoZSBFY2xpcHNlIHByb2plY3RzLiBGdWxsIGRldGFpbHMgb2YgRWNsaXBzZSBhbmQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBhcmUgYXZhaWxhYmxlIGF0IAoJIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPnd3dy5lY2xpcHNlLm9yZzwvYT48L3A+CiAgCgoJPC9kaXY+CgoJPCEtLSByZW1vdmUgdGhlIGVudGlyZSA8ZGl2PiB0YWcgdG8gb21pdCB0aGUgcmlnaHQgY29sdW1uISAtLT4KCTxkaXYgaWQ9InJpZ2h0Y29sdW1uIj4KCQk8ZGl2IGNsYXNzPSJzaWRlaXRlbSI+CgkJCTxoNj5SZWxhdGVkIExpbmtzPC9oNj4KCQkJPHVsPgoJCQkJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cucG9sYXJzeXMub3JnIiB0YXJnZXQ9Il9ibGFuayI+cG9sYXJzeXMub3JnPC9hPjwvbGk+CgkJCTwvdWw+CgkJPC9kaXY+Cgk8L2Rpdj4JCjwvZGl2PgogCgpFT0hUTUw7CgkkaHRtbCA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJGh0bWwsICJIVE1MLUVOVElUSUVTIiwgIklTTy04ODU5LTEiKTsKCSRwYWdlVGl0bGUgPSBtYl9jb252ZXJ0X2VuY29kaW5nKCRwYWdlVGl0bGUsICJIVE1MLUVOVElUSUVTIiwgIklTTy04ODU5LTEiKTsKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4KCgoK