PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnDQoNCiRwYWdlVGl0bGUgCQk9ICIiOw0KJHBhZ2VLZXl3b3Jkcwk9ICIiOw0KJHBhZ2VBdXRob3IJCT0gIiI7DQoNCm9iX3N0YXJ0KCk7DQo/Pg0KICAgIDxkaXYgaWQ9Im1haW5jb250ZW50Ij4NCgk8ZGl2IGlkPSJtaWRjb2x1bW4iPg0KDQo8aDE+RU1GIEZlYXR1cmUgTW9kZWw8L2gxPg0KPC9wPg0KPD9waHANCmluY2x1ZGVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9wcm9qZWN0cy9mcmFnbWVudHMvcHJvcG9zYWwtcGFnZS1oZWFkZXIucGhwIik7DQpnZW5lcmF0ZV9oZWFkZXIoIkVjbGlwc2UgTW9kZWxpbmcgRnJhbWV3b3JrIEZlYXR1cmUgTW9kZWwiKTsNCj8+DQoNCjxoMj5JbnRyb2R1Y3Rpb248L2gyPg0KPHA+RU1GIEZlYXR1cmUgTW9kZWwgaXMgYSBwcm9wb3NlZCBvcGVuIHNvdXJjZSBwcm9qZWN0IHVuZGVyIHRoZSBFY2xpcHNlIE1vZGVsaW5nIEZyYW1ld29yayBUZWNobm9sb2d5IFByb2plY3QgKEVNRlQpLg0KVGhpcyBwcm9wb3NhbCBpcyBpbiB0aGUgUHJvamVjdCBQcm9wb3NhbCBQaGFzZSAoYXMgZGVmaW5lZCBpbiB0aGUgRWNsaXBzZSBEZXZlbG9wbWVudCBQcm9jZXNzIGRvY3VtZW50KSBhbmQgaXMgd3JpdHRlbiB0byBkZWNsYXJlIGl0cyBpbnRlbnQgYW5kIHNjb3BlLiBUaGlzIHByb3Bvc2FsIGlzIHdyaXR0ZW4gdG8gc29saWNpdCBhZGRpdGlvbmFsIHBhcnRpY2lwYXRpb24gYW5kIGlucHV0IGZyb20gdGhlIEVjbGlwc2UgY29tbXVuaXR5LiBZb3UgYXJlIGludml0ZWQgdG8gY29tbWVudCBvbiBhbmQvb3Igam9pbiB0aGUgcHJvamVjdC4gUGxlYXNlIHNlbmQgYWxsIGZlZWRiYWNrIHRvIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL25ld3Nwb3J0YWwvdGhyZWFkLnBocD9ncm91cD1lY2xpcHNlLnRlY2hub2xvZ3kuZW1mdCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9uZXdzcG9ydGFsL3RocmVhZC5waHA/Z3JvdXA9ZWNsaXBzZS50ZWNobm9sb2d5LmVtZnQ8L2E+IG5ld3Nncm91cC48L3A+DQo8aDI+QmFja2dyb3VuZDwvaDI+DQo8cD5EdXJpbmcgdGhlIGxhc3QgeWVhcnMgRmVhdHVyZSBNb2RlbGluZyBoYXMgYmVjb21lIHRoZSAic3RhbmRhcmQiIGZvcg0KdmFyaWFiaWxpdHkgbWFuYWdlbWVudCBpbiB0aGUgZmllbGQgb2YgU29mdHdhcmUgUHJvZHVjdCBMaW5lcy4gRmVhdHVyZQ0KTW9kZWxzIGFyZSBlYXN5IHRvIHVuZGVyc3RhbmQgYW5kIHByb3ZpZGUgYSBnZW5lcmljIHdheSB0byByZXByZXNlbnQNCnZhcmlhYmlsaXR5IGluZm9ybWF0aW9uLCBpbmRlcGVuZGVudCBvZiBhIHNwZWNpZmljIGFwcGxpY2F0aW9uIGRvbWFpbi4NClNldmVyYWwgaW5kZXBlbmRlbnQgcHJvamVjdHMgdXNpbmcgdGhlIEVjbGlwc2UgcGxhdGZvcm0gLyBFTUYgaGF2ZSBlYWNoDQpkZWZpbmVkIHRoZWlyIG93biBtZXRhIG1vZGVsIGZvciBmZWF0dXJlIG1vZGVscy4gQWx0aG91Z2ggdGhlc2UgbWV0YQ0KbW9kZWxzIGhhdmUgY29uc2lkZXJhYmxlIHN0cnVjdHVyYWwgZGlmZmVyZW5jZXMsIHRoZWlyIGNvcmUgc2VtYW50aWNzDQphcmUgc2ltaWxhci4gQSBicmllZiBkZXNjcmlwdGlvbiBvZiBmZWF0dXJlIG1vZGVscyBjYW4gYmUgZm91bmQgYXQgPGEgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GZWF0dXJlX21vZGVsIj5XaWtpcGVkaWE8L2E+IGFuZCB0aGlzDQo8YSBocmVmPSJodHRwOi8vd3d3LnB1cmUtc3lzdGVtcy5jb20vZmlsZWFkbWluL2Rvd25sb2Fkcy9wdXJlLXZhcmlhbnRzL3R1dG9yaWFscy9TUExXaXRoRmVhdHVyZU1vZGVsbGluZy5wZGYiPmFydGljbGU8L2E+IGRlc2NyaWJlcyBhIHNtYWxsIGZlYXR1cmUgbW9kZWxpbmcgZXhhbXBsZS4NClRoZSBFTUYgRmVhdHVyZSBNb2RlbCBwcm9qZWN0IHdpbGwgZGVmaW5lIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb24gb2YNCkZlYXR1cmUgTW9kZWxzIGluc2lkZSB0aGUgRWNsaXBzZSBwbGF0Zm9ybS4gVGhlIGludGVudCBpcyB0byBwcm92aWRlIGENCnVuaWZvcm0gcmVwcmVzZW50YXRpb24gZm9yIHZhcmlhYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0b29scyBiYXNlZCBvbg0KdGhlIEVjbGlwc2UgTW9kZWxpbmcgRnJhbWV3b3JrLiBUaGlzIHdpbGwgYWxsb3cgZWFzeSBhbmQgY29uc2lzdGVudA0KYWNjZXNzIHRvIHZhcmlhYmlsaXR5LXJlbGF0ZWQgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdmFyaWF0aW9uIHBvaW50cyBhbmQNCnZhcmlhbnQgZGVjaXNpb25zLCBpbiBEU0xzLCBNMk0gdHJhbnNmb3JtYXRpb25zLCBhbmQgb3RoZXIgY29udGV4dHMNCndoZXJlIHZhcmlhYmlsaXR5IGluZm9ybWF0aW9uIGlzIHByb2R1Y2VkIG9yIGNvbnN1bWVkLjwvcD4NCjxoMj5TY29wZTwvaDI+DQo8cD5UaGUgb2JqZWN0aXZlcyBvZiB0aGUgRU1GIEZlYXR1cmUgTW9kZWwgcHJvamVjdCBhcmUgdGhlIGZvbGxvd2luZzoNCjx1bD4gDQogICAgICAgIDxsaT5EZWZpbmUgRmVhdHVyZSBNZXRhIE1vZGVsPC9saT4NCiAgICAgICAgPGxpPkRlZmluZSBhbiBleHRlbnNpYmxlIGV2YWx1YXRpb24gZW5naW5lIGZyYW1ld29yayBhbmQgcHJvdmlkZSBhbiBleGVtcGxhcnkgZW5naW5lIGltcGxlbWVudGF0aW9uPC9saT4NCiAgICAgICAgPGxpPlByb3ZpZGUgZXh0ZW5zaWJsZSBlZGl0b3JzIGFuZCB2aXN1YWxpemF0aW9ucyBmb3IgdGhlIEVNRiBGZWF0dXJlIE1vZGVsczwvbGk+DQo8L3VsPg0KPC9wPg0KPGgyPkRlc2NyaXB0aW9uPC9oMj4NCjxoMz5SZWxhdGlvbnMgdG8gb3RoZXIgRWNsaXBzZSBQcm9qZWN0czwvaDM+DQo8cD48dWw+DQogICAgICAgIDxsaT5FTUYgRmVhdHVyZSBNb2RlbCB3aWxsIGJlIGJ1aWx0IG9uIHRvcCBvZiBFTUY8L2xpPg0KICAgICAgICA8bGk+R01GIGFuZCBaRVNUIHdpbGwgYmUgdXNlZCB0byBpbXBsZW1lbnQgdGhlIGVkaXRvcnMgYW5kIHZpc3VhbGl6YXRpb25zPC9saT4NCiAgICAgICAgPGxpPk0yVCAoWHBhbmQpIGFuZCBUTUYgKFh0ZXh0KSBlY2xpcHNlIHByb2plY3RzIGFscmVhZHkgaGF2ZSAoc2ltcGxlKSBpbnRlcmZhY2VzIGZvciBmZWF0dXJlIG1vZGVsIGluZm9ybWF0aW9uIGludGVncmF0ZWQuIFRoZXNlIHNob3VsZCBiZSBiYXNlZCBvbiB0aGUgcHJvcG9zZWQgRU1GIEZlYXR1cmUgTW9kZWwuPC9saT4NCiAgICAgICAgPGxpPk90aGVyIGVjbGlwc2UgcHJvamVjdHMgd2l0aCBuZWVkIGZvciB2YXJpYWJpbGl0eSBtb2RlbGxpbmcgKGUuZy4gVU1MMiwgQlBFTCkgY291bGQgdXNlIHRoZSBtZXRhIG1vZGVsIGFuZCBldmFsdWF0aW9uIEFQSSBwcm92aWRlZCBieSB0aGUgcHJvamVjdCB0byBjcmVhdGUgbW9kZWwgdmFyaWFudHMuPC9saT4NCjwvdWw+DQo8L3A+DQoNCjxoMz5Pcmdhbml6YXRpb248L2gzPg0KPGg0Pk1lbnRvcnM8L2g0Pg0KPHA+PHVsPg0KICAgICAgICA8bGk+RWQgTWVya3M8L2xpPg0KICAgICAgICA8bGk+QyZlYWN1dGU7ZHJpYyBCcnVuPC9saT4NCjwvdWw+DQo8L3A+DQo8aDQ+UHJvcG9zZWQgaW5pdGlhbCBjb21taXR0ZXJzPC9oND4NCjxwPg0KPHVsPg0KICAgICAgICA8bGk+SG9sZ2VyIFBhcGFqZXdza2kgKHB1cmUtc3lzdGVtcyBHbWJILCBHZXJtYW55KTwvbGk+DQogICAgICAgIDxsaT5NYXJrdXMgVvZsdGVyPC9saT4NCgk8L3VsPg0KPC9wPg0KPGg0PkludGVyZXN0ZWQgcGFydGllcyA8L2g0Pg0KPHA+UGFydGllcyBpbmRpY2F0aW5nIGludGVyZXN0IHdlcmUNCgk8dWw+DQogICAgICAgIDxsaT5wdXJlLXN5c3RlbXMgR21iSDwvbGk+DQogICAgICAgIDxsaT5pdGVtaXMgQUc8L2xpPg0KICAgICAgICA8bGk+R2VlbnN5czwvbGk+DQogICAgICAgIDxsaT5HZW5lcmFsIE1vdG9ycyBDb3JwLiBbcGVuZGluZyBtYW5hZ2VtZW50IGFwcHJvdmFsXTwvbGk+CiAgICAgICAgPGxpPk9wZW4gQ2FuYXJpYXMgUy5MLjwvbGk+CiAgICAgICAgPGxpPklLVisrIEFHPC9saT4KICAgICAgICA8bGk+R2VuZXJhdGl2ZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBMYWIsIFVuaXZlcnNpdHkgb2YgV2F0ZXJsb288L2xpPgogICAgICAgIDxsaT5BbmRyZWFzIFJ1bW1sZXIsIFNBUCBSZXNlYXJjaDwvbGk+DQoJPC91bD4NCjwvcD4NCjxoMz5Db2RlIGNvbnRyaWJ1dGlvbnM8L2gzPg0KPHA+VGhlIGluaXRpYWwgY29udHJpYnV0aW9uIHdpbGwgYmUgZnJvbSB0aGUgcHVyZTo6dmFyaWFudHMgliBDb25uZWN0b3IgZm9yIEVjb3JlLiBwdXJlOjp2YXJpYW50cyBpcyBhIGNvbW1lcmNpYWwgdmFyaWFudCBtYW5hZ2VtZW50IHRvb2wsIHdoaWNoIGFscmVhZHkgcHJvdmlkZXMgYSBtYXBwaW5nIGZvciBpdHMgaW50ZXJuYWwgZmVhdHVyZSBtb2RlbHMgdG8gRWNvcmUgbW9kZWxzLiBUaGUgQ29ubmVjdG9yIGZvciBFY29yZSBzb3VyY2UgY29udGFpbnMgdGhlIEVjb3JlIG1ldGEgbW9kZWwgYW5kIHJlbGF0ZWQgQVBJcy4gWHBhbmQgYW5kIFh0ZXh0IGFscmVhZHkgaGF2ZSBpbnRlcmZhY2VzIHRvIHRoaXMgbWV0YSBtb2RlbC4gVGhlIHB1cmU6OnZhcmlhbnRzIGZlYXR1cmUgbWV0YSBtb2RlbCBpcyBtYXR1cmUgYW5kIGhhcyBiZWVuIHVzZWQgZm9yIG1vZGVsaW5nIGluIGNvbW1lcmNpYWwgYW5kIHJlc2VhcmNoIGFwcGxpY2F0aW9ucyBmb3Igc2V2ZXJhbCB5ZWFycyBub3cgYW5kIHRodXMgc2hvdWxkIHByb3ZpZGUgYSBzb2xpZCBiYXNpcyBmb3IgdGhlIEVNRiBGZWF0dXJlIE1vZGVsLjwvcD4NCg0KICAgICAgPC9kaXY+DQogIDwvZGl2Pg0KPD9waHANCgkkaHRtbCA9IG9iX2dldF9jb250ZW50cygpOw0KCW9iX2VuZF9jbGVhbigpOw0KDQoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UNCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsNCj8+DQo=