ZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLTExLTEuYWRvYyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLTExLTEuYWRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDZkM2MxCi0tLSAvZGV2L251bGwKKysrIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9hbm5vdW5jZS1hcGFjaGUtbmV0YmVhbnMtMTEtMS5hZG9jCkBAIC0wLDAgKzEsNDggQEAKKy8vIAorLy8gICAgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKy8vICAgICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKy8vICAgICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorLy8gICAgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKy8vICAgICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisvLyAgICAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorLy8gICAgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vIAorLy8gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAKKy8vICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisvLyAgICAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKy8vICAgICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKy8vICAgICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKy8vICAgICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisvLyAgICAgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworCis9IFtBTk5PVU5DRV0gQXBhY2hlIE5ldEJlYW5zIDExLjEgUmVsZWFzZWQKKzphdXRob3I6IEdlZXJ0amFuIFdpZWxlbmdhCis6cmV2ZGF0ZTogMjAxOS0wNy0yMgorOmpiYWtlLXR5cGU6IHBvc3QKKzpqYmFrZS10YWdzOiBibG9nZW50cnkKKzpqYmFrZS1zdGF0dXM6IHB1Ymxpc2hlZAorOmtleXdvcmRzOiBBcGFjaGUgTmV0QmVhbnMgMTggcmVsZWFzZQorOmRlc2NyaXB0aW9uOiBBcGFjaGUgTmV0QmVhbnMgMTggcmVsZWFzZQorOnRvYzogbGVmdAorOnRvYy10aXRsZToKKzpzeW50YXg6IHRydWUKKworCitUaGUgQXBhY2hlIE5ldEJlYW5zIHRlYW0gaXMgcGxlYXNlZCB0byBhbm5vdW5jZSB0aGUgcmVsZWFzZSBvZiBBcGFjaGUgTmV0QmVhbnMgMTEuMS4gCitBcGFjaGUgTmV0QmVhbnMgaXMgYSBmdWxsIElERSBmb3IgSmF2YSBTRSwgSmF2YSBFRSwgUEhQIGFuZCBKYXZhU2NyaXB0IGRldmVsb3BtZW50IHdpdGggc29tZSBHcm9vdnkgbGFuZ3VhZ2Ugc3VwcG9ydC4KKworQXBhY2hlIE5ldEJlYW5zIDExLjEgaXMgdGhlIGZpcnN0IEFwYWNoZSBOZXRCZWFucyByZWxlYXNlIG91dHNpZGUgdGhlIEFwYWNoZSBJbmN1YmF0b3IgYW5kIHRoZSBmaXJzdCByZWxlYXNlIG9mIHRoZSBuZXcgcXVhcnRlcmx5IHJlbGVhc2UgY3ljbGUuIAorVGhlIExUUyByZWxlYXNlIG9mIHRoZSBBcGFjaGUgTmV0QmVhbnMgMTEgY3ljbGUgaXMgQXBhY2hlIE5ldEJlYW5zIDExLjAuIFRoZSAxMS4xIHJlbGVhc2UgaGFzIG5vdCBiZWVuIGFzIGhlYXZpbHkgdGVzdGVkIGFzIHRoZSBMVFMgcmVsZWFzZS4gCitVc2UgMTEuMSB0byBhY2Nlc3MgdGhlIGxhdGVzdCBmZWF0dXJlcyBhbmQgdG8gcHJvdmlkZSBmZWVkYmFjayBmb3IgdGhlIG5leHQgTFRTIHJlbGVhc2UsIHNjaGVkdWxlZCBmb3IgQXByaWwgMjAyMC4KKworTmV3ICYgbm90ZXdvcnRoeSBmZWF0dXJlcyBvZiB0aGUgMTEuMSByZWxlYXNlOgorCit4cmVmOi4uLy4uL2Rvd25sb2FkL25iMTExL2luZGV4LmFkb2NbQXBhY2hlIE5ldEJlYW5zIDExLjEgRmVhdHVyZXMgcGFnZV0KKworRG93bmxvYWRzOgorCit4cmVmOi4uLy4uL2Rvd25sb2FkL25iMTExL25iMTExLmFkb2NbQXBhY2hlIE5ldEJlYW5zIDExLjEgRG93bmxvYWQgcGFnZV0KKworRmVlbCBmcmVlIHRvIHNoYXJlIHRoZSBnb29kIG5ld3MhCmRpZmYgLS1naXQgYS9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L2Fubm91bmNlLWFwYWNoZS1uZXRiZWFucy0xMS0yLmFkb2MgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L2Fubm91bmNlLWFwYWNoZS1uZXRiZWFucy0xMS0yLmFkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQzODFjYgotLS0gL2Rldi9udWxsCisrKyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLTExLTIuYWRvYwpAQCAtMCwwICsxLDQ4IEBACisvLyAKKy8vICAgICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisvLyAgICAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisvLyAgICAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKy8vICAgICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisvLyAgICAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorLy8gICAgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKy8vICAgICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLyAKKy8vICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gCisvLyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorLy8gICAgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisvLyAgICAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisvLyAgICAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisvLyAgICAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworLy8gICAgIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKworPSBbQU5OT1VOQ0VdIEFwYWNoZSBOZXRCZWFucyAxMS4yIFJlbGVhc2VkCis6YXV0aG9yOiBHZWVydGphbiBXaWVsZW5nYQorOnJldmRhdGU6IDIwMTktMTEtMDEKKzpqYmFrZS10eXBlOiBwb3N0Cis6amJha2UtdGFnczogYmxvZ2VudHJ5Cis6amJha2Utc3RhdHVzOiBwdWJsaXNoZWQKKzprZXl3b3JkczogQXBhY2hlIE5ldEJlYW5zIDE4IHJlbGVhc2UKKzpkZXNjcmlwdGlvbjogQXBhY2hlIE5ldEJlYW5zIDE4IHJlbGVhc2UKKzp0b2M6IGxlZnQKKzp0b2MtdGl0bGU6Cis6c3ludGF4OiB0cnVlCisKK1RoZSBBcGFjaGUgTmV0QmVhbnMgdGVhbSBpcyBwbGVhc2VkIHRvIGFubm91bmNlIHRoZSByZWxlYXNlIG9mIEFwYWNoZSBOZXRCZWFucyAxMS4yLiAKK0FwYWNoZSBOZXRCZWFucyBpcyBhIGZ1bGwgSURFIGZvciBKYXZhIFNFLCBKYXZhIEVFLCBQSFAgYW5kIEphdmFTY3JpcHQgZGV2ZWxvcG1lbnQgd2l0aCBzb21lIEdyb292eSBsYW5ndWFnZSBzdXBwb3J0LgorCitBcGFjaGUgTmV0QmVhbnMgMTEuMiBpcyB0aGUgc2Vjb25kIEFwYWNoZSBOZXRCZWFucyByZWxlYXNlIG91dHNpZGUgdGhlIEFwYWNoZSBJbmN1YmF0b3IgYW5kIHRoZSBzZWNvbmQgcmVsZWFzZSBvZiB0aGUgbmV3IHF1YXJ0ZXJseSByZWxlYXNlIGN5Y2xlLiAKK1RoZSBMVFMgcmVsZWFzZSBvZiB0aGUgQXBhY2hlIE5ldEJlYW5zIDExIGN5Y2xlIGlzIEFwYWNoZSBOZXRCZWFucyAxMS4wLiAKK1RoZSAxMS4yIHJlbGVhc2UgaGFzIG5vdCBiZWVuIGFzIGhlYXZpbHkgdGVzdGVkIGFzIHRoZSBMVFMgcmVsZWFzZS4gCitVc2UgMTEuMiB0byBhY2Nlc3MgdGhlIGxhdGVzdCBmZWF0dXJlcyBhbmQgdG8gcHJvdmlkZSBmZWVkYmFjayBmb3IgdGhlIG5leHQgTFRTIHJlbGVhc2UsIHNjaGVkdWxlZCBmb3IgQXByaWwgMjAyMC4KKworTmV3ICYgbm90ZXdvcnRoeSBmZWF0dXJlcyBvZiB0aGUgMTEuMiByZWxlYXNlOgorCit4cmVmOi4uLy4uL2Rvd25sb2FkL25iMTEyL2luZGV4LmFkb2NbQXBhY2hlIE5ldEJlYW5zIDExLjIgRmVhdHVyZXMgcGFnZV0KKworRG93bmxvYWRzOgorCit4cmVmOi4uLy4uL2Rvd25sb2FkL25iMTEyL25iMTEyLmFkb2NbQXBhY2hlIE5ldEJlYW5zIDExLjIgRG93bmxvYWQgcGFnZV0KKworRmVlbCBmcmVlIHRvIHNoYXJlIHRoZSBnb29kIG5ld3MhCmRpZmYgLS1naXQgYS9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L2Fubm91bmNlLWFwYWNoZS1uZXRiZWFucy1oYXMtZ3JhZHVhdGVkLmFkb2MgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L2Fubm91bmNlLWFwYWNoZS1uZXRiZWFucy1oYXMtZ3JhZHVhdGVkLmFkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5MjVmMgotLS0gL2Rldi9udWxsCisrKyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLWhhcy1ncmFkdWF0ZWQuYWRvYwpAQCAtMCwwICsxLDQzIEBACisvLyAKKy8vICAgICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisvLyAgICAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisvLyAgICAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKy8vICAgICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisvLyAgICAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorLy8gICAgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKy8vICAgICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLyAKKy8vICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gCisvLyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorLy8gICAgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisvLyAgICAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisvLyAgICAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisvLyAgICAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworLy8gICAgIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKworPSBbQU5OT1VOQ0VdIEFwYWNoZSBOZXRCZWFucyBIYXMgR3JhZHVhdGVkIQorOmF1dGhvcjogR2VlcnRqYW4gV2llbGVuZ2EKKzpyZXZkYXRlOiAyMDE5LTA0LTI1Cis6amJha2UtdHlwZTogcG9zdAorOmpiYWtlLXRhZ3M6IGJsb2dlbnRyeQorOmpiYWtlLXN0YXR1czogcHVibGlzaGVkCis6a2V5d29yZHM6IEFwYWNoZSBOZXRCZWFucyAxOCByZWxlYXNlCis6ZGVzY3JpcHRpb246IEFwYWNoZSBOZXRCZWFucyAxOCByZWxlYXNlCis6dG9jOiBsZWZ0Cis6dG9jLXRpdGxlOgorOnN5bnRheDogdHJ1ZQorCisKK1dlIGhhdmUgZ3JhZHVhdGVkIGZyb20gdGhlIEFwYWNoZSBJbmN1YmF0b3IgYW5kIHdlIGFyZSBub3cgYSB0b3AgbGV2ZWwgQXBhY2hlIHByb2plY3QgYXQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpLgorCisqIkJlaW5nIHBhcnQgb2YgdGhlIEFTRiBtZWFucyB0aGF0IE5ldEJlYW5zIGlzIG5vdyBub3Qgb25seSBmcmVlIGFuZCBPcGVuIFNvdXJjZSBzb2Z0d2FyZTogaXQgaXMgYWxzbywgdW5pcXVlbHksIAorYW5kIGZvciB0aGUgZmlyc3QgdGltZSwgcGFydCBvZiBhIGZvdW5kYXRpb24gc3BlY2lmaWNhbGx5IGZvY3VzZWQgb24gZW5hYmxpbmcgb3BlbiBnb3Zlcm5hbmNlLCIgCitzYWlkIEdlZXJ0amFuIFdpZWxlbmdhLCBWaWNlIFByZXNpZGVudCBvZiBBcGFjaGUgTmV0QmVhbnMuIAorIkV2ZXJ5IGNvbnRyaWJ1dG9yIHRvIHRoZSBwcm9qZWN0IG5vdyBoYXMgZXF1YWwgc2F5IG92ZXIgdGhlIHJvYWRtYXAgYW5kIGRpcmVjdGlvbiBvZiBOZXRCZWFucy4gVGhhdCBpcyBhIG5ldyBhbmQgaGlzdG9yaWMgc3RlcCBhbmQgdGhlIGNvbW11bml0eSBoYXMgYmVlbiByZWFkeSBmb3IgdGhpcyBmb3IgYSB2ZXJ5IGxvbmcgdGltZS4gVGhhbmtzIHRvIHRoZSBzdHJvbmcgc3Rld2FyZHNoaXAgb2YgTmV0QmVhbnMgaW4gU3VuIE1pY3Jvc3lzdGVtcyBhbmQgT3JhY2xlLCBBcGFjaGUgTmV0QmVhbnMgaXMgbm93IHJlYWR5IGZvciB0aGUgbmV4dCBwaGFzZSBpbiBpdHMgZGV2ZWxvcG1lbnQgYW5kIHdlIHdlbGNvbWUgZXZlcnlvbmUgdG8gcGFydGljaXBhdGUgYXMgZXF1YWxzIGFzIHdlIG1vdmUgZm9yd2FyZC4iKgorCisKK1RoZSBhYm92ZSBpcyBmcm9tIHRoZSBvZmZpY2lhbCBBcGFjaGUgcHJlc3MgcmVsZWFzZSwgYWxsIG9mIHdoaWNoIGNhbiBiZSByZWFkIGhlcmU6CisKK2xpbms6aHR0cHM6Ly9ibG9nc2FyY2hpdmUuYXBhY2hlLm9yZy9mb3VuZGF0aW9uL2VudHJ5L3RoZS1hcGFjaGUtc29mdHdhcmUtZm91bmRhdGlvbi1hbm5vdW5jZXM1MVtodHRwczovL2Jsb2dzYXJjaGl2ZS5hcGFjaGUub3JnL2ZvdW5kYXRpb24vZW50cnkvdGhlLWFwYWNoZS1zb2Z0d2FyZS1mb3VuZGF0aW9uLWFubm91bmNlczUxXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLWluY3ViYXRpbmctMTAuYWRvYyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLWluY3ViYXRpbmctMTAuYWRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWJhNTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9hbm5vdW5jZS1hcGFjaGUtbmV0YmVhbnMtaW5jdWJhdGluZy0xMC5hZG9jCkBAIC0wLDAgKzEsNTUgQEAKKy8vIAorLy8gICAgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKy8vICAgICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKy8vICAgICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorLy8gICAgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKy8vICAgICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisvLyAgICAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorLy8gICAgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vIAorLy8gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAKKy8vICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisvLyAgICAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKy8vICAgICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKy8vICAgICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKy8vICAgICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisvLyAgICAgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworCis9IFtBTk5PVU5DRV0gQXBhY2hlIE5ldEJlYW5zIChpbmN1YmF0aW5nKSAxMC4wIFJlbGVhc2VkCis6YXV0aG9yOiBHZWVydGphbiBXaWVsZW5nYQorOnJldmRhdGU6IDIwMTgtMTItMjcKKzpqYmFrZS10eXBlOiBwb3N0Cis6amJha2UtdGFnczogYmxvZ2VudHJ5Cis6amJha2Utc3RhdHVzOiBwdWJsaXNoZWQKKzprZXl3b3JkczogQXBhY2hlIE5ldEJlYW5zIDE4IHJlbGVhc2UKKzpkZXNjcmlwdGlvbjogQXBhY2hlIE5ldEJlYW5zIDE4IHJlbGVhc2UKKzp0b2M6IGxlZnQKKzp0b2MtdGl0bGU6Cis6c3ludGF4OiB0cnVlCisKKworVGhlIEFwYWNoZSBOZXRCZWFucyB0ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSByZWxlYXNlIG9mIEFwYWNoZSBOZXRCZWFucyAoaW5jdWJhdGluZykgMTAuMC4KKworKkFwYWNoZSBOZXRCZWFucyAoaW5jdWJhdGluZykgMTAuMCBjb25zdGl0dXRlcyBhbGwgYnV0IHRoZSBlbnRlcnByaXNlIGNsdXN0ZXIgaW4gdGhlIEFwYWNoZSBOZXRCZWFucyBHaXQgcmVwbywgCit3aGljaCB0b2dldGhlciBwcm92aWRlIHRoZSBOZXRCZWFucyBQbGF0Zm9ybSAoaS5lLiwgdGhlIHVuZGVybHlpbmcgYXBwbGljYXRpb24gZnJhbWV3b3JrKSwgCithcyB3ZWxsIGFzIGFsbCB0aGUgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdGhlIEphdmEgU0UsIFBIUCwgSmF2YVNjcmlwdCBhbmQgR3Jvb3Z5IGZlYXR1cmVzIG9mIEFwYWNoZSBOZXRCZWFucy4qCisKKypJbiBzaG9ydCwgQXBhY2hlIE5ldEJlYW5zIChpbmN1YmF0aW5nKSAxMC4wIGlzIGEgZnVsbCBJREUgZm9yIEphdmEgU0UsIFBIUCBhbmQgSmF2YVNjcmlwdCBkZXZlbG9wbWVudCB3aXRoIHNvbWUgR3Jvb3Z5IGxhbmd1YWdlIHN1cHBvcnQuKgorCitSZWFkIG1vcmUgb24gb3VyIGRvd25sb2FkIHBhZ2U6CisKK3hyZWY6Li4vLi4vZG93bmxvYWQvbmIxMDAvbmIxMDAuYWRvY1tBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDEwLjAgRG93bmxvYWQgcGFnZV0KKworTmV3ICYgTm90ZXdvcnRoeSBmZWF0dXJlcyBvZiB0aGUgMTAuMCBSZWxlYXNlOgorCitsaW5rOmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvTkVUQkVBTlMvQXBhY2hlK05ldEJlYW5zKzEwLjArTmV3K2FuZCtOb3Rld29ydGh5W2h0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvTkVUQkVBTlMvQXBhY2hlK05ldEJlYW5zKzEwLjArTmV3K2FuZCtOb3Rld29ydGh5XQorCitTZWUgdGhlIGJlbG93IGZvciB0aGUgZG9uYXRpb24gc3RhdHVzIG9mIGZlYXR1cmVzIHRoYXQgaGF2ZSBub3QgYmVlbiBkb25hdGVkIG9yIGluY2x1ZGVkIGluIEFwYWNoZSBidWlsZHMgeWV0LCBpLmUuLCBhcmUgbm90IHBhcnQgb2YgQXBhY2hlIE5ldEJlYW5zIChpbmN1YmF0aW5nKSAxMC4wLCBlLmcuLCBmZWF0dXJlcyBmb3Igd29ya2luZyB3aXRoIEMvQysrLCBhbmQgbW9yZToKKworbGluazpodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L05FVEJFQU5TL0FwYWNoZStUcmFuc2l0aW9uW2h0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvTkVUQkVBTlMvQXBhY2hlK1RyYW5zaXRpb25dCisKK1dvcmsgaXMgYmVpbmcgZG9uZSBvbiBicmluZ2luZyBuZXRiZWFucy5vcmcgdG8gQXBhY2hlLiBJbiB0aGUgbWVhbnRpbWUsIHJlZmVyIHRvIHRoZSBiZWxvdyBmb3IgYWxsIGRldGFpbHMgcmVsYXRlZCB0byBBcGFjaGUgTmV0QmVhbnM6CisKK3hyZWY6Li4vLi4vaW5kZXguYWRvY1todHRwczovL25ldGJlYW5zLmFwYWNoZS5vcmcvXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLWluY3ViYXRpbmctMTEuYWRvYyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLWluY3ViYXRpbmctMTEuYWRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjQ5YzViCi0tLSAvZGV2L251bGwKKysrIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9hbm5vdW5jZS1hcGFjaGUtbmV0YmVhbnMtaW5jdWJhdGluZy0xMS5hZG9jCkBAIC0wLDAgKzEsNDYgQEAKKy8vIAorLy8gICAgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKy8vICAgICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKy8vICAgICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorLy8gICAgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKy8vICAgICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisvLyAgICAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorLy8gICAgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vIAorLy8gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAKKy8vICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisvLyAgICAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKy8vICAgICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKy8vICAgICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKy8vICAgICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisvLyAgICAgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworCis9IFtBTk5PVU5DRV0gQXBhY2hlIE5ldEJlYW5zIChpbmN1YmF0aW5nKSAxMS4wIFJlbGVhc2VkCis6YXV0aG9yOiBHZWVydGphbiBXaWVsZW5nYQorOnJldmRhdGU6IDIwMTktMDQtMDUKKzpqYmFrZS10eXBlOiBwb3N0Cis6amJha2UtdGFnczogYmxvZ2VudHJ5Cis6amJha2Utc3RhdHVzOiBwdWJsaXNoZWQKKzprZXl3b3JkczogQXBhY2hlIE5ldEJlYW5zIDE4IHJlbGVhc2UKKzpkZXNjcmlwdGlvbjogQXBhY2hlIE5ldEJlYW5zIDE4IHJlbGVhc2UKKzp0b2M6IGxlZnQKKzp0b2MtdGl0bGU6Cis6c3ludGF4OiB0cnVlCisKKworVGhlIEFwYWNoZSBOZXRCZWFucyB0ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSByZWxlYXNlIG9mIEFwYWNoZSBOZXRCZWFucyAoaW5jdWJhdGluZykgMTEuMC4KKworKkFwYWNoZSBOZXRCZWFucyAoaW5jdWJhdGluZykgMTEuMCBjb25zdGl0dXRlcyBhbGwgY2x1c3RlcnMgaW4gdGhlIEFwYWNoZSBOZXRCZWFucyBHaXQgcmVwbywgd2hpY2ggdG9nZXRoZXIgcHJvdmlkZSB0aGUgTmV0QmVhbnMgUGxhdGZvcm0gKGkuZS4sIHRoZSB1bmRlcmx5aW5nIGFwcGxpY2F0aW9uIGZyYW1ld29yayksIGFzIHdlbGwgYXMgYWxsIHRoZSBtb2R1bGVzIHRoYXQgcHJvdmlkZSB0aGUgSmF2YSBTRSwgSmF2YSBFRSwgUEhQLCBKYXZhU2NyaXB0IGFuZCBHcm9vdnkgZmVhdHVyZXMgb2YgQXBhY2hlIE5ldEJlYW5zLioKKworSW4gc2hvcnQsIEFwYWNoZSBOZXRCZWFucyAoaW5jdWJhdGluZykgMTEuMCBpcyBhIGZ1bGwgSURFIGZvciBKYXZhIFNFLCBKYXZhIEVFLCBQSFAgYW5kIEphdmFTY3JpcHQgZGV2ZWxvcG1lbnQgd2l0aCBzb21lIEdyb292eSBsYW5ndWFnZSBzdXBwb3J0LgorCitOZXcgJiBub3Rld29ydGh5IGZlYXR1cmVzIG9mIHRoZSAxMS4wIHJlbGVhc2U6CisKK3hyZWY6Li4vLi4vZG93bmxvYWQvbmIxMTAvaW5kZXguYWRvY1tBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDExLjAgRmVhdHVyZXMgcGFnZV0KKworRG93bmxvYWRzOgorCit4cmVmOi4uLy4uL2Rvd25sb2FkL25iMTEwL25iMTEwLmFkb2NbQXBhY2hlIE5ldEJlYW5zIChpbmN1YmF0aW5nKSAxMS4wIERvd25sb2FkIHBhZ2VdCisKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLWluY3ViYXRpbmctOS5hZG9jIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9hbm5vdW5jZS1hcGFjaGUtbmV0YmVhbnMtaW5jdWJhdGluZy05LmFkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkzNjUxMgotLS0gL2Rldi9udWxsCisrKyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLWluY3ViYXRpbmctOS5hZG9jCkBAIC0wLDAgKzEsNTggQEAKKy8vIAorLy8gICAgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKy8vICAgICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKy8vICAgICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorLy8gICAgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKy8vICAgICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisvLyAgICAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorLy8gICAgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vIAorLy8gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAKKy8vICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisvLyAgICAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKy8vICAgICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKy8vICAgICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKy8vICAgICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisvLyAgICAgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworCis9IFtBTk5PVU5DRV0gQXBhY2hlIE5ldEJlYW5zIChpbmN1YmF0aW5nKSA5LjAgQmV0YSByZWxlYXNlZAorOmF1dGhvcjogR2VlcnRqYW4gV2llbGVuZ2EKKzpyZXZkYXRlOiAyMDE4LTAyLTE2Cis6amJha2UtdHlwZTogcG9zdAorOmpiYWtlLXRhZ3M6IGJsb2dlbnRyeQorOmpiYWtlLXN0YXR1czogcHVibGlzaGVkCis6a2V5d29yZHM6IEFwYWNoZSBOZXRCZWFucyAxOCByZWxlYXNlCis6ZGVzY3JpcHRpb246IEFwYWNoZSBOZXRCZWFucyAxOCByZWxlYXNlCis6dG9jOiBsZWZ0Cis6dG9jLXRpdGxlOgorOnN5bnRheDogdHJ1ZQorCisKKworCitUaGUgQXBhY2hlIE5ldEJlYW5zIHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIHJlbGVhc2Ugb2YgQXBhY2hlIE5ldEJlYW5zIChpbmN1YmF0aW5nKSA5LjAgQmV0YS4KKworQXBhY2hlIE5ldEJlYW5zIDkuMCBCZXRhIChpbmN1YmF0aW5nKSBjb25zdGl0dXRlcyBhbGwgdGhlIG1vZHVsZXMgaW4gdGhlIEFwYWNoZSBOZXRCZWFucyBHaXQgcmVwbywgd2hpY2ggdG9nZXRoZXIgcHJvdmlkZSB0aGUgTmV0QmVhbnMgUGxhdGZvcm0gKGkuZS4sIHRoZSB1bmRlcmx5aW5nIGFwcGxpY2F0aW9uIGZyYW1ld29yayksIHdoaWNoIHdhcyByZWxlYXNlZCBhcyBBcGFjaGUgTmV0QmVhbnMgOS4wIEFscGhhIChpbmN1YmF0aW5nKSwgYXMgd2VsbCBhcyBhbGwgdGhlIG1vZHVsZXMgdGhhdCBwcm92aWRlIHRoZSBKYXZhIFNFLXJlbGF0ZWQgZmVhdHVyZXMgb2YgQXBhY2hlIE5ldEJlYW5zLiBJbiBzaG9ydCwgQXBhY2hlIE5ldEJlYW5zIDkuMCBCZXRhIChpbmN1YmF0aW5nKSBpcyBhIGZ1bGwgSURFIGZvciBKYXZhIFNFIGRldmVsb3BtZW50LgorCitTZWUgdGhlIGJlbG93IGZvciB0aGUgZG9uYXRpb24gc3RhdHVzIG9mIGZlYXR1cmVzIHRoYXQgaGF2ZSBub3QgYmVlbiBkb25hdGVkIHRvIEFwYWNoZSB5ZXQsIGUuZy4sIGZlYXR1cmVzIGZvciB3b3JraW5nIHdpdGggSmF2YSBFRSwgSmF2YVNjcmlwdCwgUEhQLCBDL0MrKywgYW5kIG1vcmU6CisKK2xpbms6aHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9ORVRCRUFOUy9BcGFjaGUrVHJhbnNpdGlvbltodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L05FVEJFQU5TL0FwYWNoZStUcmFuc2l0aW9uXQorCitOb3RlOiBBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDkuMCBCZXRhIGlzIHByaW1hcmlseSBmb2N1c2VkIG9uIElQIGNsZWFyYW5jZS4gSXRzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdCBiZWVuIHRlc3RlZCCXIHRoZSBOZXRDQVQgKE5ldEJlYW5zIENvbW11bml0eSBBY2NlcHRhbmNlIFRlc3RpbmcpIHByb2Nlc3Mgd2lsbCBiZWdpbiBub3cgdGhhdCBBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDkuMCBCZXRhIGhhcyBiZWVuIHJlbGVhc2VkLiBXYXRjaCB0aGlzIHNwYWNlIGZvciB1cGNvbWluZyBhbm5vdW5jZW1lbnRzIGFib3V0IE5ldENBVC4gV2hlbiBOZXRDQVQgY29tcGxldGVzLCB3ZSB3aWxsIHZvdGUgb24gdGhlIGZpbmFsIHJlbGVhc2Ugb2YgQXBhY2hlIE5ldEJlYW5zIChpbmN1YmF0aW5nKSA5LjAuCisKK0RldGFpbHMgb24gQXBhY2hlIE5ldEJlYW5zIChpbmN1YmF0aW5nKSA5LjAgQmV0YToKKworbGluazpodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L05FVEJFQU5TL0FwYWNoZStOZXRCZWFucys5LjArQmV0YVtodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L05FVEJFQU5TL0FwYWNoZStOZXRCZWFucys5LjArQmV0YV0KKworRG93bmxvYWQgbm90IGF2YWlsYWJsZQorCitXb3JrIGlzIGJlaW5nIGRvbmUgb24gYnJpbmdpbmcgbmV0YmVhbnMub3JnIHRvIEFwYWNoZS4gSW4gdGhlIG1lYW50aW1lLCByZWZlciB0byB0aGUgYmVsb3cgZm9yIGFsbCBkZXRhaWxzIHJlbGF0ZWQgdG8gQXBhY2hlIE5ldEJlYW5zOgorCitsaW5rOmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvTkVUQkVBTlNbaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9ORVRCRUFOU10KKworT24gYmVoYWxmIG9mIHRoZSBBcGFjaGUgTmV0QmVhbnMgUFBNQworCisKK0dlZXJ0amFuCmRpZmYgLS1naXQgYS9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L2Fubm91bmNlLWFwYWNoZS1uZXRiZWFucy1pbmN1YmF0aW5nLTkxLmFkb2MgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L2Fubm91bmNlLWFwYWNoZS1uZXRiZWFucy1pbmN1YmF0aW5nLTkxLmFkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFmMDY5MgotLS0gL2Rldi9udWxsCisrKyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYW5ub3VuY2UtYXBhY2hlLW5ldGJlYW5zLWluY3ViYXRpbmctOTEuYWRvYwpAQCAtMCwwICsxLDY4IEBACisvLyAKKy8vICAgICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisvLyAgICAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisvLyAgICAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKy8vICAgICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisvLyAgICAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorLy8gICAgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKy8vICAgICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLyAKKy8vICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gCisvLyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorLy8gICAgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisvLyAgICAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisvLyAgICAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisvLyAgICAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworLy8gICAgIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKworPSBbQU5OT1VOQ0VdIEFwYWNoZSBOZXRCZWFucyAoaW5jdWJhdGluZykgOS4wIFJDMSByZWxlYXNlZAorOmF1dGhvcjogR2VlcnRqYW4gV2llbGVuZ2EKKzpyZXZkYXRlOiAyMDE4LTA1LTI5Cis6amJha2UtdHlwZTogcG9zdAorOmpiYWtlLXRhZ3M6IGJsb2dlbnRyeQorOmpiYWtlLXN0YXR1czogcHVibGlzaGVkCis6a2V5d29yZHM6IEFwYWNoZSBOZXRCZWFucyAxOCByZWxlYXNlCis6ZGVzY3JpcHRpb246IEFwYWNoZSBOZXRCZWFucyAxOCByZWxlYXNlCis6dG9jOiBsZWZ0Cis6dG9jLXRpdGxlOgorOnN5bnRheDogdHJ1ZQorCisKKworCitUaGUgQXBhY2hlIE5ldEJlYW5zIHRlYW0gaXMgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIHJlbGVhc2Ugb2YgQXBhY2hlIE5ldEJlYW5zIChpbmN1YmF0aW5nKSA5LjAgUkMxLgorCitBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDkuMCBSQzEgY29uc3RpdHV0ZXMgYWxsIHRoZSBtb2R1bGVzIGluIHRoZSAncmVsZWFzZTkwJyBicmFuY2ggb2YgdGhlIEFwYWNoZSBOZXRCZWFucyBHaXQgcmVwbyAobGluazpodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2luY3ViYXRvci1uZXRiZWFuc1todHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2luY3ViYXRvci1uZXRiZWFuc10pLCB3aGljaCB0b2dldGhlciBwcm92aWRlIHRoZSBOZXRCZWFucyBQbGF0Zm9ybSAoaS5lLiwgdGhlIHVuZGVybHlpbmcgYXBwbGljYXRpb24gZnJhbWV3b3JrKSwgd2hpY2ggd2FzIHJlbGVhc2VkIGFzIEFwYWNoZSBOZXRCZWFucyA5LjAgQWxwaGEgKGluY3ViYXRpbmcpLCBhcyB3ZWxsIGFzIGFsbCB0aGUgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdGhlIEphdmEgU0UtcmVsYXRlZCBmZWF0dXJlcyBvZiBBcGFjaGUgTmV0QmVhbnMuIEluIHNob3J0LCBBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDkuMCBSQzEgaXMgYSBmdWxsIElERSBmb3IgSmF2YSBTRSBkZXZlbG9wbWVudC4KKworRG93bmxvYWQgbm90IGF2YWlsYWJsZQorCitEZXRhaWxzIG9uIEFwYWNoZSBOZXRCZWFucyAoaW5jdWJhdGluZykgOS4wIFJDMSwgaW5jbHVkaW5nIGEgbGlzdCBvZiBvcGVuIGlzc3VlcyB0byBiZSByZXNvbHZlZCBwcmlvciB0byB0aGUgZmluYWwgcmVsZWFzZToKKworbGluazpodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L05FVEJFQU5TL0FwYWNoZStOZXRCZWFucys5LjArUkMxW2h0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvTkVUQkVBTlMvQXBhY2hlK05ldEJlYW5zKzkuMCtSQzFdCisKK1doYXQgbXVzdCBiZSBkb25lIGZvciB0aGUgZmluYWwgdmVyc2lvbiBvZiBBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDkuMCB0byBiZSByZWxlYXNlZD8KKworLiBUaGUgaXRlbXMgaW4gdGhlIGxpbmsgYWJvdmUgbmVlZCB0byBiZSBmaXhlZCwgZS5nLCBuZXcgc3BsYXNoIHNjcmVlbiBuZWVkcyB0byBiZSBpbnRlZ3JhdGVkLgorLiBDaGVycnkgcGlja2luZyBvZiBwdWxsIHJlcXVlc3RzIG1lcmdlZCBpbnRvICdtYWluJyBmb3IgJ3JlbGVhc2U5MCcgYnJhbmNoLgorLiBQdXQgdG9nZXRoZXIgcmMyIHJlbGVhc2UsIHNhbml0eSB0ZXN0IGl0IHZpYSBOZXRDQVQsIGFuZCBwdWJsaXNoIGl0LgorLiBDb21tdW5pdHkgQWNjZXB0YW5jZSBzdXJ2ZXkuCisuIFN0YXJ0IEFwYWNoZSB2b3RpbmcgZm9yIHRoZSBmaW5hbCByZWxlYXNlLCBpbmNvcnBvcmF0aW5nIGlucHV0IGZyb20gdGhlIENvbW11bml0eSBBY2NlcHRhbmNlIHN1cnZleS4KKy4gUmVsZWFzZSA5LjAsIHdoaWNoIHdpbGwgYmUgYW4gSURFIGZvciBKYXZhIFNFIGRldmVsb3BtZW50IG9ubHksIHRoZSBvdGhlciBmZWF0dXJlcyBoYXZlIG5vdCBiZWVuIGRvbmF0ZWQgeWV0IGJ5IE9yYWNsZSBhbmQgYXJlIGJlaW5nIGF1ZGl0ZWQgYW5kIHByb2Nlc3NlZCBhbmQgYmUgcGFydCBvZiBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIEFwYWNoZSBOZXRCZWFucy4KKworVGFrZSBub3RlIG9mIHRoZSBBcGFjaGUgTmV0QmVhbnMgcmVsZWFzZSBjcml0ZXJpYToKKworbGluazpodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L05FVEJFQU5TL05ldEJlYW5zKzkuMCtSZWxlYXNlK0NyaXRlcmlhW2h0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvTkVUQkVBTlMvTmV0QmVhbnMrOS4wK1JlbGVhc2UrQ3JpdGVyaWFdCisKK0ZZSSwgc2VlIHRoZSBiZWxvdyBmb3IgdGhlIGRvbmF0aW9uIHN0YXR1cyBvZiBmZWF0dXJlcyB0aGF0IGhhdmUgbm90IGJlZW4gZG9uYXRlZCB0byBBcGFjaGUgeWV0LCBlLmcuLCBmZWF0dXJlcyBmb3Igd29ya2luZyB3aXRoIEphdmEgRUUsIEphdmFTY3JpcHQsIFBIUCwgQy9DKyssIGFuZCBtb3JlOgorCitsaW5rOmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvTkVUQkVBTlMvQXBhY2hlK1RyYW5zaXRpb25baHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9ORVRCRUFOUy9BcGFjaGUrVHJhbnNpdGlvbl0KKworV29yayBpcyBiZWluZyBkb25lIG9uIGJyaW5naW5nIG5ldGJlYW5zLm9yZyB0byBBcGFjaGUuIFdlIGFscmVhZHkgaGF2ZSBvdXIgQXBhY2hlIHNpdGUgc2V0IHVwLCBoZXJlOgorCit4cmVmOi4uLy4uL2luZGV4LmFkb2NbaHR0cHM6Ly9uZXRiZWFucy5hcGFjaGUub3JnL10KKworT24gYmVoYWxmIG9mIHRoZSBBcGFjaGUgTmV0QmVhbnMgUFBNQworCitHZWVydGphbgpkaWZmIC0tZ2l0IGEvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9hbm5vdW5jZS1hcGFjaGUtbmV0YmVhbnMtaW5jdWJhdGluZy05Mi5hZG9jIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9hbm5vdW5jZS1hcGFjaGUtbmV0YmVhbnMtaW5jdWJhdGluZy05Mi5hZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5OWYyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L2Fubm91bmNlLWFwYWNoZS1uZXRiZWFucy1pbmN1YmF0aW5nLTkyLmFkb2MKQEAgLTAsMCArMSw2NSBAQAorLy8gCisvLyAgICAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorLy8gICAgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorLy8gICAgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisvLyAgICAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorLy8gICAgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKy8vICAgICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisvLyAgICAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8gCisvLyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vIAorLy8gICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKy8vICAgICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorLy8gICAgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorLy8gICAgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorLy8gICAgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKy8vICAgICB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisKKz0gW0FOTk9VTkNFXSBBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDkuMCBSZWxlYXNlZAorOmF1dGhvcjogR2VlcnRqYW4gV2llbGVuZ2EKKzpyZXZkYXRlOiAyMDE4LTA3LTI5Cis6amJha2UtdHlwZTogcG9zdAorOmpiYWtlLXRhZ3M6IGJsb2dlbnRyeQorOmpiYWtlLXN0YXR1czogcHVibGlzaGVkCis6a2V5d29yZHM6IEFwYWNoZSBOZXRCZWFucyAxOCByZWxlYXNlCis6ZGVzY3JpcHRpb246IEFwYWNoZSBOZXRCZWFucyAxOCByZWxlYXNlCis6dG9jOiBsZWZ0Cis6dG9jLXRpdGxlOgorOnN5bnRheDogdHJ1ZQorCisKKworVGhlIEFwYWNoZSBOZXRCZWFucyB0ZWFtIGlzIHByb3VkIHRvIGFubm91bmNlIHRoZSByZWxlYXNlIG9mIEFwYWNoZSBOZXRCZWFucyAoaW5jdWJhdGluZykgOS4wLgorCitBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDkuMCBjb25zdGl0dXRlcyBhbGwgdGhlIG1vZHVsZXMgaW4gdGhlIEFwYWNoZSBOZXRCZWFucyBHaXQgcmVwbywgd2hpY2ggdG9nZXRoZXIgcHJvdmlkZSB0aGUgTmV0QmVhbnMgUGxhdGZvcm0gKGkuZS4sIHRoZSB1bmRlcmx5aW5nIGFwcGxpY2F0aW9uIGZyYW1ld29yayksIGFzIHdlbGwgYXMgYWxsIHRoZSBtb2R1bGVzIHRoYXQgcHJvdmlkZSB0aGUgSmF2YSBTRS1yZWxhdGVkIGZlYXR1cmVzIG9mIEFwYWNoZSBOZXRCZWFucy4gSW4gc2hvcnQsIEFwYWNoZSBOZXRCZWFucyAoaW5jdWJhdGluZykgOS4wIGlzIGEgZnVsbCBJREUgZm9yIEphdmEgU0UgZGV2ZWxvcG1lbnQuCisKK1JlYWQgbW9yZSBvbiBvdXIgZG93bmxvYWQgcGFnZToKKworeHJlZjouLi8uLi9kb3dubG9hZC9uYjkwL25iOTAuYWRvY1tBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDkuMCBEb3dubG9hZCBwYWdlXQorCitOZXcgJiBOb3Rld29ydGh5IGZlYXR1cmVzIG9mIHRoZSA5LjAgUmVsZWFzZToKKworbGluazpodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L05FVEJFQU5TL0FwYWNoZStOZXRCZWFucys5LjArTmV3K2FuZCtOb3Rld29ydGh5W2h0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvTkVUQkVBTlMvQXBhY2hlK05ldEJlYW5zKzkuMCtOZXcrYW5kK05vdGV3b3J0aHldCisKK1NlZSB0aGUgYmVsb3cgZm9yIHRoZSBkb25hdGlvbiBzdGF0dXMgb2YgZmVhdHVyZXMgdGhhdCBoYXZlIG5vdCBiZWVuIGRvbmF0ZWQgb3IgaW5jbHVkZWQgaW4gQXBhY2hlIGJ1aWxkcyB5ZXQsIGkuZS4sIGFyZSBub3QgcGFydCBvZiBBcGFjaGUgTmV0QmVhbnMgKGluY3ViYXRpbmcpIDkuMCwgZS5nLiwgZmVhdHVyZXMgZm9yIHdvcmtpbmcgd2l0aCBKYXZhIEVFLCBKYXZhU2NyaXB0LCBQSFAsIEMvQysrLCBhbmQgbW9yZToKKworbGluazpodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L05FVEJFQU5TL0FwYWNoZStUcmFuc2l0aW9uW2h0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvTkVUQkVBTlMvQXBhY2hlK1RyYW5zaXRpb25dCisKK0Fsc28gc2VlOgorCitXaGF0J3MgSGFwcGVuZWQgdG8gTXkgRmF2b3JpdGUgTmV0QmVhbnMgUGx1Z2lucz8KKworV29yayBpcyBiZWluZyBkb25lIG9uIGJyaW5naW5nIG5ldGJlYW5zLm9yZyB0byBBcGFjaGUuIEluIHRoZSBtZWFudGltZSwgcmVmZXIgdG8gdGhlIGJlbG93IGZvciBhbGwgZGV0YWlscyByZWxhdGVkIHRvIEFwYWNoZSBOZXRCZWFuczoKKworeHJlZjouLi8uLi9pbmRleC5hZG9jW2h0dHBzOi8vbmV0YmVhbnMuYXBhY2hlLm9yZy9dCisKK0Rpc2NsYWltZXI6IEFwYWNoZSBOZXRCZWFucyBpcyBhbiBlZmZvcnQgdW5kZXJnb2luZyBpbmN1YmF0aW9uIGF0IFRoZSBBcGFjaGUKK1NvZnR3YXJlIEZvdW5kYXRpb24gKEFTRiksIHNwb25zb3JlZCBieSB0aGUgQXBhY2hlIEluY3ViYXRvci4KK0luY3ViYXRpb24gaXMgcmVxdWlyZWQgb2YgYWxsIG5ld2x5IGFjY2VwdGVkIHByb2plY3RzIHVudGlsIGEgZnVydGhlcgorcmV2aWV3IGluZGljYXRlcyB0aGF0IHRoZSBpbmZyYXN0cnVjdHVyZSwgY29tbXVuaWNhdGlvbnMsIGFuZCBkZWNpc2lvbgorbWFraW5nIHByb2Nlc3MgaGF2ZSBzdGFiaWxpemVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCBvdGhlcgorc3VjY2Vzc2Z1bCBBU0YgcHJvamVjdHMuIFdoaWxlIGluY3ViYXRpb24gc3RhdHVzIGlzIG5vdCBuZWNlc3NhcmlseSBhCityZWZsZWN0aW9uIG9mIHRoZSBjb21wbGV0ZW5lc3Mgb3Igc3RhYmlsaXR5IG9mIHRoZSBjb2RlLCBpdCBkb2VzCitpbmRpY2F0ZSB0aGF0IHRoZSBwcm9qZWN0IGhhcyB5ZXQgdG8gYmUgZnVsbHkgZW5kb3JzZWQgYnkgdGhlIEFTRi4KZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYXBhY2hlLW5ldGJlYW5zLW9wZW5qZngtYW5kLWFkb3B0b3Blbmpkay5hZG9jIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9hcGFjaGUtbmV0YmVhbnMtb3BlbmpmeC1hbmQtYWRvcHRvcGVuamRrLmFkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3YjU0MgotLS0gL2Rldi9udWxsCisrKyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvYXBhY2hlLW5ldGJlYW5zLW9wZW5qZngtYW5kLWFkb3B0b3Blbmpkay5hZG9jCkBAIC0wLDAgKzEsNDEgQEAKKy8vIAorLy8gICAgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKy8vICAgICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKy8vICAgICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorLy8gICAgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKy8vICAgICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisvLyAgICAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorLy8gICAgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vIAorLy8gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAKKy8vICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisvLyAgICAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKy8vICAgICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKy8vICAgICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKy8vICAgICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisvLyAgICAgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworCis9IEFwYWNoZSBOZXRCZWFucywgT3BlbkpGWCwgYW5kIEFkb3B0T3BlbkpESworOmF1dGhvcjogR2VlcnRqYW4gV2llbGVuZ2EgCis6cmV2ZGF0ZTogMjAxOS0wNi0xMAorOmpiYWtlLXR5cGU6IHBvc3QKKzpqYmFrZS10YWdzOiBibG9nZW50cnkKKzpqYmFrZS1zdGF0dXM6IHB1Ymxpc2hlZAorOmtleXdvcmRzOiBOZXRCZWFucyBhdCBPcmFjbGUgQ29kZSBPbmUgMjAxOQorOmRlc2NyaXB0aW9uOiBOZXRCZWFucyBhdCBPcmFjbGUgQ29kZSBPbmUgMjAxOQorOnRvYzogbGVmdAorOnRvYy10aXRsZToKKzpzeW50YXg6IHRydWUKKworCitDaGVjayBvdXQgYSBncmVhdCBzZXJpZXMgb2YgYXJ0aWNsZXMgb24gYSBraWxsZXIgY29tYmluYXRpb24sIGJ5IENocmlzIEx1ZmctLUFwYWNoZSBOZXRCZWFucywgT3BlbkpGWCwgYW5kIEFkb3B0T3BlbkpESy4KKworSW4gcGFydCBvbmUgeW91IHNlZSBob3cgdG8gZ2V0IGEgbW9kdWxhciBKYXZhRlggYXBwbGljYXRpb24gYnVpbHQgYW5kIHJ1bm5pbmcgZnJvbSBOZXRCZWFucy4gSW4gcGFydCB0d28sIHlvdSBsb29rIGF0IGdlbmVyYXRpbmcsIGZyb20gTWF2ZW4sIGEgcnVudGltZSB0byBleGVjdXRlIHRoZSBhcHBsaWNhdGlvbi4gSW4gcGFydCAzLCB5b3UgbGVhcm4gYWJvdXQgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgbmV3IGFwcGxpY2F0aW9uLgorCitIZXJlIGFyZSB0aGUgdGhyZWUgcGFydHM6CisKKyogbGluazpodHRwczovL2R6b25lLmNvbS9hcnRpY2xlcy9hZG9wdG9wZW5qZGstMTEtb3BlbmpmeC1uZXRiZWFuc1tBZG9wdE9wZW5KREsgMTEgKyBPcGVuSkZYICsgTmV0QmVhbnM6IFBhcnQgMV0KKyogbGluazpodHRwczovL2R6b25lLmNvbS9hcnRpY2xlcy9hZG9wdG9wZW5qZGstMTEtb3BlbmpmeC1uZXRiZWFucy1wYXJ0LTJbQWRvcHRPcGVuSkRLIDExICsgT3BlbkpGWCArIE5ldEJlYW5zOiBQYXJ0IDJdCisqIGxpbms6aHR0cHM6Ly9kem9uZS5jb20vYXJ0aWNsZXMvYWRvcHRvcGVuamRrLTExLW9wZW5qZngtbmV0YmVhbnMtcGFydC0zW0Fkb3B0T3BlbkpESyAxMSArIE9wZW5KRlggKyBOZXRCZWFuczogUGFydCAzXQpkaWZmIC0tZ2l0IGEvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9hcGFjaGUtbmV0YmVhbnMtd2VsY29tZS1uZXcucG5nIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9hcGFjaGUtbmV0YmVhbnMtd2VsY29tZS1uZXcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZDE1MWQKLS0tIC9kZXYvbnVsbAorKysgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L2FwYWNoZS1uZXRiZWFucy13ZWxjb21lLW5ldy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9sc3AtY2xpZW50LWRlbW8tYmEtc2guYWRvYyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbHNwLWNsaWVudC1kZW1vLWJhLXNoLmFkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMyZDc2NQotLS0gL2Rldi9udWxsCisrKyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbHNwLWNsaWVudC1kZW1vLWJhLXNoLmFkb2MKQEAgLTAsMCArMSwxNDMgQEAKKy8vIAorLy8gICAgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKy8vICAgICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKy8vICAgICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorLy8gICAgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKy8vICAgICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisvLyAgICAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorLy8gICAgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vIAorLy8gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAKKy8vICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisvLyAgICAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKy8vICAgICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKy8vICAgICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKy8vICAgICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisvLyAgICAgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworCis9IExTUCBDbGllbnQgZGVtbyAtIChiYSlzaCBsYW5ndWFnZSBzZXJ2ZXIKKzphdXRob3I6IEdlZXJ0amFuIFdpZWxlbmdhIAorOnJldmRhdGU6IDIwMTktMDgtMTcKKzpqYmFrZS10eXBlOiBwb3N0Cis6amJha2UtdGFnczogYmxvZ2VudHJ5Cis6amJha2Utc3RhdHVzOiBwdWJsaXNoZWQKKzprZXl3b3JkczogTmV0QmVhbnMgYXQgT3JhY2xlIENvZGUgT25lIDIwMTkKKzpkZXNjcmlwdGlvbjogTmV0QmVhbnMgYXQgT3JhY2xlIENvZGUgT25lIDIwMTkKKzp0b2M6IGxlZnQKKzp0b2MtdGl0bGU6Cis6c3ludGF4OiB0cnVlCisKKworCitCZWxvdyBpcyBhIHNjZW5hcmlvIGJ5IEphbiBMYWhvZGEsIHRoZSBjcmVhdG9yIG9mIExTUCBpbnRlZ3JhdGlvbiBmb3IgQXBhY2hlIE5ldEJlYW5zLCBmb3IgaG93IHRvIGludGVncmF0ZSB0aGUgYmFzaCBsYW5ndWFnZSBzZXJ2ZXIgd2l0aCBBcGFjaGUgTmV0QmVhbnMsIGluY2x1ZGluZyBzeW50YXggaGlnaGxpZ2h0aW5nLgorCisKKz09IFNldHRpbmcgVXAKKworLiBJbnN0YWxsIG5wbSAoYW5kIG5vZGUuanMpLiBPbiBVYnVudHUsIGUuZy4sIGRvICJhcHQgaW5zdGFsbCBucG0iLCB0aG91Z2ggc29tZXRoaW5nIGRpZmZlcmVudCB3aWxsIGJlIG5lZWRlZCBvbiBNYWMgT1MgWC4KKy4gQ3JlYXRlIGEgZGlyZWN0b3J5IGluIHdoaWNoIHdlIGFyZSBnb2luZyB0byB3b3JrLCBoYXZlIGEgdGVybWluYWwgb3BlbmVkIGluIHRoYXQgZGlyZWN0b3J5LgorLiBJbnN0YWxsIHRoZSBiYXNoLWxhbmd1YWdlLXNlcnZlcjoKKysKK1tzb3VyY2UsY29uc29sZV0KKy0tLS0KKyAgICBucG0gaW5zdGFsbCBiYXNoLWxhbmd1YWdlLXNlcnZlcgorLS0tLQorKworT24gTWFjIE9TWDoKKysKK1tzb3VyY2UsY29uc29sZV0KKy0tLS0KKyAgICBucG0gaW5zdGFsbCBiYXNoLWxhbmd1YWdlLXNlcnZlciAtLXVuc2FmZS1wZXJtCistLS0tCisrCitUaGlzIHdpbGwgaW5zdGFsbCB0aGUgc2VydmVyIGludG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorLiBUcnkgdGhlIGJhc2ggc2VydmVyOgorKworW3NvdXJjZSxjb25zb2xlXQorLS0tLQorICAgIC4vbm9kZV9tb2R1bGVzL2Jhc2gtbGFuZ3VhZ2Utc2VydmVyL2Jpbi9tYWluLmpzIC0taGVscAorLS0tLQorKworWW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpczoKKysKK1tzb3VyY2UsY29uc29sZV0KKy0tLS0KKyAgICBVc2FnZToKKyAgICAgIGJhc2gtbGFuZ3VhZ2Utc2VydmVyIHN0YXJ0CisgICAgICBiYXNoLWxhbmd1YWdlLXNlcnZlciAtaCB8IC0taGVscAorICAgICAgYmFzaC1sYW5ndWFnZS1zZXJ2ZXIgLXYgfCAtLXZlcnNpb24KKy0tLS0KKy4gQ3JlYXRlIGEgTmV0QmVhbnMgbW9kdWxlLiBDcmVhdGUgYSBGaWxlIFR5cGUgKE1vZHVsZSBEZXZlbG9wbWVudC9GaWxlIFR5cGUpLCBtaW1lIHR5cGU6IHRleHQvc2gsIGZpbGUgZXh0ZW5zaW9uOiBzaAorCis9PSBTeW50YXggQ29sb3JpbmcgdmlhIFRleHRNYXRlCisKKy4gRG93bmxvYWQgdGhlIFRleHRNYXRlIGdyYW1tYXIgZmlsZSBoZXJlLCBhbmQgcHV0IGl0IGFsb25nc2lkZSB0aGUgbmV3bHkgY3JlYXRlZCBEYXRhT2JqZWN0OgorICBsaW5rOmh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9taWNyb3NvZnQvdnNjb2RlL21hc3Rlci9leHRlbnNpb25zL3NoZWxsc2NyaXB0L3N5bnRheGVzL3NoZWxsLXVuaXgtYmFzaC50bUxhbmd1YWdlLmpzb25baHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21pY3Jvc29mdC92c2NvZGUvbWFzdGVyL2V4dGVuc2lvbnMvc2hlbGxzY3JpcHQvc3ludGF4ZXMvc2hlbGwtdW5peC1iYXNoLnRtTGFuZ3VhZ2UuanNvbl0KKy4gQWRkICJUZXh0TWF0ZSBMZXhlciIgYXMgYSBkZXBlbmRlbmN5IG9mIHRoZSBtb2R1bGUuCisuIEludG8gdGhlIERhdGFPYmplY3QgYWRkIHRoaXMgYW5ub3RhdGlvbjoKKysKK1tzb3VyY2UsamF2YV0KKy0tLS0KKyAgICBAR3JhbW1hclJlZ2lzdHJhdGlvbihncmFtbWFyPSJzaGVsbC11bml4LWJhc2gudG1MYW5ndWFnZS5qc29uIiwgbWltZVR5cGU9InRleHQvc2giKQorLS0tLQorKworR3JhbW1hclJlZ2lzdHJhdGlvbiBpczoKKysKK1tzb3VyY2UsamF2YV0KKy0tLS0KKyAgICBpbXBvcnQgb3JnLm5ldGJlYW5zLm1vZHVsZXMudGV4dG1hdGUubGV4ZXIuYXBpLkdyYW1tYXJSZWdpc3RyYXRpb247CistLS0tCisKKworVGhpcyBzaG91bGQgbGVhZCB0byBzeW50YXggaGlnaGxpZ2h0ZWQgc291cmNlIGZvciAuc2ggYmFzaCBmaWxlcyB0YWtlbiBmcm9tIHRoZSBUZXh0TWF0ZSBncmFtbWFyIGZpbGUuCisKKz09IExhbmd1YWdlIFN1cHBvcnQgdmlhIHRoZSBMYW5ndWFnZSBTZXJ2ZXIKKworTmV4dCwgd2UgbmVlZCB0byBhZGQgbGFuZ3VhZ2Ugc3VwcG9ydCB1c2luZyB0aGUgbGFuZ3VhZ2Ugc2VydmVyLgorCisKKy4gQWRkICJMU1AgQ2xpZW50IiBhbmQgIk1JTUUgTG9va3VwIEFQSSIgYXMgZGVwZW5kZW5jaWVzIG9mIHRoZSBtb2R1bGUuCisKKy4gQ3JlYXRlIGEgbmV3IGNsYXNzLCBTaGVsbENsaWVudCwgaW4gdGhlIG1vZHVsZSwgcHV0IHRoaXMgaW50byBpdCwgKHJlcGxhY2luZyAiICIgd2l0aCB0aGUgYWJzb2x1dGUgcGF0aCB0byAibm9kZV9tb2R1bGVzL2Jhc2gtbGFuZ3VhZ2Utc2VydmVyIik6CisrCitbc291cmNlLGphdmFdCistLS0tCisgICAgaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisgICAgaW1wb3J0IG9yZy5uZXRiZWFucy5hcGkuZWRpdG9yLm1pbWVsb29rdXAuTWltZVJlZ2lzdHJhdGlvbjsKKyAgICBpbXBvcnQgb3JnLm5ldGJlYW5zLm1vZHVsZXMubHNwLmNsaWVudC5zcGkuTGFuZ3VhZ2VTZXJ2ZXJQcm92aWRlcjsKKyAgICBpbXBvcnQgb3JnLm9wZW5pZGUudXRpbC5FeGNlcHRpb25zOworICAgIGltcG9ydCBvcmcub3BlbmlkZS51dGlsLkxvb2t1cDsKKworICAgIEBNaW1lUmVnaXN0cmF0aW9uKG1pbWVUeXBlPSJ0ZXh0L3NoIiwgc2VydmljZT1MYW5ndWFnZVNlcnZlclByb3ZpZGVyLmNsYXNzKQorICAgIHB1YmxpYyBjbGFzcyBTaGVsbENsaWVudCBpbXBsZW1lbnRzIExhbmd1YWdlU2VydmVyUHJvdmlkZXIgeworCisgICAgICAgQE92ZXJyaWRlCisgICAgICAgcHVibGljIExhbmd1YWdlU2VydmVyRGVzY3JpcHRpb24gc3RhcnRTZXJ2ZXIoTG9va3VwIGxrcCkgeworICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgUHJvY2VzcyBwID0gbmV3IFByb2Nlc3NCdWlsZGVyKCIvYmluL21haW4uanMiLCAic3RhcnQiKS5zdGFydCgpOworICAgICAgICAgICAgICAgcmV0dXJuIExhbmd1YWdlU2VydmVyRGVzY3JpcHRpb24uY3JlYXRlKHAuZ2V0SW5wdXRTdHJlYW0oKSwgcC5nZXRPdXRwdXRTdHJlYW0oKSwgcCk7CisgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICBFeGNlcHRpb25zLnByaW50U3RhY2tUcmFjZShleCk7CisgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgfQorICAgICAgIH0KKworICAgIH0KKy0tLS0KKysKK1lvdSBtYXkgbmVlZCB0byBleHBsaWNpdGx5IGNhbGwgbm9kZSBpbiB0aGUgYWJvdmUgY29kZSwgaS5lLiwgYXMgZm9sbG93czoKKysKK1tzb3VyY2UsamF2YV0KKy0tLS0KKyAgICBQcm9jZXNzIHAgPSBuZXcgUHJvY2Vzc0J1aWxkZXIoCisgICAgICAgICAgICAiL3Vzci9sb2NhbC9iaW4vbm9kZSIsIAorICAgICAgICAgICAgIi9iaW4vbWFpbi5qcyIsIAorICAgICAgICAgICAgInN0YXJ0Iikuc3RhcnQoKTsKKy0tLS0KKy4gQnVpbGQgYW5kIHN0YXJ0IHRoZSBtb2R1bGUuCisKKworCitDYXZlYXQ6IHRoZSBsYW5ndWFnZSBzZXJ2ZXIgaXMgc3RhcnRlZCBvbmx5IGZvciBmaWxlcyB0aGF0IGFyZSBpbnNpZGUgYSBwcm9qZWN0LCBzbyBjcmVhdGUgKGFueSkgbmV3IHByb2plY3QsIGFuZCBpbnNpZGUgdGhlIHByb2plY3QsIHB1dCBhIHNoZWxsIGZpbGUuIEUuZy4gY29weSAiYmluL25ldGJlYW5zIiBhcyAidGVzdC5zaCIgaW50byB0aGUgcHJvamVjdC4gT3BlbiBpdCBpbiB0aGUgZWRpdG9yIC0gdGhlcmUgc2hvdWxkIGJlIHN5bnRheCBoaWdobGlnaHRpbmcsIE5hdmlnYXRvciwgYW5kIGNvZGUgY29tcGxldGlvbiBzaG91bGQgc2hvdyBzb21ldGhpbmcsIGV0Yy4KZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtYXJyb3ctZnVuY3Rpb25zLTIuMC5wbmcgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L25iMTEyLXBocDc0LWFycm93LWZ1bmN0aW9ucy0yLjAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MGY5ODgKLS0tIC9kZXYvbnVsbAorKysgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L25iMTEyLXBocDc0LWFycm93LWZ1bmN0aW9ucy0yLjAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtY29udmVydC1jbG9zdXJlLXRvLWFycm93LWZ1bmN0aW9uLmdpZiBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtY29udmVydC1jbG9zdXJlLXRvLWFycm93LWZ1bmN0aW9uLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWM5NDJiCi0tLSAvZGV2L251bGwKKysrIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9uYjExMi1waHA3NC1jb252ZXJ0LWNsb3N1cmUtdG8tYXJyb3ctZnVuY3Rpb24uZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtbnVsbC1jb2FsZXNjaW5nLWFzc2lnbm1lbnQtb3BlcmF0b3IucG5nIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9uYjExMi1waHA3NC1udWxsLWNvYWxlc2NpbmctYXNzaWdubWVudC1vcGVyYXRvci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVjZTk2MAotLS0gL2Rldi9udWxsCisrKyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtbnVsbC1jb2FsZXNjaW5nLWFzc2lnbm1lbnQtb3BlcmF0b3IucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtbnVtZXJpYy1saXRlcmFsLXNlcGFyYXRvci5wbmcgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L25iMTEyLXBocDc0LW51bWVyaWMtbGl0ZXJhbC1zZXBhcmF0b3IucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOWFlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L25iMTEyLXBocDc0LW51bWVyaWMtbGl0ZXJhbC1zZXBhcmF0b3IucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtcHJvamVjdC1wcm9wZXJ0aWVzLnBuZyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtcHJvamVjdC1wcm9wZXJ0aWVzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWUyNWVmCi0tLSAvZGV2L251bGwKKysrIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9uYjExMi1waHA3NC1wcm9qZWN0LXByb3BlcnRpZXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtc3ByZWFkLW9wZXJhdG9yLWluLWFycmF5LWV4cHJlc3Npb24ucG5nIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9uYjExMi1waHA3NC1zcHJlYWQtb3BlcmF0b3ItaW4tYXJyYXktZXhwcmVzc2lvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIyMjUyNwotLS0gL2Rldi9udWxsCisrKyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtc3ByZWFkLW9wZXJhdG9yLWluLWFycmF5LWV4cHJlc3Npb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtc3VnZ2VzdC11c2luZy1jb21iaW5lZC1hc3NpZ25tZW50LW9wZXJhdG9ycy5naWYgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L25iMTEyLXBocDc0LXN1Z2dlc3QtdXNpbmctY29tYmluZWQtYXNzaWdubWVudC1vcGVyYXRvcnMuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMDhmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L25iMTEyLXBocDc0LXN1Z2dlc3QtdXNpbmctY29tYmluZWQtYXNzaWdubWVudC1vcGVyYXRvcnMuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtdHlwZWQtcHJvcGVydGllcy0yLjAucG5nIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9uYjExMi1waHA3NC10eXBlZC1wcm9wZXJ0aWVzLTIuMC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ4MTQ1MAotLS0gL2Rldi9udWxsCisrKyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtdHlwZWQtcHJvcGVydGllcy0yLjAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmV0YmVhbnMtMTEtMy1pcy1zaGFwaW5nLmFkb2MgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L25ldGJlYW5zLTExLTMtaXMtc2hhcGluZy5hZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MzM1YTEKLS0tIC9kZXYvbnVsbAorKysgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L25ldGJlYW5zLTExLTMtaXMtc2hhcGluZy5hZG9jCkBAIC0wLDAgKzEsNTkgQEAKKy8vIAorLy8gICAgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKy8vICAgICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKy8vICAgICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorLy8gICAgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKy8vICAgICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisvLyAgICAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorLy8gICAgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vIAorLy8gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAKKy8vICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisvLyAgICAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKy8vICAgICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKy8vICAgICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKy8vICAgICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisvLyAgICAgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworCis9IE5ldEJlYW5zIDExLjMgaXMgU2hhcGluZyB1cCBOaWNlbHkKKzphdXRob3I6IGxraXNoYWxtaSAKKzpyZXZkYXRlOiAyMDE5LTExLTMwCis6amJha2UtdHlwZTogcG9zdAorOmpiYWtlLXRhZ3M6IGJsb2dlbnRyeQorOmpiYWtlLXN0YXR1czogcHVibGlzaGVkCis6a2V5d29yZHM6IEFwYWNoZSBOZXRCZWFucyAxOCByZWxlYXNlCis6ZGVzY3JpcHRpb246IEFwYWNoZSBOZXRCZWFucyAxOCByZWxlYXNlCis6dG9jOiBsZWZ0Cis6dG9jLXRpdGxlOgorOnN5bnRheDogdHJ1ZQorCisKK09uZSBtb250aCBoYXMgcGFzc2VkIHNpbmNlIE5ldEJlYW5zIDExLjIgaGFkIGJlZW4gcmVsZWFzZWQuIAorVGhlcmUgYXJlIDgyIG5ldyBQUi1zIG1hZGUgaXQgdG8gdGhlIG1hc3RlciBicmFuY2ggc28gZmFyLiAKK1dlIHVzdWFsbHkgaGF2ZSBhLCBub3QgbmVjZXNzYXJ5IGludGVudGlvbmFsLCAidGhlbWUiIGZvciBlYWNoIHJlbGVhc2UuIEknZCBzYXkgdGhlIHRoZW1lIGlzIGZvciAxMS4zIGlzOiAiUmVtb3ZlIHRoZSBSdXN0Ii4KKworT3VyIGNvZGUgYW5kIGxpYnJhcmllcyBzcGVudCBsb25nIHRpbWUgaW4gdGhlIHRyYW5zaXQuIAorTWFueSBvZiBvdXIgbW9kdWxlcyB3ZXJlIHN0aWxsIGNvbXBpbGluZyBhZ2FpbnN0IEphdmEgMS42IGFuZC9vciB1c2VkIGFuY2llbnQgdmVyc2lvbnMgb2YgdGhpcmQgcGFydHkgbGlicmFyaWVzLiAKKzExLjMgaW1wcm92ZWQgYSBsb3Qgb24gdGhpcyBmcm9udCBhbmQgdGhlcmUgYXJlIHN0aWxsIG1hbnkgUFIgYXJlIGluIHRoZSBxdWV1ZSB0byBjYXJyeSB0aGF0IG9uLgorV2l0aG91dCB0cnlpbmcgdG8gYmUgY29tcGxldGUsIGhlcmUgaXMgYSBzbWFsbCBsaXN0IG9mIGNoYW5nZXMgd2hhdCdzIGNvbWluZzoKKworLSBKZ2l0IExpYnJhcnkgVXBkYXRlCistIEFTTSwgUG9zdGdyZVNRTCwgSlVuaXQ1IGFuZCBPdGhlciBMaWJyYXJ5IFVwZGF0ZXMuCistIFBIUCBGaXhlcworLSBIVE1MIExleGVyIFN0YWJpbGl0eSBJbXByb3ZlbWVudHMKKy0gSlNGIDIuMyBTdXBwb3J0CistIEdyYWRsZSBUb29saW5nIDYuMAorLSBTZXZlcmFsIENsZWFudXBzLCBSZW1vdmUgQ29tcGlsZSBXYXJuaW5ncworCitPbiB0aGUgVUkgU2lkZToKKworLSBSZXR1cm4gb2YgRGFyayBNZXRhbCBhbmQgRGFyayBOaW1idXMgTG9vayBhbmQgRmVlbAorLSBFeHBlcmltZW50YWwgc3VwcG9ydCBmb3IgRmxhdGxhZiBMb29rIGFuZCBGZWVsCisKK09uIEdyYWRsZSBTaWRlOgorCistIFRlc3QgT3V0cHV0IGlzIENoYW5uZWxlZCBCYWNrIHRvIHRoZSBJREUKKy0gQWRkZWQgUHJvamVjdCBSZWxvYWQgQWN0aW9uCistIEVsZXBoYW50IEljb25zIEZpbmFsbHkgUmVwbGFjZSB0aGUgb2xkIE9uZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L25ldGJlYW5zLWF0LW9yYWNsZS1jb2RlLW9uZS5hZG9jIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9uZXRiZWFucy1hdC1vcmFjbGUtY29kZS1vbmUuYWRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTA1NTE2Ci0tLSAvZGV2L251bGwKKysrIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9uZXRiZWFucy1hdC1vcmFjbGUtY29kZS1vbmUuYWRvYwpAQCAtMCwwICsxLDg0IEBACisvLyAKKy8vICAgICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisvLyAgICAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisvLyAgICAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKy8vICAgICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisvLyAgICAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorLy8gICAgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKy8vICAgICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLyAKKy8vICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gCisvLyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorLy8gICAgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisvLyAgICAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisvLyAgICAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisvLyAgICAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworLy8gICAgIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKworPSBOZXRCZWFucyBhdCBPcmFjbGUgQ29kZSBPbmUgMjAxOQorOmF1dGhvcjogR2VlcnRqYW4gV2llbGVuZ2EgCis6cmV2ZGF0ZTogMjAxOS0wOS0xMQorOmpiYWtlLXR5cGU6IHBvc3QKKzpqYmFrZS10YWdzOiBibG9nZW50cnkKKzpqYmFrZS1zdGF0dXM6IHB1Ymxpc2hlZAorOmtleXdvcmRzOiBOZXRCZWFucyBhdCBPcmFjbGUgQ29kZSBPbmUgMjAxOQorOmRlc2NyaXB0aW9uOiBOZXRCZWFucyBhdCBPcmFjbGUgQ29kZSBPbmUgMjAxOQorOnRvYzogbGVmdAorOnRvYy10aXRsZToKKzpzeW50YXg6IHRydWUKKworQW4gQXBhY2hlIE5ldEJlYW5zIHNjaGVkdWxlIGZvciB0aG9zZSBnb2luZyB0byBPcmFjbGUgQ29kZSBPbmUgMjAxOSBuZXh0IHdlZWshCisKKypTYXR1cmRheSwgU2VwdGVtYmVyIDE0KgorCisqIDE5OjAwIEhhbmcgb3V0IGluIHRoZSBUaGlyc3R5IEJlYXIgaW4gSG93YXJkIFN0cmVldAorCisqTW9uZGF5LCBTZXB0ZW1iZXIgMTYqCisKKyogKldoeSBZb3UgU2hvdWxkIEJlIENvZGluZyB3aXRoIHRoZSBOZXRCZWFucyBJREUqIFtCT0YxMzIxXQorICAgIE1hcmsgU3RlcGhlbnMsIERldmVsb3BlciwgSURSc29sdXRpb25zCisgICAgRXRoYW4gUHJpY2UsIERldmVsb3BlciwgSURSc29sdXRpb25zCisgICAgMDI6MzAgUE0gLSAwMzoxNSBQTSB8IE1vc2NvbmUgU291dGggLSBSb29tIDMwNQorCisqICpKYXZhIElERSBXYXJzKiBbREVWMTM3NV0KKyAgICBLZW4gRm9nZWwsIFRlYWNoZXIsIERhd3NvbiBDb2xsZWdlCisgICAgU2NvdHQgU2VsaWtvZmYsIFNvZnR3YXJlIERldmVsb3BlciwgU2VsaWtvZmYgU29sdXRpb25zLCBMTEMKKyAgICBKZWFubmUgQm95YXJza3ksIERldmVsb3BlciwgQ29kZVJhbmNoCisgICAgMDQ6MDAgUE0gLSAwNDo0NSBQTSB8IE1vc2NvbmUgU291dGggLSBSb29tIDMwNAorCisqICpIYWNraW5nIHRoZSBOZXRCZWFucyBJREUqIFtCT0YxMzM4XQorICAgIE1hcmsgU3RlcGhlbnMsIElEUiBTb2x1dGlvbnMKKyAgICAwNjowMCBQTSAtIDA2OjQ1IFBNIHwgTW9zY29uZSBTb3V0aCAtIFJvb20gMzA5CisKKyogKkhhY2tpbmcgdGhlIE5ldEJlYW5zIFByb2ZpbGVyKiBbQk9GNDE3MF0KKyAgICBSeWFuIEN1cHJhaywgRm9ybXVsYXRpb24gQXBwbGljYXRpb25zIFImRDsgRGV2ZWxvcG1lbnQgU2VuaW9yIE1hbmFnZXIsIERhc3NhdWx0IFN5c3RlbWVzCisgICAgMDY6MDAgUE0gLSAwNjo0NSBQTSB8IE1vc2NvbmUgU291dGggLSBSb29tIDMwNQorCisqVHVlc2RheSwgU2VwdGVtYmVyIDE3KgorCisqICpHZXR0aW5nIFN0YXJ0ZWQgd2l0aCBEZWVwIExlYXJuaW5nIGZvciBFbnRlcnByaXNlIEphdmEgRGV2ZWxvcGVycyogW0RFVjIxMjZdCisgICAgWm9yYW4gU2V2YXJhYywgQXNzb2NpYXRlIFByb2Zlc3NvciwgVW5pdmVyc2l0eSBvZiBCZWxncmFkZSwgRmFjdWx0eSBvZiBPcmdhbmlzYXRpb25hbCBTY2llbmNlcworICAgIFN1eWFzaCBKb3NoaSwgRGV2ZWxvcGVyIE1hcmtldGluZyBEaXJlY3RvciwgT3JhY2xlCisgICAgMTI6MzAgUE0gLSAwMToxNSBQTSB8IE1vc2NvbmUgU291dGggLSBSb29tIDMwOAorCisqICpUZXN0aW5nIG9uIE9yYWNsZSBBdXRvbm9tb3VzIERhdGFiYXNlIHdpdGggSG9tb21vcnBoaWMgRW5jcnlwdGlvbiwgVXNpbmcgTmV0QmVhbnMgYW5kIEphdmEgLSBCWU9MKiBbSE9MMzE5Nl0KKyAgICBTaW1vbiBCYWluLCBGb3VuZGVyICYgQ1RPLCBTaGllbGRJTworICAgIDEyOjMwIFBNIC0gMDI6MzAgUE0gfCBNb3Njb25lIFdlc3QgLSBSb29tIDMwMjRDCisKKypXZWRuZXNkYXksIFNlcHRlbWJlciAxOCoKKworKiAqQXBhY2hlIE5ldEJlYW5zOiBJdHMgU3RhdHVzIGFuZCBGdXR1cmUqIFtERVYyNTA2XQorICAgIEdlZXJ0amFuIFdpZWxlbmdhLCBQcm9kdWN0IE1hbmFnZXIsIE9yYWNsZQorICAgIE1hcmsgU3RlcGhlbnMsIERldmVsb3BlciwgSURSc29sdXRpb25zCisgICAgRXRoYW4gUHJpY2UsIERldmVsb3BlciwgSURSc29sdXRpb25zCisgICAgMDY6MDAgUE0gLSAwNjo0NSBQTSB8IE1vc2NvbmUgU291dGggLSBSb29tIDIwNgorCisqVGh1cnNkYXksIFNlcHRlbWJlciAxOSoKKworKiAqVGVzdGluZyBvbiBPcmFjbGUgQXV0b25vbW91cyBEYXRhYmFzZSB3aXRoIEhvbW9tb3JwaGljIEVuY3J5cHRpb24sIFVzaW5nIE5ldEJlYW5zIGFuZCBKYXZhIC0gQllPTCogW0hPTDMxOTZdCisgICAgU2ltb24gQmFpbiwgRm91bmRlciAmIENUTywgU2hpZWxkSU8KKyAgICAwOTowMCBBTSAtIDExOjAwIEFNIHwgTW9zY29uZSBXZXN0IC0gUm9vbSAzMDI0QworCisqIDE5OjAwIEhhbmcgb3V0IGluIHRoZSBUaGlyc3R5IEJlYXIgaW4gSG93YXJkIFN0cmVldApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmV0YmVhbnMtcHViLWhhbmdvdXQtaW4tcHJhZ3VlLmFkb2MgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L25ldGJlYW5zLXB1Yi1oYW5nb3V0LWluLXByYWd1ZS5hZG9jCmluZGV4IDE0MzIzYTcuLjViMWEyMzAgMTAwNjQ0Ci0tLSBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvbmV0YmVhbnMtcHViLWhhbmdvdXQtaW4tcHJhZ3VlLmFkb2MKKysrIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9uZXRiZWFucy1wdWItaGFuZ291dC1pbi1wcmFndWUuYWRvYwpAQCAtMjgsNyArMjgsNyBAQAogOnRvYzogbGVmdAogOnRvYy10aXRsZToKIDpzeW50YXg6IHRydWUKLQorOmltYWdlc2RpcjogaHR0cHM6Ly9uZXRiZWFucy5hcGFjaGUub3JnCiAKIEEgZ3JvdXAgb2YgSmF2YSBlbmdpbmVlcnMgZ2F0aGVyZWQgaW4gYSBwdWIgaW4gUHJhZ3VlIGxhc3QgbmlnaHQgdG8gY2VsZWJyYXRlIG1hbnkgeWVhcnMgCiBvZiB0aGVpciBlbmdhZ2VtZW50IGluIE5ldEJlYW5zLCBhbGwgaGF2aW5nIHdvcmtlZCBpbiBTdW4gTWljcm9zeXN0ZW1zIG9yIE9yYWNsZSBvciBib3RoLCAKQEAgLTM4LDQgKzM4LDQgQEAKIHRoZSB5ZWFycyBpcyBtb3JlIHRoYW4gd2VsY29tZSB0byBhdHRlbmQgb3Igc2V0IHVwIHNpbWlsYXIgZ2V0IHRvZ2V0aGVycywgCiBpZGVhbGx5IGluIGEgcHViLCB3aGljaCBpcyBhbHNvIHdoZXJlIE5ldEJlYW5zIHN0YXJ0ZWQuCiAKLWltYWdlOjpuZXRiZWFucy1wdWItaGFuZ291dC1pbi1wcmFndWUtcGljMS5wbmdbXQoraW1hZ2U6OmJsb2dzL2VudHJ5L25ldGJlYW5zLXB1Yi1oYW5nb3V0LWluLXByYWd1ZS1waWMxLnBuZ1tdCmRpZmYgLS1naXQgYS9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L3BocC03LTQtc3VwcG9ydC5hZG9jIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9waHAtNy00LXN1cHBvcnQuYWRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzk3NTMzCi0tLSAvZGV2L251bGwKKysrIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9waHAtNy00LXN1cHBvcnQuYWRvYwpAQCAtMCwwICsxLDg3IEBACisvLyAKKy8vICAgICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisvLyAgICAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisvLyAgICAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKy8vICAgICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisvLyAgICAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorLy8gICAgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKy8vICAgICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLyAKKy8vICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gCisvLyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorLy8gICAgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisvLyAgICAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisvLyAgICAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisvLyAgICAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworLy8gICAgIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKworPSBQSFAgNy40IFN1cHBvcnQKKzphdXRob3I6IEp1bmljaGkgCis6cmV2ZGF0ZTogMjAxOS0wNy0yNQorOmpiYWtlLXR5cGU6IHBvc3QKKzpqYmFrZS10YWdzOiBibG9nZW50cnkKKzpqYmFrZS1zdGF0dXM6IHB1Ymxpc2hlZAorOmtleXdvcmRzOiBOZXRCZWFucyBhdCBPcmFjbGUgQ29kZSBPbmUgMjAxOQorOmRlc2NyaXB0aW9uOiBOZXRCZWFucyBhdCBPcmFjbGUgQ29kZSBPbmUgMjAxOQorOnRvYzogbGVmdAorOnRvYy10aXRsZToKKzpzeW50YXg6IHRydWUKKzppbWFnZXNkaXI6IGh0dHBzOi8vbmV0YmVhbnMuYXBhY2hlLm9yZworCitIaSBhbGwuIFRvZGF5LCB3ZSB3aWxsIGJyaWVmbHkgc2hvdyB5b3UgYWJvdXQgUEhQNy40IHN1cHBvcnQgd2hpY2ggd2lsbCBiZSBhdmFpbGFibGUgaW4gdGhlICpuZXh0IE5ldEJlYW5zKiB2ZXJzaW9uIGkuZS4gKk5ldEJlYW5zIDExLjIqLgorCitGaXJzdCBvZiBhbGwsIEkgc3Ryb25nbHkgaG9wZSB0aGF0IG5ldyBmZWF0dXJlcyBhcmUgdGVzdGVkIGJ5IFBIUCB1c2VycyBiZWZvcmUgTmV0QmVhbnMgMTEuMiBpcyByZWxlYXNlZCBiZWNhdXNlIHRoZXJlIHNob3VsZCBiZSBidWdzLgorRGVmaW5pdGVseSwgd2UgbmVlZCB5b3VyIGhlbHAhCisKK0lmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0aGVtLCBwbGVhc2UgdGVzdCBpdC4gWW91IGNhbiBkb3dubG9hZCBhIGRldiB2ZXJzaW9uIGhlcmUuCisKK1RoZW4sIHdlIGNvdWxkIG1lcmdlIG5ldyBjaGFuZ2VzIHF1aWNrbHkgdGhhbmtzIHRvIG91ciBjb21taXR0ZXIgKlRvbWFzIE15c2lrKi4gVGhhbmtzIGEgbG90IGZvciB5b3VyIHJldmlldywgVG9tYXMhCisKKz09IFBIUCA3LjQgU3VwcG9ydAorCitUbyBlbmFibGUgaXQsIHlvdSBoYXZlIHRvIHNldCBQSFAgNy40IGFzIHRoZSBQSFAgdmVyc2lvbiBvZiB5b3VyIFBIUCBwcm9qZWN0LiAoUmlnaHQtY2xpY2sgeW91ciBwcm9qZWN0IG5vZGUsIGNsaWNrIFByb2plY3QgUHJvcGVydGllcy4pCisKK2ltYWdlOjpibG9ncy9lbnRyeS9uYjExMi1waHA3NC1wcm9qZWN0LXByb3BlcnRpZXMucG5nW10KKworTmV0QmVhbnMgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIG5ldyBzeW50YXhlcyBmb3IgUEhQIDcuNC4KKworPT09IE51bGwgQ29hbGVzY2luZyBBc3NpZ25tZW50IE9wZXJhdG9yCisKK2ltYWdlOjpibG9ncy9lbnRyeS9uYjExMi1waHA3NC1udWxsLWNvYWxlc2NpbmctYXNzaWdubWVudC1vcGVyYXRvci5wbmdbXQorCis9PT0gU3ByZWFkIE9wZXJhdG9yIGluIEFycmF5IEV4cHJlc3Npb24KKworaW1hZ2U6OmJsb2dzL2VudHJ5L25iMTEyLXBocDc0LXNwcmVhZC1vcGVyYXRvci1pbi1hcnJheS1leHByZXNzaW9uLnBuZ1tdCisKKz09PSBOdW1lcmljIExpdGVyYWwgU2VwYXJhdG9yCisKK2ltYWdlOjpibG9ncy9lbnRyeS9uYjExMi1waHA3NC1udW1lcmljLWxpdGVyYWwtc2VwYXJhdG9yLnBuZ1tdCisKKz09PSBUeXBlZCBQcm9wZXJ0aWVzIDIuMAorCitpbWFnZTo6YmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtdHlwZWQtcHJvcGVydGllcy0yLjAucG5nW10KKworPT09IEFycm93IEZ1bmN0aW9ucyAyLjAKKworaW1hZ2U6OmJsb2dzL2VudHJ5L25iMTEyLXBocDc0LWFycm93LWZ1bmN0aW9ucy0yLjAucG5nW10KKworPT0gTmV3IEhpbnRzCisKK1N1Z2dlc3Rpb24gZm9yIGNvbnZlcnRpbmcgYSBzaW1wbGUgY2xvc3VyZSB0byBhbiBhcnJvdyBmdW5jdGlvbgorCitpbWFnZTo6YmxvZ3MvZW50cnkvbmIxMTItcGhwNzQtY29udmVydC1jbG9zdXJlLXRvLWFycm93LWZ1bmN0aW9uLmdpZltdCisKK1N1Z2dlc3Rpb24gZm9yIHVzaW5nIGNvbWJpbmVkIGFzc2lnbm1lbnQgb3BlcmF0b3JzCisKK2ltYWdlOjpibG9ncy9lbnRyeS9uYjExMi1waHA3NC1zdWdnZXN0LXVzaW5nLWNvbWJpbmVkLWFzc2lnbm1lbnQtb3BlcmF0b3JzLmdpZltdCisKK09mIGNvdXJzZSwgY29kZSBjb21wbGV0aW9uLCBmb3JtYXR0aW5nLCBnbyB0byBkZWNsYXJhdGlvbiwgYW5kIG1hcmsgb2NjdXJyZW5jZSBmZWF0dXJlcyBmb3IgdGhlIGFib3ZlIHN5bnRheGVzIHNob3VsZCBhbHNvIGJlIGZpeGVkLgorCitUaGF0J3MgYWxsIGZvciB0b2RheS4gQXMgYWx3YXlzLCBwbGVhc2UgdGVzdCBpdC4gWW91IGNhbiBkb3dubG9hZCBhIGRldmVsb3BtZW50IHZlcnNpb24gZnJvbQorSmVua2lucyBCdWlsZC4KK0lmIHlvdSBmaW5kIHNvbWUgaXNzdWVzIG9yIGVuaGFuY2VtZW50cywgcGxlYXNlIHJlcG9ydCB0aGVtIHRvIEpJUkEgd2l0aCB5b3VyIGV4YWN0IHN0ZXBzIHRvIHJlcHJvZHVjZSB0aGVtLgorKENvbXBvbmVudHM6IHBocCAtIEVkaXRvcikuIFRoYW5rcy4KKworCmRpZmYgLS1naXQgYS9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L3JlbGVhc2VkLW5ldGJlYW5zLTExLTItdXBkYXRlLmFkb2MgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L3JlbGVhc2VkLW5ldGJlYW5zLTExLTItdXBkYXRlLmFkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMxNzk2NgotLS0gL2Rldi9udWxsCisrKyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvcmVsZWFzZWQtbmV0YmVhbnMtMTEtMi11cGRhdGUuYWRvYwpAQCAtMCwwICsxLDQxIEBACisvLyAKKy8vICAgICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisvLyAgICAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisvLyAgICAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKy8vICAgICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisvLyAgICAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorLy8gICAgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKy8vICAgICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLyAKKy8vICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gCisvLyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorLy8gICAgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisvLyAgICAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisvLyAgICAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisvLyAgICAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworLy8gICAgIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKworPSBSZWxlYXNlZDogTmV0QmVhbnMgMTEuMiBVcGRhdGUgMSAKKzphdXRob3I6IEdlZXJ0amFuIFdpZWxlbmdhCis6cmV2ZGF0ZTogMjAxOS0xMi0wMworOmpiYWtlLXR5cGU6IHBvc3QKKzpqYmFrZS10YWdzOiBibG9nZW50cnkKKzpqYmFrZS1zdGF0dXM6IHB1Ymxpc2hlZAorOmtleXdvcmRzOiBBcGFjaGUgTmV0QmVhbnMgMTggcmVsZWFzZQorOmRlc2NyaXB0aW9uOiBBcGFjaGUgTmV0QmVhbnMgMTggcmVsZWFzZQorOnRvYzogbGVmdAorOnRvYy10aXRsZToKKzpzeW50YXg6IHRydWUKKworCitUaGlzIHJlbGVhc2UgaXMgaWRlbnRpY2FsIHRvIDExLjIgZXhjZXB0IGZvciBiYWNrcG9ydGVkIGZpeGVzIGZvcjoKKworbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL05FVEJFQU5TLTMyNTdbTkVUQkVBTlMtMzI1N10gRml4ZWQgaXNzdWUgb24gcmVmYWN0b3JpbmcgcmVuYW1lIG9mIGphdmEgbWV0aG9kIChhbmQgcG90ZW50aWFsbHkgb3RoZXIgbmItamF2YWMgaXNzdWVzKQorCitsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvTkVUQkVBTlMtMzMzNVtORVRCRUFOUy0zMzM1XSBFbmhhbmNlIHJvYnVzdG5lc3Mgb2YgSFRNTCBMZXhlciAtIGVudGVyIGtleSBkb2Vzbid0IHdvcmsgaW4gY2VydGFpbiBmaWxlcworCitsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvTkVUQkVBTlMtMzI5MFtORVRCRUFOUy0zMjkwXSBGaXggY29tbW9uLnhtbCBjYXVzaW5nIGxheWVyIGJ1aWxkIHByb2JsZW1zIGluIFJDUCBhcHBsaWNhdGlvbnMKKworVXNlIHRoZSBQbHVnaW4gTWFuYWdlciB1bmRlciB0aGUgVG9vbHMgbWVudSB0byB1cGRhdGUgMTEuMiB0byAxMS4yIFVwZGF0ZSAxLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvc2ltcGxpZmllZC1hcGFjaGUtbmV0YmVhbnMtd2VsY29tZS1zY3JlZW4uYWRvYyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvc2ltcGxpZmllZC1hcGFjaGUtbmV0YmVhbnMtd2VsY29tZS1zY3JlZW4uYWRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmNiN2E0Ci0tLSAvZGV2L251bGwKKysrIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS9zaW1wbGlmaWVkLWFwYWNoZS1uZXRiZWFucy13ZWxjb21lLXNjcmVlbi5hZG9jCkBAIC0wLDAgKzEsNDUgQEAKKy8vIAorLy8gICAgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKy8vICAgICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKy8vICAgICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorLy8gICAgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKy8vICAgICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisvLyAgICAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorLy8gICAgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vIAorLy8gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLyAKKy8vICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisvLyAgICAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKy8vICAgICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKy8vICAgICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKy8vICAgICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisvLyAgICAgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworCis9IFNpbXBsaWZpZWQgQXBhY2hlIE5ldEJlYW5zIFdlbGNvbWUgU2NyZWVuCis6YXV0aG9yOiBHZWVydGphbiBXaWVsZW5nYSAKKzpyZXZkYXRlOiAyMDE5LTA4LTI0Cis6amJha2UtdHlwZTogcG9zdAorOmpiYWtlLXRhZ3M6IGJsb2dlbnRyeQorOmpiYWtlLXN0YXR1czogcHVibGlzaGVkCis6a2V5d29yZHM6IE5ldEJlYW5zIGF0IE9yYWNsZSBDb2RlIE9uZSAyMDE5Cis6ZGVzY3JpcHRpb246IE5ldEJlYW5zIGF0IE9yYWNsZSBDb2RlIE9uZSAyMDE5Cis6dG9jOiBsZWZ0Cis6dG9jLXRpdGxlOgorOnN5bnRheDogdHJ1ZQorOmltYWdlc2RpcjogaHR0cHM6Ly9uZXRiZWFucy5hcGFjaGUub3JnCisKKworVG8gc2ltcGxpZnkgdGhlIFdlbGNvbWUgU2NyZWVuIGFuZCwgaW4gcGFydGljdWxhciwgcmVwbGFjZSBhbGwgbGlua3MgdG8gbmV0YmVhbnMub3JnIHdpdGggbmV0YmVhbnMuYXBhY2hlLm9yZywgSSBoYXZlIGNyZWF0ZWQgdGhpcyBpc3N1ZSBhbmQgcHVsbCByZXF1ZXN0OgorCitsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvTkVUQkVBTlMtMzAyMFtodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL05FVEJFQU5TLTMwMjBdCisKK2xpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9uZXRiZWFucy9wdWxsLzE0NTdbaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9uZXRiZWFucy9wdWxsLzE0NTddCisKK0FsbCByZWZlcmVuY2VzIHRvIG5ldGJlYW5zLm9yZyBhcmUgcmVwbGFjZWQgd2l0aCBlcXVpdmFsZW50cyBhdCBuZXRiZWFucy5hcGFjaGUub3JnIGFuZCB0aGUgTmV3cyBjb2x1bW4sIHdoaWNoIHBvaW50ZWQgdG8gbmV0YmVhbnMub3JnLCBpcyByZW1vdmVkIGZyb20gdGhlIHRhYiBiZWxvdywgd2hpbGUgdGhlIEJsb2dzIGNvbHVtbiBpcyByZW5hbWVkIHRvIE5ld3MsIHNpbmNlIG5ld3N3b3J0aHkgaXRlbXMgbm93IGNvbWUgZnJvbSBoZXJlLCBpLmUuLCBmcm9tIHRoaXMgYmxvZzoKKworaW1hZ2U6OmJsb2dzL2VudHJ5L2FwYWNoZS1uZXRiZWFucy13ZWxjb21lLW5ldy5wbmdbd2lkdGg9NDAwLGhlaWdodD0yOTVdCisKKworQWxzbywgdGhlIEZlYXR1cmVkIERlbW8gb24gdGhlIGZpcnN0IHRhYiBpcyByZW1vdmVkLCBiZXN0IHRvIGhhdmUgYXMgZmV3IGxpbmtzIHRvIGV4dGVybmFsIHBsYWNlcyBhcyBwb3NzaWJsZSwgaS5lLiwgaGVscCByZWR1Y2UgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlLCBlc3BlY2lhbGx5IGhlcmUgd2hlcmUgaGF2aW5nIHRoYXQgZGVtbyBpbiB0aGUgcGFnZSBkb2Vzbid0IGFkZCBhbGwgdGhhdCBtdWNoIHdoaWxlIHJlbW92aW5nIGl0IHJlZHVjZXMgdGhlIG5lZWQgZm9yIGV4dGVybmFsIFVSTCBjYWxscyB0aGF0IGNvdWxkIGNhdXNlIHByb2JsZW1zIGFuZCBzbG93IHRoaW5ncyBkb3duLgpkaWZmIC0tZ2l0IGEvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS90b3dhcmRzLWZhaXItdHJhZGUtZm9yLWZvc3MuYWRvYyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvdG93YXJkcy1mYWlyLXRyYWRlLWZvci1mb3NzLmFkb2MKaW5kZXggOTllYzkyZS4uNzI3MTdkNSAxMDA2NDQKLS0tIGEvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS90b3dhcmRzLWZhaXItdHJhZGUtZm9yLWZvc3MuYWRvYworKysgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L3Rvd2FyZHMtZmFpci10cmFkZS1mb3ItZm9zcy5hZG9jCkBAIC0yOCw3ICsyOCw3IEBACiA6dG9jOiBsZWZ0CiA6dG9jLXRpdGxlOgogOnN5bnRheDogdHJ1ZQotCis6aW1hZ2VzZGlyOiBodHRwczovL25ldGJlYW5zLmFwYWNoZS5vcmcKIAogQXMgcGFydCBvZiBiZWluZyBpbnZvbHZlZCBpbiBBcGFjaGUsIEkgZ290IHRoZSBvcHBvcnR1bml0eSB5ZXN0ZXJkYXkgdG8gZ28gdG8gQnJ1c3NlbHMgCiB0byBhdHRlbmQgdGhlIEV1cm9wZWFuIENvbW1pc3Npb24ncyBsaW5rOmh0dHBzOi8vZWMuZXVyb3BhLmV1L2luZm8vbmV3cy9lYy1vcGVuLXNvdXJjZS13b3Jrc2hvcHMtY29tcHV0aW5nLWFuZC1zdXN0YWluYWJpbGl0eS0yLWRlY2VtYmVyLTIwMjItMjAyMi1vY3QtMjFfZW5bRUMgT3BlbiBTb3VyY2UgV29ya3Nob3BzIC0gQ29tcHV0aW5nIGFuZCBTdXN0YWluYWJpbGl0eV0uCkBAIC00Myw3ICs0Myw3IEBACiB3aXRoIGFsbCBpdHMgaW5zdGl0dXRpb25zLCBldGMsIGFuZCwgdGhvdWdoIEkgY2FuJ3Qgc2F5IEkgcmVhbGx5IGhhdmUgYSBmdWxsIGdyYXNwIG9uIGl0IGFsbCB5ZXQgCiAoSSBkb3VidCBhbnlvbmUgcmVhbGx5IGRvZXMpLCBpdCB3YXMgcXVpdGUgbW92aW5nIHRvIGJlIGF0IG9uZSBvZiB0aGUga2V5IHBpbGxhcnMgb2YgdGhhdCBpbnN0aXR1dGlvbiB5ZXN0ZXJkYXkuCiAKLWltYWdlOjp0b3dhcmRzLWZhaXItdHJhZGUtZm9yLWZvc3MtcGljMS5wbmdbXQoraW1hZ2U6OmJsb2dzL2VudHJ5L3Rvd2FyZHMtZmFpci10cmFkZS1mb3ItZm9zcy1waWMxLnBuZ1tdCiAKIFRvIGRlc2NyaWJlIGFsbCB0aGUgZGlzY3Vzc2lvbnMgdGhhdCB0b29rIHBsYWNlIHdvdWxkIGJlIGltcG9zc2libGUsIAogc2luY2UgSSBjb3VsZCBvbmx5IHBoeXNpY2FsbHkgYXR0ZW5kIGEgZmV3IG9mIHRoZW0gYmVjYXVzZSBtYW55IGhhcHBlbmVkIGluIHBhcmFsbGVsLCAKQEAgLTUyLDEzICs1MiwxMyBAQAogYXMgd2VsbCBhcyBtYW55IG90aGVyIG5ldyBwZW9wbGUsIHRoZXJlIHdlcmUganVzdCB0b28gbWFueSwgZnJvbSBhbGwgZGlmZmVyZW50IG9yZ2FuaXphdGlvbnMsIAogTkdPcywgbG9jYWwgYWRtaW5pc3RyYXRpb25zLCBnb3Zlcm5tZW50cywgZXRjLCBmcm9tIHdpdGhpbiB0aGUgRVUgYW5kIGJleW9uZC4KIAotaW1hZ2U6OnRvd2FyZHMtZmFpci10cmFkZS1mb3ItZm9zcy1waWMyLnBuZ1tdCitpbWFnZTo6YmxvZ3MvZW50cnkvdG93YXJkcy1mYWlyLXRyYWRlLWZvci1mb3NzLXBpYzIucG5nW10KIAogRWFjaCB3b3Jrc2hvcCBjb25zaXN0ZWQgb2YgYSBwYW5lbCB0aGF0IGtpY2tlZCBvZmYgZGlzY3Vzc2lvbnMsIAogd2l0aCBwYXJ0aWNpcGFudHMgaW4gdGhlIHJvb20gYmVpbmcgYWJsZSB0byBwYXJ0aWNpcGF0ZSwgZW5kaW5nIHdpdGggdm90aW5nIAogb24gdGhlIG1vc3QgaW1wb3J0YW50IHRvcGljcyB0byBjYXJyeSBmb3J3YXJkIGFuZCByZWNvbW1lbmQgdG8gdGhlIEV1cm9wZWFuIENvbW1pc3Npb24uCiAKLWltYWdlOjp0b3dhcmRzLWZhaXItdHJhZGUtZm9yLWZvc3MtcGljMy5wbmdbXQoraW1hZ2U6OmJsb2dzL2VudHJ5L3Rvd2FyZHMtZmFpci10cmFkZS1mb3ItZm9zcy1waWMzLnBuZ1tdCiAKID09IFRoZW1lcwogCmRpZmYgLS1naXQgYS9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L3doYXQtdG8tZG8td2l0aC1qYXZhZnguYWRvYyBiL25ldGJlYW5zLmFwYWNoZS5vcmcvc3JjL2NvbnRlbnQvYmxvZ3MvZW50cnkvd2hhdC10by1kby13aXRoLWphdmFmeC5hZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MjE3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L3doYXQtdG8tZG8td2l0aC1qYXZhZnguYWRvYwpAQCAtMCwwICsxLDkwIEBACisvLyAKKy8vICAgICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisvLyAgICAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisvLyAgICAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKy8vICAgICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisvLyAgICAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorLy8gICAgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKy8vICAgICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLyAKKy8vICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8gCisvLyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorLy8gICAgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisvLyAgICAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisvLyAgICAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisvLyAgICAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworLy8gICAgIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKworPSBXaGF0IHRvIGRvIHdpdGggSmF2YUZYIGFuZCBPcGVuSkZYIGluIEFwYWNoZSBOZXRCZWFucz8KKzphdXRob3I6IEdlZXJ0amFuIFdpZWxlbmdhIAorOnJldmRhdGU6IDIwMTktMDgtMjUKKzpqYmFrZS10eXBlOiBwb3N0Cis6amJha2UtdGFnczogYmxvZ2VudHJ5Cis6amJha2Utc3RhdHVzOiBwdWJsaXNoZWQKKzprZXl3b3JkczogTmV0QmVhbnMgYXQgT3JhY2xlIENvZGUgT25lIDIwMTkKKzpkZXNjcmlwdGlvbjogTmV0QmVhbnMgYXQgT3JhY2xlIENvZGUgT25lIDIwMTkKKzp0b2M6IGxlZnQKKzp0b2MtdGl0bGU6Cis6c3ludGF4OiB0cnVlCisKK0lmIEFwYWNoZSBOZXRCZWFucyBydW5zIG9uIEpESyA4LCBhIHJhbmdlIG9mIEFudC1iYXNlZCBKYXZhRlggc2FtcGxlIGFwcGxpY2F0aW9ucyBhcmUgYXZhaWxhYmxlIGluIE5ldEJlYW5zIHRvIGhlbHAgeW91IGdldCBzdGFydGVkIGFuZCBsZWFybiBhYm91dCBKYXZhRlguIAorSG93ZXZlciwgaWYgTmV0QmVhbnMgZG9lcyBub3QgcnVuIG9uIEpESyA4LCB0aGUgYXZhaWxhYmxlIEFudC1iYXNlZCBKYXZhRlggc2FtcGxlcyBkb24ndCB3b3JrIChjYW4ndCBiZSBjcmVhdGVkKSBidXQgdGhlcmUncyBubyBwb2ludCAKK2luIHdvcmtpbmcgb24gZml4aW5nIHRoYXQgc2luY2UgZnJvbSBKREsgMTEgb253YXJkcyBKYXZhRlggaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIEpESyBhbmQgTWF2ZW4vR3JhZGxlLWJhc2VkIGxpbms6aHR0cHM6Ly9vcGVuamZ4LmlvL1tPcGVuSkZYIHNhbXBsZXNdIGFyZSBvYnZpb3VzIAorY2FuZGlkYXRlcyBmb3IgaW50ZWdyYXRpb24gaW50byBOZXRCZWFucyBpbnN0ZWFkLgorCitIb3dldmVyLCBob3cgc2hvdWxkIHRoYXQgYmUgaGFuZGxlZCBpbiBOZXRCZWFucz8gQmVmb3JlIEFwYWNoZSBOZXRCZWFucyAxMS4xLCAKK3RoZXJlIHdhcyBubyBpbnRlZ3JhdGlvbiB3aXRoIE9wZW5KRlguIE9ubHkgSmF2YUZYIHByb2plY3RzIGFuZCBzYW1wbGVzIHdlcmUgYnVpbHQgaW50byBOZXRCZWFucywgCit3aGljaCBsZWQgdG8gYSBncmVhdCBkZWFsIG9mIGNvbmZ1c2lvbiBzaW5jZSB3aGVuIHNvbWVvbmUgc2V0cyB1cCBhbiBlbnZpcm9ubWVudCBmcm9tIHNjcmF0Y2ggdG9kYXksIAordGhleSdyZSB1bmxpa2VseSB0byBoYXZlIGluc3RhbGxlZCBKREsgOC4gTXVjaCBtb3JlIGxpa2VseSwgdGhleSdsbCBoYXZlIEpESyAxMSBvciAxMiBhbmQgdGhlbiB0aG9zZSBKYXZhRlggcHJvamVjdHMKKyBhbmQgc2FtcGxlcyBpbiBOZXRCZWFucyBjYW5ub3QgYmUgdXNlZCwgaS5lLiwgd2hlbiB5b3UgdHJ5IHRvIGNyZWF0ZSB0aG9zZSBzYW1wbGVzLCB3aGlsZSBydW5uaW5nIE5ldEJlYW5zIG9uIGFueXRoaW5nIG90aGVyIHRoYW4gSkRLIDgsIAoreW91J3JlIHNpbXBseSB0b2xkIGluIHRoZSB3aXphcmQgdGhhdCB5b3UgaGF2ZSB0aGUgd3JvbmcgSkRLLiBBbmQgdGhlbiB5b3Ugc29tZWhvdyBuZWVkIHRvIGZpbmQgb3V0IHRoYXQgdGhlIGJlc3QgdGhpbmcgdG8gZG8gbmV4dCBpcyB1c2UgCit0aGUgbGluazpodHRwczovL29wZW5qZnguaW8vb3BlbmpmeC1kb2NzL1tPcGVuSkZYIGRvY3VtZW50YXRpb25dIHRvIHNldCB1cCB0aGUgT3BlbkpGWCBzYW1wbGVzIGluIE5ldEJlYW5zLgorCitUaGF0IGlzIHN1Ym9wdGltYWwgYW5kIHNvIEdsdW9uIGludGVncmF0ZWQgdGhlaXIgdHdvIHNhbXBsZSBhcHBsaWNhdGlvbnMgaW50byBBcGFjaGUgTmV0QmVhbnMgMTEuMSwgaS5lLiwgaW4gdGhlIG1vc3QgcmVjZW50IHJlbGVhc2U6CisKK2xpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9uZXRiZWFucy90cmVlL21hc3Rlci9qYXZhZngvb3BlbmpmeC5zYW1wbGVzW2h0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvbmV0YmVhbnMvdHJlZS9tYXN0ZXIvamF2YWZ4L29wZW5qZnguc2FtcGxlc10KKworVGhhdCBpcyBhIHN0ZXAgZm9yd2FyZCBidXQgc3RpbGwgc3Vib3B0aW1hbCwgYXMgZXhwbGFpbmVkIGhlcmUgYnkgSmFyb3NsYXYgVHVsYWNoOgorCitsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvbmV0YmVhbnMvcHVsbC8xMjQxI2lzc3VlY29tbWVudC00OTEzNTcwMTZbaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9uZXRiZWFucy9wdWxsLzEyNDEjaXNzdWVjb21tZW50LTQ5MTM1NzAxNl0KKworVGhhdCBlbnRpcmUgbmV3IG1vZHVsZSBpcyBub3QgbmVlZGVkLiBMaXRlcmFsbHksIGFsbCB0aGF0IG5lZWRzIHRvIGJlIGRvbmUgaXMgdGhhdCB0aGlzIGZpbGUgbmVlZHMgdG8gYmUgdXBkYXRlZCB3aXRoIHR3byBuZXcgdGVtcGxhdGUgcmVnaXN0cmF0aW9uczoKKworbGluazpodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL25ldGJlYW5zL2Jsb2IvbWFzdGVyL2phdmEvbWF2ZW4vc3JjL29yZy9uZXRiZWFucy9tb2R1bGVzL21hdmVuL25ld3Byb2plY3QvTWF2ZW5XaXphcmRJdGVyYXRvci5qYXZhW2h0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvbmV0YmVhbnMvYmxvYi9tYXN0ZXIvamF2YS9tYXZlbi9zcmMvb3JnL25ldGJlYW5zL21vZHVsZXMvbWF2ZW4vbmV3cHJvamVjdC9NYXZlbldpemFyZEl0ZXJhdG9yLmphdmFdCisKK0FuZCwgbGl0ZXJhbGx5LCB0aGlzIGlzIGFsbCB0aGF0IG5lZWRzIHRvIGJlIGFkZGVkIHRoZXJlLCBzaW5jZSB0aGUgdHdvIE9wZW5KRlggc2FtcGxlcyBhcmUgb24gTWF2ZW4gQ2VudHJhbCBhbmQgYXMgcG9pbnRlZCBvdXQgYWJvdmUsICJOZXRCZWFucyBoYXMgYSBuaWNlIHN1cHBvcnQgZm9yIGNyZWF0aW5nIHdpemFyZHMgb3ZlciBNYXZlbiBhcmNoZXR5cGVzLiIKKworW3NvdXJjZSxqYXZhXQorLS0tLQorQFRlbXBsYXRlUmVnaXN0cmF0aW9uKGZvbGRlciA9IEFyY2hldHlwZVdpemFyZHMuVEVNUExBVEVfRk9MREVSLCAKK3Bvc2l0aW9uID0gOTI1LCAKK2Rpc3BsYXlOYW1lID0gIiNMQkxfTWF2ZW5fRlhNTF9BcmNoZXR5cGUiLCAKK2ljb25CYXNlID0gIm9yZy9uZXRiZWFucy9tb2R1bGVzL21hdmVuL3Jlc291cmNlcy9qYXJpY29uLnBuZyIsIAorZGVzY3JpcHRpb24gPSAiamF2YWZ4Lmh0bWwiKQorQE1lc3NhZ2VzKCJMQkxfTWF2ZW5fRlhNTF9BcmNoZXR5cGU9RlhNTCBKYXZhRlggTWF2ZW4gQXJjaGV0eXBlIikKK3B1YmxpYyBzdGF0aWMgV2l6YXJkRGVzY3JpcHRvci5JbnN0YW50aWF0aW5nSXRlcmF0b3I8Pz4gb3BlbkpGWEZNTCgpIHsKKyAgICByZXR1cm4gQXJjaGV0eXBlV2l6YXJkcy5kZWZpbmVkQXJjaGV0eXBlKCJvcmcub3BlbmpmeCIsICJqYXZhZngtYXJjaGV0eXBlLWZ4bWwiLCAiMC4wLjIiLCBudWxsLCBMQkxfTWF2ZW5fRlhNTF9BcmNoZXR5cGUoKSk7Cit9CisKK0BUZW1wbGF0ZVJlZ2lzdHJhdGlvbihmb2xkZXIgPSBBcmNoZXR5cGVXaXphcmRzLlRFTVBMQVRFX0ZPTERFUiwgCitwb3NpdGlvbiA9IDkyNiwgCitkaXNwbGF5TmFtZSA9ICIjTEJMX01hdmVuX1NpbXBsZV9BcmNoZXR5cGUiLCAKK2ljb25CYXNlID0gIm9yZy9uZXRiZWFucy9tb2R1bGVzL21hdmVuL3Jlc291cmNlcy9qYXJpY29uLnBuZyIsIAorZGVzY3JpcHRpb24gPSAiamF2YWZ4Lmh0bWwiKQorQE1lc3NhZ2VzKCJMQkxfTWF2ZW5fU2ltcGxlX0FyY2hldHlwZT1TaW1wbGUgSmF2YUZYIE1hdmVuIEFyY2hldHlwZSIpCitwdWJsaWMgc3RhdGljIFdpemFyZERlc2NyaXB0b3IuSW5zdGFudGlhdGluZ0l0ZXJhdG9yPD8+IG9wZW5KRlhTaW1wbGUoKSB7CisgICAgcmV0dXJuIEFyY2hldHlwZVdpemFyZHMuZGVmaW5lZEFyY2hldHlwZSgib3JnLm9wZW5qZngiLCAiamF2YWZ4LWFyY2hldHlwZS1zaW1wbGUiLCAiMC4wLjIiLCBudWxsLCBMQkxfTWF2ZW5fU2ltcGxlX0FyY2hldHlwZSgpKTsKK30KKy0tLS0KKworCitUaGF0IGxpdGVyYWxseSBpcyBhbGwgdGhhdCBpcyBuZWVkZWQgdG8gYmUgYWRkZWQgdG8gdGhlIEphdmEgc291cmNlIGZpbGUgYWJvdmUsIGluc3RlYWQgb2YgaGF2aW5nIGEgY29tcGxldGVseSBuZXcgbW9kdWxlLCAKK3doaWNoIGRvZXNuJ3QgaW50ZWdyYXRlIGFzIG5lYXRseSBhcyB0aGUgYWJvdmUgd2l0aCB0aGUgQXBhY2hlIE5ldEJlYW5zIGluZnJhc3RydWN0dXJlLiAKKyhBbmQgdGhpcyBpcyBhIHNtYWxsIHRpcCBmb3IgYW55b25lIGVsc2Ugd2FudGluZyB0byBtYWtlIHRoZWlyIE1hdmVuIGFyY2hldHlwZXMgYXZhaWxhYmxlIHRvIE5ldEJlYW5zOiB0aGUgYWJvdmUgaXMgbGl0ZXJhbGx5IGFsbCB5b3UgbmVlZCB0byBkby4pCisKK0hvd2V2ZXIsIHRoZSBmdW5kYW1lbnRhbCBxdWVzdGlvbiByZW1haW5zOiBob3cgZG8gd2Ugbm90aWZ5IHVzZXJzIG9mIEFwYWNoZSBOZXRCZWFucyB0aGF0IHRoZXkgc2hvdWxkIGJlIHVzaW5nIE9wZW5KRlggYW5kIG5vdCBKYXZhRlg/IAorTWF5YmUgd2Ugc2hvdWxkIHNpbXBseSByZW1vdmUgYWxsIEphdmFGWCBwcm9qZWN0cyBhbmQgc2FtcGxlcywgaG93ZXZlciB0aGF0IHdvdWxkIGJlIHVuZm9ydHVuYXRlIGZvciBhbnlvbmUgdXNpbmcgSkRLIDguIAorT3IgbWF5YmUgdGhlIHNvbHV0aW9uIGlzIHRvIGNyZWF0ZSBhIGNhdGVnb3J5IG5hbWVkICJMZWdhY3kiIGluIHRoZSBOZXcgUHJvamVjdCBkaWFsb2cgYW5kIHRoZW4gcHV0IGFsbCBKYXZhRlggcHJvamVjdHMgYW5kIHNhbXBsZXMgdGhlcmUsIAorc28gdGhhdCBpdCdzIGNsZWFyIHRoYXQgdGhleSdyZSBub3QgcmVjb21tZW5kZWQsIHdoaWxlIHN0aWxsIGhhdmluZyB0aGVtIGF2YWlsYWJsZSBmb3IgSkRLIDggdXNlcnM/ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS93aHktZG9lcy1hcGFjaGUtbmV0YmVhbnMtbmVlZC5hZG9jIGIvbmV0YmVhbnMuYXBhY2hlLm9yZy9zcmMvY29udGVudC9ibG9ncy9lbnRyeS93aHktZG9lcy1hcGFjaGUtbmV0YmVhbnMtbmVlZC5hZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZmRiMzYKLS0tIC9kZXYvbnVsbAorKysgYi9uZXRiZWFucy5hcGFjaGUub3JnL3NyYy9jb250ZW50L2Jsb2dzL2VudHJ5L3doeS1kb2VzLWFwYWNoZS1uZXRiZWFucy1uZWVkLmFkb2MKQEAgLTAsMCArMSw0NiBAQAorLy8gCisvLyAgICAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorLy8gICAgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorLy8gICAgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisvLyAgICAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorLy8gICAgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKy8vICAgICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisvLyAgICAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8gCisvLyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vIAorLy8gICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKy8vICAgICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorLy8gICAgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorLy8gICAgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorLy8gICAgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKy8vICAgICB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisKKz0gV2h5IERvZXMgQXBhY2hlIE5ldEJlYW5zIE5lZWQgSXRzIE93biBQYXJzZXJzPworOmF1dGhvcjogR2VlcnRqYW4gV2llbGVuZ2EgCis6cmV2ZGF0ZTogMjAxOS0wOC0wNgorOmpiYWtlLXR5cGU6IHBvc3QKKzpqYmFrZS10YWdzOiBibG9nZW50cnkKKzpqYmFrZS1zdGF0dXM6IHB1Ymxpc2hlZAorOmtleXdvcmRzOiBOZXRCZWFucyBhdCBPcmFjbGUgQ29kZSBPbmUgMjAxOQorOmRlc2NyaXB0aW9uOiBOZXRCZWFucyBhdCBPcmFjbGUgQ29kZSBPbmUgMjAxOQorOnRvYzogbGVmdAorOnRvYy10aXRsZToKKzpzeW50YXg6IHRydWUKKworCitBIHF1ZXN0aW9uIHdhcyBhc2tlZCBvbiB0aGUgbGluazpodHRwczovL2xpc3RzLmFwYWNoZS5vcmcvdGhyZWFkL3JkdGN2Yzg3cGoxZDhvajZxY3dibTdiamtrcjUzbTVzW0FwYWNoZSBOZXRCZWFucyBtYWlsaW5nIGxpc3RdOiAiSSB3YXMganVzdCBjdXJpb3VzIGFib3V0IHRoZSB0aGVvcmV0aWNhbCBhc3BlY3Qgb2YgcGFyc2luZy4gSXNuJ3QgdGhlcmUgYSB1bmlmaWVkIHBhcnNpbmcgQVBJLCB1c2luZyBBTlRMUi9sZXgveWFjYyB3aGljaCBjYW4gcGFyc2UgYW55IGxhbmd1YWdlIGdpdmVuIGEgZ3JhbW1hciBmb3IgaXQ/IFdoeSBkbyB3ZSB1c2UgYSBkaWZmZXJlbnQgcGFyc2luZyBpbXBsZW1lbnRhdGlvbiAobGlrZSB0aGUgR3JhYWwgSlMgcGFyc2VyIGluIHRoaXMgaW5zdGFuY2UpIHdoZW4gYSB1bmlmaWVkIGFwcHJvYWNoIHdpbGwgaGVscCB1cyBzdXBwb3J0IGxvdHMgb2YgbGFuZ3VhZ2VzIGVhc2lseT8iCisKK1RpbSBCb3VkcmVhdSwgaW52b2x2ZWQgaW4gTmV0QmVhbnMgZnJvbSBpdHMgZWFybGllc3QgaG91cnMsIHJlc3BvbmRzLCBpbiB0aGUgdGhyZWFkIGxpbmtlZCBhYm92ZToKKworW3F1b3RlLFRpbV0KK19fX18KK0ZpcnN0LCBpbiBhbiBJREUsIHlvdSBhcmUgKm5ldmVyKiBqdXN0ICJwYXJzaW5nIi4gWW91IGFyZSBkb2luZyAqYSBsb3QqIHdpdGggdGhlIHJlc3VsdHMgb2YgdGhlIHBhcnNlLiBBbiBJREUgZG9lc24ndCBoYXZlIHRvIGp1c3QgcGFyc2Ugb25lIGZpbGU7IGl0IG11c3QgYWxzbyB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9qZWN0IHRoYXQgZmlsZSBsaXZlcyBpbjsgaG93IGl0IHJlbGF0ZXMgdG8gb3RoZXIgZmlsZXMgYW5kIHRob3NlIGZpbGVzIGludGVyZGVwZW5kZW5jaWVzOyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBsYW5ndWFnZXM7IGFuZCB0aGUgZmFjdCB0aGF0IHRoZSByZXN1bHRzIG9mIGEgcGFyc2UgZG8gbm90IG1hcCBjbGVhbmx5IHRvIGEgYnVuY2ggb2Ygc3R1ZmYgYW4gSURFIHdvdWxkIHNob3cgeW91IHRoYXQgd291bGQgYmUgdXNlZnVsLiBGb3IgZXhhbXBsZSwgc2F5IHRoZSBjYXJldCBpcyBpbiBhIGphdmEgbWV0aG9kLCBhbmQgeW91IHdhbnQgdG8gZmluZCBhbGwgb3RoZXIgbWV0aG9kcyB0aGF0IGNhbGwgdGhlIG9uZSB5b3UncmUgaW4gYW5kIHNob3cgdGhlIHVzZXIgYSBsaXN0IG9mIHRoZW0uIFRoZSBhbW91bnQgb2Ygd29yayB0aGF0IGhhcyB0byBoYXBwZW4gdG8gYW5zd2VyIHRoYXQgcXVlc3Rpb24gaXMgdmVyeSwgdmVyeSBsYXJnZS4gVG8gZG8gdGhhdCBxdWlja2x5IGVub3VnaCB0byBiZSB1c2VmdWwsIHlvdSBuZWVkIHRvIGRvIGl0IGFoZWFkIG9mIHRpbWUgYW5kIGhhdmUgYSBidW5jaCBvZiBpbmRleGluZyBhbmQgY2FjaGluZyBzb2Z0d2FyZSBiZWhpbmQgdGhlIHNjZW5lcyAoYWxsIG9mIHdoaWNoIG11c3QgYmUgYWRhcHRlZCB0byB3aGF0ZXZlciB0aGUgcGFyc2VyIHByb3ZpZGVzKSBzbyB5b3UgY2FuIGxvb2sgaXQgdXAgd2hlbiB5b3UgbmVlZCBpdC4gSW4gc2hvcnQsIGEgcGFyc2VyIGlzIGtpbmQgb2YgbGlrZSBhIHRvaWxldCBzZWF0IGJ5IGl0c2VsZi4gWW91IGRvbid0IHdhbnQgdG8gdXNlIGl0IHdpdGhvdXQgYSB3aG9sZSBsb3Qgb2YgcGx1bWJpbmcgYXR0YWNoZWQgdG8gaXQuCisKK1NlY29uZCwgd2hpbGUgdGhlcmUgYXJlIHRvb2xzIGxpa2UgQU5UTFIgKHZlcnNpb24gNCBvZiB3aGljaCBpcyBhd2Vzb21lLCBieSB0aGUgd2F5KSwgdGhlcmUgaXMgc3RpbGwgYSBsb3Qgb2YgY29kZSB5b3UgaGF2ZSB0byB3cml0ZSB0byBpbnRlcmFjdCB3aXRoIHRoZSByZXN1bHRzIG9mIGEgcGFyc2UgdG8gZG8gc29tZXRoaW5nIHVzZWZ1bCBiZXlvbmQgc3ludGF4IGNvbG9yaW5nIGluIGFuIElERS4gT25lIG9mIG15IHNpZGUgcHJvamVjdHMgaXMgdG9vbGluZyBmb3IgTmV0QmVhbnMgdGhhdCAqZG8qIGxldCB5b3UgdGFrZSBhbiBBTlRMUiBncmFtbWFyIGFuZCBhdXRvIGdlbmVyYXRlIGEgbG90IG9mIHRoZSBmZWF0dXJlcyBhIGxhbmd1YWdlIHBsdWdpbiBzaG91bGQgaGF2ZS4gRXZlbiB3aXRoIHRoYXQgYWxtb3N0IGNvbXBsZXRlbHkgZGVjbGFyYXRpdmUsIHlvdSB3aW5kIHVwIG5lZWRpbmcgYSBsb3Qgb2YgY29kZS4gT25lIG9mIHRoZSBsYW5ndWFnZXMgSSdtIHRlc3RpbmcgaXQgd2l0aCBpcyBhIHNpbXBsZSBsYW5ndWFnZSBjYWxsZWQgWUFTTCB3aGljaCBsZXRzIHlvdSBkZWZpbmUgamF2YXNjcmlwdC1saWtlIHNjaGVtYXMgd2l0aCB2YWxpZGF0aW9uIGNvbnN0cmFpbnRzIChlLmcuLCB0aGlzIGZpZWxkIGlzIGEgc3RyaW5nLCBidXQgaXQgbXVzdCBiZSBhdCBsZWFzdCA3IGNoYXJhY3RlcnMgYW5kIG1hdGNoIHRoaXMgcGF0dGVybjsgdGhpcyBpcyBhbiBpbnRlZ2VyIG51bWJlciBidXQgaXQgbXVzdCBiZSA+IDEgYW5kIGxlc3MgdGhhbiAxMDAwIC0gdGhhdCBzb3J0IG9mIHRoaW5nKS4gQWxsIHRoZSBwYXJzaW5nIGdvb2RuZXNzIGluIHRoZSB3b3JsZCB3b24ndCB3cml0ZSBoaW50cyB0aGF0IG5vdGljZSB0aGF0LCBzYXksIHRoZSBtYXhpbXVtIGlzIGxlc3MgdGhhbiB0aGUgbWluaW11bSBpbiBhbiBpbnRlZ2VyIGNvbnN0cmFpbnQgYW5kIG9mZmVyIHRvIHN3YXAgdGhlbS4gU29tZW9uZSBoYXMgdG8gd3JpdGUgdGhhdCBieSBoYW5kLgorCitUaGlyZCwgaW4gYW4gSURFIHdpdGggYSAyMCB5ZWFyIGhpc3RvcnksIGEgbG90IG9mIHBhcnNlciBnZW5lcmF0aW5nIHRlY2hub2xvZ2llcyBoYXZlIGNvbWUgYW5kIGdvbmUgLSBqYXZhY2MsIGphdmFjdXAsIEFOVExSLCBhbmQgZ29vZCBvbGQgaGFuZC13cml0dGVuIGxleGVycyBhbmQgcGFyc2Vycy4gVW5pZnlpbmcgdGhlbSBhbGwgd291bGQgYmUgYW4gZW5vcm1vdXMgYW1vdW50IG9mIHdvcmssIHdvdWxkIGJyZWFrIGEgbG90IG9mIGNvZGUgdGhhdCB3b3JrcyBqdXN0IGZpbmUsIGFuZCB0aGUgZW5kIHJlc3VsdCB3b3VsZCBiZSAtIHN0dWZmIHdlJ3ZlIGFscmVhZHkgZ290LCB0aGF0IGFscmVhZHkgd29ya3MsIGp1c3Qgd2l0aCBvbmUtcGFyc2VyLWdlbmVyYXRvci10by1ydWxlLXRoZW0tYWxsIHVuZGVybmVhdGguIE90aGVyIHRoYW4gcHJldHRpbmVzcywgSSBkb24ndCBrbm93IHdoYXQgcHJvYmxlbSB0aGF0IHNvbHZlcy4KKworU28sIGFsbCBvZiB0aGlzIGlzIHRvIHNheTogV2UgdXNlIGRpZmZlcmVudCBwYXJzaW5nIGltcGxlbWVudGF0aW9ucyBiZWNhdXNlIHBhcnNpbmcgaXMganVzdCBhIHRpbnkgcGllY2Ugb2Ygc3VwcG9ydGluZyBhIGxhbmd1YWdlLCBzbyBpdCB3b3VsZG4ndCBtYWtlIHRoZSBoYXJkIHBhcnRzIGVhc2llciBlbm91Z2ggdG8gYmUgd29ydGggaXQuIEFuZCB0aGVyZSB3aWxsIGJlIG5ldyBjb29sIHBhcnNlci1nZW5lcmF0aW5nIHRlY2hub2xvZ2llcyB0aGF0IGNvbWUgYWxvbmcsIGFuZCBpdCdzIGdvb2QgdG8gYmUgYWJsZSB0byB1c2UgdGhlbSwgcmF0aGVyIHRoYW4gYmUgbWFycmllZCB0byBvbmUtcGFyc2VyLWdlbmVyYXRvci10by1ydWxlLXRoZW0tYWxsIGFuZCBoYXZlIHRoaXMgY29udmVyc2F0aW9uIGFnYWluLCB3aGVuIHRoZXkgY29tZSBhbG9uZy4KK19fX18KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==