From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3469114339241319900==" MIME-Version: 1.0 From: Mark Wielaard To: elfutils-devel@lists.fedorahosted.org Subject: Re: dwarf_aggregate_size() seems to fall over on pointer types Date: Thu, 02 Oct 2014 14:05:36 +0200 Message-ID: <1412251536.5933.32.camel@bordewijk.wildebeest.org> In-Reply-To: CAG6CVpXYLAz+UH98z33qo9Ju3_kDdFsHxQ_+he6driYn8qdo=Q@mail.gmail.com --===============3469114339241319900== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Wed, 2014-10-01 at 15:26 -0400, Conrad Rad wrote: > On Wed, Oct 1, 2014 at 3:23 PM, Conrad Rad wrote: > > This should be 0, 0x8. The size goes in the *size, return value of > > dwarf_aggregate_size() should be zero on success, not 8. The patch is > > not good as is. > > > With the fixed patch (attached), it works: Oops. That shows why I shouldn't submit patches without testcases... Thanks for testing and fixing. Here is the fixed up patch plus some testcases to show it actually works. Cheers, Mark --===============3469114339241319900== Content-Type: text/x-patch MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-libdw-dwarf_aggregate_size-return-CU-address_size-fo.patch" RnJvbSA4Yjc1YzM0OTEzY2VkODI1N2I1NzM5NzA0MzM4MGJjNGMyM2Q3MDY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogTWFyayBXaWVsYWFyZCA8bWp3QHJlZGhhdC5jb20+DQpEYXRl OiBUaHUsIDIgT2N0IDIwMTQgMTQ6MDA6NDcgKzAyMDANClN1YmplY3Q6IFtQQVRDSF0gbGliZHc6 IGR3YXJmX2FnZ3JlZ2F0ZV9zaXplIHJldHVybiBDVSBhZGRyZXNzX3NpemUgZm9yDQogc2l6ZWxl c3MgcG9pbnRlci9yZWZzLg0KDQpUZXN0ZWQtYnk6IENvbnJhZCBSYWQgPGNzZS5jZW1AZ21haWwu Y29tPg0KU2lnbmVkLW9mZi1ieTogTWFyayBXaWVsYWFyZCA8bWp3QHJlZGhhdC5jb20+DQotLS0N CiBsaWJkdy9DaGFuZ2VMb2cgICAgICAgICAgICAgIHwgICA2ICsrKysNCiBsaWJkdy9kd2FyZl9h Z2dyZWdhdGVfc2l6ZS5jIHwgIDEwICsrKysrLQ0KIHRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAg ICAgfCAgMTAgKysrKysrDQogdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgICB8ICAgNSArLS0N CiB0ZXN0cy9hZ2dyZWdhdGVfc2l6ZS5jICAgICAgIHwgIDgzICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysNCiB0ZXN0cy9ydW4tYWdncmVnYXRlLXNpemUuc2ggIHwg IDY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiB0ZXN0cy90ZXN0ZmlsZS1z aXplczEuby5iejIgIHwgQmluIDAgLT4gMTAxMiBieXRlcw0KIHRlc3RzL3Rlc3RmaWxlLXNpemVz Mi5vLmJ6MiAgfCBCaW4gMCAtPiAxMjgzIGJ5dGVzDQogOCBmaWxlcyBjaGFuZ2VkLCAxNzcgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvYWdn cmVnYXRlX3NpemUuYw0KIGNyZWF0ZSBtb2RlIDEwMDc1NSB0ZXN0cy9ydW4tYWdncmVnYXRlLXNp emUuc2gNCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdGVzdGZpbGUtc2l6ZXMxLm8uYnoyDQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3Rlc3RmaWxlLXNpemVzMi5vLmJ6Mg0KDQpkaWZmIC0t Z2l0IGEvbGliZHcvQ2hhbmdlTG9nIGIvbGliZHcvQ2hhbmdlTG9nDQppbmRleCA0MTBiMzFhLi4y OWVkYzQ2IDEwMDY0NA0KLS0tIGEvbGliZHcvQ2hhbmdlTG9nDQorKysgYi9saWJkdy9DaGFuZ2VM b2cNCkBAIC0xLDMgKzEsOSBAQA0KKzIwMTQtMTAtMDIgIE1hcmsgV2llbGFhcmQgIDxtandAcmVk aGF0LmNvbT4NCisNCisJKiBkd2FyZl9hZ2dyZWdhdGVfc2l6ZS5jIChhZ2dyZWdhdGVfc2l6ZSk6 IFJldHVybiBDVSBhZGRyZXNzX3NpemUNCisJZm9yIHNpemVsZXNzIERXX1RBR19wb2ludGVyX3R5 cGUsIERXX1RBR19yZWZlcmVuY2VfdHlwZSBvcg0KKwlEV19UQUdfcnZhbHVlX3JlZmVyZW5jZV90 eXBlLg0KKw0KIDIwMTQtMDktMTIgIFBldHIgTWFjaGF0YSAgPHBtYWNoYXRhQHJlZGhhdC5jb20+ DQogDQogCSogbWVtb3J5LWFjY2Vzcy5oIChyZWFkX3VieXRlX3VuYWxpZ25lZF9pbmMpOiBBbGxv dyBvbmx5IDQtIGFuZA0KZGlmZiAtLWdpdCBhL2xpYmR3L2R3YXJmX2FnZ3JlZ2F0ZV9zaXplLmMg Yi9saWJkdy9kd2FyZl9hZ2dyZWdhdGVfc2l6ZS5jDQppbmRleCAwN2M1M2EyLi41ZDIzNTQxIDEw MDY0NA0KLS0tIGEvbGliZHcvZHdhcmZfYWdncmVnYXRlX3NpemUuYw0KKysrIGIvbGliZHcvZHdh cmZfYWdncmVnYXRlX3NpemUuYw0KQEAgLTEsNSArMSw1IEBADQogLyogQ29tcHV0ZSBzaXplIG9m IGFuIGFnZ3JlZ2F0ZSB0eXBlIGZyb20gRFdBUkYuDQotICAgQ29weXJpZ2h0IChDKSAyMDEwIFJl ZCBIYXQsIEluYy4NCisgICBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgUmVkIEhhdCwgSW5jLg0K ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGVsZnV0aWxzLg0KIA0KICAgIFRoaXMgZmlsZSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQpAQCAt MjA1LDYgKzIwNSwxNCBAQCBhZ2dyZWdhdGVfc2l6ZSAoRHdhcmZfRGllICpkaWUsIER3YXJmX1dv cmQgKnNpemUsIER3YXJmX0RpZSAqdHlwZV9tZW0pDQogDQogICAgIGNhc2UgRFdfVEFHX2FycmF5 X3R5cGU6DQogICAgICAgcmV0dXJuIGFycmF5X3NpemUgKGRpZSwgc2l6ZSwgJmF0dHJfbWVtLCB0 eXBlX21lbSk7DQorDQorICAgIC8qIEFzc3VtZSByZWZlcmVuY2VzIGFuZCBwb2ludGVycyBoYXZl IHBvaW50ZXIgc2l6ZSBpZiBub3QgZ2l2ZW4gYW4NCisgICAgICAgZXhwbGljaXQgRFdfQVRfYnl0 ZV9zaXplLiAgKi8NCisgICAgY2FzZSBEV19UQUdfcG9pbnRlcl90eXBlOg0KKyAgICBjYXNlIERX X1RBR19yZWZlcmVuY2VfdHlwZToNCisgICAgY2FzZSBEV19UQUdfcnZhbHVlX3JlZmVyZW5jZV90 eXBlOg0KKyAgICAgICpzaXplID0gZGllLT5jdS0+YWRkcmVzc19zaXplOw0KKyAgICAgIHJldHVy biAwOw0KICAgICB9DQogDQogICAvKiBNb3N0IHR5cGVzIG11c3QgZ2l2ZSB0aGVpciBzaXplIGRp cmVjdGx5LiAgKi8NCmRpZmYgLS1naXQgYS90ZXN0cy9DaGFuZ2VMb2cgYi90ZXN0cy9DaGFuZ2VM b2cNCmluZGV4IDk2MzIwZmEuLmI2OTEwMDcgMTAwNjQ0DQotLS0gYS90ZXN0cy9DaGFuZ2VMb2cN CisrKyBiL3Rlc3RzL0NoYW5nZUxvZw0KQEAgLTEsMyArMSwxMyBAQA0KKzIwMTQtMTAtMDIgIE1h cmsgV2llbGFhcmQgIDxtandAcmVkaGF0LmNvbT4NCisNCisJKiBNYWtlZmlsZS5hbSAoY2hlY2tf UFJPR1JBTVMpOiBBZGQgYWdncmVnYXRlX3NpemUuYy4NCisJKFRFU1RTLCBFWFRSQV9ESVNUKTog QWRkIHJ1bi1hZ2dyZWdhdGUtc2l6ZS5zaC4NCisJKGFnZ3JlZ2F0ZV9zaXplX0xEQUREKTogTmV3 IHZhcmlhYmxlLg0KKwkqIGFnZ3JlZ2F0ZV9zaXplLmM6IE5ldyBmaWxlLg0KKwkqIHJ1bi1hZ2dy ZWdhdGUtc2l6ZS5zaDogTmV3IHRlc3QuDQorCSogdGVzdGZpbGUtc2l6ZXMxLm8uYnoyOiBOZXcg dGVzdCBmaWxlLg0KKwkqIHRlc3RmaWxlLXNpemVzMi5vLmJ6MjogTGlrZXdpc2UuDQorDQogMjAx NC0wOS0yNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPg0KIA0K IAlTdXBwb3J0IE5UX0ZJTEUgZm9yIGxvY2F0aW5nIGZpbGVzLg0KZGlmZiAtLWdpdCBhL3Rlc3Rz L01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0NCmluZGV4IGViZjRmNzEuLjEzMzUwMWYg MTAwNjQ0DQotLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQ0KKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0N CkBAIC01MCw3ICs1MCw3IEBAIGNoZWNrX1BST0dSQU1TID0gYXJleHRyYWN0IGFyc3ltdGVzdCBu ZXdmaWxlIHNhcmlkeCBzY25uYW1lcyBzZWN0aW9uZHVtcCBcDQogCQkgIHRlc3QtZWxmX2NudGxf Z2VsZl9nZXRzaGRyIGR3ZmxzeW1zIGR3ZmxsaW5lcyBcDQogCQkgIGR3ZmwtcmVwb3J0LWVsZi1h bGlnbiB2YXJsb2NzIGJhY2t0cmFjZSBiYWNrdHJhY2UtY2hpbGQgXA0KIAkJICBiYWNrdHJhY2Ut ZGF0YSBiYWNrdHJhY2UtZHdhcmYgZGVidWdsaW5rIGRlYnVnYWx0bGluayBcDQotCQkgIGJ1aWxk aWQgZGVsZXRlZCBkZWxldGVkLWxpYi5zbw0KKwkJICBidWlsZGlkIGRlbGV0ZWQgZGVsZXRlZC1s aWIuc28gYWdncmVnYXRlX3NpemUNCiANCiBhc21fVEVTVFMgPSBhc20tdHN0MSBhc20tdHN0MiBh c20tdHN0MyBhc20tdHN0NCBhc20tdHN0NSBcDQogCSAgICBhc20tdHN0NiBhc20tdHN0NyBhc20t dHN0OCBhc20tdHN0OQ0KQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUUyA9IHJ1bi1hcmV4dHJhY3Qu c2ggcnVuLWFyc3ltdGVzdC5zaCBuZXdmaWxlIHRlc3Qtbmxpc3QgXA0KIAlydW4tYmFja3RyYWNl LWNvcmUtYWFyY2g2NC5zaCBcDQogCXJ1bi1iYWNrdHJhY2UtZGVtYW5nbGUuc2ggcnVuLXN0YWNr LWQtdGVzdC5zaCBydW4tc3RhY2staS10ZXN0LnNoIFwNCiAJcnVuLXJlYWRlbGYtZHd6LW11bHRp LnNoIHJ1bi1hbGxmY3RzLW11bHRpLnNoIHJ1bi1kZWxldGVkLnNoIFwNCi0JcnVuLWxpbmttYXAt Y3V0LnNoDQorCXJ1bi1saW5rbWFwLWN1dC5zaCBydW4tYWdncmVnYXRlLXNpemUuc2gNCiANCiBp ZiAhQklBUkNIDQogZXhwb3J0IEVMRlVUSUxTX0RJU0FCTEVfQklBUkNIID0gMQ0KQEAgLTQxMiw2 ICs0MTIsNyBAQCBidWlsZGlkX0xEQUREID0gJChsaWJkdykgJChsaWJlbGYpDQogZGVsZXRlZF9M REFERCA9IC4vZGVsZXRlZC1saWIuc28NCiBkZWxldGVkX2xpYl9zb19MREZMQUdTID0gLXNoYXJl ZCAtcmR5bmFtaWMNCiBkZWxldGVkX2xpYl9zb19DRkxBR1MgPSAtZlBJQw0KK2FnZ3JlZ2F0ZV9z aXplX0xEQUREID0gJChsaWJkdykgJChsaWJlbGYpDQogDQogaWYgR0NPVg0KIGNoZWNrOiBjaGVj ay1hbSBjb3ZlcmFnZQ0KZGlmZiAtLWdpdCBhL3Rlc3RzL2FnZ3JlZ2F0ZV9zaXplLmMgYi90ZXN0 cy9hZ2dyZWdhdGVfc2l6ZS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4u OTMwZWFmYQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvdGVzdHMvYWdncmVnYXRlX3NpemUuYw0KQEAg LTAsMCArMSw4MyBAQA0KKy8qIFRlc3QgcHJvZ3JhbSBmb3IgZHdhcmZfYWdncmVnYXRlX3NpemUu IFByaW50cyBzaXplIG9mIHRvcC1sZXZlbCB2YXJzLg0KKyAgIENvcHlyaWdodCAoQykgMjAxNCBS ZWQgSGF0LCBJbmMuDQorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgZWxmdXRpbHMuDQorDQorICAg VGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkNCisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yDQorICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisgICBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCisgICBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0K KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorDQorICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UNCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovDQorDQorI2lmZGVmIEhBVkVfQ09ORklHX0gN CisjIGluY2x1ZGUgPGNvbmZpZy5oPg0KKyNlbmRpZg0KKw0KKyNpbmNsdWRlIDxhc3NlcnQuaD4N CisjaW5jbHVkZSA8YXJncC5oPg0KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPg0KKyNpbmNsdWRlIDxm Y250bC5oPg0KKyNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkdykNCisjaW5jbHVkZSBFTEZVVElM U19IRUFERVIoZHdmbCkNCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+ DQorI2luY2x1ZGUgPGR3YXJmLmg+DQorDQordm9pZA0KK3ByaW50X3Zhcl90eXBlX3NpemUgKER3 YXJmX0RpZSAqdmFyKQ0KK3sNCisgIER3YXJmX0F0dHJpYnV0ZSBhdHRyX21lbTsNCisgIER3YXJm X0RpZSB0eXBlX21lbTsNCisgIER3YXJmX0RpZSAqdHlwZTsNCisgIGNvbnN0IGNoYXIgKm5hbWUg PSBkd2FyZl9kaWVuYW1lICh2YXIpOw0KKw0KKyAgdHlwZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChk d2FyZl9hdHRyICh2YXIsIERXX0FUX3R5cGUsICZhdHRyX21lbSksDQorCQkJICAgICZ0eXBlX21l bSk7DQorICBpZiAodHlwZSAhPSBOVUxMKQ0KKyAgICB7DQorICAgICAgRHdhcmZfV29yZCBzaXpl Ow0KKyAgICAgIGlmIChkd2FyZl9hZ2dyZWdhdGVfc2l6ZSAodHlwZSwgJnNpemUpIDwgMCkNCisg ICAgICAgIHByaW50ZiAoIiVzIG5vIHNpemU6ICVzXG4iLCBuYW1lLCBkd2FyZl9lcnJtc2cgKC0x KSk7DQorICAgICAgZWxzZQ0KKwlwcmludGYgKCIlcyBzaXplICUiIFBSSXU2NCAiXG4iLCBuYW1l LCBzaXplKTsNCisgICAgfQ0KKyAgZWxzZQ0KKyAgICBwcmludGYgKCIlcyBoYXMgbm8gdHlwZS5c biIsIG5hbWUpOw0KK30NCisNCitpbnQNCittYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQ0K K3sNCisNCisgIGludCByZW1haW5pbmc7DQorICBEd2ZsICpkd2ZsOw0KKyAgKHZvaWQpIGFyZ3Bf cGFyc2UgKGR3Zmxfc3RhbmRhcmRfYXJncCAoKSwgYXJnYywgYXJndiwgMCwgJnJlbWFpbmluZywN CisgICAgICAgICAgICAgICAgICAgICAmZHdmbCk7DQorICBhc3NlcnQgKGR3ZmwgIT0gTlVMTCk7 DQorDQorICBEd2FyZl9EaWUgKmN1ID0gTlVMTDsNCisgIER3YXJmX0FkZHIgZHdiaWFzOw0KKyAg d2hpbGUgKChjdSA9IGR3ZmxfbmV4dGN1IChkd2ZsLCBjdSwgJmR3YmlhcykpICE9IE5VTEwpDQor ICAgIHsNCisgICAgICBEd2FyZl9EaWUgZGllX21lbTsNCisgICAgICBEd2FyZl9EaWUgKmRpZSA9 ICZkaWVfbWVtOw0KKyAgICAgIGR3YXJmX2NoaWxkIChjdSwgJmRpZV9tZW0pOw0KKw0KKyAgICAg IHdoaWxlICgxKQ0KKwl7DQorCSAgaWYgKGR3YXJmX3RhZyAoZGllKSA9PSBEV19UQUdfdmFyaWFi bGUpDQorCSAgICBwcmludF92YXJfdHlwZV9zaXplIChkaWUpOw0KKw0KKwkgIGlmIChkd2FyZl9z aWJsaW5nb2YgKGRpZSwgJmRpZV9tZW0pICE9IDApDQorCSAgICBicmVhazsNCisJfQ0KKyAgICB9 DQorDQorICBkd2ZsX2VuZCAoZHdmbCk7DQorfQ0KZGlmZiAtLWdpdCBhL3Rlc3RzL3J1bi1hZ2dy ZWdhdGUtc2l6ZS5zaCBiL3Rlc3RzL3J1bi1hZ2dyZWdhdGUtc2l6ZS5zaA0KbmV3IGZpbGUgbW9k ZSAxMDA3NTUNCmluZGV4IDAwMDAwMDAuLjgyYTVkNTMNCi0tLSAvZGV2L251bGwNCisrKyBiL3Rl c3RzL3J1bi1hZ2dyZWdhdGUtc2l6ZS5zaA0KQEAgLTAsMCArMSw2NiBAQA0KKyMhIC9iaW4vc2gN CisjIENvcHlyaWdodCAoQykgMjAxNCBSZWQgSGF0LCBJbmMuDQorIyBUaGlzIGZpbGUgaXMgcGFy dCBvZiBlbGZ1dGlscy4NCisjDQorIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCisjIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yDQorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyMNCisjIGVsZnV0 aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1 dA0KKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZg0KKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQ0KKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4NCisjDQorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQorDQorLiAkc3JjZGly L3Rlc3Qtc3Vici5zaA0KKw0KKyMgY2hhciBjOw0KKyMgaW50IGk7DQorIyBsb25nIGw7DQorIw0K KyMgdm9pZCAqdjsNCisjDQorIyBzdHJ1Y3Qgcw0KKyMgew0KKyMgICBjaGFyICphOw0KKyMgICBp bnQgaTsNCisjIH0gczsNCisjDQorIyBjaGFyIGNhWzE2XTsNCisjIGludCBpYVszMl07DQorIyB2 b2lkICp2YVs2NF07DQorIyBzdHJ1Y3QgcyBzYVs4XTsNCisNCisjIGdjYyAtZyAtYyAtbyB0ZXN0 ZmlsZS1zaXplczEubyBzaXplcy5jDQorIyBjbGFuZyAtZyAtYyAtbyB0ZXN0ZmlsZS1zaXplczIu byBzaXplcy5jDQorDQordGVzdGZpbGVzIHRlc3RmaWxlLXNpemVzMS5vIHRlc3RmaWxlLXNpemVz Mi5vDQorDQordGVzdHJ1bl9jb21wYXJlICR7YWJzX2J1aWxkZGlyfS9hZ2dyZWdhdGVfc2l6ZSAt ZSB0ZXN0ZmlsZS1zaXplczEubyA8PFxFT0YNCitjIHNpemUgMQ0KK2kgc2l6ZSA0DQorbCBzaXpl IDgNCit2IHNpemUgOA0KK3Mgc2l6ZSAxNg0KK2NhIHNpemUgMTYNCitpYSBzaXplIDEyOA0KK3Zh IHNpemUgNTEyDQorc2Egc2l6ZSAxMjgNCitFT0YNCisNCit0ZXN0cnVuX2NvbXBhcmUgJHthYnNf YnVpbGRkaXJ9L2FnZ3JlZ2F0ZV9zaXplIC1lIHRlc3RmaWxlLXNpemVzMi5vIDw8XEVPRg0KK2Mg c2l6ZSAxDQoraSBzaXplIDQNCitsIHNpemUgOA0KK3Ygc2l6ZSA4DQorcyBzaXplIDE2DQorY2Eg c2l6ZSAxNg0KK2lhIHNpemUgMTI4DQordmEgc2l6ZSA1MTINCitzYSBzaXplIDEyOA0KK0VPRg0K Kw0KK2V4aXQgMA0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3RmaWxlLXNpemVzMS5vLmJ6MiBiL3Rl c3RzL3Rlc3RmaWxlLXNpemVzMS5vLmJ6Mg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3OWVjYjIwMTQ5ZGZkMWEy NTIwYWVhZDdmZTM1NjJlNzdiNjY4MWINCkdJVCBiaW5hcnkgcGF0Y2gNCmxpdGVyYWwgMTAxMg0K emNtVjxRMH1LMkBUNCpeakwwS2tLU3Z4RSFMalZKX3xOc0MwfExeWWFePFVyWihoMHhzLXwqcmp6 KEAhSEt0S1JVDQp6MVBCTktJN3JYfkwlPktZWkh6UF9HJHRodkg1IWw5XnJ3PH44QmI0QyhAbXQp NkRDN0xZNSkmVldONV9HWTNnWVcNCnoxMGZOcXNwK1BnTURrP0IzN3tVSjAwMDkoMDAwMDAwMEUk STAwMDAwMDAwSTxLbVkmJDAwMDAwOH5efFMwMDAwMQ0KemtrOX1DMDAwMDAwMEtsd3NpdnZvWHtN dGxuQEVPK0NQdFY/cUpFJjdHJkRVO0cjWEBLMGo2a1c3KHNffHVEWnJKDQp6P188V1dCNGoyP0ky OEtKVWlSJHhJUWVNUDdfYFNxVU9qMHpZOyZrVExiJTM2MjQzejRPQT1MbGJxQV5CbG1QUCkNCnoh P2hoLUZJc0c4VjxPRns9fXtCdDtIU1R6YWlVT1g5dkR8PiFPVyFxISRYLV4+UWRJKHFeWkBCd2FO WGdQODs2Ow0KemtMYl9Md2AlYDZoSX0wZk5rJV9jRWQoUHdPUnYtNlRSfEZjPnYxcXMlTHklOStT bzFXe3VpV01tP2BBPkppZEV6DQp6ZjYjPHpAKkZhZGtxO0M7QTExbi15IXBOeGdrME5CPzBjKmhT WXclfmxPJns3ZzZjMzRnYGlUPHVlNDk9M3crWXcNCnp3MWJ8LVJ1YElYXmchNXo4IWExYk1gTW95 KVkqPikqQWgmMHpYMmdATEt7TjJ1THV6PkVObigqNjRQaW1BMnNfQQ0Kenc3QEtCQ2RBa2s7fD5J K29oQVhYaVUxQzRHJmVCcSpUWHF5WHRtTjd0NSlvOUN3cHp1czQ5NCZSUihrdi1uS35xDQp6a35h M3xAMDBuaGp3TDV3P2t+eG5ndDgrQzBrbiMhTGZeKnQ/JlcjaGlQSiV0VjxeS2NwI1lJQ3FTXzQ0 cEFNaCkNCnpiYFpaWEt0MllHYH1qdFZpVmI7MDxqX0dWU35rRTAzYG1CeHdLU0JhdmN6Q3ZtNSVZ MlFsPVBLIyl9d0x3X2B6Wg0KemFSey0paHIyQVRsd0BvNj11dzxUZz1NV3A1SGVWSlQ+bDtYbG1q LXdtVEBxLWc/dEgrbyNHTGRoVStfbV5XTXFtDQp6Pmk7dVopPylAcEVOQz4jMm4ocSlWVGVJMzNM flFMI1Q4Kmo3aEtTZTcmOUgyLUQ0bERyNXBzNXlAT0xUUmBAeWUNCnojfjBqYShZYn1wd3tGeXA+ Q0BSUDF9eFJtRFBwcHwkWnJGb3Ewdm9xaEolTno3SXJIcDY0OThvZ0tZZihJNjwoNg0Kek5Qc0s9 KzNBLTZgJVFwUWtnK1AtaVFqe3EzZTVTWUI7XiZDOGxzckN3R2woLU4qOUhTJnsydXhCZmsrU00q I2QxDQp6SUMlc3NDTjB+bXd6ViRrUyRAeEZVVk8ocTxNQmhRdC0oWHJkUVRQI1FYVDZtRkBKdTIz XlJjcVYma1F6YkIhVigNCnpyeFFDSyNjI3B+YUtafGY/OFhHRFFsWSlBVTsmeTROPzs9Y0V5KXts aSU4NUo8Y2EzWlNqREE1eDFlZUNnVC1WaQ0KeilVO3dxaHw5VnBXTWVRaVZpYCgjXzF0N3p4RnxN QVZKbVBuaCllKTwjfj9pZj1jN3B5emRYckF6eXUobVJuWmU5DQppOEhJRmh2M20xRFdWLUledSF1 aVomUTRNVHt4ME4tYUdAWX1TV3QkRChacXJQDQoNCmxpdGVyYWwgMA0KSGNtVj9kMDAwMDENCg0K ZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3RmaWxlLXNpemVzMi5vLmJ6MiBiL3Rlc3RzL3Rlc3RmaWxl LXNpemVzMi5vLmJ6Mg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiZDdiNDdmNzQyNTRkZWMzZjQwODRhYmMwNDY3 Mjk0ZDdmM2I2ZDYNCkdJVCBiaW5hcnkgcGF0Y2gNCmxpdGVyYWwgMTI4Mw0KemNtVitlMV5vSSNU NCpeakwwS2tLU3h0PD9NZ1JxanxOc0MwfEx5PGx7cn5eeCtUczgyfDlSa3s7NCVYaEtANENeDQp6 TkVrR01eOWF4Y1QzYjkwUj9LcVUhLUZXTW9+ZnppJTRWalhPb283KVFfXn5SbGhrUkFMaldoSkZj MWNyczIrbDUNCnpnQ3o4eGsmTylvbmdWJUQyfiRhc09wRm1kT3NEQShYYWhoMmxTNG9+NU5INFow MDAwMDAwRSFfTyVSRVlyfEt1RQ0Kej5VbUZVQVpRdWBMcUllRXFkKk5Ga05eTXgwMDE3UWs1Qis7 ZzgpVmVofD93IWtpOztJQ0lDaGVramJWKU1uKWplDQp6eilWYURofHokSW5KQF93Z3J+QW8rTDVN QjgzdXp1MGltRXxXQkBiKDAwMDAwNDFmUnVwY3ZBPDl7N3w5JGBaeXQNCnoxX2hUNmJQeT0yRzN6 S2FVZC10I3kpS3RhWDVEQGwtcUlje25HUGV5aXIlUEdmbns5eCFFNUhoK3NOcEw3QnJvUw0KelEj eHkkZ20lU3o9Yl9UVHZHcH5eUjd8LSF3VTY2PVMkRU4oKmhmflZ7VkFrfG1sbXdoTFFuej95ZGEw QGdNc0N8DQp6IU5QNXsmY2V+VU4pZzJmV0dVQTNhUU1BbmVvR1ZZaGJgXnNvdFVLSiFpfCZGPE8w JikrR301MCM5QSNDSXd7PyUNCnpAUjUkWTQlK3RAWnc1NChJJD87NUlIe3dRI3l9Y2RqXiEjfClA SilZWi10dWV2I0AtUld3OEBoO09BSHRRI0dKLQ0KeiM4Q3R9VXozJCFLX2dUOW9pKWN7TD4wO2Rx X0FLWG9SOSV9eTZfaXgmRCpNS2hKY1Y3cCt0ajxAQ2M7NHh3KmNADQp6U1kxQD1VZUo9RFY4I3A7 WGRzLTQ4NFBJYXt3IW9MS2VrJjspV0pRY0hjYm1zbVRkdUcoaSptYTdDREled1ArTnINCnpBZW9D aylISXRBdHM3IzdnYUlxPHcxUT9PQk82MCNVT1R1SVd7aTZQKT9oKj1YJGlFRkdsZnFTaHleUF5u QHgjTQ0KeigxPldzTDw0QzYqcFMqbCs4YW5zaUxxYT5gWkQhfV5BMTM/eT89KiM+fGhje2Vqekh4 bWRLSzJ0WnFDQCE2Xys2DQp6a2ZNVUNDfU5iQUxrbnNvUmd8RChMPWY+dGJgT0hRNT5oZSpoV19+ Z21oNyEoPkNAd05LWWk3fmtYKUt+R0w0eS0NCnpoVmRZc05VWSNoKnFhLUw0P1pXI1V1RlctciRW NEtPTzJBX3AoNHBmQXVFem1OKiszflk3diRMe1VAU3lCX1RuQQ0KeiQjOD9oJV59aFYwZzwxUm1a JjVKNVhIUzFDNG5URmZTYSprM3VTTGpkbz9tOVZOI2RgPSFGd09KOW1Lc0EmNjhlDQp6QXI2OGlH QkhIcTJBWFNIdX5Nd3Bua3JgKD9hbX1maVg8cjcqKVZZTlYxT301cDkmJCFHb315dHFiV3A2Zyl6 cCoNCnp0IWE+ZU5xRHF+dzY3Uyk2c014UCNZIWJXMSpVWjVxYH19cVZfJS0mQX05cFVSNzlYYzJZ cDQ7Qm51JXlDNVImaA0KelJSU3Apejx9VCtDQ3d7P0E5WmlOWjJjSkZtdXY3cGVTR0IxVHVCdiFS NXIxciM2Q3NGPmVQekU1bEFBR00mUmomDQp6JDhqNHczY15WJnwzaDledTZoVFdPZkNvRURzUWU/ K08+S3lRPFBXZEEyYnFndSE+QEo8RkclIXB3fV9QTykrcT8NCnpCKUN8NVhfbn4xRCpqcnNjeFA2 KjNNJkBeQ1h9fGVzUnJLdVlqUSRERSZfbk9vfDU+aUYkRDBYWjErSWVfUGs1cg0KekxWZF4tV3Vn ZTYyeShKZU5UdzBWUjtaIT9ZbTx9PCNvO09Va3tpJDI1cDtuI3AkU1J8PzclOWUhVjk7ci00VyMh DQp6dk5veWAkU19DNzZ0MW5TNTNsJXhyNntHMDQyNERvTzB0c01qblRyQSNwWUg/JGNYNGMlYygr a09nY1JSNGc8Pj0NCnpnTm45UmFacGUhdVM4YT5TYmh8aVk7KzU8ZG9oI1hqZ0YtKTJgMFQzNUto dys3ZUs1bFJkbmQ4RGdfc0peUm94dQ0KdEt+OERtb0x1I0U4RE5VJENDc0grIUgkPitKP01mTmpj NUJBMDhzejx5T0pyd2dvMTJsOFplPmxLPGZZaQ0KDQpsaXRlcmFsIDANCkhjbVY/ZDAwMDAxDQoN Ci0tIA0KMS44LjMuMQ0KDQo= --===============3469114339241319900==--