Return-Path: X-Original-To: apmail-tomcat-users-archive@www.apache.org Delivered-To: apmail-tomcat-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6884E10E11 for ; Tue, 11 Jun 2013 10:18:30 +0000 (UTC) Received: (qmail 8006 invoked by uid 500); 11 Jun 2013 10:18:26 -0000 Delivered-To: apmail-tomcat-users-archive@tomcat.apache.org Received: (qmail 7967 invoked by uid 500); 11 Jun 2013 10:18:25 -0000 Mailing-List: contact users-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Users List" Delivered-To: mailing list users@tomcat.apache.org Received: (qmail 7954 invoked by uid 99); 11 Jun 2013 10:18:25 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Jun 2013 10:18:25 +0000 X-ASF-Spam-Status: No, hits=-5.0 required=5.0 tests=RCVD_IN_DNSWL_HI,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of anigoyal@cisco.com designates 173.37.86.76 as permitted sender) Received: from [173.37.86.76] (HELO rcdn-iport-5.cisco.com) (173.37.86.76) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Jun 2013 10:18:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=12802; q=dns/txt; s=iport; t=1370945900; x=1372155500; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=xV2BSmadU8QbcQRxJCzcEtFZnd1utQOcQxTEsSNT508=; b=IhTFfe33O6hJEjdQCEpma4iBx7/10BfgatsEMfq0bZeguVWvrygXYLbn Q3V0V3BIirNUpldl+0a4pJUmz8lB5DN0LizrK5WAylkaVj6QtYflpNmYf DAgrwJdsWjcSDyHSMzYOoyDn1GP36F1Z03fywhkiY8CXvoC6VG+9wCyDZ 0=; X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Al8FAMT4tlGtJV2d/2dsb2JhbABZgmghMEmCdKkjkjENbxZ0giMBAQEDASMRGh4SBwQCAQgRAwEBAQECAgYdAwICAi8BFAEICAEBBAgHBAEHFQSHWgMJBgGoCJIHgSaLNIEbEIEBBhAiAgICgkYzYQOVWoMPinWFJIMPboEDNg X-IronPort-AV: E=Sophos;i="4.87,844,1363132800"; d="scan'208";a="221317438" Received: from rcdn-core-6.cisco.com ([173.37.93.157]) by rcdn-iport-5.cisco.com with ESMTP; 11 Jun 2013 10:17:42 +0000 Received: from xhc-aln-x14.cisco.com (xhc-aln-x14.cisco.com [173.36.12.88]) by rcdn-core-6.cisco.com (8.14.5/8.14.5) with ESMTP id r5BAHgEW028457 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL) for ; Tue, 11 Jun 2013 10:17:42 GMT Received: from xmb-aln-x13.cisco.com ([fe80::5404:b599:9f57:834b]) by xhc-aln-x14.cisco.com ([173.36.12.88]) with mapi id 14.02.0318.004; Tue, 11 Jun 2013 05:17:41 -0500 From: "Anil Goyal -X (anigoyal - Aricent Technologies at Cisco)" To: Tomcat Users List Subject: RE: Customizing SSL in HttpClient Thread-Topic: Customizing SSL in HttpClient Thread-Index: Ac5l1/lw8Wwi2G8DQw+lYNfcOLUGawAN5+wAABVdKWAAAdzE0AASaCGAAApXniA= Date: Tue, 11 Jun 2013 10:17:32 +0000 Message-ID: <5032F5DAD1369F48BD8A3348125CBB98128794DB@xmb-aln-x13.cisco.com> References: <5032F5DAD1369F48BD8A3348125CBB9812878060@xmb-aln-x13.cisco.com>,<51B5E0BA.7000905@christopherschultz.net>,<5032F5DAD1369F48BD8A3348125CBB9812879361@xmb-aln-x13.cisco.com>,<5032F5DAD1369F48BD8A3348125CBB981287939C@xmb-aln-x13.cisco.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.78.173.29] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org SGksDQoNCk5ldHN0YXQgLWFuIHwgZ3JlcCA0NDMgZ2l2ZXMgYmVsb3cgb3V0cHV0DQoNCnRjcCAg ICAgICAgMCAgICAgIDAgOjo6ODQ0MyAgICAgICAgICAgICAgICAgICAgIDo6OiogICAgICAgICAg ICAgICAgICAgICAgICBMSVNURU4NCnRjcCAgICAgICAgMCAgICAgIDAgOjo6NDQzICAgICAgICAg ICAgICAgICAgICAgIDo6OiogICAgICAgICAgICAgICAgICAgICAgICBMSVNURU4NCnVuaXggIDIg ICAgICBbIF0gICAgICAgICBER1JBTSAgICAgICAgICAgICAgICAgICAgNjYyNDQzDQoNCi0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBNYXJ0aW4gR2FpbnR5IFttYWlsdG86bWdhaW50 eUBob3RtYWlsLmNvbV0gDQpTZW50OiBUdWVzZGF5LCBKdW5lIDExLCAyMDEzIDM6NDMgUE0NClRv OiBUb21jYXQgVXNlcnMgTGlzdA0KU3ViamVjdDogUkU6IEN1c3RvbWl6aW5nIFNTTCBpbiBIdHRw Q2xpZW50DQoNCkFuaWwNCiANCmlmIHlvdSB3YW50IEpTU0UgSGFuZHNoYWtpbmcgdG8gYmUgZW5h YmxlZCBvbiBzZXJ2ZXIgZW5hYmxlIEFwckxpZmVjeWNsZSBMaXN0ZW5lciBvbiBzZXJ2ZXIueG1s IGUuZy4NCiAgPExpc3RlbmVyIGNsYXNzTmFtZT0ib3JnLmFwYWNoZS5jYXRhbGluYS5jb3JlLkFw ckxpZmVjeWNsZUxpc3RlbmVyIiBTU0xFbmdpbmU9Im9uIiAvPg0KDQpBbnkgV2ViU2VydmVyIChp bmNsdWRpbmcgVG9tY2F0KSBoYXMgbm8ga25vd2xlZGdlIG9mIGV4dGVybmFsIEhUTUwgU2VydmVy cyBhcm91bmQgaXQgeW91IHNob3VsZCB1c2UgbmV0c3RhdA0KPm5ldHN0YXQgLWFiIHwgZ3JlcCA0 NDMNCg0KVGVsbCB1cyB3aGF0IHlvdSBzZWUNCk1hcnRpbg0KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXw0KVmVyemljaHQgdW5kIFZlcnRyYXVsaWNoa2VpdGFu bWVya3VuZy9Ob3RlIGRlIGTDqW5pIGV0IGRlIGNvbmZpZGVudGlhbGl0w6kNCg0KRGllc2UgTmFj aHJpY2h0IGlzdCB2ZXJ0cmF1bGljaC4gU29sbHRlbiBTaWUgbmljaHQgZGVyIHZvcmdlc2VoZW5l IEVtcGZhZW5nZXIgc2Vpbiwgc28gYml0dGVuIHdpciBob2VmbGljaCB1bSBlaW5lIE1pdHRlaWx1 bmcuIEplZGUgdW5iZWZ1Z3RlIFdlaXRlcmxlaXR1bmcgb2RlciBGZXJ0aWd1bmcgZWluZXIgS29w aWUgaXN0IHVuenVsYWVzc2lnLiBEaWVzZSBOYWNocmljaHQgZGllbnQgbGVkaWdsaWNoIGRlbSBB dXN0YXVzY2ggdm9uIEluZm9ybWF0aW9uZW4gdW5kIGVudGZhbHRldCBrZWluZSByZWNodGxpY2hl IEJpbmR1bmdzd2lya3VuZy4gQXVmZ3J1bmQgZGVyIGxlaWNodGVuIE1hbmlwdWxpZXJiYXJrZWl0 IHZvbiBFLU1haWxzIGtvZW5uZW4gd2lyIGtlaW5lIEhhZnR1bmcgZnVlciBkZW4gSW5oYWx0IHVl YmVybmVobWVuLg0KDQpDZSBtZXNzYWdlIGVzdCBjb25maWRlbnRpZWwgZXQgcGV1dCDDqnRyZSBw cml2aWzDqWdpw6kuIFNpIHZvdXMgbifDqnRlcyBwYXMgbGUgZGVzdGluYXRhaXJlIHByw6l2dSwg bm91cyB0ZSBkZW1hbmRvbnMgYXZlYyBib250w6kgcXVlIHBvdXIgc2F0aXNmYWlyZSBpbmZvcm1l eiBsJ2V4cMOpZGl0ZXVyLiBOJ2ltcG9ydGUgcXVlbGxlIGRpZmZ1c2lvbiBub24gYXV0b3Jpc8Op ZSBvdSBsYSBjb3BpZSBkZSBjZWNpIGVzdCBpbnRlcmRpdGUuIENlIG1lc3NhZ2Ugc2VydCDDoCBs J2luZm9ybWF0aW9uIHNldWxlbWVudCBldCBuJ2F1cmEgcGFzIG4naW1wb3J0ZSBxdWVsIGVmZmV0 IGzDqWdhbGVtZW50IG9ibGlnYXRvaXJlLiDDiXRhbnQgZG9ubsOpIHF1ZSBsZXMgZW1haWwgcGV1 dmVudCBmYWNpbGVtZW50IMOqdHJlIHN1amV0cyDDoCBsYSBtYW5pcHVsYXRpb24sIG5vdXMgbmUg cG91dm9ucyBhY2NlcHRlciBhdWN1bmUgcmVzcG9uc2FiaWxpdMOpIHBvdXIgbGUgY29udGVudSBm b3VybmkuDQoNCiANCj4gRnJvbTogYW5pZ295YWxAY2lzY28uY29tDQo+IFRvOiB1c2Vyc0B0b21j YXQuYXBhY2hlLm9yZw0KPiBTdWJqZWN0OiBSRTogQ3VzdG9taXppbmcgU1NMIGluIEh0dHBDbGll bnQNCj4gRGF0ZTogVHVlLCAxMSBKdW4gMjAxMyAwNjoyOTowNSArMDAwMA0KPiANCj4gDQo+IA0K PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBbmlsIEdveWFsIC1YIChhbmln b3lhbCAtIEFyaWNlbnQgVGVjaG5vbG9naWVzIGF0IENpc2NvKQ0KPiBTZW50OiBUdWVzZGF5LCBK dW5lIDExLCAyMDEzIDExOjIzIEFNDQo+IFRvOiBUb21jYXQgVXNlcnMgTGlzdA0KPiBTdWJqZWN0 OiBSRTogQ3VzdG9taXppbmcgU1NMIGluIEh0dHBDbGllbnQNCj4gDQo+IA0KPiANCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQ2hyaXN0b3BoZXIgU2NodWx0eiBbbWFpbHRv OmNocmlzQGNocmlzdG9waGVyc2NodWx0ei5uZXRdDQo+IFNlbnQ6IE1vbmRheSwgSnVuZSAxMCwg MjAxMyA3OjUxIFBNDQo+IFRvOiBUb21jYXQgVXNlcnMgTGlzdA0KPiBTdWJqZWN0OiBSZTogQ3Vz dG9taXppbmcgU1NMIGluIEh0dHBDbGllbnQNCj4gDQo+IC0tLS0tQkVHSU4gUEdQIFNJR05FRCBN RVNTQUdFLS0tLS0NCj4gSGFzaDogU0hBMjU2DQo+IA0KPiBBbmlsLA0KPiANCj4gT24gNi8xMC8x MyA4OjQyIEFNLCBBbmlsIEdveWFsIC1YIChhbmlnb3lhbCAtIEFyaWNlbnQgVGVjaG5vbG9naWVz IGF0DQo+IENpc2NvKSB3cm90ZToNCj4gPiBJIGFtIHRyeWluZyB0byBjcmVhdGUgYSBodHRwIGNs aWVudCBhbmQgc2VuZCBhIHJlcXVlc3QgdG8gY2VydGFpbiANCj4gPiBwb3J0IG9mIGEgc2VydmVy IHVzaW5nIGJlbG93IGNvZGU6DQo+ID4gDQo+ID4gSHR0cENsaWVudCBjbGllbnQgPSBuZXcgSHR0 cENsaWVudCgpOyANCj4gPiBjbGllbnQuZ2V0SG9zdENvbmZpZ3VyYXRpb24oKS5zZXRIb3N0KGFk ZHJlc3MsIHBvcnROdW1iZXIsIA0KPiA+IHByb3RvY29sKTsNCj4gPiANCj4gPiBIZXJlIHBvcnRO dW1iZXIgdGhhdCBJIGFtIHNldHRpbmcgaXMgODQ0NChodHRwcyBwb3J0IG9mIHRvbWNhdCkNCj4g PiANCj4gPiBXaGVuIEkgZXhlY3V0ZSBjbGllbnQuZXhlY3V0ZW1ldGhvZCgpIGFuZCBhdCB0aGUg c2VydmVyIHNpZGUgd2hlbiBJIA0KPiA+IHRyaWVkIHRvIHJldHJpZXZlIHJlcXVlc3QuZ2V0UmVx dWVzdFVSTCgpLCBJIGFtIGdldHRpbmcgdGhlIHVybCB3aXRoIA0KPiA+IHBvcnQgNDQzIG5vdCA4 NDQ0IHdoaWNoIEkgc2V0IGluIGNsaWVudC4gRXZlbiByZXF1ZXN0LmdldFNlcnZlclBvcnQgDQo+ ID4gaXMgZ2l2aW5nIDQ0MyBub3QgODQ0NC4NCj4gDQo+IElzIHRoZXJlIGFueSBraW5kIG9mIHBv cnQtZm9yd2FyZGluZyBvciBhbnl0aGluZyBlbHNlIGdvaW5nIG9uPw0KPiANCj4gPiBUaGUgdGhp bmdzIGFyZSB3b3JraW5nIGZpbmUgZm9yIDgwODEoaHR0cCBwb3J0IG9mIHRvbWNhdCkgaS4uZSAN Cj4gPiBIdHRwQ2xpZW50IGNsaWVudCA9IG5ldyBIdHRwQ2xpZW50KCk7IA0KPiA+IGNsaWVudC5n ZXRIb3N0Q29uZmlndXJhdGlvbigpLnNldEhvc3QoYWRkcmVzcywgcG9ydE51bWJlciwgDQo+ID4g cHJvdG9jb2wpOw0KPiA+IA0KPiA+IEhlcmUgcG9ydE51bWJlciB0aGF0IEkgYW0gc2V0dGluZyBp cyA4MDgxKGh0dHBzIHBvcnQgb2YgdG9tY2F0KQ0KPiA+IA0KPiA+IFdoZW4gSSBleGVjdXRlIGNs aWVudC5leGVjdXRlbWV0aG9kKCkgYW5kIGF0IHRoZSBzZXJ2ZXIgc2lkZSB3aGVuIEkgDQo+ID4g dHJpZWQgdG8gcmV0cmlldmUgcmVxdWVzdC5nZXRSZXF1ZXN0VVJMKCksIEkgYW0gZ2V0dGluZyB0 aGUgdXJsIHdpdGggDQo+ID4gcG9ydCA4MDgxIHdoaWNoIEkgc2V0IGluIGNsaWVudC4gRXZlbiBy ZXF1ZXN0LmdldFNlcnZlclBvcnQgaXMgDQo+ID4gZ2l2aW5nIDgwODEuDQo+IA0KPiBDYW4geW91 IHNob3cgdXMgYSBiaXQgbW9yZSBvZiB0aGUgY29kZT8gSXQncyBub3QgY2xlYXIgZnJvbSB5b3Ug Y2xpZW50IGNvZGUgdGhhdCB0aGUgcG9ydCBudW1iZXIgaXMgc2V0IGNvcnJlY3RseSwgYW5kIHlv dSBvbmx5IG1lbnRpb25lZCB0aGUgc2VydmVyLiBDYW4geW91IGdpdmUgdXMgc29tZSBvZiB0aGF0 LCB0b28/IEFsc28sIHdoYXQgZG8geW91ciA8Q29ubmVjdG9yPiBlbGVtZW50cyBsb29rIGxpa2Ug aW4gc2VydmVyLnhtbD8NCj4gDQo+IC0gLWNocmlzDQo+IC0tLS0tQkVHSU4gUEdQIFNJR05BVFVS RS0tLS0tDQo+IFZlcnNpb246IEdudVBHL01hY0dQRzIgdjIuMC4xNyAoRGFyd2luKQ0KPiBDb21t ZW50OiBHUEdUb29scyAtIGh0dHA6Ly9ncGd0b29scy5vcmcNCj4gQ29tbWVudDogVXNpbmcgR251 UEcgd2l0aCBUaHVuZGVyYmlyZCAtIGh0dHA6Ly93d3cuZW5pZ21haWwubmV0Lw0KPiANCj4gaVFJ Y0JBRUJDQUFHQlFKUnRlQzVBQW9KRUJ6d0tUK2xQS1JZOFRVUC8zUXVJcUtQeEI1SGpWYVV5d2tQ bUlRdA0KPiArTG9aTGRIaE9MZHJrd0Uyb2pXMXFrMFluWDJ3cGdyNlczVzZ1Qms1bDV5cnJkY0hB RmNPV2NOSWk5ZmpsOGJvDQo+IHhXOHVaaSt2R2t5djFQZGlpNUpKcmZEamJ4ZHRic1RwSEJuN3lv S01Veko5Vjl4bUh3cU5zaTg5eGkvbVpMdHkNCj4gaGo2TE5NdmZ0Z3BRUWRQbW9Qb0xKcjRaZm1R ajJEQUkrd1gwdS9mTmdrOGNmNXdkSEpaWnUwM0NPUEllUmJhbQ0KPiBHbitmT2pmSzBZTDkzbnRt TFAyUGJHdGxDcHJCYXFQY1pSaCtBaUtGaGc0VzcrcUdWRFhHYTJTSXZyY1diZ2RVDQo+IHFIUkt4 eUorNWozbzBZNzRRMHdLUmNTRVVYYmlkRWhEQXRKQ1FnTk9KSmkrUzRTWWdsMk9MT1hoa3hNQUJC a1MNCj4geFlJWHNBUHU0U29WY3VpQ3BHdmIyTGhENXVxTU95SDBOeENwdi9UVkZzRXpPeTJFWkhM cnRzMURZTkF5SW83TQ0KPiB6cVp2MmVmT1RQd2NhSFJaeGd6VUIyczIzdXpzM2FpWGlLT3pZSEI3 QUFMSm5BU0N4NGZOZU9nWndNeGRLNm8wDQo+IHFzMDltMEVLTDI5UXVyRzNpS1hIQ0EwZE9lWnp4 VjRaVWR1Rlp0UjJlTElzYXlxb0twTDZmaCthc0xaRlc0MHkNCj4gWk1PdlB6bHBYd2RSWDM2SWR6 d1Rsd3J2TU9teW5mZ0dmTC95QWRDZnFOMGhsQTBPVm83UFlOcnl4U2ZaaFgrMg0KPiBPMS8vekRG TlN4czJCUzlFclFrTnlLUDh4ZlZrNzZYYllVeWJzYk50aXZueGp2MWE4TjcyaDNxZXVpeEEvWlVK DQo+IGdKRXZzVFgwa0QrcmI4eFltSWxKDQo+ID1RcWh1DQo+IC0tLS0tRU5EIFBHUCBTSUdOQVRV UkUtLS0tLQ0KPiANCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IFRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IHVz ZXJzLXVuc3Vic2NyaWJlQHRvbWNhdC5hcGFjaGUub3JnDQo+IEZvciBhZGRpdGlvbmFsIGNvbW1h bmRzLCBlLW1haWw6IHVzZXJzLWhlbHBAdG9tY2F0LmFwYWNoZS5vcmcNCj4gDQo+IA0KPiBQbGVh c2UgY29uc2lkZXIgdGhlIGNvZGUgZmxvdyBhcyBiZWxvdzoNCj4gDQo+IEh0dHBDbGllbnQgY2xp ZW50ID0gbmV3IEh0dHBDbGllbnQoKTsNCj4gcG9ydE51bWJlciA9IHNlY3VyZSA/IExvY2FsTmV0 d29ya0NvbnN0YW50cy5ERUZBVUxUX0hUVFBTX1BPUlQgOiBMb2NhbE5ldHdvcmtDb25zdGFudHMu REVGQVVMVF9IVFRQX1BPUlQ7IC8vIERFRkFVTFRfSFRUUFNfUE9SVD04NDQ0IGFuZCBERUZBVUxU X0hUVFBfUE9SVD04MDgxIGRlZmluZSBpbiAgTG9jYWxOZXR3b3JrQ29uc3RhbnRzLmphdmEgIExP Ry5kZWJ1ZygidGhlIHZhbHVlIG9mIGh0dHBzIHBvcnQgaXMiK1N0cmluZy52YWx1ZU9mKHBvcnRO dW1iZXIpKTsgaWYgKHNlY3VyZSkgew0KPiAgICAgICAgIFByb3RvY29sIHByb3RvY29sID0gbmV3 IFByb3RvY29sKExvY2FsTmV0d29ya0NvbnN0YW50cy5VUklTQ0hFTUVfSFRUUFMsIG5ldyBFeHRl bmRlZFByb3RvY29sU29ja2V0RmFjdG9yeShhZGRyZXNzLCBsb2NhdGlvbkRhdGEuaXNBY2NlcHRT ZWxmU2lnbmVkQ2VydGlmaWNhdGVzKCksIGxvY2F0aW9uRGF0YS5pc0FjY2VwdENlcnRpZmljYXRl RXJyb3JzKCkpICwgcG9ydE51bWJlcik7DQo+ICAgICAgICAgY2xpZW50LmdldEhvc3RDb25maWd1 cmF0aW9uKCkuc2V0SG9zdChhZGRyZXNzLCBwb3J0TnVtYmVyLCBwcm90b2NvbCk7DQo+ICAgICAg ICAgIExPRy5kZWJ1Zygic2V0dGluZyB0aGUgaG9zdCBmb3IgaHR0cHMiK1N0cmluZy52YWx1ZU9m KHBvcnROdW1iZXIpKTsNCj4gICAgIH0NCj4gICAgIGVsc2Ugew0KPiAgICAgICAgIGNsaWVudC5n ZXRIb3N0Q29uZmlndXJhdGlvbigpLnNldEhvc3QoYWRkcmVzcywgcG9ydE51bWJlcik7DQo+ICAg ICAgICAgTE9HLmRlYnVnKCJzZXR0aW5nIHRoZSBob3N0IGZvciBodHRwIitTdHJpbmcudmFsdWVP Zihwb3J0TnVtYmVyKSk7DQo+ICAgICB9DQo+IA0KPiANCj4gR2V0TWV0aG9kIG1ldGhvZCA9IG5l dyANCj4gR2V0TWV0aG9kKExvY2FsTmV0d29ya0NvbnN0YW50cy5JTkZPX0ZFRURFUl9QQVRIKTsN Cj4gaW50IHJldHVybkNvZGUgPSBjbGllbnQuZXhlY3V0ZU1ldGhvZChtZXRob2QpOw0KPiANCj4g VGhpcyBpcyB0aGUgY29kZSBhdCB0aGUgY2xpZW50IHNpZGUuDQo+IA0KPiBBdCB0aGUgc2VydmVy IHNpZGUsDQo+IA0KPiBJIGhhdmUgODQ0NCBhbmQgODA4MSBwb3J0IGRlZmluZWQgaW4gc2VydmVy LnhtbA0KPiANCj4gPENvbm5lY3RvciBVUklFbmNvZGluZz0iVVRGLTgiIGFjY2VwdENvdW50PSIx MDAiIGNvbm5lY3Rpb25UaW1lb3V0PSIyMDAwMCIgZGlzYWJsZVVwbG9hZFRpbWVvdXQ9InRydWUi IGVuYWJsZUxvb2t1cHM9ImZhbHNlIiBtYXhIdHRwSGVhZGVyU2l6ZT0iODE5MyIgbWF4U3BhcmVU aHJlYWRzPSIyNSIgbWF4VGhyZWFkcz0iMjUiIG1pblNwYXJlVGhyZWFkcz0iMTAiIHBvcnQ9Ijgw ODEiIHByb3RvY29sPSJIVFRQLzEuMSIgcmVkaXJlY3RQb3J0PSI4NDQ0IiBzZXJ2ZXI9IiAiLz4N Cj4gICAgIDxDb25uZWN0b3IgU1NMRW5hYmxlZD0idHJ1ZSIgVVJJRW5jb2Rpbmc9IlVURi04IiBh Y2NlcHRDb3VudD0iMTAwIiANCj4gY2lwaGVycz0iICIgY2xpZW50QXV0aD0iZmFsc2UiIGRpc2Fi bGVVcGxvYWRUaW1lb3V0PSJ0cnVlIiANCj4gZW5hYmxlTG9va3Vwcz0iZmFsc2UiIGtleXN0b3Jl RmlsZT0iIiBrZXlzdG9yZVBhc3M9IiIga2V5c3RvcmVUeXBlPSIiIA0KPiBtYXhIdHRwSGVhZGVy U2l6ZT0iODE5MiIgbWF4U3BhcmVUaHJlYWRzPSIyNSIgbWF4VGhyZWFkcz0iMjUiIA0KPiBtaW5T cGFyZVRocmVhZHM9IjEwIiBwb3J0PSI4NDQ0IiBwcm90b2NvbD0iSFRUUC8xLjEiIHNjaGVtZT0i aHR0cHMiIA0KPiBzZWN1cmU9InRydWUiIHNlcnZlcj0iICIgc3NsUHJvdG9jb2w9IlRMUyIvPg0K PiANCj4gQWxzbyBJIGhhdmUgdGhlc2UgdHdvIHBvcnRzIGVudHJ5IGluIGlwdGFibGVzLg0KPiAN Cj4gTm93IGluIHRoZSB0b21jYXQgcmVkaXJlY3Rpb24gdmFsdmUsIEkgaGF2ZSBiZWxvdyBjb2Rl IHdyaXR0ZW4NCj4gDQo+IGludCBwb3J0ID0gcmVxdWVzdC5nZXRTZXJ2ZXJQb3J0KCk7DQo+IFN0 cmluZ0J1ZmZlciB1cmwgPSByZXF1ZXN0LmdldFJlcXVlc3RVUkwoKTsNCj4gDQo+IA0KPiBTbyBu b3cgdGhlIHByb2JsZW0gYXJlIGlzLCB3aGVuIGZyb20gY2xpZW50IEkgZGlzYWJsZSBzc2wgYW5k IHNlbmQgdGhlIHJlcXVlc3QgYXQgcG9ydCA4MDgxIHRoZW4gaW4gdG9tY2F0IHZhbHZlLCBwb3J0 IC04MDgxIGFuZCB1cmwgYWxzbyBjb250YWlucyBwb3J0IDgwODEuDQo+IA0KPiBCdXQgd2hlbiBm cm9tIGNsaWVudCAsIEkgZW5hYmxlIHNzbCBhbmQgc2VuZCB0aGUgcmVxdWVzdCBhdCBwb3J0IDg0 NDQsIHRoZW4gaGVyZSBpbiB2YWx2ZSB0aGUgcmVxdWVzdC5nZXRTZXJ2ZXJQb3J0IHJldHVybnMg NDQzIGFuZCBldmVuIGluIHVybCBhbHNvIHBvcnQgaXMgNDQzLg0KPiANCj4gU28gSSBhbSBub3Qg YWJsZSB0byB1bmRlcnN0YW5kIHdoeSB0aGUgaHR0cHMgcG9ydCBpcyBjb252ZXJ0aW5nIGludG8g NDQzIGZyb20gODQ0NCB3aGlsZSBodHRwIHBvcnQgODA4MSBpcyB3b3JraW5nIGZpbmUuDQo+IA0K PiBFdmVuIGluIHRvbWNhdCBhY2Nlc3MgdmFsdmUsIHRoZSByZXF1ZXN0IGlzIGNvbWluZyBhdCBw b3J0IDg0NDQgYXMgDQo+IHNob3duIGJlbG93DQo+IFsxMS9KdW4vMjAxMzoxMToxNjo1OCArMDUz MF0gMTAuOTMuMjMwLjIwMyAxMC45My4yMzAuMjAzIGFkbWluIC0gODQ0NCANCj4gR0VUIC9mZWVk ZXIvaW5mbyBIVFRQLzEuMSA1MDAgMjU4MSAxMjMNCj4gDQo+IEZvciBodHRwIHBvcnQgYWxzbyB0 aGUgcmVxdWVzdCBpcyBjb21pbmcgYXQgcG9ydCA4MDgxIG9mIHRvbWNhdA0KPiBbMTEvSnVuLzIw MTM6MTE6MTg6MjkgKzA1MzBdIDEwLjkzLjIzMC4yMDMgMTAuOTMuMjMwLjIwMyBhZG1pbiAtIDgw ODEgDQo+IEdFVCAvZmVlZGVyL2luZm8gSFRUUC8xLjEgMjAwIDQzNzcgMjg2DQo+IA0KPiBCdXQg SSBhbSB0b3RhbGx5IGNvbmZ1c2VkIHdoeSByZXF1ZXN0LmdldFNlcnZlclBvcnQgaXMgZ2l2aW5n IDQ0MyBmb3IgaHR0cHMgPz8/DQo+IA0KPiBUaGFua3MNCj4gQW5pbA0KPiANCj4gDQo+IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiBUbyB1bnN1YnNjcmliZSwgZS1tYWlsOiB1c2Vycy11bnN1YnNjcmliZUB0b21j YXQuYXBhY2hlLm9yZw0KPiBGb3IgYWRkaXRpb25hbCBjb21tYW5kcywgZS1tYWlsOiB1c2Vycy1o ZWxwQHRvbWNhdC5hcGFjaGUub3JnDQo+IA0KPiANCj4gDQo+IFdoZW4gSSByZXBsYWNlIHJlcXVl c3QuZ2V0U2VydmVyUG9ydCgpIHdpdGggcmVxdWVzdC5nZXRMb2NhbFBvcnQoKSwgaXQgaXMgZ2l2 aW5nIG1lIHRoZSBwb3J0IDg0NDQuDQo+IFNvIHRoaW5ncyBhcmUgd29ya2luZyBmaW5lIHdoZW4g SSB1c2UgcmVxdWVzdC5nZXRMb2NhbFBvcnQoKS4NCj4gDQo+IFNvIGRvIHlvdSBoYXZlIGFueSBp ZGVhcyB3aHkgcmVxdWVzdC5nZXRTZXJ2ZXJQb3J0IGlzIGdpdmluZyA0NDMgYW5kIHJlcXVlc3Qu Z2V0TG9jYWxQb3J0IGlzIGdpdmluZyA4NDQ0IHdoZW4gSSBoaXQgdGhlIHVybCBodHRwczovL2lw LWFkZHJlc3M6ODQ0NC9jb250ZXh0IHRvIHRvbWNhdC4NCj4gQW5kIHJlcXVlc3QuZ2V0U2VydmVy UG9ydCgpIGlzIGdpdmluZyA4MDgxIGFuZCByZXF1ZXN0LmdldExvY2FsUG9ydCBpcyBhbHNvIGdp dmluZyA4MDgxIHdoZW4gaW4gaGl0IHRoZSB1cmwgaHR0cDovL2lwLWFkZHJlc3M6ODA4MS9jb250 ZXh0IHRvIHRvbWNhdC4/Pw0KPiANCj4gUGxlYXNlIHN1Z2dlc3QNCj4gDQo+IFRoYW5rcw0KPiBB bmlsDQo+INCiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgDQo+INClRiAgViA3Vic2NyYgJlIgBlIgIBYgw6IgVzZXJzIg ViA3Vic2NyYgJlQgDQo+IEYgIDYXQiAXBhY2IFIgICZw0KRmICIGFkZGIEYgICAWIAY2ICAgFiBH MiAGUiAgFiDDoiBXNlcnMtaGViAEIA0KPiBGICA2F0IgFwYWNiBSICAmcNCgDQp0ICAJCSAJICAg CQkgIA0K DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IHVzZXJzLXVuc3Vi c2NyaWJlQHRvbWNhdC5hcGFjaGUub3JnDQpGb3IgYWRkaXRpb25hbCBjb21tYW5kcywgZS1t YWlsOiB1c2Vycy1oZWxwQHRvbWNhdC5hcGFjaGUub3JnDQoN