From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10391 invoked by alias); 25 Sep 2002 08:51:40 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 10384 invoked from network); 25 Sep 2002 08:51:38 -0000 Received: from unknown (HELO devserv.devel.redhat.com) (66.187.233.200) by sources.redhat.com with SMTP; 25 Sep 2002 08:51:38 -0000 Received: from localhost (alexl@localhost) by devserv.devel.redhat.com (8.11.6/8.11.0) with ESMTP id g8P8pY802629; Wed, 25 Sep 2002 04:51:34 -0400 X-Authentication-Warning: devserv.devel.redhat.com: alexl owned process doing -bs Date: Wed, 25 Sep 2002 01:51:00 -0000 From: Alexander Larsson X-X-Sender: alexl@devserv.devel.redhat.com To: Eli Zaretskii cc: Elena Zannoni , , Jim Blandy Subject: Re: External debug symbols In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="279707962-497965843-1032943894=:27088" X-SW-Source: 2002-09/txt/msg00402.txt.bz2 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --279707962-497965843-1032943894=:27088 Content-Type: TEXT/PLAIN; charset=US-ASCII Content-length: 1470 On Tue, 24 Sep 2002, Eli Zaretskii wrote: > > On Mon, 23 Sep 2002, Alexander Larsson wrote: > > > > For the below, in theory is Ok, but I would suggest looking at the > > > function openp() (in source.c) and how it is used in the solib_open() > > > function in solib.c. The tricky part is going to be assuring that the > > > filename is portable, i.e. working on windows/dos systems where the > > > directory separator is '\'. Look at IS_DIR_SEPARATOR, IS_ABSOLUTE_PATH > > > in the libiberty directory. > > > > I don't want to use openp() because i don't want the first availible file. > > I want the first one that matches the checksum. I can't see how i can use > > openp() to accomplish that. > > Nevertheless, the code that analizes file names must be portable, so it > has to use IS_DIR_SEPARATOR, IS_ABSOLUTE_PATH, and the like instead of a > literal '/' etc. Oh, I missed a place where I should be using IS_DIR_SEPARATOR, new patch attached. Still, I just hardcode / when i want to add directory separators, but this seems to be common in gdb. -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a fast talking alcoholic vampire hunter who hides his scarred face behind a mask. She's a strong-willed tempestuous barmaid living homeless in New York's sewers. They fight crime! --279707962-497965843-1032943894=:27088 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="gdb_debug3.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="gdb_debug3.patch" Content-length: 24274 ZGlmZiAtLWV4Y2x1ZGUgJyp+JyAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNs dWRlICcqLnJlaicgLS1leGNsdWRlICcuIyonIC0tZXhjbHVkZSAnKi5vJyAt LWV4Y2x1ZGUgQ1ZTIC0tZXhjbHVkZSBTQ0NTIC0tZXhjbHVkZSBSQ1MgLS1l eGNsdWRlICcuKi5mbGFncycgLS1leGNsdWRlIC5jdnNpZ25vcmUgLS1leGNs dWRlIC5kZXBlbmQgLXVyIGdkYi01LjIuMS9nZGIvYWNjb25maWcuaCBnZGIt NS4yLjEuc2VwYXJhdGVfZGVidWdfc3ltYm9scy9nZGIvYWNjb25maWcuaA0K LS0tIGdkYi01LjIuMS9nZGIvYWNjb25maWcuaAlTYXQgSmFuICA1IDE5OjM2 OjMyIDIwMDINCisrKyBnZGItNS4yLjEuc2VwYXJhdGVfZGVidWdfc3ltYm9s cy9nZGIvYWNjb25maWcuaAlNb24gU2VwIDE2IDE1OjI4OjM3IDIwMDINCkBA IC0xNzMsMyArMTczLDcgQEANCiANCiAvKiBuYXRpdmVmaWxlICovDQogI3Vu ZGVmIEdEQl9OTV9GSUxFDQorDQorLyogZGVidWdkaXIgKi8NCisjdW5kZWYg REVCVUdESVINCisNCmRpZmYgLS1leGNsdWRlICcqficgLS1leGNsdWRlICcq Lm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIC0tZXhjbHVkZSAnLiMqJyAtLWV4 Y2x1ZGUgJyoubycgLS1leGNsdWRlIENWUyAtLWV4Y2x1ZGUgU0NDUyAtLWV4 Y2x1ZGUgUkNTIC0tZXhjbHVkZSAnLiouZmxhZ3MnIC0tZXhjbHVkZSAuY3Zz aWdub3JlIC0tZXhjbHVkZSAuZGVwZW5kIC11ciBnZGItNS4yLjEvZ2RiL2Fj aW5jbHVkZS5tNCBnZGItNS4yLjEuc2VwYXJhdGVfZGVidWdfc3ltYm9scy9n ZGIvYWNpbmNsdWRlLm00DQotLS0gZ2RiLTUuMi4xL2dkYi9hY2luY2x1ZGUu bTQJTW9uIEFwciAxNSAwNjoyODo0OSAyMDAyDQorKysgZ2RiLTUuMi4xLnNl cGFyYXRlX2RlYnVnX3N5bWJvbHMvZ2RiL2FjaW5jbHVkZS5tNAlNb24gQXVn IDI2IDExOjE2OjQwIDIwMDINCkBAIC05NzYsMyArOTc2LDE4IEBADQogICAq KSBDQz0iJENDICRhbV9jdl9wcm9nX2NjX3N0ZGMiIDs7DQogZXNhYw0KIF0p DQorDQorZG5sIHdyaXR0ZW4gYnkgR3VpZG8gRHJhaGVpbSA8Z3VpZG9kQGdt eC5kZT4sIG9yaWdpbmFsIGJ5IEFsZXhhbmRyZSBPbGl2YSANCitkbmwgVmVy c2lvbiAxLjMgKDIwMDEvMDMvMDIpDQorZG5sIHNvdXJjZSBodHRwOi8vd3d3 LmdudS5vcmcvc29mdHdhcmUvYWMtYXJjaGl2ZS9NaXNjZWxsYW5lb3VzL2Fj X2RlZmluZV9kaXIuaHRtbA0KKw0KK0FDX0RFRlVOKFtBQ19ERUZJTkVfRElS XSwgWw0KKyAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIk YWNfZGVmYXVsdF9wcmVmaXgiDQorICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9 IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nDQorICBhY19kZWZp bmVfZGlyPWBldmFsIGVjaG8gWyRdJDJgDQorICBhY19kZWZpbmVfZGlyPWBl dmFsIGVjaG8gWyRdYWNfZGVmaW5lX2RpcmANCisgIGlmZWxzZSgkMywgLA0K KyAgICBBQ19ERUZJTkVfVU5RVU9URUQoJDEsICIkYWNfZGVmaW5lX2RpciIp LA0KKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoJDEsICIkYWNfZGVmaW5lX2Rp ciIsICQzKSkNCitdKQ0KKw0KZGlmZiAtLWV4Y2x1ZGUgJyp+JyAtLWV4Y2x1 ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgLS1leGNsdWRlICcuIyon IC0tZXhjbHVkZSAnKi5vJyAtLWV4Y2x1ZGUgQ1ZTIC0tZXhjbHVkZSBTQ0NT IC0tZXhjbHVkZSBSQ1MgLS1leGNsdWRlICcuKi5mbGFncycgLS1leGNsdWRl IC5jdnNpZ25vcmUgLS1leGNsdWRlIC5kZXBlbmQgLXVyIGdkYi01LjIuMS9n ZGIvY29uZmlndXJlLmluIGdkYi01LjIuMS5zZXBhcmF0ZV9kZWJ1Z19zeW1i b2xzL2dkYi9jb25maWd1cmUuaW4NCi0tLSBnZGItNS4yLjEvZ2RiL2NvbmZp Z3VyZS5pbglUaHUgTWFyIDI4IDA1OjI4OjAwIDIwMDINCisrKyBnZGItNS4y LjEuc2VwYXJhdGVfZGVidWdfc3ltYm9scy9nZGIvY29uZmlndXJlLmluCU1v biBBdWcgMjYgMTc6MDI6NDggMjAwMg0KQEAgLTIzNCw2ICsyMzQsMTQgQEAN CiBBQ19DSEVDS19MSUIoc29ja2V0LCBzb2NrZXRwYWlyKQ0KIEFDX0NIRUNL X0ZVTkNTKHNvY2tldHBhaXIpDQogDQorZGVidWdkaXI9JHtsaWJkaXJ9L2Rl YnVnDQorCSANCitBQ19BUkdfV0lUSChzZXBhcmF0ZS1kZWJ1Zy1kaXIsDQor WyAgLS13aXRoLXNlcGFyYXRlLWRlYnVnLWRpcj1wYXRoICAgTG9vayBmb3Ig Z2xvYmFsIHNlcGFyYXRlIGRlYnVnIGluZm8gaW4gdGhpcyBwYXRoIFtMSUJE SVIvZGVidWddXSwNCitbZGVidWdkaXI9IiR7d2l0aHZhbH0iXSkNCisJDQor QUNfREVGSU5FX0RJUihERUJVR0RJUiwgZGVidWdkaXIpDQorI0FDX0RFRklO RV9VTlFVT1RFRChERUJVR0RJUiwgIiRkZWJ1Z2RpciIpLA0KIA0KIEJGRF9O RUVEX0RFQ0xBUkFUSU9OKG1hbGxvYykNCiBCRkRfTkVFRF9ERUNMQVJBVElP TihyZWFsbG9jKQ0KZGlmZiAtLWV4Y2x1ZGUgJyp+JyAtLWV4Y2x1ZGUgJyou b3JpZycgLS1leGNsdWRlICcqLnJlaicgLS1leGNsdWRlICcuIyonIC0tZXhj bHVkZSAnKi5vJyAtLWV4Y2x1ZGUgQ1ZTIC0tZXhjbHVkZSBTQ0NTIC0tZXhj bHVkZSBSQ1MgLS1leGNsdWRlICcuKi5mbGFncycgLS1leGNsdWRlIC5jdnNp Z25vcmUgLS1leGNsdWRlIC5kZXBlbmQgLXVyIGdkYi01LjIuMS9nZGIvZGVm cy5oIGdkYi01LjIuMS5zZXBhcmF0ZV9kZWJ1Z19zeW1ib2xzL2dkYi9kZWZz LmgNCi0tLSBnZGItNS4yLjEvZ2RiL2RlZnMuaAlNb24gTWFyIDI1IDE3OjUw OjIwIDIwMDINCisrKyBnZGItNS4yLjEuc2VwYXJhdGVfZGVidWdfc3ltYm9s cy9nZGIvZGVmcy5oCU1vbiBTZXAgMjMgMTI6Mzc6MjMgMjAwMg0KQEAgLTU3 Nyw2ICs1NzcsOCBAQA0KIA0KIGV4dGVybiBjaGFyICpnZGJfcmVhbHBhdGgg KGNvbnN0IGNoYXIgKik7DQogDQorZXh0ZXJuIHVuc2lnbmVkIGxvbmcgY2Fs Y19jcmMzMiAodW5zaWduZWQgbG9uZyBjcmMsIHVuc2lnbmVkIGNoYXIgKmJ1 Ziwgc2l6ZV90IGxlbik7DQorDQogLyogRnJvbSBkZW1hbmdsZS5jICovDQog DQogZXh0ZXJuIHZvaWQgc2V0X2RlbWFuZ2xpbmdfc3R5bGUgKGNoYXIgKik7 DQpkaWZmIC0tZXhjbHVkZSAnKn4nIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4 Y2x1ZGUgJyoucmVqJyAtLWV4Y2x1ZGUgJy4jKicgLS1leGNsdWRlICcqLm8n IC0tZXhjbHVkZSBDVlMgLS1leGNsdWRlIFNDQ1MgLS1leGNsdWRlIFJDUyAt LWV4Y2x1ZGUgJy4qLmZsYWdzJyAtLWV4Y2x1ZGUgLmN2c2lnbm9yZSAtLWV4 Y2x1ZGUgLmRlcGVuZCAtdXIgZ2RiLTUuMi4xL2dkYi9vYmpmaWxlcy5jIGdk Yi01LjIuMS5zZXBhcmF0ZV9kZWJ1Z19zeW1ib2xzL2dkYi9vYmpmaWxlcy5j DQotLS0gZ2RiLTUuMi4xL2dkYi9vYmpmaWxlcy5jCVRodSBEZWMgIDYgMjE6 NTk6MTEgMjAwMQ0KKysrIGdkYi01LjIuMS5zZXBhcmF0ZV9kZWJ1Z19zeW1i b2xzL2dkYi9vYmpmaWxlcy5jCU1vbiBTZXAgMjMgMTM6MDc6MjQgMjAwMg0K QEAgLTMyNSw2ICszMjUsMzAgQEANCiAgIHJldHVybiAob2JqZmlsZSk7DQog fQ0KIA0KKy8qIFB1dCBvbmUgb2JqZWN0IGZpbGUgYmVmb3JlIGEgc3BlY2lm aWVkIG9uIGluIHRoZSBnbG9iYWwgbGlzdC4NCisgICBUaGlzIGNhbiBiZSB1 c2VkIHRvIG1ha2Ugc3VyZSBhbiBvYmplY3QgZmlsZSBpcyBkZXN0cm95ZWQg YmVmb3JlDQorICAgYW5vdGhlciB3aGVuIHVzaW5nIEFMTF9PQkpGSUxFU19T QUZFIHRvIGZyZWUgYWxsIG9iamZpbGVzLiAqLw0KK3ZvaWQNCitwdXRfb2Jq ZmlsZV9iZWZvcmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qg b2JqZmlsZSAqYmVmb3JlX3RoaXMpDQorew0KKyAgc3RydWN0IG9iamZpbGUg KipvYmpwOw0KKw0KKyAgdW5saW5rX29iamZpbGUgKG9iamZpbGUpOw0KKyAg DQorICBmb3IgKG9ianAgPSAmb2JqZWN0X2ZpbGVzOyAqb2JqcCAhPSBOVUxM OyBvYmpwID0gJigoKm9ianApLT5uZXh0KSkNCisgICAgew0KKyAgICAgIGlm ICgqb2JqcCA9PSBiZWZvcmVfdGhpcykNCisJew0KKwkgIG9iamZpbGUtPm5l eHQgPSAqb2JqcDsNCisJICAqb2JqcCA9IG9iamZpbGU7DQorCSAgcmV0dXJu Ow0KKwl9DQorICAgIH0NCisgIA0KKyAgaW50ZXJuYWxfZXJyb3IgKF9fRklM RV9fLCBfX0xJTkVfXywNCisJCSAgInB1dF9vYmpmaWxlX2JlZm9yZTogYmVm b3JlIG9iamZpbGUgbm90IGluIGxpc3QiKTsNCit9DQorDQogLyogUHV0IE9C SkZJTEUgYXQgdGhlIGZyb250IG9mIHRoZSBsaXN0LiAgKi8NCiANCiB2b2lk DQpAQCAtMzk3LDYgKzQyMSwxOCBAQA0KIHZvaWQNCiBmcmVlX29iamZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQ0KIHsNCisgIGlmIChvYmpmaWxl LT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlKQ0KKyAgICB7DQorICAgICAgZnJl ZV9vYmpmaWxlIChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlKTsN CisgICAgfQ0KKyAgDQorICBpZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdf b2JqZmlsZV9iYWNrbGluaykNCisgICAgew0KKyAgICAgIC8qIFdlIGZyZWVk IHRoZSBzZXBhcmF0ZSBkZWJ1ZyBmaWxlLCBtYWtlIHN1cmUgdGhlIGJhc2Ug b2JqZmlsZQ0KKwkgZG9lc24ndCByZWZlcmVuY2UgaXQuICAqLw0KKyAgICAg IG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmstPnNl cGFyYXRlX2RlYnVnX29iamZpbGUgPSBOVUxMOw0KKyAgICB9DQorICANCiAg IC8qIEZpcnN0IGRvIGFueSBzeW1ib2wgZmlsZSBzcGVjaWZpYyBhY3Rpb25z IHJlcXVpcmVkIHdoZW4gd2UgYXJlDQogICAgICBmaW5pc2hlZCB3aXRoIGEg cGFydGljdWxhciBzeW1ib2wgZmlsZS4gIE5vdGUgdGhhdCBpZiB0aGUgb2Jq ZmlsZQ0KICAgICAgaXMgdXNpbmcgcmV1c2FibGUgc3ltYm9sIGluZm9ybWF0 aW9uICh2aWEgbW1hbGxvYykgdGhlbiBlYWNoIG9mDQpkaWZmIC0tZXhjbHVk ZSAnKn4nIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyAt LWV4Y2x1ZGUgJy4jKicgLS1leGNsdWRlICcqLm8nIC0tZXhjbHVkZSBDVlMg LS1leGNsdWRlIFNDQ1MgLS1leGNsdWRlIFJDUyAtLWV4Y2x1ZGUgJy4qLmZs YWdzJyAtLWV4Y2x1ZGUgLmN2c2lnbm9yZSAtLWV4Y2x1ZGUgLmRlcGVuZCAt dXIgZ2RiLTUuMi4xL2dkYi9vYmpmaWxlcy5oIGdkYi01LjIuMS5zZXBhcmF0 ZV9kZWJ1Z19zeW1ib2xzL2dkYi9vYmpmaWxlcy5oDQotLS0gZ2RiLTUuMi4x L2dkYi9vYmpmaWxlcy5oCVNhdCBKdW4gMjkgMDA6MDU6NDcgMjAwMg0KKysr IGdkYi01LjIuMS5zZXBhcmF0ZV9kZWJ1Z19zeW1ib2xzL2dkYi9vYmpmaWxl cy5oCU1vbiBTZXAgMjMgMTM6MDI6NTMgMjAwMg0KQEAgLTQwOSw2ICs0MDks MTUgQEANCiAgICAgRXhwb3J0RW50cnkgKmV4cG9ydF9saXN0Ow0KICAgICBp bnQgZXhwb3J0X2xpc3Rfc2l6ZTsNCiANCisgICAgLyogTGluayB0byBvYmpm aWxlIHRoYXQgY29udGFpbnMgdGhlIGRlYnVnIHN5bWJvbHMgZm9yIHRoaXMg b25lLg0KKyAgICAgICBPbmUgaXMgbG9hZGVkIGlmIHRoaXMgZmlsZSBoYXMg YW4gZGVidWcgbGluayB0byBhbiBleGlzdGluZw0KKyAgICAgICBkZWJ1ZyBm aWxlIHdpdGggdGhlIHJpZ2h0IGNoZWNrc3VtICovDQorICAgIHN0cnVjdCBv YmpmaWxlICpzZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlOw0KKw0KKyAgICAvKiBJ ZiB0aGlzIGlzIGEgc2VwYXJhdGUgZGVidWcgb2JqZWN0LCB0aGlzIGlzIHVz ZWQgYXMgYSBsaW5rIHRvIHRoZQ0KKyAgICAgICBhY3R1YWwgZXhlY3V0YWJs ZSBvYmpmaWxlLiAqLw0KKyAgICBzdHJ1Y3Qgb2JqZmlsZSAqc2VwYXJhdGVf ZGVidWdfb2JqZmlsZV9iYWNrbGluazsNCisgICAgDQogICAgIC8qIFBsYWNl IHRvIHN0YXNoIHZhcmlvdXMgc3RhdGlzdGljcyBhYm91dCB0aGlzIG9iamZp bGUgKi8NCiAgICAgICBPQkpTVEFUUzsNCiAgIH07DQpAQCAtNTAwLDYgKzUw OSw4IEBADQogDQogZXh0ZXJuIGludCBidWlsZF9vYmpmaWxlX3NlY3Rpb25f dGFibGUgKHN0cnVjdCBvYmpmaWxlICopOw0KIA0KK2V4dGVybiB2b2lkIHB1 dF9vYmpmaWxlX2JlZm9yZSAoc3RydWN0IG9iamZpbGUgKiwgc3RydWN0IG9i amZpbGUgKik7DQorDQogZXh0ZXJuIHZvaWQgb2JqZmlsZV90b19mcm9udCAo c3RydWN0IG9iamZpbGUgKik7DQogDQogZXh0ZXJuIHZvaWQgdW5saW5rX29i amZpbGUgKHN0cnVjdCBvYmpmaWxlICopOw0KZGlmZiAtLWV4Y2x1ZGUgJyp+ JyAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgLS1leGNs dWRlICcuIyonIC0tZXhjbHVkZSAnKi5vJyAtLWV4Y2x1ZGUgQ1ZTIC0tZXhj bHVkZSBTQ0NTIC0tZXhjbHVkZSBSQ1MgLS1leGNsdWRlICcuKi5mbGFncycg LS1leGNsdWRlIC5jdnNpZ25vcmUgLS1leGNsdWRlIC5kZXBlbmQgLXVyIGdk Yi01LjIuMS9nZGIvc3ltZmlsZS5jIGdkYi01LjIuMS5zZXBhcmF0ZV9kZWJ1 Z19zeW1ib2xzL2dkYi9zeW1maWxlLmMNCi0tLSBnZGItNS4yLjEvZ2RiL3N5 bWZpbGUuYwlTYXQgSnVuIDIyIDE4OjQ5OjMzIDIwMDINCisrKyBnZGItNS4y LjEuc2VwYXJhdGVfZGVidWdfc3ltYm9scy9nZGIvc3ltZmlsZS5jCVdlZCBT ZXAgMjUgMDk6Mzc6MDMgMjAwMg0KQEAgLTM3LDYgKzM3LDcgQEANCiAjaW5j bHVkZSAiY29tcGxhaW50cy5oIg0KICNpbmNsdWRlICJkZW1hbmdsZS5oIg0K ICNpbmNsdWRlICJpbmZlcmlvci5oIgkJLyogZm9yIHdyaXRlX3BjICovDQor I2luY2x1ZGUgImZpbGVuYW1lcy5oIgkJLyogZm9yIERPU2lzaCBmaWxlIG5h bWVzICovDQogI2luY2x1ZGUgImdkYi1zdGFicy5oIg0KICNpbmNsdWRlICJv YnN0YWNrLmgiDQogI2luY2x1ZGUgImNvbXBsZXRlci5oIg0KQEAgLTE2MCw2 ICsxNjEsOCBAQA0KIA0KIHN0YXRpYyB2b2lkIGluZm9fZXh0X2xhbmdfY29t bWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KTsNCiANCitzdGF0aWMg Y2hhciAqZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSk7DQorDQogc3RhdGljIHZv aWQgaW5pdF9maWxlbmFtZV9sYW5ndWFnZV90YWJsZSAodm9pZCk7DQogDQog dm9pZCBfaW5pdGlhbGl6ZV9zeW1maWxlICh2b2lkKTsNCkBAIC04MzYsNyAr ODM5LDEyIEBADQogew0KICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7DQog ICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzeW10YWI7DQorICBjaGFyICpk ZWJ1Z2ZpbGU7DQogICBiZmQgKmFiZmQ7DQorICBzdHJ1Y3Qgc2VjdGlvbl9h ZGRyX2luZm8gb3JpZ19hZGRyczsNCisgIA0KKyAgaWYgKGFkZHJzKQ0KKyAg ICBvcmlnX2FkZHJzID0gKmFkZHJzOw0KIA0KICAgLyogT3BlbiBhIGJmZCBm b3IgdGhlIGZpbGUsIGFuZCBnaXZlIHVzZXIgYSBjaGFuY2UgdG8gYnVycCBp ZiB3ZSdkIGJlDQogICAgICBpbnRlcmFjdGl2ZWx5IHdpcGluZyBvdXQgYW55 IGV4aXN0aW5nIHN5bWJvbHMuICAqLw0KQEAgLTkyNiw2ICs5MzQsMjggQEAN CiAgIGlmICh0YXJnZXRfbmV3X29iamZpbGVfaG9vaykNCiAgICAgdGFyZ2V0 X25ld19vYmpmaWxlX2hvb2sgKG9iamZpbGUpOw0KIA0KKyAgZGVidWdmaWxl ID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChvYmpmaWxlLCBuYW1lKTsN CisgIGlmIChkZWJ1Z2ZpbGUpDQorICAgIHsNCisgICAgICBwcmludGZfZmls dGVyZWQgKCJsb2FkaW5nIHNlcGFyYXRlIGRlYnVnIGluZm8gZnJvbSAnJXMn XG4iLCBkZWJ1Z2ZpbGUpOw0KKw0KKyAgICAgIGlmIChhZGRycyAhPSBOVUxM KQ0KKwl7DQorCSAgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSA9 IHN5bWJvbF9maWxlX2FkZCAoZGVidWdmaWxlLCBmcm9tX3R0eSwgJm9yaWdf YWRkcnMsIDAsIGZsYWdzKTsNCisJfQ0KKyAgICAgIGVsc2UNCisJew0KKwkg IG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgPSBzeW1ib2xfZmls ZV9hZGQgKGRlYnVnZmlsZSwgZnJvbV90dHksIE5VTEwsIDAsIGZsYWdzKTsN CisJfQ0KKyAgICAgIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUt PnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPSBvYmpmaWxlOw0K KyAgICAgIA0KKyAgICAgIC8qIFB1dCB0aGUgc2VwYXJhdGUgZGVidWcgb2Jq ZWN0IGJlZm9yZSB0aGUgbm9ybWFsIG9uZSwgdGhpcyBpcyBzbyB0aGF0DQor ICAgICAgICAgdXNhZ2Ugb2YgdGhlIEFMTF9PQkpGSUxFU19TQUZFIG1hY3Jv IHdpbGwgc3RheSBzYWZlLiAqLw0KKyAgICAgIHB1dF9vYmpmaWxlX2JlZm9y ZSAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSwgb2JqZmlsZSk7 DQorICAgICAgDQorICAgICAgeGZyZWUgKGRlYnVnZmlsZSk7DQorICAgIH0N CisgIA0KICAgcmV0dXJuIChvYmpmaWxlKTsNCiB9DQogDQpAQCAtOTg1LDYg KzEwMTUsMTQ1IEBADQogI2VuZGlmDQogfQ0KIA0KK3N0YXRpYyBjaGFyICoN CitnZXRfZGVidWdfbGlua19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgdW5zaWduZWQgbG9uZyAqY3JjMzJfb3V0KQ0KK3sNCisgIGFzZWN0aW9u ICpzZWN0Ow0KKyAgYmZkX3NpemVfdHlwZSBkZWJ1Z2xpbmtfc2l6ZTsNCisg IHVuc2lnbmVkIGxvbmcgY3JjMzI7DQorICBjaGFyICpjb250ZW50czsNCisg IGludCBjcmNfb2Zmc2V0Ow0KKyAgdW5zaWduZWQgY2hhciAqY3JjX2RhdGE7 DQorICB1bnNpZ25lZCBjaGFyICpwOw0KKyAgDQorICBzZWN0ID0gYmZkX2dl dF9zZWN0aW9uX2J5X25hbWUgKG9iamZpbGUtPm9iZmQsICIuZ251X2RlYnVn bGluayIpOw0KKw0KKyAgaWYgKHNlY3QgPT0gTlVMTCkNCisgICAgcmV0dXJu IE5VTEw7DQorDQorICBkZWJ1Z2xpbmtfc2l6ZSA9IGJmZF9zZWN0aW9uX3Np emUgKG9iamZpbGUtPm9iZmQsIHNlY3QpOw0KKyAgDQorICBjb250ZW50cyA9 IHhtYWxsb2MgKGRlYnVnbGlua19zaXplKTsNCisgIGJmZF9nZXRfc2VjdGlv bl9jb250ZW50cyAob2JqZmlsZS0+b2JmZCwgc2VjdCwgY29udGVudHMsDQor CQkJICAgIChmaWxlX3B0cikwLCAoYmZkX3NpemVfdHlwZSlkZWJ1Z2xpbmtf c2l6ZSk7DQorDQorICAvKiBDcmMgdmFsdWUgaXMgc3RvcmVkIGFmdGVyIHRo ZSBmaWxlbmFtZSwgYWxpZ25lZCB1cCB0byA0IGJ5dGVzLiAqLw0KKyAgY3Jj X29mZnNldCA9IHN0cmxlbiAoY29udGVudHMpICsgMTsNCisgIGlmIChjcmNf b2Zmc2V0ICYgMykNCisgICAgY3JjX29mZnNldCArPSA0IC0gKGNyY19vZmZz ZXQgJiAzKTsNCisgIGNyY19kYXRhID0gY29udGVudHMgKyBjcmNfb2Zmc2V0 Ow0KKw0KKyAgY3JjMzIgPSAwOw0KKyAgaWYgKFRBUkdFVF9CWVRFX09SREVS ID09IEJGRF9FTkRJQU5fQklHKQ0KKyAgICB7DQorICAgICAgZm9yIChwID0g Y3JjX2RhdGE7IHAgPCBjcmNfZGF0YSArIDQ7ICsrcCkNCisJY3JjMzIgPSAo Y3JjMzIgPDwgOCkgfCAqcDsNCisgICAgfQ0KKyAgZWxzZQ0KKyAgICB7DQor ICAgICAgZm9yIChwID0gY3JjX2RhdGEgKyA0IC0gMTsgcCA+PSBjcmNfZGF0 YTsgLS1wKQ0KKwljcmMzMiA9IChjcmMzMiA8PCA4KSB8ICpwOw0KKyAgICB9 DQorICANCisgICpjcmMzMl9vdXQgPSBjcmMzMjsNCisgIHJldHVybiBjb250 ZW50czsNCit9DQorDQorc3RhdGljIGludA0KK3NlcGFyYXRlX2RlYnVnX2Zp bGVfZXhpc3RzIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBsb25nIGNy YykNCit7DQorICB1bnNpZ25lZCBsb25nIGZpbGVfY3JjID0gMDsNCisgIGlu dCBmZDsNCisgIGNoYXIgYnVmZmVyWzgqMTAyNF07DQorICBpbnQgY291bnQ7 DQorDQorICBmZCA9IG9wZW4gKG5hbWUsIE9fUkRPTkxZKTsNCisgIGlmIChm ZCA8IDApDQorICAgIHJldHVybiAwOw0KKw0KKyAgd2hpbGUgKChjb3VudCA9 IHJlYWQgKGZkLCBidWZmZXIsIHNpemVvZiAoYnVmZmVyKSkpID4gMCkNCisg ICAgZmlsZV9jcmMgPSBjYWxjX2NyYzMyIChmaWxlX2NyYywgYnVmZmVyLCBj b3VudCk7DQorDQorICBjbG9zZSAoZmQpOw0KKw0KKyAgcmV0dXJuIGNyYyA9 PSBmaWxlX2NyYzsNCit9DQorDQorc3RhdGljIGNoYXIgKmRlYnVnX2ZpbGVf c2VhcmNoX3BhdGggPSBOVUxMOw0KKw0KK3N0YXRpYyBjaGFyICoNCitmaW5k X3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBjb25zdCBjaGFyICpuYW1lKQ0KK3sNCisgIGFzZWN0aW9uICpzZWN0Ow0K KyAgY2hhciAqYmFzZW5hbWU7DQorICBjaGFyICpkaXI7DQorICBjaGFyICpk ZWJ1Z2ZpbGU7DQorICBjaGFyICpuYW1lX2NvcHk7DQorICBiZmRfc2l6ZV90 eXBlIGRlYnVnbGlua19zaXplOw0KKyAgdW5zaWduZWQgbG9uZyBjcmMzMjsN CisgIGludCBpOw0KKw0KKyAgYmFzZW5hbWUgPSBnZXRfZGVidWdfbGlua19p bmZvIChvYmpmaWxlLCAmY3JjMzIpOw0KKw0KKyAgaWYgKGJhc2VuYW1lID09 IE5VTEwpDQorICAgIHJldHVybiBOVUxMOw0KKyAgDQorICBkaXIgPSB4c3Ry ZHVwIChuYW1lKTsNCisNCisgIC8qIFN0cmlwIG9mZiBmaWxlbmFtZSBwYXJ0 ICovDQorICBmb3IgKGkgPSBzdHJsZW4oZGlyKSAtIDE7IGkgPj0gMDsgaS0t KQ0KKyAgICB7DQorICAgICAgaWYgKElTX0RJUl9TRVBBUkFUT1IgKGRpcltp XSkpDQorCWJyZWFrOw0KKyAgICB9DQorICBkaXJbaSsxXSA9ICdcMCc7DQor ICANCisgIGRlYnVnZmlsZSA9IGFsbG9jYSAoc3RybGVuIChkZWJ1Z19maWxl X3NlYXJjaF9wYXRoKSArIDEgKw0KKwkJICAgICAgc3RybGVuIChkaXIpICsg c3RybGVuICgiLmRlYnVnLyIpICsgc3RybGVuIChiYXNlbmFtZSkgKyAxKTsN CisNCisgIC8qIEZpcnN0IHRyeSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMg dGhlIG9yaWdpbmFsIGZpbGU6ICovDQorICBzdHJjcHkgKGRlYnVnZmlsZSwg ZGlyKTsNCisgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7DQorDQor ICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwg Y3JjMzIpKQ0KKyAgICB7DQorICAgICAgeGZyZWUgKGJhc2VuYW1lKTsNCisg ICAgICB4ZnJlZSAoZGlyKTsNCisgICAgICByZXR1cm4geHN0cmR1cCAoZGVi dWdmaWxlKTsNCisgICAgfQ0KKyAgDQorICAvKiBUaGVuIHRyeSBpbiBhIHN1 YmRpcmVjdG9yeSBjYWxsZWQgLmRlYnVnICovDQorICBzdHJjcHkgKGRlYnVn ZmlsZSwgZGlyKTsNCisgIHN0cmNhdCAoZGVidWdmaWxlLCAiLmRlYnVnLyIp Ow0KKyAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsNCisNCisgIGlm IChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMz MikpDQorICAgIHsNCisgICAgICB4ZnJlZSAoYmFzZW5hbWUpOw0KKyAgICAg IHhmcmVlIChkaXIpOw0KKyAgICAgIHJldHVybiB4c3RyZHVwIChkZWJ1Z2Zp bGUpOw0KKyAgICB9DQorICANCisgIC8qIFRoZW4gdHJ5IGluIHRoZSBnbG9i YWwgZGVidWdmaWxlIGRpcmVjdG9yeSAqLw0KKyAgc3RyY3B5IChkZWJ1Z2Zp bGUsIGRlYnVnX2ZpbGVfc2VhcmNoX3BhdGgpOw0KKyAgc3RyY2F0IChkZWJ1 Z2ZpbGUsICIvIik7DQorICBzdHJjYXQgKGRlYnVnZmlsZSwgZGlyKTsNCisg IHN0cmNhdCAoZGVidWdmaWxlLCAiLyIpOw0KKyAgc3RyY2F0IChkZWJ1Z2Zp bGUsIGJhc2VuYW1lKTsNCisNCisgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxl X2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMikpDQorICAgIHsNCisgICAgICB4 ZnJlZSAoYmFzZW5hbWUpOw0KKyAgICAgIHhmcmVlIChkaXIpOw0KKyAgICAg IHJldHVybiB4c3RyZHVwIChkZWJ1Z2ZpbGUpOw0KKyAgICB9DQorICANCisg IHhmcmVlIChiYXNlbmFtZSk7DQorICB4ZnJlZSAoZGlyKTsNCisgIHJldHVy biBOVUxMOw0KK30NCisNCisNCiAvKiBUaGlzIGlzIHRoZSBzeW1ib2wtZmls ZSBjb21tYW5kLiAgUmVhZCB0aGUgZmlsZSwgYW5hbHl6ZSBpdHMNCiAgICBz eW1ib2xzLCBhbmQgYWRkIGEgc3RydWN0IHN5bXRhYiB0byBhIHN5bXRhYiBs aXN0LiAgVGhlIHN5bnRheCBvZg0KICAgIHRoZSBjb21tYW5kIGlzIHJhdGhl ciBiaXphcnJlLS0oMSkgYnVpbGRhcmd2IGltcGxlbWVudHMgdmFyaW91cw0K QEAgLTE2MzksNiArMTgwOCw4IEBADQogICBsb25nIG5ld19tb2R0aW1lOw0K ICAgaW50IHJlcmVhZF9vbmUgPSAwOw0KICAgc3RydWN0IHN0YXQgbmV3X3N0 YXRidWY7DQorICBjaGFyICpkZWJ1Z19maWxlOw0KKyAgdW5zaWduZWQgbG9u ZyBjcmMzMjsNCiAgIGludCByZXM7DQogDQogICAvKiBXaXRoIHRoZSBhZGRp dGlvbiBvZiBzaGFyZWQgbGlicmFyaWVzLCB0aGlzIHNob3VsZCBiZSBtb2Rp ZmllZCwNCkBAIC0xODIyLDYgKzE5OTMsMjcgQEANCiAJICAgICAgICAgbmVl ZHMgdG8ga2VlcCB0cmFjayBvZiAoc3VjaCBhcyBfc2lndHJhbXAsIG9yIHdo YXRldmVyKS4gICovDQogDQogCSAgICAgIFRBUkdFVF9TWU1GSUxFX1BPU1RS RUFEIChvYmpmaWxlKTsNCisNCisJICAgICAgLyogVmVyaWZ5IHRoZSBjaGVj a3N1bSBvZiBhIHByZXZpb3VzbHkgbG9hZGVkIHNlcGFyYXRlIGRlYnVnIGZp bGUuICovDQorCSAgICAgIGlmIChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19v YmpmaWxlKQ0KKwkJew0KKwkJICBkZWJ1Z19maWxlID0gZ2V0X2RlYnVnX2xp bmtfaW5mbyAob2JqZmlsZSwgJmNyYzMyKTsNCisJCSAgaWYgKGRlYnVnX2Zp bGUpDQorCQkgICAgew0KKwkJICAgICAgaWYgKCFzZXBhcmF0ZV9kZWJ1Z19m aWxlX2V4aXN0cyAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZS0+ bmFtZSwgY3JjMzIpKQ0KKwkJCXsNCisJCQkgIC8qIFRoZSBvbGQgc2VwYXJh dGUgZGVidWcgc3ltYm9scyBmaWxlIGlzIGludmFsaWQgKi8NCisJCQkgIGZy ZWVfb2JqZmlsZSAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSk7 DQorCQkJfQ0KKwkJICAgICAgeGZyZWUgKGRlYnVnX2ZpbGUpOw0KKwkJICAg IH0NCisJCSAgZWxzZQ0KKwkJICAgIHsNCisJCSAgICAgIC8qIE5vIG1vcmUg ZGVidWcgbGluaywga2lsbCBvbGQgc2VwYXJhdGUgZGVidWcgc3ltYm9scyAq Lw0KKwkJICAgICAgZnJlZV9vYmpmaWxlIChvYmpmaWxlLT5zZXBhcmF0ZV9k ZWJ1Z19vYmpmaWxlKTsNCisJCSAgICB9DQorCQl9DQorCSAgICAgIA0KIAkg ICAgfQ0KIAl9DQogICAgIH0NCkBAIC0zMzM2LDQgKzM1MjgsMTcgQEANCiAJ CSAgImNhY2hlLlxuIiwNCiAJCSAgJnNldGxpc3QpLA0KICAgICAgJnNob3ds aXN0KTsNCisNCisgIGRlYnVnX2ZpbGVfc2VhcmNoX3BhdGggPSB4c3RyZHVw IChERUJVR0RJUik7DQorICBjID0gYWRkX3NldF9jbWQgKCJkZWJ1Zy1maWxl LXNlYXJjaC1wYXRoIiwgY2xhc3Nfc3VwcG9ydCwgdmFyX3N0cmluZywNCisJ CSAgIChjaGFyICopICZkZWJ1Z19maWxlX3NlYXJjaF9wYXRoLA0KKwkJICAg IlNldCB0aGUgc2VhcmNoIHBhdGggZm9yIGxvYWRpbmcgc2VwYXJhdGUgZGVi dWcgc3ltYm9scy5cbiINCisJCSAgICJTZXBhcmF0ZSBkZWJ1ZyBzeW1ib2xz IGFyZSBmaXJzdCBzZWFyY2hlZCBmb3IgaW4gdGhlIHNhbWVcbiINCisJCSAg ICJkaXJlY3RvcnkgYXMgdGhlIGJpbmFyeSwgdGhlbiBpbiB0aGUgLmRlYnVn IHN1YmRpcmVjdG9yeSxcbiINCisJCSAgICJhbmQgbGFzdGx5IGF0IHRoZSBw YXRoIG9mIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGJpbmFyeSB3aXRoXG4iDQor CQkgICAidGhlIGdsb2JhbCBkZWJ1Zy1maWxlIHNlYXJjaCBwYXRoIHByZXBl bmRlZFxuIiwNCisJCSAgICZzZXRsaXN0KTsNCisgIGFkZF9zaG93X2Zyb21f c2V0IChjLCAmc2hvd2xpc3QpOw0KKyAgYy0+Y29tcGxldGVyID0gZmlsZW5h bWVfY29tcGxldGVyOw0KKw0KIH0NCmRpZmYgLS1leGNsdWRlICcqficgLS1l eGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIC0tZXhjbHVkZSAn LiMqJyAtLWV4Y2x1ZGUgJyoubycgLS1leGNsdWRlIENWUyAtLWV4Y2x1ZGUg U0NDUyAtLWV4Y2x1ZGUgUkNTIC0tZXhjbHVkZSAnLiouZmxhZ3MnIC0tZXhj bHVkZSAuY3ZzaWdub3JlIC0tZXhjbHVkZSAuZGVwZW5kIC11ciBnZGItNS4y LjEvZ2RiL3V0aWxzLmMgZ2RiLTUuMi4xLnNlcGFyYXRlX2RlYnVnX3N5bWJv bHMvZ2RiL3V0aWxzLmMNCi0tLSBnZGItNS4yLjEvZ2RiL3V0aWxzLmMJVGh1 IE1hciAyOCAwNToyODowMSAyMDAyDQorKysgZ2RiLTUuMi4xLnNlcGFyYXRl X2RlYnVnX3N5bWJvbHMvZ2RiL3V0aWxzLmMJTW9uIFNlcCAyMyAxMjozNzow NSAyMDAyDQpAQCAtMjU2MywzICsyNTYzLDY5IEBADQogICByZXR1cm4geHN0 cmR1cCAoZmlsZW5hbWUpOw0KICNlbmRpZg0KIH0NCisNCit1bnNpZ25lZCBs b25nDQorY2FsY19jcmMzMiAodW5zaWduZWQgbG9uZyBjcmMsIHVuc2lnbmVk IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikNCit7DQorICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgbG9uZyBjcmMzMl90YWJsZVsyNTZdID0NCisgICAgew0KKyAg ICAgIDB4MDAwMDAwMDAsIDB4NzcwNzMwOTYsIDB4ZWUwZTYxMmMsIDB4OTkw OTUxYmEsIDB4MDc2ZGM0MTksDQorICAgICAgMHg3MDZhZjQ4ZiwgMHhlOTYz YTUzNSwgMHg5ZTY0OTVhMywgMHgwZWRiODgzMiwgMHg3OWRjYjhhNCwNCisg ICAgICAweGUwZDVlOTFlLCAweDk3ZDJkOTg4LCAweDA5YjY0YzJiLCAweDdl YjE3Y2JkLCAweGU3YjgyZDA3LA0KKyAgICAgIDB4OTBiZjFkOTEsIDB4MWRi NzEwNjQsIDB4NmFiMDIwZjIsIDB4ZjNiOTcxNDgsIDB4ODRiZTQxZGUsDQor ICAgICAgMHgxYWRhZDQ3ZCwgMHg2ZGRkZTRlYiwgMHhmNGQ0YjU1MSwgMHg4 M2QzODVjNywgMHgxMzZjOTg1NiwNCisgICAgICAweDY0NmJhOGMwLCAweGZk NjJmOTdhLCAweDhhNjVjOWVjLCAweDE0MDE1YzRmLCAweDYzMDY2Y2Q5LA0K KyAgICAgIDB4ZmEwZjNkNjMsIDB4OGQwODBkZjUsIDB4M2I2ZTIwYzgsIDB4 NGM2OTEwNWUsIDB4ZDU2MDQxZTQsDQorICAgICAgMHhhMjY3NzE3MiwgMHgz YzAzZTRkMSwgMHg0YjA0ZDQ0NywgMHhkMjBkODVmZCwgMHhhNTBhYjU2YiwN CisgICAgICAweDM1YjVhOGZhLCAweDQyYjI5ODZjLCAweGRiYmJjOWQ2LCAw eGFjYmNmOTQwLCAweDMyZDg2Y2UzLA0KKyAgICAgIDB4NDVkZjVjNzUsIDB4 ZGNkNjBkY2YsIDB4YWJkMTNkNTksIDB4MjZkOTMwYWMsIDB4NTFkZTAwM2Es DQorICAgICAgMHhjOGQ3NTE4MCwgMHhiZmQwNjExNiwgMHgyMWI0ZjRiNSwg MHg1NmIzYzQyMywgMHhjZmJhOTU5OSwNCisgICAgICAweGI4YmRhNTBmLCAw eDI4MDJiODllLCAweDVmMDU4ODA4LCAweGM2MGNkOWIyLCAweGIxMGJlOTI0 LA0KKyAgICAgIDB4MmY2ZjdjODcsIDB4NTg2ODRjMTEsIDB4YzE2MTFkYWIs IDB4YjY2NjJkM2QsIDB4NzZkYzQxOTAsDQorICAgICAgMHgwMWRiNzEwNiwg MHg5OGQyMjBiYywgMHhlZmQ1MTAyYSwgMHg3MWIxODU4OSwgMHgwNmI2YjUx ZiwNCisgICAgICAweDlmYmZlNGE1LCAweGU4YjhkNDMzLCAweDc4MDdjOWEy LCAweDBmMDBmOTM0LCAweDk2MDlhODhlLA0KKyAgICAgIDB4ZTEwZTk4MTgs IDB4N2Y2YTBkYmIsIDB4MDg2ZDNkMmQsIDB4OTE2NDZjOTcsIDB4ZTY2MzVj MDEsDQorICAgICAgMHg2YjZiNTFmNCwgMHgxYzZjNjE2MiwgMHg4NTY1MzBk OCwgMHhmMjYyMDA0ZSwgMHg2YzA2OTVlZCwNCisgICAgICAweDFiMDFhNTdi LCAweDgyMDhmNGMxLCAweGY1MGZjNDU3LCAweDY1YjBkOWM2LCAweDEyYjdl OTUwLA0KKyAgICAgIDB4OGJiZWI4ZWEsIDB4ZmNiOTg4N2MsIDB4NjJkZDFk ZGYsIDB4MTVkYTJkNDksIDB4OGNkMzdjZjMsDQorICAgICAgMHhmYmQ0NGM2 NSwgMHg0ZGIyNjE1OCwgMHgzYWI1NTFjZSwgMHhhM2JjMDA3NCwgMHhkNGJi MzBlMiwNCisgICAgICAweDRhZGZhNTQxLCAweDNkZDg5NWQ3LCAweGE0ZDFj NDZkLCAweGQzZDZmNGZiLCAweDQzNjllOTZhLA0KKyAgICAgIDB4MzQ2ZWQ5 ZmMsIDB4YWQ2Nzg4NDYsIDB4ZGE2MGI4ZDAsIDB4NDQwNDJkNzMsIDB4MzMw MzFkZTUsDQorICAgICAgMHhhYTBhNGM1ZiwgMHhkZDBkN2NjOSwgMHg1MDA1 NzEzYywgMHgyNzAyNDFhYSwgMHhiZTBiMTAxMCwNCisgICAgICAweGM5MGMy MDg2LCAweDU3NjhiNTI1LCAweDIwNmY4NWIzLCAweGI5NjZkNDA5LCAweGNl NjFlNDlmLA0KKyAgICAgIDB4NWVkZWY5MGUsIDB4MjlkOWM5OTgsIDB4YjBk MDk4MjIsIDB4YzdkN2E4YjQsIDB4NTliMzNkMTcsDQorICAgICAgMHgyZWI0 MGQ4MSwgMHhiN2JkNWMzYiwgMHhjMGJhNmNhZCwgMHhlZGI4ODMyMCwgMHg5 YWJmYjNiNiwNCisgICAgICAweDAzYjZlMjBjLCAweDc0YjFkMjlhLCAweGVh ZDU0NzM5LCAweDlkZDI3N2FmLCAweDA0ZGIyNjE1LA0KKyAgICAgIDB4NzNk YzE2ODMsIDB4ZTM2MzBiMTIsIDB4OTQ2NDNiODQsIDB4MGQ2ZDZhM2UsIDB4 N2E2YTVhYTgsDQorICAgICAgMHhlNDBlY2YwYiwgMHg5MzA5ZmY5ZCwgMHgw YTAwYWUyNywgMHg3ZDA3OWViMSwgMHhmMDBmOTM0NCwNCisgICAgICAweDg3 MDhhM2QyLCAweDFlMDFmMjY4LCAweDY5MDZjMmZlLCAweGY3NjI1NzVkLCAw eDgwNjU2N2NiLA0KKyAgICAgIDB4MTk2YzM2NzEsIDB4NmU2YjA2ZTcsIDB4 ZmVkNDFiNzYsIDB4ODlkMzJiZTAsIDB4MTBkYTdhNWEsDQorICAgICAgMHg2 N2RkNGFjYywgMHhmOWI5ZGY2ZiwgMHg4ZWJlZWZmOSwgMHgxN2I3YmU0Mywg MHg2MGIwOGVkNSwNCisgICAgICAweGQ2ZDZhM2U4LCAweGExZDE5MzdlLCAw eDM4ZDhjMmM0LCAweDRmZGZmMjUyLCAweGQxYmI2N2YxLA0KKyAgICAgIDB4 YTZiYzU3NjcsIDB4M2ZiNTA2ZGQsIDB4NDhiMjM2NGIsIDB4ZDgwZDJiZGEs IDB4YWYwYTFiNGMsDQorICAgICAgMHgzNjAzNGFmNiwgMHg0MTA0N2E2MCwg MHhkZjYwZWZjMywgMHhhODY3ZGY1NSwgMHgzMTZlOGVlZiwNCisgICAgICAw eDQ2NjliZTc5LCAweGNiNjFiMzhjLCAweGJjNjY4MzFhLCAweDI1NmZkMmEw LCAweDUyNjhlMjM2LA0KKyAgICAgIDB4Y2MwYzc3OTUsIDB4YmIwYjQ3MDMs IDB4MjIwMjE2YjksIDB4NTUwNTI2MmYsIDB4YzViYTNiYmUsDQorICAgICAg MHhiMmJkMGIyOCwgMHgyYmI0NWE5MiwgMHg1Y2IzNmEwNCwgMHhjMmQ3ZmZh NywgMHhiNWQwY2YzMSwNCisgICAgICAweDJjZDk5ZThiLCAweDViZGVhZTFk LCAweDliNjRjMmIwLCAweGVjNjNmMjI2LCAweDc1NmFhMzljLA0KKyAgICAg IDB4MDI2ZDkzMGEsIDB4OWMwOTA2YTksIDB4ZWIwZTM2M2YsIDB4NzIwNzY3 ODUsIDB4MDUwMDU3MTMsDQorICAgICAgMHg5NWJmNGE4MiwgMHhlMmI4N2Ex NCwgMHg3YmIxMmJhZSwgMHgwY2I2MWIzOCwgMHg5MmQyOGU5YiwNCisgICAg ICAweGU1ZDViZTBkLCAweDdjZGNlZmI3LCAweDBiZGJkZjIxLCAweDg2ZDNk MmQ0LCAweGYxZDRlMjQyLA0KKyAgICAgIDB4NjhkZGIzZjgsIDB4MWZkYTgz NmUsIDB4ODFiZTE2Y2QsIDB4ZjZiOTI2NWIsIDB4NmZiMDc3ZTEsDQorICAg ICAgMHgxOGI3NDc3NywgMHg4ODA4NWFlNiwgMHhmZjBmNmE3MCwgMHg2NjA2 M2JjYSwgMHgxMTAxMGI1YywNCisgICAgICAweDhmNjU5ZWZmLCAweGY4NjJh ZTY5LCAweDYxNmJmZmQzLCAweDE2NmNjZjQ1LCAweGEwMGFlMjc4LA0KKyAg ICAgIDB4ZDcwZGQyZWUsIDB4NGUwNDgzNTQsIDB4MzkwM2IzYzIsIDB4YTc2 NzI2NjEsIDB4ZDA2MDE2ZjcsDQorICAgICAgMHg0OTY5NDc0ZCwgMHgzZTZl NzdkYiwgMHhhZWQxNmE0YSwgMHhkOWQ2NWFkYywgMHg0MGRmMGI2NiwNCisg ICAgICAweDM3ZDgzYmYwLCAweGE5YmNhZTUzLCAweGRlYmI5ZWM1LCAweDQ3 YjJjZjdmLCAweDMwYjVmZmU5LA0KKyAgICAgIDB4YmRiZGYyMWMsIDB4Y2Fi YWMyOGEsIDB4NTNiMzkzMzAsIDB4MjRiNGEzYTYsIDB4YmFkMDM2MDUsDQor ICAgICAgMHhjZGQ3MDY5MywgMHg1NGRlNTcyOSwgMHgyM2Q5NjdiZiwgMHhi MzY2N2EyZSwgMHhjNDYxNGFiOCwNCisgICAgICAweDVkNjgxYjAyLCAweDJh NmYyYjk0LCAweGI0MGJiZTM3LCAweGMzMGM4ZWExLCAweDVhMDVkZjFiLA0K KyAgICAgIDB4MmQwMmVmOGQNCisgICAgfTsNCisgIHVuc2lnbmVkIGNoYXIg KmVuZDsNCisNCisgIGNyYyA9IH5jcmMgJiAweGZmZmZmZmZmOw0KKyAgZm9y IChlbmQgPSBidWYgKyBsZW47IGJ1ZiA8IGVuZDsgKytidWYpDQorICAgIGNy YyA9IGNyYzMyX3RhYmxlWyhjcmMgXiAqYnVmKSAmIDB4ZmZdIF4gKGNyYyA+ PiA4KTsNCisgIHJldHVybiB+Y3JjICYgMHhmZmZmZmZmZjs7DQorfQ0K --279707962-497965843-1032943894=:27088--