From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26190 invoked by alias); 23 Apr 2003 17:46:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 26152 invoked by uid 71); 23 Apr 2003 17:46:00 -0000 Resent-Date: 23 Apr 2003 17:46:00 -0000 Resent-Message-ID: <20030423174600.26151.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, lzhen@netsilicon.com Received: (qmail 19903 invoked by uid 48); 23 Apr 2003 17:38:45 -0000 Message-Id: <20030423173845.19902.qmail@sources.redhat.com> Date: Wed, 23 Apr 2003 17:46:00 -0000 From: lzhen@netsilicon.com Reply-To: lzhen@netsilicon.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c/10467: internal compiler error X-SW-Source: 2003-04/txt/msg00989.txt.bz2 List-Id: >Number: 10467 >Category: c >Synopsis: internal compiler error >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Apr 23 17:46:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Li Zhen >Release: unknown-1.0 >Organization: >Environment: windows 2000 >Description: /usr/arm-elf/bin/gcc -c -I./.. -I./../../../../h -I./../../../../h/threadx -I./../../../.. /h/tcpip -I./../pbuilder -I./../../../rphttpd -I./../../../bsp/customize -I./../../../bsp -g -O2 -mbig-endian -mcpu=arm7tdmi -mthumb -mthumb-interwork -D__THUMB -D__GNU__ -DNETOS_G NU_TOOLS -DNET_OS -DNET_WORKS -D_POSIX_SOURCE ./../dhry_1.c -o objs/dhry_1.o ../dhry_1.c: In function `Proc_1': ../dhry_1.c:386: Internal compiler error in pre_insert_copy_insn, at gcse.c:4859 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. make: *** [objs/dhry_1.o] Error 1 >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="dhry_1.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dhry_1.c" LyoNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqDQogKg0KICogICAgICAgICAgICAgICAgICAgIkRIUllT VE9ORSIgQmVuY2htYXJrIFByb2dyYW0NCiAqICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAqICBWZXJzaW9uOiAg ICBDLCBWZXJzaW9uIDIuMQ0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogKiAgRmlsZTogICAgICAg ZGhyeV8xLmMgKHBhcnQgMiBvZiAzKQ0KICoNCiAqICBEYXRlOiAgICAgICBNYXkgMjUsIDE5ODgN CiAqDQogKiAgQXV0aG9yOiAgICAgUmVpbmhvbGQgUC4gV2VpY2tlcg0KICoNCiAqIFdpdGggTW9k aWZpY2F0aW9ucyBieSBDaGFybGVzIEdvcmRvbiBvZiBORVRzaWxpY29uLg0KICoNCiAqIFRoaXMg YXBwbGljYXRpb24gcnVucyB0aGUgRGhyeXN0b25lIGJlbmNobWFyayBvbiBhIE5FVEEtNTAgcHJv Y2Vzc29yLiAgSW4NCiAqIG9yZGVyIHRvIGdldCB0aGUgYmVzdCBwb3NzaWJsZSBwZXJmb3JtYW5j ZSwgdGhlIGZvbGxvd2luZyBvcHRpbWl6YXRpb25zDQogKiBoYXZlIGJlZW4gbWFkZS4NCiAqDQog KiAgMS4gIFRoZSBiZW5jaG1hcmsgaXMgZXhlY3V0ZWQgd2l0aCBhbGwgaW50ZXJydXB0cyBleGNl cHQgZm9yIHRoZSB0aW1lcg0KICogICAgICBkaXNhYmxlZCwgYW5kIHdpdGggdGhyZWFkIHByZWVt cHRpb24gZGlzYWJsZWQuDQogKiAgMi4gIFRoZSBhY3R1YWwgYmVuY2htYXJrIGNvZGUgaXMgcmVs b2NhdGVkIHRvIGNhY2hlIFJBTSBiZWZvcmUgaXQgaXMNCiAqICAgICAgZXhlY3V0ZWQuDQogKiAg My4gIFRoZSBzdGFjayB1c2VkIGJ5IHRoZSBiZW5jaG1hcmsgdGhyZWFkIGlzIGluIGNhY2hlIFJB TS4NCiAqICA0LiAgQXMgbWFueSBvZiB0aGUgYmVuY2htYXJrIHZhcmlhYmxlcyBhbmQgZGF0YSBz dHJ1Y3R1cmVzIGhhdmUgYmVlbg0KICogICAgICBtb3ZlZCB0byBjYWNoZSBSQU0gYXMgd291bGQg Zml0Lg0KICoNCiAqICBJbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgbW9kaWZpY2F0aW9ucyBmb3Ig cGVyZm9ybWFuY2UsIGl0IHdhcyBhbHNvDQogKiAgbmVjZXNzYXJ5IHRvIG1vdmUgdGhlIEkvTyBj b2RlIG91dCBvZiB0aGUgYmVuY2htYXJrIHRlc3QgYW5kIGludG8NCiAqICBhIHNlcGVyYXRlIHRo cmVhZC4gIFRoaXMgd2FzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGNvdWxkbid0IGFsbG9jYXRlDQog KiAgYSBzdGFjayBpbiBjYWNoZSBSQU0gdGhhdCBpcyBiaWcgZW5vdWdoIGZvciBwcmludGYuDQog Kg0KICogIEFsc28gbm90ZSB0aGF0IHdlIGFyZSB1c2luZyBvdXIgb3duIGNvcGllcyBmb3Igc3Ry Y3B5LCBzdHJjbXAsIGFuZA0KICogIGludGVnZXIgZGl2aWRlLiAgVGhpcyBpcyBuZWNlc3Nhcnkg YmVjYXVzZSB3ZSBtb3ZlIHRoZSBiZW5jaG1hcmsgY29kZQ0KICogIGludG8gY2FjaGUgUkFNIGJl Zm9yZSB3ZSBleGVjdXRlLiAgU2luY2UgdGhlIEFSTSB1c2VzIHJlbGF0aXZlIGp1bXBzDQogKiAg YW5kIGNhbGxzIHRvIGFsbCBhZGRyZXNzZXMsIG1vdmluZyB0aGUgY29kZSBpbnZhbGlkYXRlcyBh bnkgbGlua3MgdG8NCiAqICBleHRlcm5hbCByb3V0aW5lcy4gIFNvLCB3ZSBoYWQgdG8gcmVwbGFj ZSB0aGVtIHdpdGggb3VyIG93biBsb2NhbCANCiAqICBjb3BpZXMuICBUaGUgaW50ZWdlciBkaXZp ZGUgaXMgYSBsaW5lIGJ5IGxpbmUgY29weSBvZiB0aGUgc3RhbmRhcmQgb25lDQogKiAgaW4gdGhl IEdyZWVuIEhpbGxzIGxpYnJhcnkuDQogKg0KICogIEluIGNhc2UgeW91IGFyZSB3b25kZXJpbmcg d2h5IEkgZGlkbid0IHNpbXBseSBsaW5rIHRoZSBiZW5jaG1hcmsgdGVzdA0KICogIGZvciAweGZm ZjAwMDAwIGluc3RlYWQgb2YgbW92aW5nIGl0LCB0aGUgcmVhc29uIGlzIHRoYXQgdGhlIGNhY2hp bmcNCiAqICBmdW5jdGlvbiBoYXMgdG8gYmUgZGlzYWJsZWQgYW5kIGNhY2hlIFJBTSBlbmFibGVk IGJlZm9yZSBjb2RlIGNhbg0KICogIGFjdHVhbGx5IGJlIHB1dCB0aGVyZS4gIFRoZSBDTElCIGNv ZGUgdGhhdCBtb3ZlcyBjb2RlIGludG8gdGhlIHJpZ2h0DQogKiAgcGxhY2VzIGF0IHN0YXJ0dXAg ZG9lc24ndCBrbm93IGFueXRoaW5nIGFib3V0IGNhY2hlLCBzbyB3ZSBoYXZlIHRvDQogKiAgZG8g dGhpcyBieSBoYW5kLg0KICoNCiAqICBUaGUgTkVUQS01MCBoYXMgMTZLIG9mIGNhY2hlIG1lbW9y eSBmcm9tIDB4ZmZmMDAwMDAgdG8gMHhmZmYwM2ZmZi4gIA0KICogIFVubGlrZSB0aGUgTkVUQS00 MCwgd2UgY2FuIGZpdCB0aGUgZW50aXJlIGJlbmNobWFyayByb3V0aW5lIGludG8NCiAqICBjYWNo ZSBSQU0sIGluY2x1ZGluZyB0aGUgMTBLIGFycmF5LiAgQ2FjaGUgUkFNDQogKiAgaXMgdXNlZCBh cyBmb2xsb3dzLg0KICoNCiAqICAgICAgMHhmZmYwMzgwMCAtIDB4ZmZmMDNmZmYgICAgICAgICBz dGFjaw0KICogICAgICAweGZmZjAwZTAwIC0gMHhmZmYwMzgwMCAgICAgICAgIGdsb2JhbCB2YXJp YWJsZXMNCiAqICAgICAgMHhmZmYwMGQwMCAtIDB4ZmZmMDBkZmYgICAgICAgICBOZXh0X1B0cl9H bG9iIGFuZCBQdHJfR2xvYg0KICogICAgICAweGZmZjAwYzAwIC0gMHhmZmYwMGNmZiAgICAgICAg IGRpdmlkZSByb3V0aW5lDQogKiAgICAgIDB4ZmZmMDAwMDAgLSAweGZmZjAwZmZmICAgICAgICAg Q29kZQ0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICANCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKi8NCg0KI2lu Y2x1ZGUgImRocnkuaCINCiNpbmNsdWRlIDx0eF9hcGkuaD4NCiNpbmNsdWRlIDxic3BfYXBpLmg+ DQojZGVmaW5lIFRvb19TbWFsbF9UaW1lIDIwMA0KDQovKiBHbG9iYWwgVmFyaWFibGVzOiAqLw0K DQovKg0KICogVGhlIGZvbGxvd2luZyBwcmFnbWEgY2F1c2VzIHRoZSBnbG9iYWwgdmFyaWFibGVz IGJlbG93IHRvDQogKiBiZSBhbGxvY2F0ZWQgb3V0IG9mIGNhY2hlIFJBTS4NCiAqLw0KLy9MaSBa aGVuICNwcmFnbWEgZ2hzIHNlY3Rpb24gYnNzID0iY2FjaGVic3MiDQoNClJlY19Qb2ludGVyICAg ICBQdHJfR2xvYiwNCiAgICAgICAgICAgICAgICBOZXh0X1B0cl9HbG9iOw0KaW50ICAgICAgICAg ICAgIEludF9HbG9iOw0KQm9vbGVhbiAgICAgICAgIEJvb2xfR2xvYjsNCmNoYXIgICAgICAgICAg ICBDaF8xX0dsb2IsDQogICAgICAgICAgICAgICAgQ2hfMl9HbG9iOw0KaW50ICAgICAgICAgICAg IEFycl8xX0dsb2JbNTBdOw0KaW50ICAgICAgICAgICAgIEFycl8yX0dsb2IgWzUwXSBbNTBdOw0K aW50ICAgICAgICAgICAgIE51bWJlcl9PZl9SdW5zOw0KU3RyXzMwICAgICAgICAgIHNlY29uZFN0 cmluZywgdGhpcmRTdHJpbmc7DQoNCi8qDQogKiBOb3cgZ28gYmFjayB0byBub3JtYWwgZGF0YSBz ZWdtZW50IGFsbG9jYXRpb24uDQogKi8NCi8vTGkgWmhlbiAjcHJhZ21hIGdocyBzZWN0aW9uDQoN Cg0KZXh0ZXJuIGNoYXIgICAgICptYWxsb2MgKCk7DQpFbnVtZXJhdGlvbiAgICAgRnVuY18xICgp Ow0KICAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uIG5lY2Vzc2FyeSBzaW5jZSBFbnVtZXJhdGlvbiBt YXkgbm90IHNpbXBseSBiZSBpbnQgKi8NCg0KI2lmbmRlZiBSRUcNCiAgICAgICAgQm9vbGVhbiBS ZWcgPSBmYWxzZTsNCiNkZWZpbmUgUkVHDQogICAgICAgIC8qIFJFRyBiZWNvbWVzIGRlZmluZWQg YXMgZW1wdHkgKi8NCiAgICAgICAgLyogaS5lLiBubyByZWdpc3RlciB2YXJpYWJsZXMgICAqLw0K I2Vsc2UNCiAgICAgICAgQm9vbGVhbiBSZWcgPSB0cnVlOw0KI2VuZGlmDQoNCi8qIHZhcmlhYmxl cyBmb3IgdGltZSBtZWFzdXJlbWVudDogKi8NCg0KDQpsb25nICAgICAgICAgICAgQmVnaW5fVGlt ZSwNCiAgICAgICAgICAgICAgICBFbmRfVGltZSwNCiAgICAgICAgICAgICAgICBVc2VyX1RpbWU7 DQpmbG9hdCAgICAgICAgICAgTWljcm9zZWNvbmRzLA0KICAgICAgICAgICAgICAgIERocnlzdG9u ZXNfUGVyX1NlY29uZDsNCg0KDQovKiBlbmQgb2YgdmFyaWFibGVzIGZvciB0aW1lIG1lYXN1cmVt ZW50ICovDQoNCi8qDQogKiBGb3J3YXJkIGRlY2xhcmF0aW9ucy4NCiAqLw0Kdm9pZCBsb2NhbFN0 cmNweShjaGFyICpkZXN0LCBjaGFyICpzcmMpOw0Kdm9pZCBkaHJ5c3RvbmUyXzEgKHJlZ2lzdGVy IGludCBOdW1iZXJfT2ZfUnVucywgY2hhciAqU3RyXzFfTG9jKTsNCi8vTGkgWmhlbiBpbnQgKCpj YWNoZURpdmlkZSkoaW50LCBpbnQpID0gKGludCAoKikoaW50LGludCkpMHhmZmYwMGMwMDsNCi8v TGkgWmhlbiBpbnQgX19zZGl2XzMyXzMyKGludCwgaW50KTsNCg0KZXh0ZXJuIHVuc2lnbmVkIGxv bmcgICBOQUlSUU1hc2s7CQkgICAgICAgIC8qIGN1cnJlbnQgc3RhdGUgb2YgSUVSIHJlZ2lzdGVy ICovDQpleHRlcm4gVFhfU0VNQVBIT1JFIGJlbmNobWFya1NlbWFwaG9yZTsgICAgICAgICAvKiBz ZW1hcGhvcmUgdXNlZCB0byBjb250cm9sIHByaW50aW5nIG9mIHJlc3VsdHMqLw0KDQp2b2lkIHJ1 bkRocnlzdG9uZTJfMSgpDQp7DQogICAgU3RyXzMwICAgICAgICAgIFN0cl8xX0xvYzsNCiAgLy9M aSBaaGVuICB2b2lkICAgICAgICAgICAgKmNhY2hlUmFtU3RhcnQgPSAodm9pZCAqKSAweGZmZjAw MDAwOyANCiAgLy9MaSBaaGVuICB2b2lkICAgICAgICAgICAgKCpkaHJ5KShpbnQsIGNoYXIqKSA9 ICh2b2lkICgqKShpbnQsIGNoYXIqKSkgY2FjaGVSYW1TdGFydDsNCiAgICB1bnNpZ25lZCAgICAg ICAgc2F2ZWRJZXI7DQogICAgdW5zaWduZWQgICAgICAgICppZXIgPSAodW5zaWduZWQgKikgMHhm ZmIwMDAzMDsNCiAgICB1bnNpZ25lZCBsb25nICAgc2F2ZWROQUlSUU1hc2s7DQoNCi8qDQogKiBT ZXQgdGhlIG51bWJlciBvZiB0ZXN0IHJ1bnMgYW5kIHNpZ25hbCB0aGUgcm9vdCB0aHJlYWQgdGhh dCBpdCBjYW4gcHJpbnQNCiAqIHRoZSB0ZXN0IGhlYWRlci4NCiAqLw0KICAgIE51bWJlcl9PZl9S dW5zID0gMjUwMDAwOw0KICAgIHR4X3NlbWFwaG9yZV9wdXQgKCZiZW5jaG1hcmtTZW1hcGhvcmUp Ow0KICAgIHR4X3RocmVhZF9zbGVlcCgxMCk7ICAgICAgICAgICAgICAgICAgIC8qIG1ha2Ugc3Vy ZSByb290IHRocmVhZCBoYXMgYSBjaGFuY2UgdG8gZ2V0IGl0Ki8NCiAgICB0eF9zZW1hcGhvcmVf Z2V0ICgmYmVuY2htYXJrU2VtYXBob3JlLCBUWF9XQUlUX0ZPUkVWRVIpOw0KDQoNCiAgLyogSW5p dGlhbGl6YXRpb25zICovDQogICAgc3RyY3B5IChzZWNvbmRTdHJpbmcsICJESFJZU1RPTkUgUFJP R1JBTSwgMidORCBTVFJJTkciKTsNCiAgICBzdHJjcHkgKHRoaXJkU3RyaW5nLCAiREhSWVNUT05F IFBST0dSQU0sIDMnUkQgU1RSSU5HIik7DQovKg0KICogTmV4dF9QdHJfR2xvYiBhbmQgUHRyX0ds b2IgYXJlIGFsbG9jYXRlZCBmcm9tIGNhY2hlIFJBTS4NCiAqLw0KICAgIC8vTGkgWmhlbiBOZXh0 X1B0cl9HbG9iID0gKFJlY19Qb2ludGVyKSAweGZmZjAwZDAwOw0KICAgIC8vTGkgWmhlbiBQdHJf R2xvYiA9IChSZWNfUG9pbnRlcikgKDB4ZmZmMDBkMDAgKyBzaXplb2YoUmVjX1R5cGUpKTsNCg0K CU5leHRfUHRyX0dsb2IgPSAoUmVjX1BvaW50ZXIpIG1hbGxvYyhzaXplb2YoUmVjX1R5cGUpKTsN CiAgICAgICAgUHRyX0dsb2IgPSAoUmVjX1BvaW50ZXIpIG1hbGxvYyhzaXplb2YoUmVjX1R5cGUp KTsNCiAgICANCiAgICBQdHJfR2xvYi0+UHRyX0NvbXAgICAgICAgICAgICAgICAgICAgID0gTmV4 dF9QdHJfR2xvYjsNCiAgICBQdHJfR2xvYi0+RGlzY3IgICAgICAgICAgICAgICAgICAgICAgID0g SWRlbnRfMTsNCiAgICBQdHJfR2xvYi0+dmFyaWFudC52YXJfMS5FbnVtX0NvbXAgICAgID0gSWRl bnRfMzsNCiAgICBQdHJfR2xvYi0+dmFyaWFudC52YXJfMS5JbnRfQ29tcCAgICAgID0gNDA7DQog ICAgbG9jYWxTdHJjcHkgKFB0cl9HbG9iLT52YXJpYW50LnZhcl8xLlN0cl9Db21wLCANCiAgICAg ICAgICAiREhSWVNUT05FIFBST0dSQU0sIFNPTUUgU1RSSU5HIik7DQogICAgbG9jYWxTdHJjcHkg KFN0cl8xX0xvYywgIkRIUllTVE9ORSBQUk9HUkFNLCAxJ1NUIFNUUklORyIpOw0KICAgIA0KICAg IEFycl8yX0dsb2IgWzhdWzddID0gMTA7DQogICAgICAgIC8qIFdhcyBtaXNzaW5nIGluIHB1Ymxp c2hlZCBwcm9ncmFtLiBXaXRob3V0IHRoaXMgc3RhdGVtZW50LCAgICAqLw0KICAgICAgICAvKiBB cnJfMl9HbG9iIFs4XVs3XSB3b3VsZCBoYXZlIGFuIHVuZGVmaW5lZCB2YWx1ZS4gICAgICAgICAg ICAgKi8NCiAgICAgICAgLyogV2FybmluZzogV2l0aCAxNi1CaXQgcHJvY2Vzc29ycyBhbmQgTnVt YmVyX09mX1J1bnMgPiAzMjAwMCwgICovDQogICAgICAgIC8qIG92ZXJmbG93IG1heSBvY2N1ciBm b3IgdGhpcyBhcnJheSBlbGVtZW50LiAgICAgICAgICAgICAgICAgICAqLw0KDQovKg0KICogQ29w eSB0aGUgdGVzdCBjb2RlIGludG8gY2FjaGUgUkFNLg0KICovDQogIC8vTGkgWmhlbiAgbWVtY3B5 IChjYWNoZVJhbVN0YXJ0LCAodm9pZCAqKSBkaHJ5c3RvbmUyXzEsIDB4YmYwKTsNCg0KLyoNCiAq IENvcHkgdGhlIGludGVnZXIgZGl2aWRlIHJvdXRpbmUgdG8gY2FjaGUgUkFNLg0KICovDQogIC8v TGkgWmhlbiAgbWVtY3B5ICgodm9pZCAqKSBjYWNoZURpdmlkZSwgKHZvaWQgKikgX19zZGl2XzMy XzMyLCAweGVlKTsNCg0KDQovKg0KICogRGlzYWJsZSBhbGwgaW50ZXJydXB0cyBleGNlcHQgZm9y IHRpbWVyLg0KICovDQogICAgc2F2ZWRJZXIgPSAqaWVyOyAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogc2F2ZSBjdXJyZW50IEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIqLw0KICAgICppZXIg PSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNodXQgb2ZmIGludGVycnVw dHMqLw0KICAgIHNhdmVkTkFJUlFNYXNrID0gTkFJUlFNYXNrOyAgICAgICAgICAgICAgIC8qIHNh dmUgbWFzayB3b3JkIHVzZWQgYnkgSVJRIGRyaXZlciovDQogICAgTkFJUlFNYXNrID0gMHgyMDsg ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2h1dCBvZmYgZXZlcnl0aGluZyBleGNlcHQgdGhl IHRpbWVyKi8NCiAgICAqaWVyID0gMHgyMDsNCg0KICAvKioqKioqKioqKioqKioqLw0KICAvKiBT dGFydCB0aW1lciAqLw0KICAvKioqKioqKioqKioqKioqLw0KIA0KICAgIEJlZ2luX1RpbWUgPSB0 eF90aW1lX2dldCgpOw0KDQoNCi8qDQogKiBSdW4gdGhlIHRlc3QuDQogKi8NCiAgICBkaHJ5c3Rv bmUyXzEvKkxpIFpoZW4gZGhyeSovKE51bWJlcl9PZl9SdW5zLCBTdHJfMV9Mb2MpOw0KDQoNCiAg LyoqKioqKioqKioqKioqLw0KICAvKiBTdG9wIHRpbWVyICovDQogIC8qKioqKioqKioqKioqKi8N CiAgDQogICAgRW5kX1RpbWUgPSB0eF90aW1lX2dldCgpOw0KDQovKg0KICogUmVzdG9yZSBpbnRl cnJ1cHRzLg0KICovDQogICAgKmllciA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogc2h1dCBvZmYgaW50ZXJydXB0cyovDQogICAgTkFJUlFNYXNrID0gc2F2ZWROQUlSUU1h c2s7ICAgICAgICAgICAgICAgLyogcmVzdG9yZSBtYXNrIHdvcmQgdXNlZCBieSBJUlEgZHJpdmVy Ki8NCiAgICAqaWVyID0gc2F2ZWRJZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXN0 b3JlIGludGVycnVwdCBlbmFibGUgcmVnaXN0ZXIqLw0KICAgIA0KICAgIHR4X3RocmVhZF9zbGVl cCg1KTsgICAgICAgICAgICAgICAgICAgICAgIC8qIGdpdmUgc3lzdGVtIHRpbWUgdG8gcmVjb3Zl ciovDQogICAgDQogICAgVXNlcl9UaW1lID0gRW5kX1RpbWUgLSBCZWdpbl9UaW1lOw0KDQovKg0K ICogU2lnbmFsIHJvb3QgdGhyZWFkIHRoYXQgaXQgY2FuIHByaW50IHRoZSByZXN1bHRzLg0KICov DQogICAgdHhfc2VtYXBob3JlX3B1dCAoJmJlbmNobWFya1NlbWFwaG9yZSk7DQogICAgdHhfdGhy ZWFkX3NsZWVwKDEwKTsgICAgICAgICAgICAgICAgICAgICAgLyogbWFrZSBzdXJlIHJvb3QgdGhy ZWFkIGhhcyBhIGNoYW5jZSB0byBnZXQgaXQqLw0KICAgIHR4X3NlbWFwaG9yZV9nZXQgKCZiZW5j aG1hcmtTZW1hcGhvcmUsIFRYX1dBSVRfRk9SRVZFUik7DQoNCn0NCg0KDQoNCnZvaWQgZGhyeXN0 b25lMl8xIChyZWdpc3RlciBpbnQgTnVtYmVyX09mX1J1bnMsIGNoYXIgKlN0cl8xX0xvYykNCi8q KioqKi8NCg0KICAvKiBtYWluIHByb2dyYW0sIGNvcnJlc3BvbmRzIHRvIHByb2NlZHVyZXMgICAg ICAgICovDQogIC8qIE1haW4gYW5kIFByb2NfMCBpbiB0aGUgQWRhIHZlcnNpb24gICAgICAgICAg ICAgKi8NCnsNCiAgICAgICAgT25lX0ZpZnR5ICAgICAgIEludF8xX0xvYzsNCiAgUkVHICAgT25l X0ZpZnR5ICAgICAgIEludF8yX0xvYzsNCiAgICAgICAgT25lX0ZpZnR5ICAgICAgIEludF8zX0xv YzsNCiAgUkVHICAgY2hhciAgICAgICAgICAgIENoX0luZGV4Ow0KICAgICAgICBFbnVtZXJhdGlv biAgICAgRW51bV9Mb2M7DQovLyAgICAgICAgU3RyXzMwICAgICAgICAgIFN0cl8xX0xvYzsNCiAg ICAgICAgU3RyXzMwICAgICAgICAgIFN0cl8yX0xvYzsNCiAgUkVHICAgaW50ICAgICAgICAgICAg IFJ1bl9JbmRleDsNCg0KICAvKiBJbml0aWFsaXphdGlvbnMgKi8NCg0KICBmb3IgKFJ1bl9JbmRl eCA9IDE7IFJ1bl9JbmRleCA8PSBOdW1iZXJfT2ZfUnVuczsgKytSdW5fSW5kZXgpDQogIHsNCg0K ICAgIFByb2NfNSgpOw0KICAgIFByb2NfNCgpOw0KICAgICAgLyogQ2hfMV9HbG9iID09ICdBJywg Q2hfMl9HbG9iID09ICdCJywgQm9vbF9HbG9iID09IHRydWUgKi8NCiAgICBJbnRfMV9Mb2MgPSAy Ow0KICAgIEludF8yX0xvYyA9IDM7DQogICAgbG9jYWxTdHJjcHkgKFN0cl8yX0xvYywgc2Vjb25k U3RyaW5nKTsNCiAgICBFbnVtX0xvYyA9IElkZW50XzI7DQogICAgQm9vbF9HbG9iID0gISBGdW5j XzIgKFN0cl8xX0xvYywgU3RyXzJfTG9jKTsNCiAgICAgIC8qIEJvb2xfR2xvYiA9PSAxICovDQog ICAgd2hpbGUgKEludF8xX0xvYyA8IEludF8yX0xvYykgIC8qIGxvb3AgYm9keSBleGVjdXRlZCBv bmNlICovDQogICAgew0KICAgICAgSW50XzNfTG9jID0gNSAqIEludF8xX0xvYyAtIEludF8yX0xv YzsNCiAgICAgICAgLyogSW50XzNfTG9jID09IDcgKi8NCiAgICAgIFByb2NfNyAoSW50XzFfTG9j LCBJbnRfMl9Mb2MsICZJbnRfM19Mb2MpOw0KICAgICAgICAvKiBJbnRfM19Mb2MgPT0gNyAqLw0K ICAgICAgSW50XzFfTG9jICs9IDE7DQogICAgfSAvKiB3aGlsZSAqLw0KICAgICAgLyogSW50XzFf TG9jID09IDMsIEludF8yX0xvYyA9PSAzLCBJbnRfM19Mb2MgPT0gNyAqLw0KICAgIFByb2NfOCAo QXJyXzFfR2xvYiwgQXJyXzJfR2xvYiwgSW50XzFfTG9jLCBJbnRfM19Mb2MpOw0KICAgICAgLyog SW50X0dsb2IgPT0gNSAqLw0KICAgIFByb2NfMSAoUHRyX0dsb2IpOw0KICAgIGZvciAoQ2hfSW5k ZXggPSAnQSc7IENoX0luZGV4IDw9IENoXzJfR2xvYjsgKytDaF9JbmRleCkNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogbG9vcCBib2R5IGV4ZWN1dGVkIHR3aWNlICovDQogICAgew0K ICAgICAgaWYgKEVudW1fTG9jID09IEZ1bmNfMSAoQ2hfSW5kZXgsICdDJykpDQogICAgICAgICAg LyogdGhlbiwgbm90IGV4ZWN1dGVkICovDQogICAgICAgIHsNCiAgICAgICAgUHJvY182IChJZGVu dF8xLCAmRW51bV9Mb2MpOw0KICAgICAgICBsb2NhbFN0cmNweSAoU3RyXzJfTG9jLCB0aGlyZFN0 cmluZyk7DQogICAgICAgIEludF8yX0xvYyA9IFJ1bl9JbmRleDsNCiAgICAgICAgSW50X0dsb2Ig PSBSdW5fSW5kZXg7DQogICAgICAgIH0NCiAgICB9DQogICAgICAvKiBJbnRfMV9Mb2MgPT0gMywg SW50XzJfTG9jID09IDMsIEludF8zX0xvYyA9PSA3ICovDQogICAgSW50XzJfTG9jID0gSW50XzJf TG9jICogSW50XzFfTG9jOw0KLyoNCiAqIFRoZSBzdGF0ZW1lbnQgYSA9IGIgLyBjIGFjdHVhbGx5 IGNhdXNlcyBhIGNhbGwgdG8gdGhlDQogKiBpbnRlZ2VyIGRpdmlkZSBmdW5jdGlvbi4gIFNpbmNl IHRoaXMgY29kZSB3aWxsIGJlIHJlbG9jYXRlZCwNCiAqIHdlIGNhbid0IHVzZSB0aGUgbm9ybWFs IGRpdmlkZS4gIEluc3RlYWQsIHdlIGhhdmUgb3VyIG93bg0KICogbG9jYWwgY29weSB0aGF0IHdl IGNhbGwgaW5zdGVhZC4NCiAqLw0KICAgICAgSW50XzFfTG9jID0gbG9jYWxEaXZpZGUgKEludF8z X0xvYywgSW50XzJfTG9jKTsNCg0KICAgIEludF8yX0xvYyA9IDcgKiAoSW50XzJfTG9jIC0gSW50 XzNfTG9jKSAtIEludF8xX0xvYzsNCiAgICAgIC8qIEludF8xX0xvYyA9PSAxLCBJbnRfMl9Mb2Mg PT0gMTMsIEludF8zX0xvYyA9PSA3ICovDQogICAgUHJvY18yICgmSW50XzFfTG9jKTsNCiAgICAg IC8qIEludF8xX0xvYyA9PSA1ICovDQoNCiAgfSAvKiBsb29wICJmb3IgUnVuX0luZGV4IiAqLw0K DQovKioNCg0KLy8gVGhlc2UgcHJpbnRzIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHRoZSB2YWxpZGl0 eSBvZiB0aGUgdGVzdC4NCi8vIFRvIHVzZSB0aGVtLCB5b3UgbXVzdCBzZXR1cCBhIGxhcmdlIHN0 YWNrIGluIG5vcm1hbCBSQU0gYW5kDQovLyB0aGVuIHVuY29tbWVudCB0aGlzIGNvZGUuDQoNCiAg cHJpbnRmICgiICAgICAgICBzaG91bGQgYmU6ICAgREhSWVNUT05FIFBST0dSQU0sIFNPTUUgU1RS SU5HXG4iKTsNCiAgcHJpbnRmICgiSW50XzFfTG9jOiAgICAgICAgICAgJWRcbiIsIEludF8xX0xv Yyk7DQogIHByaW50ZiAoIiAgICAgICAgc2hvdWxkIGJlOiAgICVkXG4iLCA1KTsNCiAgcHJpbnRm ICgiSW50XzJfTG9jOiAgICAgICAgICAgJWRcbiIsIEludF8yX0xvYyk7DQogIHByaW50ZiAoIiAg ICAgICAgc2hvdWxkIGJlOiAgICVkXG4iLCAxMyk7DQogIHByaW50ZiAoIkludF8zX0xvYzogICAg ICAgICAgICVkXG4iLCBJbnRfM19Mb2MpOw0KICBwcmludGYgKCIgICAgICAgIHNob3VsZCBiZTog ICAlZFxuIiwgNyk7DQogIHByaW50ZiAoIkVudW1fTG9jOiAgICAgICAgICAgICVkXG4iLCBFbnVt X0xvYyk7DQogIHByaW50ZiAoIiAgICAgICAgc2hvdWxkIGJlOiAgICVkXG4iLCAxKTsNCiAgcHJp bnRmICgiU3RyXzFfTG9jOiAgICAgICAgICAgJXNcbiIsIFN0cl8xX0xvYyk7DQogIHByaW50ZiAo IiAgICAgICAgc2hvdWxkIGJlOiAgIERIUllTVE9ORSBQUk9HUkFNLCAxJ1NUIFNUUklOR1xuIik7 DQogIHByaW50ZiAoIlN0cl8yX0xvYzogICAgICAgICAgICVzXG4iLCBTdHJfMl9Mb2MpOw0KICBw cmludGYgKCIgICAgICAgIHNob3VsZCBiZTogICBESFJZU1RPTkUgUFJPR1JBTSwgMidORCBTVFJJ TkdcbiIpOw0KICBwcmludGYgKCJcbiIpOw0KKiovDQp9DQoNCg0KLyoNCiAqDQogKiAgRnVuY3Rp b246IHZvaWQgbG9jYWxTdHJjcHkocmVnaXN0ZXIgY2hhciAqZGVzdCwgcmVnaXN0ZXIgY2hhciAq c3JjKQ0KICoNCiAqICBEZXNjcmlwdGlvbjoNCiAqDQogKiAgICAgIExvY2FsIGltcGxlbWVudGF0 aW9uIG9mIHN0cmNweS4gIFRoaXMgZnVuY3Rpb24gaXMgbmVlZGVkIGJlY2F1c2UNCiAqICAgICAg dGhlIGJlbmNobWFyayBjb2RlIGlzIHJlbG9jYXRlZCB0byBjYWNoZSBSQU0sIGFuZCBzbyBhbGwg bGlua3MNCiAqICAgICAgdG8gZXh0ZXJuYWwgcm91dGluZXMgYXJlIGRlc3Ryb3llZC4NCiAqDQog KiAgUGFyYW1ldGVyczoNCiAqDQogKiAgICAgIGRlc3QgICAgICAgIGJ1ZmZlciB0byBjb3B5IHRv DQogKiAgICAgIHNyYyAgICAgICAgIGJ1ZmZlciB0byBjb3B5IGZyb20NCiAqDQogKiAgUmV0dXJu IFZhbHVlczoNCiAqDQogKiAgICAgIG5vbmUNCiAqDQogKi8NCnZvaWQgbG9jYWxTdHJjcHkocmVn aXN0ZXIgY2hhciAqZGVzdCwgcmVnaXN0ZXIgY2hhciAqc3JjKQ0Kew0KICAgIHdoaWxlICgqZGVz dCsrID0gKnNyYysrKTsNCn0NCg0KDQpQcm9jXzEgKFB0cl9WYWxfUGFyKQ0KLyoqKioqKioqKioq KioqKioqKi8NCg0KUkVHIFJlY19Qb2ludGVyIFB0cl9WYWxfUGFyOw0KICAgIC8qIGV4ZWN1dGVk IG9uY2UgKi8NCnsNCiAgUkVHIFJlY19Qb2ludGVyIE5leHRfUmVjb3JkID0gUHRyX1ZhbF9QYXIt PlB0cl9Db21wOyAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog PT0gUHRyX0dsb2JfTmV4dCAqLw0KICAvKiBMb2NhbCB2YXJpYWJsZSwgaW5pdGlhbGl6ZWQgd2l0 aCBQdHJfVmFsX1Bhci0+UHRyX0NvbXAsICAgICovDQogIC8qIGNvcnJlc3BvbmRzIHRvICJyZW5h bWUiIGluIEFkYSwgIndpdGgiIGluIFBhc2NhbCAgICAgICAgICAgKi8NCiAgDQogIHN0cnVjdGFz c2lnbiAoKlB0cl9WYWxfUGFyLT5QdHJfQ29tcCwgKlB0cl9HbG9iKTsgDQogIFB0cl9WYWxfUGFy LT52YXJpYW50LnZhcl8xLkludF9Db21wID0gNTsNCiAgTmV4dF9SZWNvcmQtPnZhcmlhbnQudmFy XzEuSW50X0NvbXAgDQogICAgICAgID0gUHRyX1ZhbF9QYXItPnZhcmlhbnQudmFyXzEuSW50X0Nv bXA7DQogIE5leHRfUmVjb3JkLT5QdHJfQ29tcCA9IFB0cl9WYWxfUGFyLT5QdHJfQ29tcDsNCiAg UHJvY18zICgmTmV4dF9SZWNvcmQtPlB0cl9Db21wKTsNCiAgICAvKiBQdHJfVmFsX1Bhci0+UHRy X0NvbXAtPlB0cl9Db21wIA0KICAgICAgICAgICAgICAgICAgICAgICAgPT0gUHRyX0dsb2ItPlB0 cl9Db21wICovDQogIGlmIChOZXh0X1JlY29yZC0+RGlzY3IgPT0gSWRlbnRfMSkNCiAgICAvKiB0 aGVuLCBleGVjdXRlZCAqLw0KICB7DQogICAgTmV4dF9SZWNvcmQtPnZhcmlhbnQudmFyXzEuSW50 X0NvbXAgPSA2Ow0KICAgIFByb2NfNiAoUHRyX1ZhbF9QYXItPnZhcmlhbnQudmFyXzEuRW51bV9D b21wLCANCiAgICAgICAgICAgJk5leHRfUmVjb3JkLT52YXJpYW50LnZhcl8xLkVudW1fQ29tcCk7 DQogICAgTmV4dF9SZWNvcmQtPlB0cl9Db21wID0gUHRyX0dsb2ItPlB0cl9Db21wOw0KICAgIFBy b2NfNyAoTmV4dF9SZWNvcmQtPnZhcmlhbnQudmFyXzEuSW50X0NvbXAsIDEwLCANCiAgICAgICAg ICAgJk5leHRfUmVjb3JkLT52YXJpYW50LnZhcl8xLkludF9Db21wKTsNCiAgfQ0KICBlbHNlIC8q IG5vdCBleGVjdXRlZCAqLw0KICAgIHN0cnVjdGFzc2lnbiAoKlB0cl9WYWxfUGFyLCAqUHRyX1Zh bF9QYXItPlB0cl9Db21wKTsNCn0gLyogUHJvY18xICovDQoNCg0KUHJvY18yIChJbnRfUGFyX1Jl ZikNCi8qKioqKioqKioqKioqKioqKiovDQogICAgLyogZXhlY3V0ZWQgb25jZSAqLw0KICAgIC8q ICpJbnRfUGFyX1JlZiA9PSAxLCBiZWNvbWVzIDQgKi8NCg0KT25lX0ZpZnR5ICAgKkludF9QYXJf UmVmOw0Kew0KICBPbmVfRmlmdHkgIEludF9Mb2M7ICANCiAgRW51bWVyYXRpb24gICBFbnVtX0xv YzsNCg0KICBJbnRfTG9jID0gKkludF9QYXJfUmVmICsgMTA7DQogIGRvIC8qIGV4ZWN1dGVkIG9u Y2UgKi8NCiAgICBpZiAoQ2hfMV9HbG9iID09ICdBJykNCiAgICAgIC8qIHRoZW4sIGV4ZWN1dGVk ICovDQogICAgew0KICAgICAgSW50X0xvYyAtPSAxOw0KICAgICAgKkludF9QYXJfUmVmID0gSW50 X0xvYyAtIEludF9HbG9iOw0KICAgICAgRW51bV9Mb2MgPSBJZGVudF8xOw0KICAgIH0gLyogaWYg Ki8NCiAgd2hpbGUgKEVudW1fTG9jICE9IElkZW50XzEpOyAvKiB0cnVlICovDQp9IC8qIFByb2Nf MiAqLw0KDQoNClByb2NfMyAoUHRyX1JlZl9QYXIpDQovKioqKioqKioqKioqKioqKioqLw0KICAg IC8qIGV4ZWN1dGVkIG9uY2UgKi8NCiAgICAvKiBQdHJfUmVmX1BhciBiZWNvbWVzIFB0cl9HbG9i ICovDQoNClJlY19Qb2ludGVyICpQdHJfUmVmX1BhcjsNCg0Kew0KICBpZiAoUHRyX0dsb2IgIT0g TnVsbCkNCiAgICAvKiB0aGVuLCBleGVjdXRlZCAqLw0KICAgICpQdHJfUmVmX1BhciA9IFB0cl9H bG9iLT5QdHJfQ29tcDsNCiAgUHJvY183ICgxMCwgSW50X0dsb2IsICZQdHJfR2xvYi0+dmFyaWFu dC52YXJfMS5JbnRfQ29tcCk7DQp9IC8qIFByb2NfMyAqLw0KDQoNClByb2NfNCAoKSAvKiB3aXRo b3V0IHBhcmFtZXRlcnMgKi8NCi8qKioqKioqLw0KICAgIC8qIGV4ZWN1dGVkIG9uY2UgKi8NCnsN CiAgQm9vbGVhbiBCb29sX0xvYzsNCg0KICBCb29sX0xvYyA9IENoXzFfR2xvYiA9PSAnQSc7DQog IEJvb2xfR2xvYiA9IEJvb2xfTG9jIHwgQm9vbF9HbG9iOw0KICBDaF8yX0dsb2IgPSAnQic7DQp9 IC8qIFByb2NfNCAqLw0KDQoNClByb2NfNSAoKSAvKiB3aXRob3V0IHBhcmFtZXRlcnMgKi8NCi8q KioqKioqLw0KICAgIC8qIGV4ZWN1dGVkIG9uY2UgKi8NCnsNCiAgQ2hfMV9HbG9iID0gJ0EnOw0K ICBCb29sX0dsb2IgPSBmYWxzZTsNCn0gLyogUHJvY181ICovDQoNCi8qDQogKg0KICogIEZ1bmN0 aW9uOiB2b2lkIGxvY2FsRGl2aWRlKHJlZ2lzdGVyIGNoYXIgKmRlc3QsIHJlZ2lzdGVyIGNoYXIg KnNyYykNCiAqDQogKiAgRGVzY3JpcHRpb246DQogKg0KICogICAgICBMb2NhbCBpbXBsZW1lbnRh dGlvbiBvZiBpbnRlZ2VyIGRpdmlkZS4gIE5lZWRlZCBiZWNhdXNlIG91cg0KICogICAgICBleHRl cm5hbCBsaW5rcyBhcmUgbG9zdCB3aGVuIHRoZSBiZW5jaG1hcmsgY29kZSBpcyBjb3BpZWQgdG8N CiAqICAgICAgY2FjaGUgUkFNLg0KICoNCiAqICAgICAgVGhlIGluaXRpYWxpemF0aW9uIGNvZGUg Y29waWVkIHRoZSBpbnRlZ2VyIGRpdmlkZSByb3V0aW5lIHRvDQogKiAgICAgIDB4ZmZmMDBjMDAu ICBBbGwgd2UgaGF2ZSB0byBkbyBoZXJlIGlzIHN5bnRoZXNpemUgYSBCTCB0byBpdC4NCiAqICAg ICAgDQogKiAgUGFyYW1ldGVyczoNCiAqDQogKiAgICAgIGRpdmlzb3IgICAgIHRoZSB0aGluZyB0 aGF0IGRvZXMgdGhlIGRpdmlkaW5nDQogKiAgICAgIGRpdmlzZWUgICAgIHRoZSB0aGluZyB0aGF0 IGdldHMgZGl2aWRlZCAoeWVhLCB5ZWEsIHllYS4uLiBJIGtub3cgaXQncyByZWFsbHkNCiAqICAg ICAgICAgICAgICAgICAgdGhlIHF1b3RpZW50IG9yIHRoZSBkaXZpZGVuZCwgYnV0IEkgY2FuIG5l dmVyIHJlbWVtYmVyIHdoaWNoIGlzIHdoaWNoKS4NCiAqDQogKiAgUmV0dXJuIFZhbHVlczoNCiAq DQogKiAgICAgIGRpdmlzZWUvZGl2aXNvcg0KICoNCiAqLw0KaW50IGxvY2FsRGl2aWRlIChpbnQg ZGl2aXNvciwgaW50IGRpdmlzZWUpDQoNCnsNCiAgLy9MaSBaaGVuICBhc20gKCJMRFIgICAgICAg UjgsW1BDLCs4XSIpOyAgICAgICAvKiBsb2FkIFI4IHdpdGggMHhmZmYwMEMwMCovDQogIC8vTGkg WmhlbiAgYXNtICgiQUREICAgICAgIExSLFBDLDAiKTsgICAgICAgICAgLyogbG9hZCBMUiB3aXRo IGEgcmV0dXJuIGFkZHJlc3MqLw0KICAgLy9MaSBaaGVuIGFzbSAoIkJYICAgICAgICBSOCIpOyAg ICAgICAgICAgICAgIC8qIGNhbGwgdGhlIGRpdmlkZSByb3V0aW5lKi8NCiAgIC8vTGkgWmhlbiBh c20gKCJMRE1JQSAgICAgU1AhLCB7UjgsUjksUEN9Iik7ICAvKiByZXR1cm4gdG8gb3VyIGNhbGxl ciovDQogIC8vTGkgWmhlbiAgYXNtICgiLmRhdGEudyAgIDB4ZmZmMDBjMDAiKTsgICAgICAgLyog YWRkcmVzcyBvZiBsb2NhbCBkaXZpZGUgcm91dGluZSovDQoNCi8qDQogKiBXZSBuZXZlciBhY3R1 YWxseSBnZXQgdG8gdGhlIHN0YXRlbWVudCBiZWxvdy4gIEl0J3MgaGVyZSB0bw0KICogc3VwcHJl c3MgY29tcGlsZXIgd2FybmluZ3MuDQogKi8NCiAgICByZXR1cm4gZGl2aXNlZS9kaXZpc29yOw0K fQ0KDQoNCiAgICAgICAgLyogUHJvY2VkdXJlIGZvciB0aGUgYXNzaWdubWVudCBvZiBzdHJ1Y3R1 cmVzLCAgICAgICAgICAqLw0KICAgICAgICAvKiBpZiB0aGUgQyBjb21waWxlciBkb2Vzbid0IHN1 cHBvcnQgdGhpcyBmZWF0dXJlICAgICAgICovDQojaWZkZWYgIE5PU1RSVUNUQVNTSUdODQptZW1j cHkgKGQsIHMsIGwpDQpyZWdpc3RlciBjaGFyICAgKmQ7DQpyZWdpc3RlciBjaGFyICAgKnM7DQpy ZWdpc3RlciBpbnQgICAgbDsNCnsNCiAgICAgICAgd2hpbGUgKGwtLSkgKmQrKyA9ICpzKys7DQp9 DQojZW5kaWYNCg0KDQo=