Return-Path: X-Original-To: apmail-hadoop-common-user-archive@www.apache.org Delivered-To: apmail-hadoop-common-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 80DEE9D36 for ; Tue, 7 Feb 2012 15:39:39 +0000 (UTC) Received: (qmail 95225 invoked by uid 500); 7 Feb 2012 15:39:35 -0000 Delivered-To: apmail-hadoop-common-user-archive@hadoop.apache.org Received: (qmail 95131 invoked by uid 500); 7 Feb 2012 15:39:34 -0000 Mailing-List: contact common-user-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-user@hadoop.apache.org Delivered-To: mailing list common-user@hadoop.apache.org Received: (qmail 95123 invoked by uid 99); 7 Feb 2012 15:39:34 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 07 Feb 2012 15:39:34 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=MIME_BASE64_BLANKS,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of bejoy.hadoop@gmail.com designates 74.125.82.48 as permitted sender) Received: from [74.125.82.48] (HELO mail-ww0-f48.google.com) (74.125.82.48) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 07 Feb 2012 15:39:26 +0000 Received: by wgbdq13 with SMTP id dq13so7018193wgb.29 for ; Tue, 07 Feb 2012 07:39:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=x-rim-org-msg-ref-id:message-id:content-transfer-encoding:reply-to :x-priority:references:in-reply-to:sensitivity:importance:subject:to :cc:from:date:content-type:mime-version; bh=Bn22Ieln6QHOa7dzEYKY5Crthx7q0xrhCTVk5+kLqhw=; b=s7Tq8bqfCFve8kv+GbYuoiNE2fX8CflAsvj6CWw9wrnj+jxZoKXYNL/vFbumSF6ucQ 5ItiK5bUrFr7tGtTPUclshInbAUD52wRPxHPgYddQWA2/KAfCz55uhwK9TqP+ABf1Z07 n1mvfMU3pzX9mA9ob9rXFi9FoMMIGhnF9/fbA= Received: by 10.180.96.161 with SMTP id dt1mr20650370wib.13.1328629146453; Tue, 07 Feb 2012 07:39:06 -0800 (PST) Received: from 172.18.195.187 (bda-178-239-83-150.bis7.eu.blackberry.com. [178.239.83.150]) by mx.google.com with ESMTPS id y6sm20630883wix.10.2012.02.07.07.39.04 (version=SSLv3 cipher=OTHER); Tue, 07 Feb 2012 07:39:05 -0800 (PST) X-rim-org-msg-ref-id: 1336923118 Message-ID: <1336923118-1328629141-cardhu_decombobulator_blackberry.rim.net-1784442555-@b18.c2.bise7.blackberry> Content-Transfer-Encoding: base64 Reply-To: bejoy.hadoop@gmail.com X-Priority: Normal References: <1CFF9FDB-7596-4FA1-9BDE-EE0C8CB4C845@gmail.com> <79E47056-F902-438E-8F92-98847C1A1A85@gmail.com> In-Reply-To: <79E47056-F902-438E-8F92-98847C1A1A85@gmail.com> Sensitivity: Normal Importance: Normal Subject: Re: What's the best practice of loading logs into hdfs while using hive to do log analytic? To: common-user@hadoop.apache.org,user@hive.apache.org Cc: "=?utf-8?B?5L2Y5pmT5b2s?=" From: bejoy.hadoop@gmail.com Date: Tue, 7 Feb 2012 15:38:59 +0000 Content-Type: text/plain; charset="Windows-1252" MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org SGkNCiAgICBBc3N1bWUgeW91ciBleHRlcm5hbCB0YWJsZSBsb2NhdGlvbiBwb2ludHMgdG8gYW4g aGRmcyBkaXIgc2F5IC9leHRfdGFibGVzL3RhYmxlMS8geW91IGNhbiB3cml0ZSB5b3VyIGN1c3Rv bSBjb2RlIGluICBmbHVtZSB0aGF0IHdvdWxkIGluZ2VzdCBkYXRhIGludG8gc3ViIGRpciB3aXRo aW4gdGhlIHBhcmVudCBmb2xkZXIgbGlrZSAvZXh0X3RhYmxlcy90YWJsZTEvMjAxMi0wMS0wMS8x MiAoY3VycmVudERhdGUvY3VycmVudEhvdXIpIC4gQ29uZmlndXJlIGNvbGxlY3RvciB0byBkdW1w IGludG8gaGRmcyBvbiBldmVyeSBob3VyIHdpdGggYSBtYXggYnVmZmVyIG1hdGNoaW5nIHlvdXIg YmxvY2sgc2l6ZS4gU28gd2hhdCB3b3VsZCBoYXBwZW4gaXMsIHdpdGhpbiAgYW4gaG91ciBpZiB0 aGUgYnVmZmVyIGdldHMgZmlsbGVkIHRoZSBkYXRhIHdvdWxkIGJlIGR1bXBlZCBpbnRvIGhkZnMg dGhhdCBpbnN0YW50LiBOb3cgd2hhdGV2ZXIgdGhlIGJ1ZmZlciBzaXplIGlzLCBhdCB0aGUgZW5k IG9mIGV2ZXJ5IGhvdXIgZmx1bWUgd291bGQgZHVtcCBkYXRhIGludG8gaGRmcy4gQXQgZXZlcnkg aG91ciAoZ2l2ZSBhIGRlbGF5IG9mIDUgbWluIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgaWUgYXQg biBob3VyIDA1IG1pbikgaXNzdWUgYSBkZGwgb24gaGl2ZSBhcw0KYWRkIHBhcnRpdGlvbiB3aXRo IGxvY2F0aW9uIGFzIC9leHRfdGFibGVzL3RhYmxlMS9jdXJyZW50RGF0ZS9wcmV2aW91c0hvdXIg DQoNCk5vdyB0aGUgaG91ciBwYXJ0aXRpb24gbWF5IGNvbnRhaW4gb25lIG9yIG1vcmUgYmxvY2tz L2ZpbGVzIGJhc2VkIG9uIHlvdXIgaW5wdXQgZGF0YS4NCg0KSG93IHdvdWxkIHRoaXMgYXBwcm9h Y2ggZml0IHlvdXIgdXNlIGNhc2U/DQogDQpSZWdhcmRzDQpCZWpveSBLIFMNCg0KRnJvbSBoYW5k aGVsZCwgUGxlYXNlIGV4Y3VzZSB0eXBvcy4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N CkZyb206IGFsbyBhbHQgPHdnZXQubnVsbEBnb29nbGVtYWlsLmNvbT4NCkRhdGU6IFR1ZSwgNyBG ZWIgMjAxMiAxNToyNzoxOCANClRvOiA8dXNlckBoaXZlLmFwYWNoZS5vcmc+DQpSZXBseS1Ubzog Y29tbW9uLXVzZXJAaGFkb29wLmFwYWNoZS5vcmcNCkNjOiA8Y29tbW9uLXVzZXJAaGFkb29wLmFw YWNoZS5vcmc+OyDkvZjmmZPlvaw8eGlhb2JpbnNoZUBnbWFpbC5jb20+DQpTdWJqZWN0OiBSZTog V2hhdCdzIHRoZSBiZXN0IHByYWN0aWNlIG9mIGxvYWRpbmcgbG9ncyBpbnRvIGhkZnMgd2hpbGUg dXNpbmcgaGl2ZSB0byBkbyBsb2cgYW5hbHl0aWM/DQoNClllcy4gDQpZb3UgY2FuIHVzZSBwYXJ0 aXRpb25lZCB0YWJsZXMgaW4gaGl2ZSB0byBhcHBlbmQgaW4gYSBuZXcgdGFibGUgd2l0aG91dCBt b3ZpbmcgdGhlIGRhdGEuIEZvciBmbHVtZSB5b3UgY2FuIGRlZmluZSBzbWFsbCBzaW5rcywgYnV0 IHlvdSdyZSByaWdodCwgdGhlIGZpbGUgaW4gaGRmcyBpcyBjbG9zZWQgYW5kIHdyaXR0ZW4gd2hl biBmbHVtZSBzZW5kIHRoZSBjbG9zaW5nLiBQbGVhc2Ugbm90ZSwgdGhlIGd6aXAgY29kZWMgaGFz IG5vIG1hcmtlciBpbnNpZGUgc28geW91IGhhdmUgdG8gd2FpdCB0aWxsIGZsdW1lIGhhcyBjbG9z aW5nIHRoZSBmaWxlIGluIGhkZnMgYmVmb3JlIHlvdSBjYW4gcHJvY2VzcyB0aGVtLiBTbmFwcHkg d291bGQgZml0LCBidXQgSSBoYXZlIG5vIGxvbmd0aW1lIHRlc3RzIHdpdGhpbiBhbiBwcm9kdWN0 aXZlIGVudmlyb25tZW50LiANCg0KRm9yIGJsb2Nrc2l6aW5nIHlvdSdyZSByaWdodCwgYnV0IEkg dGhpbmsgdGhhdCB5b3UgY2FuIG1vdmUgYmVoaW5kLiANCg0KLS0NCkFsZXhhbmRlciBMb3JlbnoN Cmh0dHA6Ly9tYXByZWRpdC5ibG9nc3BvdC5jb20NCg0KT24gRmViIDcsIDIwMTIsIGF0IDM6MDkg UE0sIFhpYW9iaW4gU2hlIHdyb3RlOg0KDQo+IGhpIEJlam95IGFuZCBBbGV4LA0KPiANCj4gdGhh bmsgeW91IGZvciB5b3VyIGFkdmljZS4NCj4gDQo+IEFjdHVhbGx5IEkgaGF2ZSBsb29rIGF0IFNj cmliZSBmaXJzdCwgYW5kIEkgaGF2ZSBoZWFyZCBvZiBGbHVtZS4NCj4gDQo+IEkgbG9vayBhdCBm bHVtZSdzIHVzZXIgZ3VpZGUganVzdCBub3csIGFuZCBmbHVtZSBzZWVtcyBwcm9taXNpbmcsIGFz IEJlam95IHNhaWQgLCB0aGUgZmx1bWUgY29sbGVjdG9yIGNhbiBkdW1wIGRhdGEgaW50byBoZGZz IHdoZW4gdGhlIGNvbGxlY3RvciBidWZmZXIgcmVhY2hlcyBhIHBhcnRpY3VsYXIgc2l6ZSBvZiBh ZnRlciBhIHBhcnRpY3VsYXIgdGltZSBpbnRlcnZhbCwgdGhpcyBpcyBnb29kIGFuZCBJIHRoaW5r IGl0IGNhbiBzb2x2ZSB0aGUgcHJvYmxlbSBvZiBkYXRhIGRlbGl2ZXJ5IGxhdGVuY3kuDQo+IA0K PiBCdXQgd2hhdCBhYm91dCBjb21wcmVzcz8NCj4gDQo+IGZyb20gdGhlIHVzZXIncyBndWlkZSBv ZiBmbHVtZSwgSSBzZWUgdGhhdCBmbHVtIHN1cHBvcnRzIGNvbXByZXNzaW9uICBvZiBsb2cgZmls ZXMsIGJ1dCBpZiBmbHVtZSBkaWQgbm90IHdhaXQgdW50aWwgdGhlIGNvbGxlY3RvciBoYXMgY29s bGVjdCBvbmUgaG91ciBvZiBsb2cgYW5kIHRoZW4gY29tcHJlc3MgaXQgYW5kIHNlbmQgaXQgdG8g aGRmcywgdGhlbiBpdCB3aWxsICBzZW5kIHBhcnQgb2YgdGhlIG9uZSBob3VyIGxvZyB0byBoZGZz LCBhbSBJIHJpZ2h0Pw0KPiANCj4gc28gaWYgSSB3YW50IHRvIHVzZSB0aGVzdCBkYXRhIGluIGhp dmUgKGFzc3VtZSBJIGhhdmUgYW4gZXh0ZXJuYWwgdGFibGUgaW4gaGl2ZSksIEkgaGF2ZSB0byBz cGVjaWZ5IGF0IGxlYXN0IHR3byBwYXJ0aXRvbiBrZXkgd2hpbGUgY3JlYXRpbmcgdGFibGUsIG9u ZSBmb3IgZGF5LW1vbnRoLWhvdXIsIGFuZCBvbmUgZm9yIHNvbWUgb3RoZXIgdGltZSBpbnRlcnZh bCBsaWtlIHRlbiBtaW5pdXRlcywgdGhlbiBJIGFkZCBoaXZlIHBhcnRpdGlvbiB0byB0aGUgZXhp c3RlZCBleHRlcm5hbCB0YWJsZSB3aXRoIHNwZWNpZmllZCBwYXJ0aXRpb24ga2V5Lg0KPiANCj4g SXMgdGhlIGFib3ZlIHByb2Nlc3MgcmlnaHQgPw0KPiANCj4gSWYgdGhpcyByaWdodCwgdGhlbiB0 aGVyZSBjb3VsZCBiZSBzb21lIG90aGVyIHByb2JsZW0sIGxpa2UgdGhlIHRlbiBtaW5pdXRlIGxv Z3MgYWZ0ZXIgY29tcHJlc3MgaXMgbm90IGJpZyBlbm91Z2ggdG8gZml0IHRoZSBibG9jayBzaXpl IG9mIGhkZnMgd2hpY2ggbWF5IGNvdXNlIGxvdHMgb2Ygc21hbGwgZmlsZXMgKCBmb3Igc29tZSBv ZiBvdXIgbG9nIGlkLCB0aGlzIG1heSBjb21lIHRydWUpLCBvciBpZiBJIHNldCB0aGUgdGltZSBp bnRlcnZhbCB0byBiZSBoYWxmIGFuIGhvdXIsIHRoZW4gYXQgdGhlIGVuZCBvZiBob3VyLCBpdCBt YXkgc3RpbGwgY2F1c2UgdGhlIGRhdGEgZGVsaXZlcnkgbGF0ZW5jeSBwcm9ibGVtLg0KPiANCj4g dGhpcyBzZWVtcyBub3QgYSB2ZXJ5IGdvb2Qgc29sdXRpb24sIGFtIEkgbWFraW5nIHNvbWUgbWlz dGFrZXMgb3IgbWlzdW5kZXJzdGFuZGluZyBoZXJlPw0KPiANCj4gdGhhbmsgeW91IHZlcnkgbXVj aCENCj4gDQo+IA0KPiANCj4gDQo+IA0KPiAyMDEyLzIvNyBhbG8gYWx0IDx3Z2V0Lm51bGxAZ29v Z2xlbWFpbC5jb20+DQo+IEhpLA0KPiANCj4gYSBmaXJzdCBzdGFydCB3aXRoIGZsdW1lOg0KPiBo dHRwOi8vbWFwcmVkaXQuYmxvZ3Nwb3QuY29tLzIwMTEvMTAvY2VudHJhbGl6ZWQtbG9nZmlsZS1t YW5hZ2VtZW50LWFjcm9zcy5odG1sDQo+IA0KPiBGYWNlYm9vaydzIHNjcmliZSBjb3VsZCBhbHNv IGJlIHdvcmsgZm9yIHlvdS4NCj4gDQo+IC0gQWxleA0KPiANCj4gLS0NCj4gQWxleGFuZGVyIExv cmVueg0KPiBodHRwOi8vbWFwcmVkaXQuYmxvZ3Nwb3QuY29tDQo+IA0KPiBPbiBGZWIgNywgMjAx MiwgYXQgMTE6MDMgQU0sIFhpYW9iaW4gU2hlIHdyb3RlOg0KPiANCj4gPiBIaSBhbGwsDQo+ID4N Cj4gPiBTb3JyeSBpZiBpdCBpcyBub3QgYXBwcm9wcmlhdGUgdG8gc2VuZCBvbmUgdGhyZWFkIGlu dG8gdHdvIG1haWxsaXN0Lg0KPiA+ICoqDQo+ID4gSSdtIHRyaW5nIHRvIHVzZSBoYWRvb3AgYW5k IGhpdmUgdG8gZG8gc29tZSBsb2cgYW5hbHl0aWMgam9icy4NCj4gPg0KPiA+IE91ciBzeXN0ZW0g Z2VuZXJhdGUgbG90cyBvZiBsb2dzIGV2ZXJ5IGRheSwgZm9yIGV4YW1wbGUsIGl0IHByb2R1Y2Ug YWJvdXQNCj4gPiAzNzBHQiBsb2dzKGluY2x1ZGluZyBsb3RzIG9mIGxvZyBmaWxlcykgeWVzdGVy ZGF5LCBhbmQgZXZlcnkgZGF5IHRoZSBsb2dzDQo+ID4gaW5jcmVhc2VzLg0KPiA+DQo+ID4gQW5k IHdlIHdhbnQgdG8gdXNlIGhhZG9vcCBhbmQgaGl2ZSB0byByZXBsYWNlIG91ciBvbGQgbG9nIGFu YWx5c2ljIHN5c3RlbS4NCj4gPg0KPiA+IFdlIGRpc3Rpbmd1aXNoIG91ciBsb2dzIHdpdGggbG9n aWQsIHdlIGhhdmUgYW4gbG9nIGNvbGxlY3RvciB3aGljaCB3aWxsDQo+ID4gY29sbGVjdCBsb2dz IGZyb20gY2xpZW50cyBhbmQgdGhlbiBnZW5lcmF0ZSBsb2cgZmlsZXMuDQo+ID4NCj4gPiBmb3Ig ZXZlcnkgbG9naWQsIHRoZXJlIHdpbGwgYmUgb25lIGxvZyBmaWxlIGV2ZXJ5IGhvdXIsIGZvciBz b21lIGxvZ2lkLA0KPiA+IHRoaXMgaG91cmx5IGxvZyBmaWxlIGNhbiBiZSAxfjJHQg0KPiA+DQo+ ID4gSSBoYXZlIHNldCB1cCBhbiB0ZXN0IGNsdXN0ZXIgd2l0aCBoYWRvb3AgYW5kIGhpdmUsIGFu ZCBJIGhhdmUgcnVuIHNvbWUNCj4gPiB0ZXN0IHdoaWNoIHNlZW1zIGdvb2QgZm9yIHVzLg0KPiA+ DQo+ID4gRm9yIHJlZmVyZW5jZSwgd2Ugd2lsbCBjcmVhdGUgb25lIHRhYmxlIGluIGhpdmUgZm9y IGV2ZXJ5IGxvZ2lkIHdoaWNoIHdpbGwNCj4gPiBiZSBwYXJ0aXRvbmVkIGJ5IGhvdXIuDQo+ID4N Cj4gPiBOb3cgSSBoYXZlIGEgcXVlc3Rpb24sIHdoYXQncyB0aGUgYmVzdCBwcmFjdGljZSBmb3Ig bG9hZGluZyBsb2dzIGZpbGVzIGludG8NCj4gPiBoZGZzIG9yIGhpdmUgd2FyZWhvdXNlIGRpciA/ DQo+ID4NCj4gPiBNeSBmaXJzdCB0aG91Z2h0IGlzLCAgYXQgdGhlIGJlZ2luaW5nIG9mIGV2ZXJ5 IGhvdXIsICBjb21wcmVzcyB0aGUgbG9nIGZpbGUNCj4gPiBvZiB0aGUgbGFzdCBob3VyIG9mIGV2 ZXJ5IGxvZ2lkIGFuZCB0aGVuIHVzZSB0aGUgaGl2ZSBjbWQgdG9vbCB0byBsb2FkDQo+ID4gdGhl c2UgY29tcHJlc3NlZCBsb2cgZmlsZXMgaW50byBoZGZzLg0KPiA+DQo+ID4gdXNpbmcgIGNvbW1h bmRzIGxpa2UgIkxPQUQgREFUQSBMT0NBTCBpbnBhdGggJyRsb2duYW1lJyBPVkVSV1JJVEUgIElO VE8NCj4gPiBUQUJMRSAkdGFibGVuYW1lIFBBUlRJVElPTiAoZHQ9JyRoJykgIg0KPiA+DQo+ID4g SSB0aGluayB0aGlzIGNhbiB3b3JrLCBhbmQgSSBoYXZlIHJ1biBzb21lIHRlc3Qgb24gb3VyIDMt bm9kZXMgdGVzdA0KPiA+IGNsdXN0ZXJzLg0KPiA+DQo+ID4gQnV0IHRoZSBwcm9ibGVtIGlzLCB0 aGVyZSBhcmUgbG90cyBvZiBsb2dpZCB3aGljaCBtZWFucyB0aGVyZSBhcmUgbG90cyBvZg0KPiA+ IGxvZyBmaWxlcywgIHNvIGV2ZXJ5IGhvdXIgd2Ugd2lsbCBoYXZlIHRvIGxvYWQgbG90cyBvZiBm aWxlcyBpbnRvIGhkZnMNCj4gPiBhbmQgdGhlcmUgaXMgYW5vdGhlciBwcm9ibGVtLCAgd2Ugd2ls bCBydW4gaG91cmx5IGFuYWx5c2lzIGpvYiBvbiB0aGVzZQ0KPiA+IGhvdXJseSBjb2xsZWN0ZWQg bG9nIGZpbGVzLA0KPiA+IHdoaWNoIGlucm9kdWNlcyB0aGUgcHJvYmxlbSwgYmVjYXVzZSB0aGVy ZSBhcmUgbG90cyBvZiBsb2cgZmlsZXMsIGlmIHdlDQo+ID4gbG9hZCB0aGVzZSBsb2cgZmlsZXMg YXQgdGhlIHNhbWUgdGltZSBhdCB0aGUgYmVnaW5pbmcgb2YgZXZlcnkgaG91ciwgSQ0KPiA+IHRo aW5rICB0aGVyZSB3aWxsIHNvbWUgbmV0d29yayBmbG93cyBhbmQgdGhlcmUgd2lsbCBiZSBkYXRh IGRlbGl2ZXJ5DQo+ID4gbGF0ZW5jeSBwcm9ibGVtLg0KPiA+DQo+ID4gRm9yIGRhdGEgZGVsaXZl cnkgbGF0ZW5jeSBwcm9ibGVtLCBJIG1lYW4gaXQgd2lsbCB0YWtlIHNvbWUgdGltZSBmb3IgdGhl DQo+ID4gbG9nIGZpbGVzIHRvIGJlIGNvcHllZCBpbnRvIGhkZnMsICBhbmQgdGhpcyB3aWxsIGNh dXNlIG91ciBob3VybHkgbG9nDQo+ID4gYW5hbHlzaXMgam9iIHRvIHN0YXJ0IGxhdGVyLg0KPiA+ DQo+ID4gU28gSSB3YW50IHRvIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIHdyaXRlIG9yIGFwcGVuZCBs b2dzIGludG8gYW4gY29tcHJlc3NlZA0KPiA+IGZpbGUgd2hpY2ggaXMgYWxyZWFkeSBsb2NhdGVk IGluIGhkZnMsIGFuZCBJIGhhdmUgcG9zdGVkIGFuIHRocmVhZCBpbiB0aGUNCj4gPiBtYWlsaXN0 LCBhbmQgZnJvbSB3aGF0IEkgaGF2ZSBsZWFybmVkLCB0aGlzIGlzIG5vdCBwb3NzaWJsZS4NCj4g Pg0KPiA+DQo+ID4gU28sIHdoYXQncyB0aGUgYmVzdCBwcmFjdGljZSBvZiBsb2FkaW5nIGxvZ3Mg aW50byBoZGZzIHdoaWxlIHVzaW5nIGhpdmUgdG8NCj4gPiBkbyBsb2cgYW5hbHl0aWM/DQo+ID4N Cj4gPiBPciB3aGF0J3MgdGhlIGNvbW1vbiBtZXRob2RzIHRvIGhhbmRsZSBwcm9ibGVtIEkgaGF2 ZSBkZXNjcmliZSBhYm92ZT8NCj4gPg0KPiA+IENhbiBhbnlvbmUgZ2l2ZSBtZSBzb21lIGFkdmlj ZXM/DQo+ID4NCj4gPiBUaGFuayB5b3UgdmVyeSBtdWNoIGZvciB5b3VyIGhlbHAhDQo+IA0KPiAN Cg0K