From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JZk9u-0007Kj-DG for qemu-devel@nongnu.org; Thu, 13 Mar 2008 05:55:34 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JZk9p-0007Im-Ll for qemu-devel@nongnu.org; Thu, 13 Mar 2008 05:55:34 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JZk9p-0007Ia-Hs for qemu-devel@nongnu.org; Thu, 13 Mar 2008 05:55:29 -0400 Received: from smtp7-g19.free.fr ([212.27.42.64]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JZk9o-00055X-Rb for qemu-devel@nongnu.org; Thu, 13 Mar 2008 05:55:29 -0400 Received: from smtp7-g19.free.fr (localhost [127.0.0.1]) by smtp7-g19.free.fr (Postfix) with ESMTP id 4DD86322861 for ; Thu, 13 Mar 2008 10:55:28 +0100 (CET) Received: from [127.0.0.1] (rob92-4-82-225-201-66.fbx.proxad.net [82.225.201.66]) by smtp7-g19.free.fr (Postfix) with ESMTP id E146132283C for ; Thu, 13 Mar 2008 10:55:27 +0100 (CET) Message-ID: <47D8FA0D.1020307@reactos.org> Date: Thu, 13 Mar 2008 10:55:25 +0100 From: =?ISO-8859-1?Q?Herv=E9_Poussineau?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010308020407070006000203" Subject: [Qemu-devel] [PATCH] ds1225y nvram: Fix some bugs [v3] Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------010308020407070006000203 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Hi, Attached files fixes some problems with nvram emulation: - whole nvram was erased in some conditions - fix out of range accesses - improve reading speed by keeping contents in memory Changelog v1 to v2 - rename capacity to chip_size - write nvram contents during initialization only the first time Changelog v2 to v3 - write nvram contents at each initialization, because 'wb' mode cleans the file Thanks Aurelien for your comments. Herv=E9 --------------010308020407070006000203 Content-Type: text/plain; name="ds1225y_v3.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="ds1225y_v3.patch" SW5kZXg6IGh3L2RzMTIyNXkuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9zb3VyY2Vz L3FlbXUvcWVtdS9ody9kczEyMjV5LmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjQNCmRp ZmYgLXUgLXIxLjQgaHcvZHMxMjI1eS5jDQotLS0gaHcvZHMxMjI1eS5jCTEzIE1hciAyMDA4 IDAxOjE5OjE1IC0wMDAwCTEuNA0KKysrIGh3L2RzMTIyNXkuYwkxMyBNYXIgMjAwOCAwNzo0 MToxNSAtMDAwMA0KQEAgLTEsOCArMSw4IEBADQogLyoNCiAgKiBRRU1VIE5WUkFNIGVtdWxh dGlvbiBmb3IgRFMxMjI1WSBjaGlwDQotICogDQotICogQ29weXJpZ2h0IChjKSAyMDA3IEhl cnbpIFBvdXNzaW5lYXUNCi0gKiANCisgKg0KKyAqIENvcHlyaWdodCAoYykgMjAwNy0yMDA4 IEhlcnbpIFBvdXNzaW5lYXUNCisgKg0KICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkNCiAg KiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KICAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMN CkBAIC0yNiw5OCArMjYsMTY5IEBADQogI2luY2x1ZGUgIm1pcHMuaCINCiAjaW5jbHVkZSAi bnZyYW0uaCINCiANCi10eXBlZGVmIGVudW0NCi17DQotICAgIG5vbmUgPSAwLA0KLSAgICBy ZWFkbW9kZSwNCi0gICAgd3JpdGVtb2RlLA0KLX0gbnZyYW1fb3Blbl9tb2RlOw0KKy8vI2Rl ZmluZSBERUJVR19OVlJBTQ0KIA0KLXN0cnVjdCBkczEyMjV5X3QNCit0eXBlZGVmIHN0cnVj dCBkczEyMjV5X3QNCiB7DQogICAgIHRhcmdldF9waHlzX2FkZHJfdCBtZW1fYmFzZTsNCi0g ICAgdWludDMyX3QgY2FwYWNpdHk7DQotICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOw0KKyAg ICB1aW50MzJfdCBjaGlwX3NpemU7DQogICAgIFFFTVVGaWxlICpmaWxlOw0KLSAgICBudnJh bV9vcGVuX21vZGUgb3Blbl9tb2RlOw0KLX07DQorICAgIHVpbnQ4X3QgKmNvbnRlbnRzOw0K KyAgICB1aW50OF90IHByb3RlY3Rpb247DQorfSBkczEyMjV5X3Q7DQogDQotc3RhdGljIGlu dCBkczEyMjV5X3NldF90b19tb2RlKGRzMTIyNXlfdCAqTlZSQU0sIG52cmFtX29wZW5fbW9k ZSBtb2RlLCBjb25zdCBjaGFyICpmaWxlbW9kZSkNCi17DQotICAgIGlmIChOVlJBTS0+b3Bl bl9tb2RlICE9IG1vZGUpDQotICAgIHsNCi0gICAgICAgIGlmIChOVlJBTS0+ZmlsZSkNCi0g ICAgICAgICAgICBxZW11X2ZjbG9zZShOVlJBTS0+ZmlsZSk7DQotICAgICAgICBOVlJBTS0+ ZmlsZSA9IHFlbXVfZm9wZW4oTlZSQU0tPmZpbGVuYW1lLCBmaWxlbW9kZSk7DQotICAgICAg ICBOVlJBTS0+b3Blbl9tb2RlID0gbW9kZTsNCi0gICAgfQ0KLSAgICByZXR1cm4gKE5WUkFN LT5maWxlICE9IE5VTEwpOw0KLX0NCiANCiBzdGF0aWMgdWludDMyX3QgbnZyYW1fcmVhZGIg KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpDQogew0KLSAgICBkczEy MjV5X3QgKk5WUkFNID0gb3BhcXVlOw0KKyAgICBkczEyMjV5X3QgKnMgPSBvcGFxdWU7DQog ICAgIGludDY0X3QgcG9zOw0KKyAgICB1aW50MzJfdCB2YWw7DQorDQorICAgIHBvcyA9IGFk ZHIgLSBzLT5tZW1fYmFzZTsNCisgICAgaWYgKHBvcyA+PSBzLT5jaGlwX3NpemUpDQorICAg ICAgICBwb3MgLT0gcy0+Y2hpcF9zaXplOw0KKw0KKyAgICB2YWwgPSBzLT5jb250ZW50c1tw b3NdOw0KKw0KKyNpZmRlZiBERUJVR19OVlJBTQ0KKyAgICBwcmludGYoIm52cmFtOiByZWFk IDB4JXggYXQgIiBUQVJHRVRfRk1UX2x4ICJcbiIsIHZhbCwgYWRkcik7DQorI2VuZGlmDQor ICAgIHJldHVybiB2YWw7DQorfQ0KIA0KLSAgICBwb3MgPSBhZGRyIC0gTlZSQU0tPm1lbV9i YXNlOw0KLSAgICBpZiAoYWRkciA+PSBOVlJBTS0+Y2FwYWNpdHkpDQotICAgICAgICBhZGRy IC09IE5WUkFNLT5jYXBhY2l0eTsNCitzdGF0aWMgdWludDMyX3QgbnZyYW1fcmVhZHcgKHZv aWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpDQorew0KKyAgICB1aW50MzJf dCB2Ow0KKyAgICB2ID0gbnZyYW1fcmVhZGIob3BhcXVlLCBhZGRyKTsNCisgICAgdiB8PSBu dnJhbV9yZWFkYihvcGFxdWUsIGFkZHIgKyAxKSA8PCA4Ow0KKyAgICByZXR1cm4gdjsNCit9 DQogDQotICAgIGlmICghZHMxMjI1eV9zZXRfdG9fbW9kZShOVlJBTSwgcmVhZG1vZGUsICJy YiIpKQ0KLSAgICAgICAgcmV0dXJuIDA7DQotICAgIHFlbXVfZnNlZWsoTlZSQU0tPmZpbGUs IHBvcywgU0VFS19TRVQpOw0KLSAgICByZXR1cm4gKHVpbnQzMl90KXFlbXVfZ2V0X2J5dGUo TlZSQU0tPmZpbGUpOw0KK3N0YXRpYyB1aW50MzJfdCBudnJhbV9yZWFkbCAodm9pZCAqb3Bh cXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikNCit7DQorICAgIHVpbnQzMl90IHY7DQor ICAgIHYgPSBudnJhbV9yZWFkYihvcGFxdWUsIGFkZHIpOw0KKyAgICB2IHw9IG52cmFtX3Jl YWRiKG9wYXF1ZSwgYWRkciArIDEpIDw8IDg7DQorICAgIHYgfD0gbnZyYW1fcmVhZGIob3Bh cXVlLCBhZGRyICsgMikgPDwgMTY7DQorICAgIHYgfD0gbnZyYW1fcmVhZGIob3BhcXVlLCBh ZGRyICsgMykgPDwgMjQ7DQorICAgIHJldHVybiB2Ow0KIH0NCiANCi1zdGF0aWMgdm9pZCBu dnJhbV93cml0ZWIgKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVp bnQzMl90IHZhbHVlKQ0KK3N0YXRpYyB2b2lkIG52cmFtX3dyaXRlYiAodm9pZCAqb3BhcXVl LCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWludDMyX3QgdmFsKQ0KIHsNCi0gICAgZHMx MjI1eV90ICpOVlJBTSA9IG9wYXF1ZTsNCisgICAgZHMxMjI1eV90ICpzID0gb3BhcXVlOw0K ICAgICBpbnQ2NF90IHBvczsNCiANCi0gICAgcG9zID0gYWRkciAtIE5WUkFNLT5tZW1fYmFz ZTsNCi0gICAgaWYgKGRzMTIyNXlfc2V0X3RvX21vZGUoTlZSQU0sIHdyaXRlbW9kZSwgIndi IikpDQotICAgIHsNCi0gICAgICAgIHFlbXVfZnNlZWsoTlZSQU0tPmZpbGUsIHBvcywgU0VF S19TRVQpOw0KLSAgICAgICAgcWVtdV9wdXRfYnl0ZShOVlJBTS0+ZmlsZSwgKGludCl2YWx1 ZSk7DQorI2lmZGVmIERFQlVHX05WUkFNDQorICAgIHByaW50ZigibnZyYW06IHdyaXRlIDB4 JXggYXQgIiBUQVJHRVRfRk1UX2x4ICJcbiIsIHZhbCwgYWRkcik7DQorI2VuZGlmDQorDQor ICAgIHBvcyA9IGFkZHIgLSBzLT5tZW1fYmFzZTsNCisgICAgcy0+Y29udGVudHNbcG9zXSA9 IHZhbCAmIDB4ZmY7DQorICAgIGlmIChzLT5maWxlKSB7DQorICAgICAgICBxZW11X2ZzZWVr KHMtPmZpbGUsIHBvcywgU0VFS19TRVQpOw0KKyAgICAgICAgcWVtdV9wdXRfYnl0ZShzLT5m aWxlLCAoaW50KXZhbCk7DQorICAgICAgICBxZW11X2ZmbHVzaChzLT5maWxlKTsNCisgICAg fQ0KK30NCisNCitzdGF0aWMgdm9pZCBudnJhbV93cml0ZXcgKHZvaWQgKm9wYXF1ZSwgdGFy Z2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQzMl90IHZhbCkNCit7DQorICAgIG52cmFtX3dy aXRlYihvcGFxdWUsIGFkZHIsIHZhbCAmIDB4ZmYpOw0KKyAgICBudnJhbV93cml0ZWIob3Bh cXVlLCBhZGRyICsgMSwgKHZhbCA+PiA4KSAmIDB4ZmYpOw0KK30NCisNCitzdGF0aWMgdm9p ZCBudnJhbV93cml0ZWwgKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIs IHVpbnQzMl90IHZhbCkNCit7DQorICAgIG52cmFtX3dyaXRlYihvcGFxdWUsIGFkZHIsIHZh bCAmIDB4ZmYpOw0KKyAgICBudnJhbV93cml0ZWIob3BhcXVlLCBhZGRyICsgMSwgKHZhbCA+ PiA4KSAmIDB4ZmYpOw0KKyAgICBudnJhbV93cml0ZWIob3BhcXVlLCBhZGRyICsgMiwgKHZh bCA+PiAxNikgJiAweGZmKTsNCisgICAgbnZyYW1fd3JpdGViKG9wYXF1ZSwgYWRkciArIDMs ICh2YWwgPj4gMjQpICYgMHhmZik7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG52cmFtX3dyaXRl Yl9wcm90ZWN0ZWQgKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVp bnQzMl90IHZhbCkNCit7DQorICAgIGRzMTIyNXlfdCAqcyA9IG9wYXF1ZTsNCisNCisgICAg aWYgKHMtPnByb3RlY3Rpb24gIT0gNykgew0KKyNpZmRlZiBERUJVR19OVlJBTQ0KKyAgICBw cmludGYoIm52cmFtOiBwcmV2ZW50IHdyaXRlIG9mIDB4JXggYXQgIiBUQVJHRVRfRk1UX2x4 ICJcbiIsIHZhbCwgYWRkcik7DQorI2VuZGlmDQorICAgICAgICByZXR1cm47DQogICAgIH0N CisNCisgICAgbnZyYW1fd3JpdGViKG9wYXF1ZSwgYWRkciAtIHMtPmNoaXBfc2l6ZSwgdmFs KTsNCit9DQorDQorc3RhdGljIHZvaWQgbnZyYW1fd3JpdGV3X3Byb3RlY3RlZCAodm9pZCAq b3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWludDMyX3QgdmFsKQ0KK3sNCisg ICAgbnZyYW1fd3JpdGViX3Byb3RlY3RlZChvcGFxdWUsIGFkZHIsIHZhbCAmIDB4ZmYpOw0K KyAgICBudnJhbV93cml0ZWJfcHJvdGVjdGVkKG9wYXF1ZSwgYWRkciArIDEsICh2YWwgPj4g OCkgJiAweGZmKTsNCit9DQorDQorc3RhdGljIHZvaWQgbnZyYW1fd3JpdGVsX3Byb3RlY3Rl ZCAodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWludDMyX3QgdmFs KQ0KK3sNCisgICAgbnZyYW1fd3JpdGViX3Byb3RlY3RlZChvcGFxdWUsIGFkZHIsIHZhbCAm IDB4ZmYpOw0KKyAgICBudnJhbV93cml0ZWJfcHJvdGVjdGVkKG9wYXF1ZSwgYWRkciArIDEs ICh2YWwgPj4gOCkgJiAweGZmKTsNCisgICAgbnZyYW1fd3JpdGViX3Byb3RlY3RlZChvcGFx dWUsIGFkZHIgKyAyLCAodmFsID4+IDE2KSAmIDB4ZmYpOw0KKyAgICBudnJhbV93cml0ZWJf cHJvdGVjdGVkKG9wYXF1ZSwgYWRkciArIDMsICh2YWwgPj4gMjQpICYgMHhmZik7DQogfQ0K IA0KIHN0YXRpYyBDUFVSZWFkTWVtb3J5RnVuYyAqbnZyYW1fcmVhZFtdID0gew0KICAgICAm bnZyYW1fcmVhZGIsDQotICAgIE5VTEwsDQotICAgIE5VTEwsDQorICAgICZudnJhbV9yZWFk dywNCisgICAgJm52cmFtX3JlYWRsLA0KIH07DQogDQogc3RhdGljIENQVVdyaXRlTWVtb3J5 RnVuYyAqbnZyYW1fd3JpdGVbXSA9IHsNCiAgICAgJm52cmFtX3dyaXRlYiwNCi0gICAgTlVM TCwNCi0gICAgTlVMTCwNCisgICAgJm52cmFtX3dyaXRldywNCisgICAgJm52cmFtX3dyaXRl bCwNCiB9Ow0KIA0KLXN0YXRpYyBDUFVXcml0ZU1lbW9yeUZ1bmMgKm52cmFtX25vbmVbXSA9 IHsNCi0gICAgTlVMTCwNCi0gICAgTlVMTCwNCi0gICAgTlVMTCwNCitzdGF0aWMgQ1BVV3Jp dGVNZW1vcnlGdW5jICpudnJhbV93cml0ZV9wcm90ZWN0ZWRbXSA9IHsNCisgICAgJm52cmFt X3dyaXRlYl9wcm90ZWN0ZWQsDQorICAgICZudnJhbV93cml0ZXdfcHJvdGVjdGVkLA0KKyAg ICAmbnZyYW1fd3JpdGVsX3Byb3RlY3RlZCwNCiB9Ow0KIA0KIC8qIEluaXRpYWxpc2F0aW9u IHJvdXRpbmUgKi8NCi1kczEyMjV5X3QgKmRzMTIyNXlfaW5pdCh0YXJnZXRfcGh5c19hZGRy X3QgbWVtX2Jhc2UsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQ0KK3ZvaWQgKmRzMTIyNXlfaW5p dCh0YXJnZXRfcGh5c19hZGRyX3QgbWVtX2Jhc2UsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQ0K IHsNCiAgICAgZHMxMjI1eV90ICpzOw0KLSAgICBpbnQgbWVtX2luZGV4MSwgbWVtX2luZGV4 MjsNCisgICAgaW50IG1lbV9pbmRleFJXLCBtZW1faW5kZXhSUDsNCisgICAgUUVNVUZpbGUg KmZpbGU7DQogDQogICAgIHMgPSBxZW11X21hbGxvY3ooc2l6ZW9mKGRzMTIyNXlfdCkpOw0K ICAgICBpZiAoIXMpDQogICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgcy0+Y2hpcF9zaXpl ID0gMHgyMDAwOyAvKiBGaXhlZCBmb3IgZHMxMjI1eSBjaGlwOiA4IEtpQiAqLw0KKyAgICBz LT5jb250ZW50cyA9IHFlbXVfbWFsbG9jeihzLT5jaGlwX3NpemUpOw0KKyAgICBpZiAoIXMt PmNvbnRlbnRzKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KICAgICBzLT5t ZW1fYmFzZSA9IG1lbV9iYXNlOw0KLSAgICBzLT5jYXBhY2l0eSA9IDB4MjAwMDsgLyogRml4 ZWQgZm9yIGRzMTIyNXkgY2hpcDogOEsgKi8NCi0gICAgcy0+ZmlsZW5hbWUgPSBmaWxlbmFt ZTsNCisgICAgcy0+cHJvdGVjdGlvbiA9IDc7DQorDQorICAgIC8qIFJlYWQgY3VycmVudCBm aWxlICovDQorICAgIGZpbGUgPSBxZW11X2ZvcGVuKGZpbGVuYW1lLCAicmIiKTsNCisgICAg aWYgKGZpbGUpIHsNCisgICAgICAgIC8qIFJlYWQgbnZyYW0gY29udGVudHMgKi8NCisgICAg ICAgIHFlbXVfZ2V0X2J1ZmZlcihmaWxlLCBzLT5jb250ZW50cywgcy0+Y2hpcF9zaXplKTsN CisgICAgICAgIHFlbXVfZmNsb3NlKGZpbGUpOw0KKyAgICB9DQorICAgIHMtPmZpbGUgPSBx ZW11X2ZvcGVuKGZpbGVuYW1lLCAid2IiKTsNCisgICAgaWYgKHMtPmZpbGUpIHsNCisgICAg ICAgIC8qIFdyaXRlIGJhY2sgY29udGVudHMsIGFzICd3YicgbW9kZSBjbGVhbmVkIHRoZSBm aWxlICovDQorICAgICAgICBxZW11X3B1dF9idWZmZXIocy0+ZmlsZSwgcy0+Y29udGVudHMs IHMtPmNoaXBfc2l6ZSk7DQorICAgICAgICBxZW11X2ZmbHVzaChzLT5maWxlKTsNCisgICAg fQ0KIA0KICAgICAvKiBSZWFkL3dyaXRlIG1lbW9yeSAqLw0KLSAgICBtZW1faW5kZXgxID0g Y3B1X3JlZ2lzdGVyX2lvX21lbW9yeSgwLCBudnJhbV9yZWFkLCBudnJhbV93cml0ZSwgcyk7 DQotICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkobWVtX2Jhc2UsIHMtPmNhcGFj aXR5LCBtZW1faW5kZXgxKTsNCi0gICAgLyogUmVhZC1vbmx5IG1lbW9yeSAqLw0KLSAgICBt ZW1faW5kZXgyID0gY3B1X3JlZ2lzdGVyX2lvX21lbW9yeSgwLCBudnJhbV9yZWFkLCBudnJh bV9ub25lLCBzKTsNCi0gICAgY3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9yeShtZW1fYmFz ZSArIHMtPmNhcGFjaXR5LCBzLT5jYXBhY2l0eSwgbWVtX2luZGV4Mik7DQorICAgIG1lbV9p bmRleFJXID0gY3B1X3JlZ2lzdGVyX2lvX21lbW9yeSgwLCBudnJhbV9yZWFkLCBudnJhbV93 cml0ZSwgcyk7DQorICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkobWVtX2Jhc2Us IHMtPmNoaXBfc2l6ZSwgbWVtX2luZGV4UlcpOw0KKyAgICAvKiBSZWFkL3dyaXRlIHByb3Rl Y3RlZCBtZW1vcnkgKi8NCisgICAgbWVtX2luZGV4UlAgPSBjcHVfcmVnaXN0ZXJfaW9fbWVt b3J5KDAsIG52cmFtX3JlYWQsIG52cmFtX3dyaXRlX3Byb3RlY3RlZCwgcyk7DQorICAgIGNw dV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkobWVtX2Jhc2UgKyBzLT5jaGlwX3NpemUsIHMt PmNoaXBfc2l6ZSwgbWVtX2luZGV4UlApOw0KICAgICByZXR1cm4gczsNCiB9DQpJbmRleDog aHcvbWlwcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3NvdXJjZXMvcWVtdS9xZW11 L2h3L21pcHMuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQ0KZGlmZiAtdSAtcjEuMSBo dy9taXBzLmgNCi0tLSBody9taXBzLmgJMTcgTm92IDIwMDcgMTc6MTQ6NDMgLTAwMDAJMS4x DQorKysgaHcvbWlwcy5oCTEgTWFyIDIwMDggMjI6MDc6MzcgLTAwMDANCkBAIC02LDggKzYs OCBAQA0KIFBDSUJ1cyAqcGNpX2d0NjQxMjBfaW5pdChxZW11X2lycSAqcGljKTsNCiANCiAv KiBkczEyMjV5LmMgKi8NCi10eXBlZGVmIHN0cnVjdCBkczEyMjV5X3QgZHMxMjI1eV90Ow0K LWRzMTIyNXlfdCAqZHMxMjI1eV9pbml0KHRhcmdldF9waHlzX2FkZHJfdCBtZW1fYmFzZSwg Y29uc3QgY2hhciAqZmlsZW5hbWUpOw0KK3ZvaWQgKmRzMTIyNXlfaW5pdCh0YXJnZXRfcGh5 c19hZGRyX3QgbWVtX2Jhc2UsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsNCit2b2lkIGRzMTIy NXlfc2V0X3Byb3RlY3Rpb24odm9pZCAqb3BhcXVlLCBpbnQgcHJvdGVjdGlvbik7DQogDQog LyogZzM2NGZiLmMgKi8NCiBpbnQgZzM2NGZiX21tX2luaXQoRGlzcGxheVN0YXRlICpkcywg dWludDhfdCAqdmdhX3ZyYW1fYmFzZSw= --------------010308020407070006000203--