From mboxrd@z Thu Jan 1 00:00:00 1970 From: Varada Kari Subject: RE: K/V store optimization Date: Wed, 6 May 2015 12:47:40 +0000 Message-ID: References: <755F6B91B3BE364F9BCA11EA3F9E0C6F2CD84052@SACMBXIP01.sdcorp.global.sandisk.com> <755F6B91B3BE364F9BCA11EA3F9E0C6F2CD84086@SACMBXIP01.sdcorp.global.sandisk.com> <755F6B91B3BE364F9BCA11EA3F9E0C6F2CD8431B@SACMBXIP01.sdcorp.global.sandisk.com> <755F6B91B3BE364F9BCA11EA3F9E0C6F2CD84485@SACMBXIP01.sdcorp.global.sandisk.com> <6F3FA899187F0043BA1827A69DA2F7CC021EC488@shsmsx102.ccr.corp.intel.com> <755F6B91B3BE364F9BCA11EA3F9E0C6F2CD86BE5@SACMBXIP01.sdcorp.global.sandisk.com> <6F3FA899187F0043BA1827A69DA2F7CC021ECC41@shsmsx102.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-bl2on0094.outbound.protection.outlook.com ([65.55.169.94]:57379 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751012AbbEFNDD (ORCPT ); Wed, 6 May 2015 09:03:03 -0400 In-Reply-To: <6F3FA899187F0043BA1827A69DA2F7CC021ECC41@shsmsx102.ccr.corp.intel.com> Content-Language: en-US Sender: ceph-devel-owner@vger.kernel.org List-ID: To: "Chen, Xiaoxi" , Haomai Wang , Somnath Roy Cc: ceph-devel PkRvIHdlIHJlYWxseSBuZWVkIHRvIGRvIHN0cmlwcGluZyBpbiBLVlN0b3JlPyBNYXliZSBiYWNr ZW5kIGNhbiBoYW5kbGUgdGhhdCBwcm9wZXJseS4NCkkgY29uY3VyIHdpdGggdGhhdC4gSXQgZ2l2 ZXMgY29udHJvbCB0byB0aGUgYmFja2VuZCBEQiB0byBtYW5hZ2UgdGhlIHdob2xlIG9iamVjdC4g SXQgY2FuIGhhdmUgaXRzIG93biBsb2dpYyBvZiBzdHJpcGluZyBiYXNlZCBvbiBpdHMgb3duIHBv bGljeS4NCg0KPlRoZSBxdWVzdGlvbiBpcywgYWdhaW4sIHRoZXJlIGFyZSB0b28gbWFueSBLViBE QiBhcm91bmQoaWYgaW5jbHVkZWQgSFcgdmVuZG9yIHNwZWNpZmljIERCKSwgd2l0aCBkaWZmZXJl bnQgZmVhdHVyZSBhbmQgZmF2b3IsIGhvdyB0byBkbyB0aGUgPmdlbmVyaWMgaW50ZXJmYWNlIHRy YW5zbGF0aW9uIGlzIGEgY2hhbGxlbmdlIGZvciB1cy4NCg0KS2V5VmFsdWVEQiBUcmFuc2FjdGlv biBwcm92aWRlcyB0aGF0IGFic3RyYWN0aW9uIHRvIGEgZ29vZCBkZXRhaWwgbm93LiBXZSBjYW4g bGV2ZXJhZ2UgdGhhdC4gQXMgeW91IG1lbnRpb25lZCBiZWZvcmUgd2UgY2FuIGdldCBzb21lIGZ1 bmN0aW9uYWxpdHkgbWFuYWdlZCBieSB0aGUgREIgaXRzZWxmLCBMaWtlIHN0cmlwaW5nLCBjb21w cmVzc2lvbiBldGMuLiAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaGFzIGV4dGVuc2l2ZSB1 c2Ugb2YgU1RMIGFuZCBjYWNoZXMsIHdoaWNoIGludm9sdmVzIHNvbWUgZGF0YSBjb3BpZXMgd2Ug YXJlIG5vdCBuZWVkZWQuIElmIHdlIGNhbiBvcHRpbWl6ZSBvbiB0aGUgZGF0YSBjb3BpZXMsIGFu ZCBjYWNoZSB1c2FnZSwgS2V5VmFsdWVEQiBwcm92aWRlcyBhIG5pY2UgYWJzdHJhY3Rpb24gZm9y IHRoZSBmdW5jdGlvbmFsaXR5Lg0KDQoNClZhcmFkYQ0KDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQpGcm9tOiBDaGVuLCBYaWFveGkgW21haWx0bzp4aWFveGkuY2hlbkBpbnRlbC5jb21d DQpTZW50OiBXZWRuZXNkYXksIE1heSAwNiwgMjAxNSAxMDozOSBBTQ0KVG86IEhhb21haSBXYW5n OyBTb21uYXRoIFJveQ0KQ2M6IFZhcmFkYSBLYXJpOyBjZXBoLWRldmVsDQpTdWJqZWN0OiBSRTog Sy9WIHN0b3JlIG9wdGltaXphdGlvbg0KDQpEbyB3ZSByZWFsbHkgbmVlZCB0byBkbyBzdHJpcHBp bmcgaW4gS1ZTdG9yZT8gTWF5YmUgYmFja2VuZCBjYW4gaGFuZGxlIHRoYXQgcHJvcGVybHkuDQpU aGUgcXVlc3Rpb24gaXMsIGFnYWluLCB0aGVyZSBhcmUgdG9vIG1hbnkgS1YgREIgYXJvdW5kKGlm IGluY2x1ZGVkIEhXIHZlbmRvciBzcGVjaWZpYyBEQiksIHdpdGggZGlmZmVyZW50IGZlYXR1cmUg YW5kIGZhdm9yLCBob3cgdG8gZG8gdGhlIGdlbmVyaWMgaW50ZXJmYWNlIHRyYW5zbGF0aW9uIGlz IGEgY2hhbGxlbmdlIGZvciB1cy4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBG cm9tOiBIYW9tYWkgV2FuZyBbbWFpbHRvOmhhb21haXdhbmdAZ21haWwuY29tXQ0KPiBTZW50OiBX ZWRuZXNkYXksIE1heSA2LCAyMDE1IDE6MDAgUE0NCj4gVG86IFNvbW5hdGggUm95DQo+IENjOiBD aGVuLCBYaWFveGk7IFZhcmFkYSBLYXJpOyBjZXBoLWRldmVsDQo+IFN1YmplY3Q6IFJlOiBLL1Yg c3RvcmUgb3B0aW1pemF0aW9uDQo+DQo+IEFncmVlZCwgSSB0aGluayBrdnN0b3JlIGlzIGFpbWVk IHRvIHByb3ZpZGVkIHdpdGggYSBsaWdodHdlaWdodA0KPiBvYmplY3RzdG9yZSBpbnRlcmZhY2Ug dG8ga3YgaW50ZXJmYWNlIHRyYW5zbGF0aW9uLiBUaGUgZXh0cmEgImJpdHMiDQo+IGZpZWxkIG1h aW50YWluIGlzIGEgbG9hZCBmb3IgcG93ZXJmdWwga2V5dmFsdWVkYiBiYWNrZW5kLiBXZSBuZWVk IHRvDQo+IGNvbnNpZGVyIGZ1bGx5IHJlbHkgdG8gYmFja2VuZCBpbXBsZW1lbnRhdGlvbiBhbmQg dHJ1c3QgaXQuDQo+DQo+IE9uIFdlZCwgTWF5IDYsIDIwMTUgYXQgMzozOSBBTSwgU29tbmF0aCBS b3kgPFNvbW5hdGguUm95QHNhbmRpc2suY29tPg0KPiB3cm90ZToNCj4gPiBIaSBYaWFveGksDQo+ ID4gVGhhbmtzIGZvciB5b3VyIGlucHV0Lg0KPiA+IEkgZ3Vlc3MgSWYgdGhlIGRiIHlvdSBhcmUg cGxhbm5pbmcgdG8gaW50ZWdyYXRlIGlzIG5vdCBoYXZpbmcgYW4NCj4gPiBlZmZpY2llbnQNCj4g aXRlcmF0b3Igb3IgcmFuZ2UgcXVlcnkgaW1wbGVtZW50YXRpb24sIHBlcmZvcm1hbmNlIGNvdWxk IGdvIHdyb25nIGluDQo+IG1hbnkgcGFydHMgb2YgcHJlc2VudCBrL3Ygc3RvcmUgaXRzZWxmLg0K PiA+IElmIHlvdSBhcmUgc2F5aW5nIGxldmVsZGIvcm9ja3NkYiByYW5nZSBxdWVyeS9pdGVyYXRv cg0KPiA+IGltcGxlbWVudGF0aW9uIG9mDQo+IHJlYWRpbmcgMTAga2V5cyBhdCBvbmNlIGlzIGxl c3MgZWZmaWNpZW50IHRoYW4gcmVhZGluZyAxMCBrZXlzDQo+IHNlcGFyYXRlbHkgYnkgMTAgR2V0 cyAoSSBkb3VidCBzbyEpICwgeWVzLCB0aGlzIG1heSBkZWdyYWRlDQo+IHBlcmZvcm1hbmNlIGlu IHRoZSBzY2hlbWUgSSBtZW50aW9uZWQuIEJ1dCwgdGhpcyBpcyByZWFsbHkgYW4NCj4gaW5lZmZp Y2llbmN5IGluIHRoZSBEQiBhbmQgbm90aGluZyBpbiB0aGUgaW50ZXJmYWNlLCBpc24ndCBpdCA/ IFllcywNCj4gd2UgY2FuIGltcGxlbWVudCB0aGlzIGtpbmQgb2Ygb3B0aW1pemF0aW9uIGluIHRo ZSBzaGltIGxheWVyIChkZXJpdmluZw0KPiBmcm9tIGt2ZGIpIG9yIHdyaXRpbmcgYSBiYWNrZW5k IGRlcml2aW5nIGZyb20gb2JqZWN0c3RvcmUgYWxsDQo+IHRvZ2V0aGVyLCBidXQgSSBkb24ndCB0 aGluayB0aGF0J3MgdGhlIGdvYWwuIEsvViBTdG9yZSBsYXllciB3cml0aW5nDQo+IGFuIGV4dHJh IGhlYWRlciBvZiB+MjAwIGJ5dGVzIGZvciBldmVyeSB0cmFuc2FjdGlvbiB3aWxsIG5vdCBoZWxw IGluDQo+IGFueSBjYXNlcy4gSU1ITywgd2Ugc2hvdWxkIGJlIGltcGxlbWVudGluZyBLL1ZzdG9y ZSBsYXllciBrZWVwaW5nIGluDQo+IG1pbmQgd2hhdCBhbiBlZmZpY2llbnQgay92IGRiIGNhbiBw cm92aWRlIHZhbHVlIHRvIGl0IGFuZCBub3Qgd29ycnlpbmcgYWJvdXQgaG93IGEgYmFkIGRiIGlt cGxlbWVudGF0aW9uIHdvdWxkIHN1ZmZlci4NCj4gPiBSZWdhcmRpbmcgZGIgbWVyZ2UsIEkgZG9u J3QgdGhpbmsgaXQgaXMgYSBnb29kIGlkZWEgdG8gcmVseSBvbiB0aGF0DQo+ID4gKGFnYWluIHRo aXMNCj4gaXMgZGIgc3BlY2lmaWMpIHNwZWNpYWxseSB3aGVuIHdlIGNhbiBnZXQgcmlkIG9mIHRo aXMgZXh0cmEgd3JpdGVzDQo+IHByb2JhYmx5IGdpdmluZyBhd2F5IHNvbWUgUkEgaW4gc29tZSBv ZiB0aGUgZGIgaW1wbGVtZW50YXRpb24uDQo+ID4NCj4gPiBSZWdhcmRzDQo+ID4gU29tbmF0aA0K PiA+DQo+ID4NCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IENoZW4s IFhpYW94aSBbbWFpbHRvOnhpYW94aS5jaGVuQGludGVsLmNvbV0NCj4gPiBTZW50OiBUdWVzZGF5 LCBNYXkgMDUsIDIwMTUgMjoxNSBBTQ0KPiA+IFRvOiBIYW9tYWkgV2FuZzsgU29tbmF0aCBSb3kN Cj4gPiBDYzogVmFyYWRhIEthcmk7IGNlcGgtZGV2ZWwNCj4gPiBTdWJqZWN0OiBSRTogSy9WIHN0 b3JlIG9wdGltaXphdGlvbg0KPiA+DQo+ID4gSGkgU29tbmF0aA0KPiA+IEkgdGhpbmsgd2UgaGF2 ZSBzZXZlcmFsIHF1ZXN0aW9ucyBoZXJlLCBmb3IgZGlmZmVyZW50IERCIGJhY2tlbmQNCj4gPiAs dGhlDQo+IGFuc3dlciBtaWdodCBiZSBkaWZmZXJlbnQsIHRoYXQgd2lsbCBiZSBoYXJkIGZvciB1 cyB0byBpbXBsZW1lbnQgYQ0KPiBnZW5lcmFsIGdvb2QgS1ZTdG9yZSBpbnRlcmZhY2UuLi4NCj4g Pg0KPiA+IDEuICBXaGV0aGVyIHRoZSBEQiBzdXBwb3J0IHJhbmdlIHF1ZXJ5IChpLmUgY29zdCBv ZiByZWFkIGtleSAoMX4gMTApDQo+ID4gPDwgMTAqDQo+IHJlYWRrZXkoc29tZSBrZXkpKS4NCj4g PiAgICAgICAgICAgICBUaGlzIGlzIHJlYWxseSBkaWZmZXJlbnQgY2FzZSBieSBjYXNlLCBpbg0K PiA+TGV2ZWxEQi9Sb2Nrc0RCLCB0aGUgaXRlcmF0b3ItDQo+ID5uZXh0KCkgaXMgbm90IHRoYXQg Y2hlYXAgaWYgdGhlIHR3byBrZXlzIGFyZSBub3QgaW4gYSBzYW1lIGxldmVsLA0KPiA+dGhpcyBt aWdodA0KPiBoYXBwZW4gaWYgb25lIGtleSBpcyB1cGRhdGVkIGFmdGVyIGFub3RoZXIuDQo+ID4g Mi4gIFdpbGwgREIgbWVyZ2UgdGhlIHNtYWxsICg8IHBhZ2Ugc2l6ZSkgdXBkYXRlZCBpbnRvIGJp ZyBvbmU/DQo+ID4gICAgICAgICAgICAgVGhpcyBpcyB0cnVlIGluIFJvY2tzREIvTGV2ZWxEQiBz aW5jZSBtdWx0aXBsZSB3cml0ZXMNCj4gPiB3aWxsIGJlIHdyaXR0ZW4gdG8NCj4gV0FMIGxvZyBh dCB0aGUgc2FtZSB0aW1lKGlmIHN5bmM9ZmFsc2UpLCBub3QgdG8gbWVudGlvbiBpZiB0aGUgZGF0 YSBiZQ0KPiBmbHVzaCB0byBMZXZlbDAgKyAsIFNvIGluIFJvY2tzREIgY2FzZSwgdGhlIFdBIGlu c2lkZSBTU0QgY2F1c2VkIGJ5DQo+IHBhcnRpYWwgcGFnZSB1cGRhdGUgaXMgbm90IHRoYXQgYmln IGFzIHlvdSBlc3RpbWF0ZWQuDQo+ID4NCj4gPiAzLiBXaGF0J3MgdGhlIHR5cGljYWwgI1JBIGFu ZCAjV0Egb2YgdGhlIERCLCBhbmQgaG93IHRoZXkgdmFyeSB2cw0KPiA+IHRvdGFsDQo+IGRhdGEg c2l6ZQ0KPiA+ICAgICAgICAgICAgIEluIExldmVsIGRlc2lnbiBEQiAjUkEgYW5kICNXQSBpcyB1 c3VhbGx5IGEgdHVuaW5nDQo+ID4gdHJhZGVvZmYuLi5hbHNvIGZvcg0KPiBMTURCIHRoYXQgdHJh ZGVvZmYgI1dBIHRvIGFjaGlldmUgdmVyeSBzbWFsbCAjUkEuDQo+ID4gICAgICAgICAgICAgUm9j a3NEQi9MZXZlbERCICNXQSBzdXJnZSB1cCBxdWlja2x5IHdpdGggdG90YWwgZGF0YQ0KPiA+IHNp emUsIGJ1dCBpZiB1c2UNCj4gdGhlIGRlc2lnbiBvZiBOVk1LViwgdGhhdCBzaG91bGQgYmUgZGlm ZmVyZW50Lg0KPiA+DQo+ID4NCj4gPiBBbHNvIHRoZXJlIGFyZSBzb21lIHZhcmlldHkgaW4gU1NE LCBzb21lIG5ldyBTU0RzIHdoaWNoIHdpbGwNCj4gPiBwcm9iYWJseQ0KPiBhcHBlYXIgdGhpcyB5 ZWFyIHRoYXQgaGFzIHZlcnkgc21hbGwgcGFnZSBzaXplICggPCAxMDAgQikuLi4gU28gSQ0KPiBz dXNwZWN0IGlmIHlvdSByZWFsbHkgd2FudCBhIHVsdGlsaXplIHRoZSBiYWNrZW5kIEtWIGxpYnJh cnkgcnVuIG9udG9wDQo+IG9mIHNvbWUgc3BlY2lhbCBTU0QsIGp1c3QgaW5oZXJpdCBmcm9tIE9i amVjdFN0b3JlIG1pZ2h0IGJlIGEgYmV0dGVyIGNob2ljZS4uLi4NCj4gPg0KPiA+DQo+ID4gWGlh b3hpDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogY2Vw aC1kZXZlbC1vd25lckB2Z2VyLmtlcm5lbC5vcmcgW21haWx0bzpjZXBoLWRldmVsLQ0KPiA+PiBv d25lckB2Z2VyLmtlcm5lbC5vcmddIE9uIEJlaGFsZiBPZiBIYW9tYWkgV2FuZw0KPiA+PiBTZW50 OiBUdWVzZGF5LCBNYXkgNSwgMjAxNSAxMjoyOSBQTQ0KPiA+PiBUbzogU29tbmF0aCBSb3kNCj4g Pj4gQ2M6IFZhcmFkYSBLYXJpOyBjZXBoLWRldmVsDQo+ID4+IFN1YmplY3Q6IFJlOiBLL1Ygc3Rv cmUgb3B0aW1pemF0aW9uDQo+ID4+DQo+ID4+IE9uIFNhdCwgTWF5IDIsIDIwMTUgYXQgMTo1MCBQ TSwgU29tbmF0aCBSb3kNCj4gPFNvbW5hdGguUm95QHNhbmRpc2suY29tPg0KPiA+PiB3cm90ZToN Cj4gPj4gPiBWYXJhZGEsDQo+ID4+ID4gPDxpbmxpbmUNCj4gPj4gPg0KPiA+PiA+IFRoYW5rcyAm IFJlZ2FyZHMNCj4gPj4gPiBTb21uYXRoDQo+ID4+ID4NCj4gPj4gPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+PiA+IEZyb206IFZhcmFkYSBLYXJpDQo+ID4+ID4gU2VudDogRnJpZGF5 LCBNYXkgMDEsIDIwMTUgODoxNiBQTQ0KPiA+PiA+IFRvOiBTb21uYXRoIFJveTsgSGFvbWFpIFdh bmcNCj4gPj4gPiBDYzogY2VwaC1kZXZlbA0KPiA+PiA+IFN1YmplY3Q6IFJFOiBLL1Ygc3RvcmUg b3B0aW1pemF0aW9uDQo+ID4+ID4NCj4gPj4gPiBTb21uYXRoLA0KPiA+PiA+DQo+ID4+ID4gT25l IHRoaW5nIHRvIG5vdGUgaGVyZSwgd2UgY2FuJ3QgZ2V0IGFsbCB0aGUga2V5cyBpbiBvbmUgcmVh ZA0KPiA+PiA+IGZyb20gbGV2ZWxkYg0KPiA+PiBvciByb2Nrc2RiLiBOZWVkIHRvIGdldCBhbiBp dGVyYXRvciBhbmQgZ2V0IGFsbCB0aGUga2V5cyBkZXNpcmVkDQo+ID4+IHdoaWNoIGlzIHRoZSBp bXBsZW1lbnRhdGlvbiB3ZSBoYXZlIG5vdy4gVGhvdWdoLCBpZiB0aGUgYmFja2VuZA0KPiA+PiBz dXBwb3J0cyBiYXRjaCByZWFkIGZ1bmN0aW9uYWxpdHkgd2l0aCBnaXZlbiBoZWFkZXIvcHJlZml4 IHlvdXINCj4gPj4gaW1wbGVtZW50YXRpb24gbWlnaHQgc29sdmUgdGhlIHByb2JsZW0uDQo+ID4+ ID4NCj4gPj4gPiBPbmUgbGltaXRhdGlvbiBpbiB5b3VyIGNhc2UgaXMgYXMgbWVudGlvbmVkIGJ5 IEhhb21pLCBvbmNlIHRoZQ0KPiA+PiA+IHdob2xlIDRNQg0KPiA+PiBvYmplY3QgaXMgcG9wdWxh dGVkIGlmIGFueSBvdmVyd3JpdGUgY29tZXMgdG8gYW55IHN0cmlwZSwgd2Ugd2lsbA0KPiA+PiBo YXZlIHRvIHJlYWQNCj4gPj4gMTAyNCBzdHJpcCBrZXlzKGluIHdvcnN0IGNhc2UsIGFzc3VtaW5n IDRrIHN0cmlwIHNpemUpIG9yIHRvIHRoZQ0KPiA+PiBzdHJpcCBhdCBsZWFzdCB0byBjaGVjayB3 aGV0aGVyIHRoZSBzdHJpcCBpcyBwb3B1bGF0ZWQgb3Igbm90LCBhbmQNCj4gPj4gcmVhZCB0aGUg dmFsdWUgdG8gc2F0aXNmeSB0aGUgb3ZlcndyaXRlLiAgVGhpcyB3b3VsZCBpbnZvbHZpbmcgbW9y ZQ0KPiA+PiByZWFkcw0KPiB0aGFuIGRlc2lyZWQuDQo+ID4+ID4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiA+PiA+IFtTb21uYXRoXSBUaGF0J3Mgd2hhdCBJIHdhcyB0cnlpbmcgdG8g Y29udmV5IGluIG15IGVhcmxpZXIgbWFpbCwNCj4gPj4gPiB3ZSB3aWxsIG5vdA0KPiA+PiBiZSBo YXZpbmcgZXh0cmEgcmVhZHMgISBMZXQgbWUgdHJ5IHRvIGV4cGxhaW4gaXQgYWdhaW4uDQo+ID4+ ID4gSWYgYSBzdHJpcCBpcyBub3QgYmVlbiB3cml0dGVuLCB0aGVyZSB3aWxsIG5vdCBiZSBhbnkg a2V5L3ZhbHVlDQo+ID4+ID4gb2JqZWN0IHdyaXR0ZW4NCj4gPj4gdG8gdGhlIGJhY2stZW5kLCBy aWdodCA/DQo+ID4+ID4gTm93LCB5b3Ugc3RhcnQgc2F5IGFuIGl0ZXJhdG9yIHdpdGggbG93ZXJf Ym91bmQgZm9yIHRoZSBwcmVmaXgNCj4gPj4gPiBzYXkNCj4gPj4gX1NFUV8wMDAwMDAwMDAwMDM5 NDY4X1NUUklQXyBhbmQgY2FsbCBuZXh0KCkgdGlsbCBpdCBpcyBub3QgdmFsaWQuDQo+ID4+IFNv LCBpbiBjYXNlIG9mIDEwMjQgc3RyaXBzIGFuZCAxMCB2YWxpZCBzdHJpcHMsIGl0IHNob3VsZCBv bmx5IGJlDQo+ID4+IHJlYWRpbmcgYW5kIHJldHVybmluZyAxMCBrL3YgcGFpciwgaXNuJ3QgaXQg PyBXaXRoIHRoaXMgMTAgay92DQo+ID4+IHBhaXJzIG91dCBvZiAxMDI0LCB3ZSBjYW4gZWFzaWx5 IGZvcm0gdGhlIGV4dGVudCBiaXRtYXAuDQo+ID4+ID4gTm93LCBzYXkgeW91IGhhdmUgdGhlIGJp dG1hcCBhbmQgeW91IGFscmVhZHkga25vdyB0aGUga2V5IG9mIDEwDQo+ID4+ID4gdmFsaWQNCj4g Pj4gZXh0ZW50cywgeW91IHdpbGwgZG8gdGhlIHNpbWlsYXIgc3R1ZmYgLiBGb3IgZXhhbXBsZSwg aW4gdGhlDQo+ID4+IEdlbmVyaWNPYmplY3RNYXA6OnNjYW4oKSwgeW91IGFyZSBjYWxsaW5nIGxv d2VyX2JvdW5kIHdpdGggZXhhY3QNCj4gPj4ga2V5IChjb21iaW5lX3N0cmluZyB1bmRlciBzYXkg Um9ja3NkYnN0b3JlOjpsb3dlcl9ib3VuZCBpcyBmb3JtaW5nDQo+ID4+IGV4YWN0DQo+ID4+IGtl eSkgYW5kIGFnYWluIG1hdGNoaW5nIHRoZSBrZXkgdW5kZXIgOjpzY2FuKCkgISAuLi5CYXNpY2Fs bHksIHdlDQo+ID4+IGFyZSBtaXN1c2luZyBpdGVyYXRvciBiYXNlZCBpbnRlcmZhY2UgaGVyZSwg d2UgY291bGQgaGF2ZSBjYWxsZWQNCj4gPj4gdGhlIGRpcmVjdA0KPiBkYjo6Z2V0KCkuDQo+ID4+ DQo+ID4+IEhtbSwgd2hldGhlciBpbXBsZW1lbnRpbmcgYml0bWFwIG9uIG9iamVjdCBvciBvZmZs b2FkaW5nIGl0IHRvDQo+ID4+IGJhY2tlbmQgaXMgYSB0cmFkZW9mZi4gV2UgZ290IGZhc3QgcGF0 aCBmcm9tIGJpdG1hcCBhbmQgaW5jcmVhc2UNCj4gPj4gd3JpdGUgYW1wbGlmaWNhdGlvbihtYXli ZSB3ZSBjYW4gcmVkdWNlIGZvciBpdCkuIEZvciBub3csIEkgZG9uJ3QNCj4gPj4gaGF2ZSBjb21w ZWxsZW50IHJlYXNvbiBmb3IgZWFjaCBvbmUuIE1heWJlIHdlIGNhbiBoYXZlIGEgdHJ5LjotKQ0K PiA+Pg0KPiA+PiA+DQo+ID4+ID4gU28sIHdoZXJlIGlzIHRoZSBleHRyYSByZWFkID8NCj4gPj4g PiBMZXQgbWUga25vdyBpZiBJIGFtIG1pc3NpbmcgYW55dGhpbmcgLg0KPiA+PiA+IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4gPiBBbm90aGVyIHdheSB0byBhdm9pZCBoZWFk ZXIgd291bGQgYmUgaGF2ZSBvZmZzZXQgYW5kIGxlbmd0aA0KPiA+PiA+IGluZm9ybWF0aW9uDQo+ ID4+IGluIGtleSBpdHNlbGYuICBXZSBjYW4gaGF2ZSB0aGUgb2Zmc2V0IGFuZCBsZW5ndGggY292 ZXJlZCBpbiB0aGUNCj4gPj4gc3RyaXAgYXMgYSBwYXJ0IG9mIHRoZSBrZXkgcHJlZml4ZWQgYnkg dGhlIGNpZCtvaWQuIFRoaXMgd2F5IHdlIGNhbg0KPiA+PiBzdXBwb3J0IHZhcmlhYmxlIGxlbmd0 aCBleHRlbnQuIEFkZGl0aW9uYWwgY2hhbmdlcyB3b3VsZCBiZQ0KPiA+PiBpbnZvbHZpbmcgdG8g bWF0Y2ggb2Zmc2V0IGFuZCBsZW5ndGggd2UgbmVlZCB0byByZWFkIGZyb20ga2V5LiBXaXRoDQo+ ID4+IHRoaXMgYXBwcm9hY2ggd2UgY2FuIGF2b2lkIHRoZSBoZWFkZXIgYW5kIHdyaXRlIHRoZSBz dHJpcGVkIG9iamVjdA0KPiA+PiB0byBiYWNrZW5kLiAgSGF2ZW4ndCBjb21wbGV0ZWx5IGxvb2tl ZCB0aGUgcHJvYmxlbXMgb2YgY2xvbmVzIGFuZA0KPiA+PiBzbmFwc2hvdHMgaW4gdGhpcywgYnV0 IHdlIGNhbiB3b3JrIHRoZW0gb3V0IHNlYW1sZXNzbHkgb25jZSB3ZSBrbm93DQo+IHRoZSByYW5n ZSB3ZSB3YW50IHRvIGNsb25lLg0KPiA+PiBIYW9taSBhbnkgY29tbWVudHMgb24gdGhpcyBhcHBy b2FjaD8NCj4gPj4gPg0KPiA+PiA+IFtTb21uYXRoXSBIb3cgYXJlIHlvdSBzb2x2aW5nIHRoZSB2 YWxpZCBleHRlbnQgcHJvYmxlbSBoZXJlIGZvcg0KPiA+PiA+IHRoZQ0KPiA+PiBwYXJ0aWFsIHJl YWQvd3JpdGUgY2FzZSA/IFdoYXQgZG8geW91IG1lYW4gYnkgdmFyaWFibGUgbGVuZ3RoDQo+ID4+ IGV4dGVudA0KPiBCVFcgPw0KPiA+PiA+DQo+ID4+ID4gVmFyYWRhDQo+ID4+ID4NCj4gPj4gPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiA+IEZyb206IFNvbW5hdGggUm95DQo+ID4+ ID4gU2VudDogU2F0dXJkYXksIE1heSAwMiwgMjAxNSAxMjozNSBBTQ0KPiA+PiA+IFRvOiBIYW9t YWkgV2FuZzsgVmFyYWRhIEthcmkNCj4gPj4gPiBDYzogY2VwaC1kZXZlbA0KPiA+PiA+IFN1Ympl Y3Q6IFJFOiBLL1Ygc3RvcmUgb3B0aW1pemF0aW9uDQo+ID4+ID4NCj4gPj4gPiBWYXJhZGEvSGFv bWFpLA0KPiA+PiA+IEkgdGhvdWdodCBhYm91dCB0aGF0IGVhcmxpZXIgLCBidXQsIHRoZSBXQSBp bmR1Y2VkIGJ5IHRoYXQgYWxzbw0KPiA+PiA+IGlzICpub3QNCj4gPj4gbmVnbGlnaWJsZSouIEhl cmUgaXMgYW4gZXhhbXBsZS4gU2F5IHdlIGhhdmUgNTEyIFRCIG9mIHN0b3JhZ2UgYW5kDQo+ID4+ IHdlIGhhdmUgNE1CIHJhZG9zIG9iamVjdCBzaXplLiBTbywgdG90YWwgb2JqZWN0cyA9IDUxMiBU Qi80TUIgPQ0KPiA+PiAxMzQyMTc3MjguIE5vdywgaWYgNEsgaXMgc3RyaXBlIHNpemUgLCBldmVy eSA0TUIgb2JqZWN0IHdpbGwgaW5kdWNlDQo+ID4+IG1heCA0TUIvNEsgPSAxMDI0IGhlYWRlciB3 cml0ZXMuIFNvLCB0b3RhbCBvZiAxMzc0Mzg5NTM0NzIgaGVhZGVyDQo+ID4+IHdyaXRlcy4gRWFj aCBoZWFkZXIgc2l6ZSBpcyB+MjAwIGJ5dGVzIGJ1dCBpdCB3aWxsIGdlbmVyYXRlIGZsYXNoDQo+ ID4+IHBhZ2Ugc2l6ZSBhbW91bnQgb2Ygd3JpdGVzIChnZW5lcmFsbHkgNEsvOEsvMTZLKS4gQ29u c2lkZXJpbmcgbWluDQo+ID4+IDRLICwgaXQgd2lsbCBvdmVyYWxsIGdlbmVyYXRlIH41MTIgVEIg b2YgZXh0cmEgd3JpdGVzIGluIHdvcnN0IGNhc2UNCj4gPj4gOi0pIEkgZGlkbid0IGNvbnNpZGVy IHdoYXQgaWYgaW4gYmV0d2VlbiB0cnVuY2F0ZSBjb21lcyBhbmQgZGlzcnVwdA0KPiA+PiB0aGUN Cj4gaGVhZGVyIGJpdG1hcC4gVGhpcyB3aWxsIGNhdXNlIG1vcmUgaGVhZGVyIHdyaXRlcy4NCj4g Pj4gPiBTbywgd2UgKmNhbid0KiBnbyBpbiB0aGlzIHBhdGguDQo+ID4+ID4gTm93LCBIYW9tYWks IEkgZG9uJ3QgdW5kZXJzdGFuZCB3aHkgdGhlcmUgd2lsbCBiZSBleHRyYSByZWFkcyBpbg0KPiA+ PiA+IHRoZQ0KPiA+PiBwcm9wb3NhbCBJIGdhdmUuIExldCdzIGNvbnNpZGVyIHNvbWUgdXNlIGNh c2VzLg0KPiA+PiA+DQo+ID4+ID4gMS4gNE1CIG9iamVjdCBzaXplIGFuZCA2NEsgc3RyaXBlIHNp emUsIHNvLCB0b3RhbCBvZiA2NCBzdHJpcGVzDQo+ID4+ID4gYW5kDQo+ID4+ID4gNjQgZW50cmll cw0KPiA+PiBpbiB0aGUgaGVhZGVyIGJpdG1hcC4gT3V0IG9mIHRoYXQgc2F5IG9ubHkgMTAgc3Ry aXBlcyBhcmUgdmFsaWQuDQo+ID4+IE5vdywgcmVhZCByZXF1ZXN0IGNhbWUgZm9yIHRoZSBlbnRp cmUgNE1CIG9iamVjdHMsIHdlIGRldGVybWluZWQNCj4gPj4gdGhlIG51bWJlciBvZiBleHRlbnRz IHRvIGJlIHJlYWQgPSA2NCwgYnV0IGRvbid0IGtub3cgdmFsaWQNCj4gPj4gZXh0ZW50cy4gU28s IHNlbmQgb3V0IGEgcmFuZ2UgcXVlcnkgd2l0aA0KPiA+PiBfU0VRXzAwMDAwMDAwMDAwMzgzNjFf U1RSSVBfKiBhbmQNCj4gYmFja2VuZA0KPiA+PiBsaWtlIGxldmVsZGIvcm9ja3NkYiB3aWxsIG9u bHkgc2VuZCBvdXQgdmFsaWQgMTAgZXh0ZW50cyB0byB1cy4NCj4gPj4gUmF0aGVyIHdoYXQgd2Ug YXJlIGRvaW5nIG5vdywgd2UgYXJlIGNvbnN1bHRpbmcgYml0IG1hcCBhbmQgc2VuZGluZw0KPiA+ PiBzcGVjaWZpYyAxMCBrZXlzIGZvciByZWFkIHdoaWNoIGlzICppbmVmZmljaWVudCogdGhhbiBz ZW5kaW5nIGENCj4gPj4gcmFuZ2UgcXVlcnkuIElmIHdlIGFyZSB0aGlua2luZyB0aGVyZSB3aWxs IGJlIGN5Y2xlcyBzcGVudCBmb3INCj4gPj4gcmVhZGluZyBpbnZhbGlkIG9iamVjdHMsIGl0IGlz IG5vdCB0cnVlIGFzIGxldmVsZGIvcm9ja3NkYg0KPiA+PiBtYWludGFpbnMgYSBibG9vbSBmaWx0 ZXINCj4gZm9yIGEgdmFsaWQga2V5cyBhbmQgaXQgaXMgaW4tbWVtb3J5Lg0KPiA+PiBUaGlzIGlz IG5vdCBjb3N0bHkgZm9yIGJ0cmVlIGJhc2VkIGtleXZhbHVlIGRiIGFzIHdlbGwuDQo+ID4+ID4N Cj4gPj4gPiAyLiBOb3RoaW5nIGlzIGRpZmZlcmVudCBmb3Igd3JpdGUgYXMgd2VsbCwgd2l0aCB0 aGUgYWJvdmUgd2F5IHdlDQo+ID4+ID4gd2lsbCBlbmQgdXANCj4gPj4gcmVhZGluZyBzYW1lIGFt b3VudCBvZiBkYXRhLg0KPiA+PiA+DQo+ID4+ID4gTGV0IG1lIGtub3cgaWYgSSBhbSBtaXNzaW5n IGFueXRoaW5nLg0KPiA+PiA+DQo+ID4+ID4gVGhhbmtzICYgUmVnYXJkcw0KPiA+PiA+IFNvbW5h dGgNCj4gPj4gPg0KPiA+PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ID4gRnJv bTogSGFvbWFpIFdhbmcgW21haWx0bzpoYW9tYWl3YW5nQGdtYWlsLmNvbV0NCj4gPj4gPiBTZW50 OiBGcmlkYXksIE1heSAwMSwgMjAxNSA5OjAyIEFNDQo+ID4+ID4gVG86IFZhcmFkYSBLYXJpDQo+ ID4+ID4gQ2M6IFNvbW5hdGggUm95OyBjZXBoLWRldmVsDQo+ID4+ID4gU3ViamVjdDogUmU6IEsv ViBzdG9yZSBvcHRpbWl6YXRpb24NCj4gPj4gPg0KPiA+PiA+IE9uIEZyaSwgTWF5IDEsIDIwMTUg YXQgMTE6NTUgUE0sIFZhcmFkYSBLYXJpDQo+ID4+ID4gPFZhcmFkYS5LYXJpQHNhbmRpc2suY29t Pg0KPiA+PiB3cm90ZToNCj4gPj4gPj4gSGkgSGFvbWksDQo+ID4+ID4+DQo+ID4+ID4+IEFjdHVh bGx5IHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlIHRoZSBoZWFkZXIgZm9yIGFsbCB0aGUgd3JpdGVz LA0KPiA+PiA+PiB3ZSBuZWVkDQo+ID4+IHRvIHVwZGF0ZSB3aGVuIGFueSBoZWFkZXIgZmllbGRz IGdldHMgdXBkYXRlZC4gQnV0IHdlIGFyZSBtYWtpbmcNCj4gPj4gaGVhZGVyLQ0KPiA+PiA+dXBk YXRlZCB0byB0cnVlIHVuY29uZGl0aW9uYWxseSBpbiBfZ2VuZXJpY193cml0ZSgpLCB3aGljaCBp cw0KPiA+PiA+bWFraW5nIHRoZQ0KPiA+PiB3cml0ZSBvZiBoZWFkZXIgb2JqZWN0IGZvciBhbGwg dGhlIHN0cmlwIHdyaXRlIGV2ZW4gZm9yIGENCj4gPj4gb3ZlcndyaXRlLCB3aGljaCB3ZSBjYW4g ZWxpbWluYXRlIGJ5IHVwZGF0aW5nIHRoZSBoZWFkZXItPnVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ ID4+IElmIHlvdSBvYnNlcnZlIHdlIG5ldmVyIG1ha2UgdGhlIGhlYWRlci0+dXBkYXRlZCBmYWxz ZSBhbnl3aGVyZS4gV2UNCj4gPj4gbmVlZCB0byBtYWtlIGl0IGZhbHNlIG9uY2Ugd2Ugd3JpdGUg dGhlIGhlYWRlci4NCj4gPj4gPj4NCj4gPj4gPj4gSW4gd29yc3QgY2FzZSwgd2UgbmVlZCB0byB1 cGRhdGUgdGhlIGhlYWRlciB0aWxsIGFsbCB0aGUgc3RyaXBzDQo+ID4+ID4+IGdldHMNCj4gPj4g cG9wdWxhdGVkIGFuZCB3aGVuIGFueSBjbG9uZS9zbmFwc2hvdCBpcyBjcmVhdGVkLg0KPiA+PiA+ Pg0KPiA+PiA+PiBJIGhhdmUgZml4ZWQgdGhlc2UgaXNzdWVzLCB3aWxsIGJlIHNlbmRpbmcgYSBQ UiBzb29uIG9uY2UgbXkNCj4gPj4gPj4gdW5pdCB0ZXN0aW5nDQo+ID4+IGNvbXBsZXRlcy4NCj4g Pj4gPg0KPiA+PiA+IEdyZWF0ISBGcm9tIFNvbW5hdGgncyBzdGF0ZW1lbnRzLCBJIGp1c3QgdGhp bmsgaXQgbWF5IHNvbWV0aGluZw0KPiA+PiA+IHdyb25nDQo+ID4+IHdpdGggInVwZGF0ZWQiIGZp ZWxkLiBJdCB3b3VsZCBiZSBuaWNlIHRvIGNhdGNoIHRoaXMuDQo+ID4+ID4NCj4gPj4gPj4NCj4g Pj4gPj4gVmFyYWRhDQo+ID4+ID4+DQo+ID4+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4+ID4+IEZyb206IGNlcGgtZGV2ZWwtb3duZXJAdmdlci5rZXJuZWwub3JnDQo+ID4+ID4+ IFttYWlsdG86Y2VwaC1kZXZlbC1vd25lckB2Z2VyLmtlcm5lbC5vcmddIE9uIEJlaGFsZiBPZiBI YW9tYWkNCj4gV2FuZw0KPiA+PiA+PiBTZW50OiBGcmlkYXksIE1heSAwMSwgMjAxNSA1OjUzIFBN DQo+ID4+ID4+IFRvOiBTb21uYXRoIFJveQ0KPiA+PiA+PiBDYzogY2VwaC1kZXZlbA0KPiA+PiA+ PiBTdWJqZWN0OiBSZTogSy9WIHN0b3JlIG9wdGltaXphdGlvbg0KPiA+PiA+Pg0KPiA+PiA+PiBP biBGcmksIE1heSAxLCAyMDE1IGF0IDI6NTcgUE0sIEhhb21haSBXYW5nDQo+IDxoYW9tYWl3YW5n QGdtYWlsLmNvbT4NCj4gPj4gd3JvdGU6DQo+ID4+ID4+PiBPbiBGcmksIE1heSAxLCAyMDE1IGF0 IDI6MzcgUE0sIFNvbW5hdGggUm95DQo+ID4+IDxTb21uYXRoLlJveUBzYW5kaXNrLmNvbT4gd3Jv dGU6DQo+ID4+ID4+Pj4gVGhhbmtzIEhhb21haSAhDQo+ID4+ID4+Pj4gUmVzcG9uc2UgaW5saW5l Li4NCj4gPj4gPj4+Pg0KPiA+PiA+Pj4+IFJlZ2FyZHMNCj4gPj4gPj4+PiBTb21uYXRoDQo+ID4+ ID4+Pj4NCj4gPj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiA+Pj4+IEZy b206IEhhb21haSBXYW5nIFttYWlsdG86aGFvbWFpd2FuZ0BnbWFpbC5jb21dDQo+ID4+ID4+Pj4g U2VudDogVGh1cnNkYXksIEFwcmlsIDMwLCAyMDE1IDEwOjQ5IFBNDQo+ID4+ID4+Pj4gVG86IFNv bW5hdGggUm95DQo+ID4+ID4+Pj4gQ2M6IGNlcGgtZGV2ZWwNCj4gPj4gPj4+PiBTdWJqZWN0OiBS ZTogSy9WIHN0b3JlIG9wdGltaXphdGlvbg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4gT24gRnJpLCBN YXkgMSwgMjAxNSBhdCAxMjo1NSBQTSwgU29tbmF0aCBSb3kNCj4gPj4gPFNvbW5hdGguUm95QHNh bmRpc2suY29tPiB3cm90ZToNCj4gPj4gPj4+Pj4gSGkgSGFvbWFpLA0KPiA+PiA+Pj4+PiBJIHdh cyBkb2luZyBzb21lIGludmVzdGlnYXRpb24gd2l0aCBLL1Ygc3RvcmUgYW5kIElNTyB3ZSBjYW4N Cj4gPj4gPj4+Pj4gZG8gdGhlDQo+ID4+IGZvbGxvd2luZyBvcHRpbWl6YXRpb24gb24gdGhhdC4N Cj4gPj4gPj4+Pj4NCj4gPj4gPj4+Pj4gMS4gT24gZXZlcnkgd3JpdGUgS2V5VmFsdWVTdG9yZSBp cyB3cml0aW5nIG9uZSBleHRyYSBzbWFsbA0KPiA+PiA+Pj4+PiBhdHRyaWJ1dGUNCj4gPj4gd2l0 aCBwcmVmaXggX0dIT0JKVE9TRVEqIHdoaWNoIGlzIHN0b3JpbmcgdGhlIGhlYWRlciBpbmZvcm1h dGlvbi4NCj4gPj4gVGhpcyBleHRyYSB3cml0ZSB3aWxsIGh1cnQgdXMgYmFkbHkgaW4gY2FzZSBm bGFzaCBXQS4gSSB3YXMNCj4gPj4gdGhpbmtpbmcgaWYgd2UgY2FuIGdldCByaWQgb2YgdGhpcyBp biB0aGUgZm9sbG93aW5nIHdheS4NCj4gPj4gPj4+Pj4NCj4gPj4gPj4+Pj4gICAgICAgU2VlbXMg bGlrZSBwZXJzaXN0aW5nIGhlYWRlcnMgZHVyaW5nIGNyZWF0aW9uIHRpbWUNCj4gPj4gPj4+Pj4g c2hvdWxkIGJlDQo+ID4+IHN1ZmZpY2llbnQuIFRoZSByZWFzb24gaXMgdGhlIGZvbGxvd2luZy4u DQo+ID4+ID4+Pj4+ICAgICAgICBhLiBUaGUgaGVhZGVyLT5zZXEgZm9yIGdlbmVyYXRpbmcgcHJl Zml4IHdpbGwgYmUNCj4gPj4gPj4+Pj4gd3JpdHRlbiBvbmx5IHdoZW4NCj4gPj4gaGVhZGVyIGlz IGdlbmVyYXRlZC4gU28sIGlmIHdlIHdhbnQgdG8gdXNlIHRoZSBfU0VRICogYXMgcHJlZml4LCB3 ZQ0KPiA+PiBjYW4gcmVhZCB0aGUgaGVhZGVyIGFuZCB1c2UgaXQgZHVyaW5nIHdyaXRlLg0KPiA+ PiA+Pj4+PiAgICAgICAgYi4gSSB0aGluayB3ZSBkb24ndCBuZWVkIHRoZSBzdHJpcGUgYml0bWFw L2hlYWRlci0NCj4gPj4gPm1heF9sZW4vc3RyaXBlX3NpemUgYXMgd2VsbC4gVGhlIGJpdG1hcCBp cyByZXF1aXJlZCB0byBkZXRlcm1pbmUNCj4gPj4gPnRoZQ0KPiA+PiBhbHJlYWR5IHdyaXR0ZW4g ZXh0ZW50cyBmb3IgYSB3cml0ZS4gTm93LCBhbnkgSy9WIGRiIHN1cHBvcnRpbmcNCj4gPj4gcmFu Z2UgcXVlcmllcyAoYW55IHBvcHVsYXIgZGIgZG9lcyksIHdlIGNhbiBhbHdheXMgc2VuZCBkb3du DQo+ID4+ID4+Pj4+ICAgICAgICAgICAgcmFuZ2UgcXVlcnkgd2l0aCBwcmVmaXggc2F5DQo+ID4+ ID4+Pj4+IF9TRVFfMDAwMDAwMDAwMDAzOTQ2OF9TVFJJUF8NCj4gPj4gYW5kIGl0IHNob3VsZCBy ZXR1cm4gdGhlIHZhbGlkIGV4dGVudHMuIE5vIGV4dHJhIHJlYWRzIGhlcmUgc2luY2UNCj4gPj4g YW55d2F5IHdlIG5lZWQgdG8gcmVhZCB0aG9zZSBleHRlbnRzIGluIHJlYWQvd3JpdGUgcGF0aC4N Cj4gPj4gPj4+Pj4NCj4gPj4gPj4+Pg0KPiA+PiA+Pj4+IEZyb20gbXkgbWluZCwgSSB0aGluayBu b3JtYWwgSU8gd29uJ3QgYWx3YXlzIHdyaXRlIGhlYWRlciEgSWYNCj4gPj4gPj4+PiB5b3UNCj4g Pj4gbm90aWNlIGxvdHMgb2YgaGVhZGVyIHdyaXR0ZW4sIG1heWJlIHNvbWUgY2FzZXMgd3Jvbmcg YW5kIG5lZWQgdG8gZml4Lg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4gV2UgaGF2ZSBhICJ1cGRhdGVk IiBmaWVsZCB0byBpbmRpY2F0b3Igd2hldGhlciB3ZSBuZWVkIHRvDQo+ID4+ID4+Pj4gd3JpdGUN Cj4gPj4gZ2hvYmplY3RfdCBoZWFkZXIgZm9yIGVhY2ggdHJhbnNhY3Rpb24uIE9ubHkgICJtYXhf c2l6ZSIgYW5kICJiaXRzIg0KPiA+PiA+Pj4+IGNoYW5nZWQgd2lsbCBzZXQgInVwZGF0ZT10cnVl IiwgaWYgd2Ugd3JpdGUgd2FybSBkYXRhIEkgZG9uJ3QNCj4gPj4gPj4+PiB3ZSB3aWxsDQo+ID4+ IHdyaXRlIGhlYWRlciBhZ2Fpbi4NCj4gPj4gPj4+Pg0KPiA+PiA+Pj4+IEhtbSwgbWF5YmUgImJp dHMiIHdpbGwgYmUgY2hhbmdlZCBvZnRlbiBzbyBpdCB3aWxsIHdyaXRlIHRoZQ0KPiA+PiA+Pj4+ IHdob2xlDQo+ID4+IGhlYWRlciBhZ2FpbiB3aGVuIGRvaW5nIGZyZXNoIHdyaXRpbmcuIEkgdGhp bmsgYSBmZWFzaWJsZSB3YXkgaXMNCj4gPj4gc2VwYXJhdGUgImJpdHMiIGZyb20gaGVhZGVyLiBU aGUgc2l6ZSBvZiAiYml0cyIgdXN1YWxseSBpcw0KPiA+PiA1MTItMTAyNChvciBtb3JlIGZvciBs YXJnZXINCj4gPj4gb2JqZWN0KSBieXRlcywgSSB0aGluayBpZiB3ZSBmYWNlIGJhcmVtZXRhbCBz c2Qgb3IgYW55IGJhY2tlbmQNCj4gPj4gcGFzc3Rocm91Z2ggbG9jYWxmcy9zY3NpLCB3ZSBjYW4g c3BsaXQgYml0cyB0byBzZXZlcmFsIGZpeGVkIHNpemUNCj4gPj4ga2V5cy4gSWYgc28gd2UgY2Fu IGF2b2lkIG1vc3Qgb2YgaGVhZGVyIHdyaXRlLg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4gW1NvbW5h dGhdIFllcywgYmVjYXVzZSBvZiBiaXRtYXAgdXBkYXRlLCBpdCBpcyByZXdyaXRpbmcNCj4gPj4g Pj4+PiBoZWFkZXIgb24NCj4gPj4gZWFjaCB0cmFuc2FjdGlvbi4gSSBkb24ndCB0aGluayBzZXBh cmF0aW5nIGJpdHMgZnJvbSBoZWFkZXIgd2lsbA0KPiA+PiBoZWxwIG11Y2ggYXMgYW55IHNtYWxs IHdyaXRlIHdpbGwgaW5kdWNlIGZsYXNoIGxvZ2ljYWwgcGFnZSBzaXplDQo+ID4+IGFtb3VudCB3 cml0ZSBmb3IgbW9zdCBvZiB0aGUgZGJzIHVubGVzcyB0aGV5IGFyZSBkb2luZyBzb21lDQo+ID4+ IG9wdGltaXphdGlvbg0KPiBpbnRlcm5hbGx5Lg0KPiA+PiA+Pg0KPiA+PiA+PiBJIGp1c3QgdGhp bmsgd2UgbWF5IGNvdWxkIHRoaW5rIG1ldGFkYXRhIHVwZGF0ZSBlc3BlY2lhbGx5ICJiaXRzIg0K PiA+PiA+PiBhcw0KPiA+PiBqb3VybmFsLiBTbyBpZiB3ZSBoYXZlIGEgc3VibWl0X3RyYW5zYWN0 aW9uIHdoaWNoIHdpbGwgdG9nZXRoZXIgYWxsICJiaXRzIg0KPiA+PiB1cGRhdGUgdG8gYSByZXF1 ZXN0IGFuZCBmbHVzaCB0byBhIGZvcm1hdGUga2V5IG5hbWVkIGxpa2UNCj4gPj4gImJpdHMtam91 cm5hbC0gW3NlcV0iLiBXZSBjb3VsZCBhY3R1YWxseSB3cml0ZWJhY2sgaW5wbGFjZSBoZWFkZXIN Cj4gPj4gdmVyeSBsYXRlLiBJdCBjb3VsZCBoZWxwIEkgdGhpbmsuDQo+ID4+ID4+DQo+ID4+ID4+ Pg0KPiA+PiA+Pj4gWWVhaCwgYnV0IHdlIGNhbid0IGdldCByaWQgb2YgaXQgaWYgd2Ugd2FudCB0 byBpbXBsZW1lbnQgYQ0KPiA+PiA+Pj4gc2ltcGxlIGxvZ2ljIG1hcHBlciBpbiBrZXl2YWx1ZXN0 b3JlIGxheWVyLiBPdGhlcndpc2UsIHdlIG5lZWQNCj4gPj4gPj4+IHRvIHJlYWQgYWxsIGtleXMg Z28gZG93biB0byB0aGUgYmFja2VuZC4NCj4gPj4gPj4+DQo+ID4+ID4+Pj4+DQo+ID4+ID4+Pj4+ IDIuIEkgd2FzIHRoaW5raW5nIG5vdCB0byByZWFkIHRoaXMgR0hvYmplY3QgYXQgYWxsIGR1cmlu Zw0KPiA+PiA+Pj4+PiByZWFkL3dyaXRlDQo+IHBhdGguDQo+ID4+IEZvciB0aGF0LCB3ZSBuZWVk IHRvIGdldCByaWQgb2YgdGhlIFNFUSBzdHVmZiBhbmQgY2FsY3VsYXRlIHRoZQ0KPiA+PiBvYmpl Y3Qga2V5cyBvbiB0aGUgZmx5LiBXZSBjYW4gdW5pcXVlbHkgZm9ybSB0aGUgR0hPYmplY3Qga2V5 cyBhbmQNCj4gPj4gYWRkIHRoYXQgYXMgcHJlZml4IHRvIGF0dHJpYnV0ZXMgbGlrZSB0aGlzLg0K PiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+Pg0KPiA+Pg0KPiBfR0hPQkpUT1NFUV8xJWU1OV9oZWFkITlE RDI5QjY4ISExISFyYmRfZGF0YSVlMTAwNTc0YjBkYzUxJWUwMA0KPiA+PiAwMDAwMDAwMDAwYzE4 YSFoZWFkICAgICAtLS0tLT4gZm9yIGhlYWRlciAod2lsbCBiZSBjcmVhdGVkIG9uZSB0aW1lKQ0K PiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+Pg0KPiA+Pg0KPiBfR0hPQkpUT1NFUV8xJWU1OV9oZWFkITlE RDI5QjY4ISExISFyYmRfZGF0YSVlMTAwNTc0YjBkYzUxJWUwMA0KPiA+PiAwMDAwDQo+ID4+ID4+ Pj4+IDANCj4gPj4gPj4+Pj4gMA0KPiA+PiA+Pj4+PiAwMCAwMGMxOGEhaGVhZCBfX09CSk9NQVAg KiAtPiBmb3IgYWxsIG9tYXAgYXR0cmlidXRlcw0KPiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+Pg0KPiA+ Pg0KPiBfR0hPQkpUT1NFUV8xJWU1OV9oZWFkITlERDI5QjY4ISExISFyYmRfZGF0YSVlMTAwNTc0 YjBkYzUxJWUwMA0KPiA+PiAwMDAwMDAwMDAwYzE4YSFoZWFkX19PQkpBVFRSX18qICAtPiBmb3Ig YWxsIGF0dHJzDQo+ID4+ID4+Pj4+DQo+ID4+DQo+IF9HSE9CSlRPU0VRXzElZTU5X2hlYWQhOURE MjlCNjghITEhIXJiZF9kYXRhJWUxMDA1NzRiMGRjNTElZTAwDQo+ID4+IDAwMDAwMDAwMDBjMThh IWhlYWRfX1NUUklQXzxzdHJpcGUtbm8+IC0+IGZvciBhbGwgc3RyaXBzLg0KPiA+PiA+Pj4+Pg0K PiA+PiA+Pj4+PiAgQWxzbywga2VlcGluZyB0aGUgc2ltaWxhciBwcmVmaXggdG8gYWxsIHRoZSBr ZXlzIGZvciBhbg0KPiA+PiA+Pj4+PiBvYmplY3Qgd2lsbCBiZQ0KPiA+PiBoZWxwaW5nIGsvdiBk YnMgaW4gZ2VuZXJhbCBhcyBsb3Qgb2YgZGJzIGRvIG9wdGltaXphdGlvbiBiYXNlZCBvbg0KPiA+ PiBzaW1pbGFyIGtleSBwcmVmaXguDQo+ID4+ID4+Pj4NCj4gPj4gPj4+PiBXZSBjYW4ndCBnZXQg cmlkIG9mIGhlYWRlciBsb29rIEkgdGhpbmssIGJlY2F1c2Ugd2UgbmVlZCB0bw0KPiA+PiA+Pj4+ IGNoZWNrIHRoaXMNCj4gPj4gb2JqZWN0IGlzIGV4aXN0ZWQgYW5kIHRoaXMgaXMgcmVxdWlyZWQg YnkgT2JqZWN0U3RvcmUgc2VtYW50aWMuIERvDQo+ID4+IHlvdSB0aGluayB0aGlzIHdpbGwgYmUg Ym90dGxlbmVjayBmb3IgcmVhZC93cml0ZSBwYXRoPyBGcm9tIG15DQo+ID4+IHZpZXcsIGlmIEkg aW5jcmVhc2Uga2V5dmFsdWVzdG9yZV9oZWFkZXJfY2FjaGVfc2l6ZSB0byB2ZXJ5IGxhcmdlDQo+ ID4+IG51bWJlciBsaWtlIDEwMjQwMCwgYWxtb3N0IG9mIGhlYWRlciBzaG91bGQgYmUgY2FjaGVk IGlubWVtb3J5Lg0KPiA+PiBLZXlWYWx1ZVN0b3JlIHVzZXMgUmFuZG9tQ2FjaGUgdG8gc3RvcmUg aGVhZGVyIGNhY2hlLCBpdCBzaG91bGQgYmUNCj4gPj4gY2hlYXBlci4gQW5kIGhlYWRlciBpbiBL ZXlWYWx1ZVN0b3JlIGlzIGFsaWtlICJmaWxlIGRlc2NyaXB0b3IiIGluDQo+ID4+IGxvY2FsIGZz LCBhIGxhcmdlIGhlYWRlciBjYWNoZSBzaXplIGlzIGVuY291cmFnZWQgc2luY2UgImhlYWRlciIg aXMNCj4gbGlnaHR3ZWlnaHQgY29tcGFyZWQgdG8gaW5vZGUuDQo+ID4+ID4+Pj4NCj4gPj4gPj4+ PiBbU29tbmF0aF0gTm9wZSwgc28gZmFyIEkgYW0gbm90IHNlZWluZyB0aGlzIGFzIGEgYm90dGxl bmVjaywNCj4gPj4gPj4+PiBidXQNCj4gPj4gdGhpbmtpbmcgaWYgd2UgY2FuIGdldCByaWQgb2Yg ZXh0cmEgcmVhZCBhbHdheXMuLkluIG91ciBjYXNlIG9uZQ0KPiA+PiBPU0Qgd2lsbCBzZXJ2ZSB+ OFRCIG9mIHN0b3JhZ2UsIHNvLCB0byBjYWNoZSBhbGwgdGhlc2UgaGVhZGVycyBpbg0KPiA+PiBt ZW1vcnkgd2UgbmVlZCB+NDIwTUIgKGNvbnNpZGVyaW5nIGRlZmF1bHQgNE1CIHJhZG9zIG9iamVj dCBzaXplDQo+ID4+IGFuZCBoZWFkZXIgc2l6ZSBpcyB+MjAwYnl0ZXMpLCB3aGljaCBpcyBraW5k IG9mIGJpZy4gU28sIEkgdGhpbmsNCj4gPj4gdGhlcmUgd2lsbCBiZSBzb21lIGRpc2sNCj4gcmVh ZCBhbHdheXMuDQo+ID4+ID4+Pj4gSSB0aGluayBqdXN0IHF1ZXJ5aW5nIHRoZSBwYXJ0aWN1bGFy IG9iamVjdCBzaG91bGQgcmV2ZWFsDQo+ID4+ID4+Pj4gd2hldGhlciBvYmplY3QNCj4gPj4gZXhp c3RzIG9yIG5vdC4gTm90IHN1cmUgaWYgd2UgbmVlZCB0byB2ZXJpZnkgaGVhZGVycyBhbHdheXMg aW4gdGhlDQo+ID4+IGlvIHBhdGggdG8gZGV0ZXJtaW5lIGlmIG9iamVjdCBleGlzdHMgb3Igbm90 LiBJIGtub3cgaW4gY2FzZSBvZg0KPiA+PiBvbWFwIGl0IGlzIGltcGxlbWVudGVkIGxpa2UgdGhh dCwgYnV0LCBJIGRvbid0IGtub3cgd2hhdCBiZW5lZml0IHdlDQo+ID4+IGFyZSBnZXR0aW5nIGJ5 DQo+IGRvaW5nIHRoYXQuDQo+ID4+ID4+Pj4NCj4gPj4gPj4+Pj4NCj4gPj4gPj4+Pj4gMy4gV2Ug Y2FuIGFnZ3JlZ2F0ZSB0aGUgc21hbGwgd3JpdGVzIGluIHRoZSBidWZmZXINCj4gPj4gPj4+Pj4g dHJhbnNhY3Rpb24gYW5kDQo+ID4+IGlzc3VlIG9uZSBzaW5nbGUga2V5L3ZhbHVlIHdyaXRlIHRv IHRoZSBkYnMuIElmIGRicyBhcmUgYWxyZWFkeQ0KPiA+PiBkb2luZyBzbWFsbCB3cml0ZSBhZ2dy ZWdhdGlvbiAsIHRoaXMgd29uJ3QgaGVscCBtdWNoIHRob3VnaC4NCj4gPj4gPj4+Pg0KPiA+PiA+ Pj4+IFllcywgaXQgY291bGQgYmUgZG9uZSBqdXN0IGxpa2UgTmV3U3RvcmUgZGlkISBTbw0KPiA+ PiA+Pj4+IGtleXZhbHVlc3RvcmUncyBwcm9jZXNzDQo+ID4+IGZsYXcgd2lsbCBiZSB0aGlzOg0K PiA+PiA+Pj4+DQo+ID4+ID4+Pj4gc2V2ZXJhbCBwZyB0aHJlYWRzOiBxdWV1ZV90cmFuc2FjdGlv bg0KPiA+PiA+Pj4+ICAgICAgICAgICAgICAgfA0KPiA+PiA+Pj4+ICAgICAgICAgICAgICAgfA0K PiA+PiA+Pj4+IHNldmVyYWwga2V5dmFsdWVzdG9yZSBvcCB0aHJlYWRzOiBkb190cmFuc2FjdGlv bg0KPiA+PiA+Pj4+ICAgICAgICAgICAgICAgfA0KPiA+PiA+Pj4+IGtleXZhbHVlc3RvcmUgc3Vi bWl0IHRocmVhZDogY2FsbCBkYi0+c3VibWl0X3RyYW5zYWN0aW9uX3N5bmMNCj4gPj4gPj4+Pg0K PiA+PiA+Pj4+IFNvIHRoZSBiYW5kd2lkdGggc2hvdWxkIGJlIGJldHRlci4NCj4gPj4gPj4+Pg0K PiA+PiA+Pj4+IEFub3RoZXIgb3B0aW1pemF0aW9uIHBvaW50IGlzIHJlZHVjaW5nIGxvY2sgZ3Jh bnVsYXJpdHkgdG8NCj4gPj4gPj4+PiBvYmplY3QtDQo+ID4+IGxldmVsKGN1cnJlbnRseSBpcyBw ZyBsZXZlbCksIEkgdGhpbmsgaWYgd2UgdXNlIGEgc2VwYXJ0b3Igc3VibWl0DQo+ID4+IHRocmVh ZCBpdCB3aWxsIGhlbHBmdWwgYmVjYXVzZSBtdWx0aSB0cmFuc2FjdGlvbiBpbiBvbmUgcGcgd2ls bCBiZQ0KPiA+PiBxdWV1ZWQgaW4NCj4gb3JkZXJpbmcuDQo+ID4+ID4+Pj4gW1NvbW5hdGhdIFll YWguLlRoYXQgSSByYWlzZWQgZWFybGllciwgYnV0LCBpdCBzZWVtcyBxdWl0ZSBhDQo+ID4+ID4+ Pj4gZmV3IGltcGFjdA0KPiA+PiBmb3IgdGhhdC4gQnV0LCBpdCB3b3J0aCB0cnlpbmcuLk1heSBi ZSBuZWVkIHRvIGRpc2N1c3Mgd2l0aCBTYWdlL1NhbS4NCj4gPj4gPj4+DQo+ID4+ID4+PiBDb29s IQ0KPiA+PiA+Pj4NCj4gPj4gPj4+Pg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4+DQo+ID4+ID4+Pj4+ IFBsZWFzZSBzaGFyZSB5b3VyIHRob3VnaHQgYXJvdW5kIHRoaXMuDQo+ID4+ID4+Pj4+DQo+ID4+ ID4+Pj4NCj4gPj4gPj4+PiBJIGFsd2F5cyByZXRoaW5rIHRvIGltcHJvdmUga2V5dmFsdWVzdG9y ZSBwZXJmb3JtYW5jZSwgYnV0IEkNCj4gPj4gPj4+PiBkb24ndA0KPiA+PiBoYXZlIGEgZ29vZCBi YWNrZW5kIHN0aWxsIG5vdy4gQSBzc2QgdmVuZG9yIHdobyBjYW4gcHJvdmlkZSB3aXRoDQo+ID4+ IEZUTCBpbnRlcmZhY2Ugd291bGQgYmUgZ3JlYXQgSSB0aGluaywgc28gd2UgY2FuIG9mZmxvYWQg bG90cyBvZg0KPiA+PiB0aGluZ3MgdG8gRlRMDQo+IGxheWVyLg0KPiA+PiA+Pj4+DQo+ID4+ID4+ Pj4+IFRoYW5rcyAmIFJlZ2FyZHMNCj4gPj4gPj4+Pj4gU29tbmF0aA0KPiA+PiA+Pj4+Pg0KPiA+ PiA+Pj4+Pg0KPiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXw0KPiA+PiA+Pj4+Pg0KPiA+PiA+Pj4+PiBQTEVBU0UgTk9URTog VGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGVsZWN0cm9uaWMNCj4gPj4gPj4+Pj4g bWFpbA0KPiA+PiBtZXNzYWdlIGlzIGludGVuZGVkIG9ubHkgZm9yIHRoZSB1c2Ugb2YgdGhlIGRl c2lnbmF0ZWQgcmVjaXBpZW50KHMpDQo+ID4+IG5hbWVkIGFib3ZlLiBJZiB0aGUgcmVhZGVyIG9m IHRoaXMgbWVzc2FnZSBpcyBub3QgdGhlIGludGVuZGVkDQo+ID4+IHJlY2lwaWVudCwgeW91IGFy ZSBoZXJlYnkgbm90aWZpZWQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzDQo+ID4+IG1lc3Nh Z2UgaW4gZXJyb3IgYW5kIHRoYXQgYW55IHJldmlldywgZGlzc2VtaW5hdGlvbiwgZGlzdHJpYnV0 aW9uLA0KPiA+PiBvciBjb3B5aW5nIG9mIHRoaXMgbWVzc2FnZSBpcyBzdHJpY3RseSBwcm9oaWJp dGVkLiBJZiB5b3UgaGF2ZQ0KPiA+PiByZWNlaXZlZCB0aGlzIGNvbW11bmljYXRpb24gaW4gZXJy b3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBieQ0KPiA+PiB0ZWxlcGhvbmUgb3IgZS1tYWls IChhcyBzaG93biBhYm92ZSkgaW1tZWRpYXRlbHkgYW5kIGRlc3Ryb3kgYW55DQo+ID4+IGFuZCBh bGwgY29waWVzIG9mIHRoaXMgbWVzc2FnZSBpbiB5b3VyIHBvc3Nlc3Npb24gKHdoZXRoZXIgaGFy ZA0KPiA+PiBjb3BpZXMgb3IgZWxlY3Ryb25pY2FsbHkNCj4gc3RvcmVkIGNvcGllcykuDQo+ID4+ ID4+Pj4+DQo+ID4+ID4+Pj4+IC0tDQo+ID4+ID4+Pj4+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhp cyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZQ0KPiA+PiA+Pj4+PiBjZXBoLQ0KPiBk ZXZlbCINCj4gPj4gPj4+Pj4gaW4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2 Z2VyLmtlcm5lbC5vcmcgTW9yZQ0KPiA+PiA+Pj4+PiBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDov L3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sDQo+ID4+ID4+Pj4NCj4gPj4gPj4+ Pg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4gLS0NCj4gPj4gPj4+PiBCZXN0IFJlZ2FyZHMsDQo+ID4+ ID4+Pj4NCj4gPj4gPj4+PiBXaGVhdA0KPiA+PiA+Pj4NCj4gPj4gPj4+DQo+ID4+ID4+Pg0KPiA+ PiA+Pj4gLS0NCj4gPj4gPj4+IEJlc3QgUmVnYXJkcywNCj4gPj4gPj4+DQo+ID4+ID4+PiBXaGVh dA0KPiA+PiA+Pg0KPiA+PiA+Pg0KPiA+PiA+Pg0KPiA+PiA+PiAtLQ0KPiA+PiA+PiBCZXN0IFJl Z2FyZHMsDQo+ID4+ID4+DQo+ID4+ID4+IFdoZWF0DQo+ID4+ID4+IC0tDQo+ID4+ID4+IFRvIHVu c3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBjZXBo LWRldmVsIg0KPiA+PiA+PiBpbiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZn ZXIua2VybmVsLm9yZyBNb3JlDQo+ID4+IG1ham9yZG9tbw0KPiA+PiA+PiBpbmZvIGF0ICBodHRw Oi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwNCj4gPj4gPg0KPiA+PiA+DQo+ ID4+ID4NCj4gPj4gPiAtLQ0KPiA+PiA+IEJlc3QgUmVnYXJkcywNCj4gPj4gPg0KPiA+PiA+IFdo ZWF0DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0tDQo+ID4+IEJlc3QgUmVnYXJkcywNCj4gPj4N Cj4gPj4gV2hlYXQNCj4gPj4gLS0NCj4gPj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6 IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGNlcGgtZGV2ZWwiDQo+ID4+IGluIHRoZSBib2R5 IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUNCj4gbWFqb3Jk b21vDQo+ID4+IGluZm8gYXQgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5o dG1sDQo+ID4NCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+DQo+ID4g UExFQVNFIE5PVEU6IFRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhpcyBlbGVjdHJvbmlj IG1haWwNCj4gPiBtZXNzYWdlIGlzDQo+IGludGVuZGVkIG9ubHkgZm9yIHRoZSB1c2Ugb2YgdGhl IGRlc2lnbmF0ZWQgcmVjaXBpZW50KHMpIG5hbWVkIGFib3ZlLg0KPiBJZiB0aGUgcmVhZGVyIG9m IHRoaXMgbWVzc2FnZSBpcyBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgeW91IGFyZQ0KPiBo ZXJlYnkgbm90aWZpZWQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIG1lc3NhZ2UgaW4gZXJy b3IgYW5kIHRoYXQNCj4gYW55IHJldmlldywgZGlzc2VtaW5hdGlvbiwgZGlzdHJpYnV0aW9uLCBv ciBjb3B5aW5nIG9mIHRoaXMgbWVzc2FnZSBpcw0KPiBzdHJpY3RseSBwcm9oaWJpdGVkLiBJZiB5 b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGNvbW11bmljYXRpb24gaW4gZXJyb3IsDQo+IHBsZWFzZSBu b3RpZnkgdGhlIHNlbmRlciBieSB0ZWxlcGhvbmUgb3IgZS1tYWlsIChhcyBzaG93biBhYm92ZSkN Cj4gaW1tZWRpYXRlbHkgYW5kIGRlc3Ryb3kgYW55IGFuZCBhbGwgY29waWVzIG9mIHRoaXMgbWVz c2FnZSBpbiB5b3VyDQo+IHBvc3Nlc3Npb24gKHdoZXRoZXIgaGFyZCBjb3BpZXMgb3IgZWxlY3Ry b25pY2FsbHkgc3RvcmVkIGNvcGllcykuDQo+ID4NCj4NCj4NCj4NCj4gLS0NCj4gQmVzdCBSZWdh cmRzLA0KPg0KPiBXaGVhdA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KDQpQ TEVBU0UgTk9URTogVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGVsZWN0cm9uaWMg bWFpbCBtZXNzYWdlIGlzIGludGVuZGVkIG9ubHkgZm9yIHRoZSB1c2Ugb2YgdGhlIGRlc2lnbmF0 ZWQgcmVjaXBpZW50KHMpIG5hbWVkIGFib3ZlLiBJZiB0aGUgcmVhZGVyIG9mIHRoaXMgbWVzc2Fn ZSBpcyBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgeW91IGFyZSBoZXJlYnkgbm90aWZpZWQg dGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIG1lc3NhZ2UgaW4gZXJyb3IgYW5kIHRoYXQgYW55 IHJldmlldywgZGlzc2VtaW5hdGlvbiwgZGlzdHJpYnV0aW9uLCBvciBjb3B5aW5nIG9mIHRoaXMg bWVzc2FnZSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkLiBJZiB5b3UgaGF2ZSByZWNlaXZlZCB0aGlz IGNvbW11bmljYXRpb24gaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBieSB0ZWxl cGhvbmUgb3IgZS1tYWlsIChhcyBzaG93biBhYm92ZSkgaW1tZWRpYXRlbHkgYW5kIGRlc3Ryb3kg YW55IGFuZCBhbGwgY29waWVzIG9mIHRoaXMgbWVzc2FnZSBpbiB5b3VyIHBvc3Nlc3Npb24gKHdo ZXRoZXIgaGFyZCBjb3BpZXMgb3IgZWxlY3Ryb25pY2FsbHkgc3RvcmVkIGNvcGllcykuDQoNCg==