From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9074 invoked by alias); 3 Dec 2001 03:36:04 -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 9011 invoked by uid 71); 3 Dec 2001 03:36:03 -0000 Resent-Date: 3 Dec 2001 03:36:03 -0000 Resent-Message-ID: <20011203033603.9008.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, sevillar@team.ph.inter.net Received:(qmail 4118 invoked by uid 61); 3 Dec 2001 03:31:24 -0000 Message-Id:<20011203033124.4117.qmail@sources.redhat.com> Date: Sun, 02 Dec 2001 19:36:00 -0000 From: sevillar@team.ph.inter.net Reply-To: sevillar@team.ph.inter.net To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.2 (1.1.1.1.2.21) Subject: c/4984: gcc segfaults when compiling this file X-SW-Source: 2001-12/txt/msg00197.txt.bz2 List-Id: >Number: 4984 >Category: c >Synopsis: gcc segfaults when compiling this file >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Sun Dec 02 19:36:02 PST 2001 >Closed-Date: >Last-Modified: >Originator: Rafael R. Sevilla >Release: gcc 3.0.2 >Organization: >Environment: i586-pc-linux-gnu Linux 2.4.12 glibc 2.2.2 Red Hat 7.1 (some customizations) >Description: The file is from the Cyclone 0.2 compiler (http://www.cs.cornell.edu/projects/cyclone). When gcc 3.0, 3.0.1, or 3.0.2 encounters this file it segfaults. However, gcc 2.95.3 can compile it with no problems. >How-To-Repeat: Try to build the file. gcc 3.x segfaults. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bitvec.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bitvec.i" IyA4ICJiaXR2ZWMuYyIKIyAxICIvdXNyL2luY2x1ZGUvc2V0am1wLmgiIDEgMwojIDI2ICIvdXNy L2luY2x1ZGUvc2V0am1wLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMg MjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2Rl ZnMuaCIgMSAzCiMgMjg0ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzExICIvdXNy L2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAz CiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjcgIi91c3IvaW5jbHVkZS9z ZXRqbXAuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2V0am1wLmgiIDEgMwojIDM2 ICIvdXNyL2luY2x1ZGUvYml0cy9zZXRqbXAuaCIgMwp0eXBlZGVmIGludCBfX2ptcF9idWZbNl07 CiMgMzEgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv c2lnc2V0LmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwp0eXBlZGVm IGludCBfX3NpZ19hdG9taWNfdDsKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQg bG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSld OwogIH0gX19zaWdzZXRfdDsKIyAzMiAiL3Vzci9pbmNsdWRlL3NldGptcC5oIiAyIDMKCgp0eXBl ZGVmIHN0cnVjdCBfX2ptcF9idWZfdGFnCiAgewoKCgoKICAgIF9fam1wX2J1ZiBfX2ptcGJ1ZjsK ICAgIGludCBfX21hc2tfd2FzX3NhdmVkOwogICAgX19zaWdzZXRfdCBfX3NhdmVkX21hc2s7CiAg fSBqbXBfYnVmWzFdOwoKCgoKZXh0ZXJuIGludCBzZXRqbXAgKGptcF9idWYgX19lbnYpIDsKCgoK ZXh0ZXJuIGludCBfc2V0am1wIChqbXBfYnVmIF9fZW52KSA7CgoKCgpleHRlcm4gaW50IF9fc2ln c2V0am1wIChqbXBfYnVmIF9fZW52LCBpbnQgX19zYXZlbWFzaykgOwojIDczICIvdXNyL2luY2x1 ZGUvc2V0am1wLmgiIDMKZXh0ZXJuIHZvaWQgbG9uZ2ptcCAoam1wX2J1ZiBfX2VudiwgaW50IF9f dmFsKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0 ZXJuIHZvaWQgX2xvbmdqbXAgKGptcF9idWYgX19lbnYsIGludCBfX3ZhbCkKICAgICAgICAgICAg IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgoKCnR5cGVkZWYgam1wX2J1ZiBz aWdqbXBfYnVmOwojIDk4ICIvdXNyL2luY2x1ZGUvc2V0am1wLmgiIDMKZXh0ZXJuIHZvaWQgc2ln bG9uZ2ptcCAoc2lnam1wX2J1ZiBfX2VudiwgaW50IF9fdmFsKQogICAgICAgICAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwojIDkgImJpdHZlYy5jIiAyCiMgMjIgImJpdHZlYy5j IgpzdHJ1Y3QgX3RhZ2dlZF9hcnIgewogIHVuc2lnbmVkIGNoYXIgKmN1cnI7CiAgdW5zaWduZWQg Y2hhciAqYmFzZTsKICB1bnNpZ25lZCBjaGFyICpsYXN0X3BsdXNfb25lOwp9OwpzdHJ1Y3QgX3Rh Z2dlZF9zdHJpbmcgewogIHVuc2lnbmVkIGNoYXIgKmN1cnI7CiAgdW5zaWduZWQgY2hhciAqYmFz ZTsKICB1bnNpZ25lZCBjaGFyICpsYXN0X3BsdXNfb25lOwp9OwoKCnN0cnVjdCBfeHR1bmlvbl9z dHJ1Y3QgeyBjaGFyICp0YWc7IH07CgoKCgpzdHJ1Y3QgX1J1bnRpbWVTdGFjayB7CiAgaW50IHRh ZzsKICBzdHJ1Y3QgX1J1bnRpbWVTdGFjayAqbmV4dDsKfTsKCgpzdHJ1Y3QgX1JlZ2lvblBhZ2Ug ewoKCgoKICBzdHJ1Y3QgX1JlZ2lvblBhZ2UgKm5leHQ7CiAgY2hhciBkYXRhWzBdOwp9OwoKc3Ry dWN0IF9SZWdpb25IYW5kbGUgewogIHN0cnVjdCBfUnVudGltZVN0YWNrIHM7CiAgc3RydWN0IF9S ZWdpb25QYWdlICpjdXJyOwogIGNoYXIgKm9mZnNldDsKICBjaGFyICpsYXN0X3BsdXNfb25lOwoK Cgp9OwoKZXh0ZXJuIHN0cnVjdCBfUmVnaW9uSGFuZGxlIF9uZXdfcmVnaW9uKGNvbnN0IGNoYXIg Kik7CgpleHRlcm4gdm9pZCAqIF9yZWdpb25fbWFsbG9jKHN0cnVjdCBfUmVnaW9uSGFuZGxlICos IHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIF9mcmVlX3JlZ2lvbihzdHJ1Y3QgX1JlZ2lvbkhh bmRsZSAqKTsKCgpzdHJ1Y3QgX2hhbmRsZXJfY29ucyB7CiAgc3RydWN0IF9SdW50aW1lU3RhY2sg czsKICBqbXBfYnVmIGhhbmRsZXI7Cn07CmV4dGVybiB2b2lkIF9wdXNoX2hhbmRsZXIoc3RydWN0 IF9oYW5kbGVyX2NvbnMgKik7CmV4dGVybiB2b2lkIF9wdXNoX3JlZ2lvbihzdHJ1Y3QgX1JlZ2lv bkhhbmRsZSAqKTsKZXh0ZXJuIHZvaWQgX25wb3BfaGFuZGxlcihpbnQpOwpleHRlcm4gdm9pZCBf cG9wX2hhbmRsZXIoKTsKZXh0ZXJuIHZvaWQgX3BvcF9yZWdpb24oKTsKCgpleHRlcm4gaW50IF90 aHJvd19udWxsKCk7CmV4dGVybiBpbnQgX3Rocm93X2FycmF5Ym91bmRzKCk7CmV4dGVybiBpbnQg X3Rocm93X2JhZGFsbG9jKCk7CmV4dGVybiBpbnQgX3Rocm93KHZvaWQgKiBlKTsKCgpleHRlcm4g c3RydWN0IF94dHVuaW9uX3N0cnVjdCAqX2V4bl90aHJvd247CgoKZXh0ZXJuIHN0cnVjdCBfeHR1 bmlvbl9zdHJ1Y3QgQ3ljX051bGxfRXhjZXB0aW9uX3N0cnVjdDsKZXh0ZXJuIHN0cnVjdCBfeHR1 bmlvbl9zdHJ1Y3QgKiBDeWNfTnVsbF9FeGNlcHRpb247CmV4dGVybiBzdHJ1Y3QgX3h0dW5pb25f c3RydWN0IEN5Y19BcnJheV9ib3VuZHNfc3RydWN0OwpleHRlcm4gc3RydWN0IF94dHVuaW9uX3N0 cnVjdCAqIEN5Y19BcnJheV9ib3VuZHM7CmV4dGVybiBzdHJ1Y3QgX3h0dW5pb25fc3RydWN0IEN5 Y19NYXRjaF9FeGNlcHRpb25fc3RydWN0OwpleHRlcm4gc3RydWN0IF94dHVuaW9uX3N0cnVjdCAq IEN5Y19NYXRjaF9FeGNlcHRpb247CmV4dGVybiBzdHJ1Y3QgX3h0dW5pb25fc3RydWN0IEN5Y19C YWRfYWxsb2Nfc3RydWN0OwpleHRlcm4gc3RydWN0IF94dHVuaW9uX3N0cnVjdCAqIEN5Y19CYWRf YWxsb2M7CgoKc3RhdGljIGlubGluZQp2b2lkICogX2NoZWNrX251bGwodm9pZCAqIHB0cikgewoK ICBpZighcHRyKQogICAgX3Rocm93X251bGwoKTsKCiAgcmV0dXJuIHB0cjsKfQpzdGF0aWMgaW5s aW5lCmNoYXIgKiBfY2hlY2tfa25vd25fc3Vic2NyaXB0X251bGwodm9pZCAqIHB0ciwgdW5zaWdu ZWQgYm91bmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZWx0 X3N6LCB1bnNpZ25lZCBpbmRleCkgewoKICBpZighcHRyKQogICAgX3Rocm93X251bGwoKTsKCgog IGlmKGluZGV4ID49IGJvdW5kKQogICAgX3Rocm93X2FycmF5Ym91bmRzKCk7CgogIHJldHVybiAo KGNoYXIgKilwdHIpICsgZWx0X3N6KmluZGV4Owp9CnN0YXRpYyBpbmxpbmUKdW5zaWduZWQgX2No ZWNrX2tub3duX3N1YnNjcmlwdF9ub3RudWxsKHVuc2lnbmVkIGJvdW5kLCB1bnNpZ25lZCBpbmRl eCkgewoKICBpZihpbmRleCA+PSBib3VuZCkKICAgIF90aHJvd19hcnJheWJvdW5kcygpOwoKICBy ZXR1cm4gaW5kZXg7Cn0Kc3RhdGljIGlubGluZQpjaGFyICogX2NoZWNrX3Vua25vd25fc3Vic2Ny aXB0KHN0cnVjdCBfdGFnZ2VkX2FyciBhcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgZWx0X3N6LCB1bnNpZ25lZCBpbmRleCkgewoKCgogIHVuc2lnbmVkIGNoYXIg KiBhbnMgPSBhcnIuY3VyciArIGVsdF9zeiAqIGluZGV4OwoKCgogIGlmKCFhcnIuYmFzZSkKICAg IF90aHJvd19udWxsKCk7CgoKICBpZihhbnMgPCBhcnIuYmFzZSB8fCBhbnMgPj0gYXJyLmxhc3Rf cGx1c19vbmUpCiAgICBfdGhyb3dfYXJyYXlib3VuZHMoKTsKCiAgcmV0dXJuIGFuczsKfQpzdGF0 aWMgaW5saW5lCnN0cnVjdCBfdGFnZ2VkX2FyciBfdGFnX2Fycihjb25zdCB2b2lkICogY3VyciwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGVsdF9zeiwgdW5zaWduZWQgbnVt X2VsdHMpIHsKCiAgc3RydWN0IF90YWdnZWRfYXJyIGFuczsKICBhbnMuYmFzZSA9ICh2b2lkICop Y3VycjsKICBhbnMuY3VyciA9ICh2b2lkICopY3VycjsKICBhbnMubGFzdF9wbHVzX29uZSA9ICgo Y2hhciAqKWN1cnIpICsgZWx0X3N6ICogbnVtX2VsdHM7CiAgcmV0dXJuIGFuczsKfQpzdGF0aWMg aW5saW5lCnN0cnVjdCBfdGFnZ2VkX2FyciAqIF9pbml0X3RhZ19hcnIoc3RydWN0IF90YWdnZWRf YXJyICogYXJyX3B0ciwgdm9pZCAqIGFyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBlbHRfc3osIHVuc2lnbmVkIG51bV9lbHRzKSB7CgogIGFycl9wdHItPmJh c2UgPSBhcnJfcHRyLT5jdXJyID0gYXJyOwogIGFycl9wdHItPmxhc3RfcGx1c19vbmUgPSAoKGNo YXIgKilhcnIpICsgZWx0X3N6ICogbnVtX2VsdHM7CiAgcmV0dXJuIGFycl9wdHI7Cn0KCnN0YXRp YyBpbmxpbmUKY2hhciAqIF91bnRhZ19hcnIoc3RydWN0IF90YWdnZWRfYXJyIGFyciwgdW5zaWdu ZWQgZWx0X3N6LCB1bnNpZ25lZCBudW1fZWx0cykgewoKCgoKICBpZihhcnIuY3VyciA8IGFyci5i YXNlIHx8IGFyci5jdXJyICsgZWx0X3N6ICogbnVtX2VsdHMgPiBhcnIubGFzdF9wbHVzX29uZSkK ICAgIF90aHJvd19hcnJheWJvdW5kcygpOwoKICByZXR1cm4gYXJyLmN1cnI7Cn0Kc3RhdGljIGlu bGluZQp1bnNpZ25lZCBfZ2V0X2Fycl9zaXplKHN0cnVjdCBfdGFnZ2VkX2FyciBhcnIsIHVuc2ln bmVkIGVsdF9zeikgewogIHJldHVybiAoYXJyLmxhc3RfcGx1c19vbmUgLSBhcnIuY3VycikgLyBl bHRfc3o7Cn0Kc3RhdGljIGlubGluZQpzdHJ1Y3QgX3RhZ2dlZF9hcnIgX3RhZ2dlZF9hcnJfcGx1 cyhzdHJ1Y3QgX3RhZ2dlZF9hcnIgYXJyLCB1bnNpZ25lZCBlbHRfc3osCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFuZ2UpIHsKICBzdHJ1Y3QgX3RhZ2dlZF9hcnIg YW5zID0gYXJyOwogIGFucy5jdXJyICs9ICgoaW50KWVsdF9zeikqY2hhbmdlOwogIHJldHVybiBh bnM7Cn0Kc3RhdGljIGlubGluZQpzdHJ1Y3QgX3RhZ2dlZF9hcnIgX3RhZ2dlZF9hcnJfaW5wbGFj ZV9wbHVzKHN0cnVjdCBfdGFnZ2VkX2FyciAqIGFycl9wdHIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZWx0X3N6LCBpbnQgY2hhbmdlKSB7CiAg YXJyX3B0ci0+Y3VyciArPSAoKGludCllbHRfc3opKmNoYW5nZTsKICByZXR1cm4gKmFycl9wdHI7 Cn0Kc3RhdGljIGlubGluZQpzdHJ1Y3QgX3RhZ2dlZF9hcnIgX3RhZ2dlZF9hcnJfaW5wbGFjZV9w bHVzX3Bvc3Qoc3RydWN0IF90YWdnZWRfYXJyICogYXJyX3B0ciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGVsdF9zeiwgaW50IGNoYW5n ZSkgewogIHN0cnVjdCBfdGFnZ2VkX2FyciBhbnMgPSAqYXJyX3B0cjsKICBhcnJfcHRyLT5jdXJy ICs9ICgoaW50KWVsdF9zeikqY2hhbmdlOwogIHJldHVybiBhbnM7Cn0KCgpleHRlcm4gdm9pZCAq IEdDX21hbGxvYyhpbnQpOwpleHRlcm4gdm9pZCAqIEdDX21hbGxvY19hdG9taWMoaW50KTsKCnN0 YXRpYyBpbmxpbmUgdm9pZCAqIF9jeWNhbGxvYyhpbnQgbikgewogIHZvaWQgKiBhbnMgPSBHQ19t YWxsb2Mobik7CiAgaWYoIWFucykKICAgIF90aHJvd19iYWRhbGxvYygpOwogIHJldHVybiBhbnM7 Cn0Kc3RhdGljIGlubGluZSB2b2lkICogX2N5Y2FsbG9jX2F0b21pYyhpbnQgbikgewogIHZvaWQg KiBhbnMgPSBHQ19tYWxsb2Mobik7CiAgaWYoIWFucykKICAgIF90aHJvd19iYWRhbGxvYygpOwog IHJldHVybiBhbnM7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IF9jaGVja190aW1lcyh1 bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpIHsKICB1bnNpZ25lZCBsb25nIGxvbmcgd2hv bGVfYW5zID0KICAgICgodW5zaWduZWQgbG9uZyBsb25nKXgpKigodW5zaWduZWQgbG9uZyBsb25n KXkpOwogIHVuc2lnbmVkIGludCB3b3JkX2FucyA9ICh1bnNpZ25lZCBpbnQpd2hvbGVfYW5zOwog IGlmKHdvcmRfYW5zIDwgd2hvbGVfYW5zIHx8IHdvcmRfYW5zID4gKDEgPDwgMjgpKQogICAgX3Ro cm93X2JhZGFsbG9jKCk7CiAgcmV0dXJuIHdvcmRfYW5zOwp9CiMgMjQ4ICJiaXR2ZWMuYyIKIGV4 dGVybiB2b2lkIGV4aXQoIGludCk7IGV4dGVybiB2b2lkKiBhYm9ydCgpOyBzdHJ1Y3QgQ3ljX0Nv cmVfT3B0eyB2b2lkKiB2OyB9IDsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgQ3ljX0NvcmVfSW52YWxp ZF9hcmd1bWVudFsgMjF1XTsgc3RydWN0IEN5Y19Db3JlX0ludmFsaWRfYXJndW1lbnRfc3RydWN0 ewp1bnNpZ25lZCBjaGFyKiB0YWc7IHN0cnVjdCBfdGFnZ2VkX2FyciBmMTsgfSA7IGV4dGVybiB1 bnNpZ25lZCBjaGFyIEN5Y19Db3JlX0ZhaWx1cmVbCjEydV07IHN0cnVjdCBDeWNfQ29yZV9GYWls dXJlX3N0cnVjdHsgdW5zaWduZWQgY2hhciogdGFnOyBzdHJ1Y3QgX3RhZ2dlZF9hcnIgZjE7Cn0g OyBleHRlcm4gdW5zaWduZWQgY2hhciBDeWNfQ29yZV9JbXBvc3NpYmxlWyAxNXVdOyBzdHJ1Y3Qg Q3ljX0NvcmVfSW1wb3NzaWJsZV9zdHJ1Y3R7CnVuc2lnbmVkIGNoYXIqIHRhZzsgc3RydWN0IF90 YWdnZWRfYXJyIGYxOyB9IDsgZXh0ZXJuIHVuc2lnbmVkIGNoYXIgQ3ljX0NvcmVfTm90X2ZvdW5k WwoxNHVdOyBleHRlcm4gdW5zaWduZWQgY2hhciBDeWNfQ29yZV9VbnJlYWNoYWJsZVsgMTZ1XTsg c3RydWN0IEN5Y19Db3JlX1VucmVhY2hhYmxlX3N0cnVjdHsKdW5zaWduZWQgY2hhciogdGFnOyBz dHJ1Y3QgX3RhZ2dlZF9hcnIgZjE7IH0gOyBleHRlcm4gdW5zaWduZWQgY2hhcioKc3RyaW5nX3Rv X0NzdHJpbmcoIHN0cnVjdCBfdGFnZ2VkX2Fycik7IGV4dGVybiB1bnNpZ25lZCBjaGFyKiB1bmRl cmx5aW5nX0NzdHJpbmcoCnN0cnVjdCBfdGFnZ2VkX2Fycik7IGV4dGVybiBzdHJ1Y3QgX3RhZ2dl ZF9hcnIgQ3N0cmluZ190b19zdHJpbmcoIHVuc2lnbmVkIGNoYXIqKTsKZXh0ZXJuIHN0cnVjdCBf dGFnZ2VkX2FyciB3cmFwX0NzdHJpbmdfYXNfc3RyaW5nKCB1bnNpZ25lZCBjaGFyKiwgdW5zaWdu ZWQgaW50KTsKZXh0ZXJuIHN0cnVjdCBfdGFnZ2VkX2FyciBudENzbF90b19udHNsKCB1bnNpZ25l ZCBjaGFyKiopOyBzdHJ1Y3QgQ3ljX0xpc3RfTGlzdHsKdm9pZCogaGQ7IHN0cnVjdCBDeWNfTGlz dF9MaXN0KiB0bDsgfSA7IGV4dGVybiB1bnNpZ25lZCBjaGFyIEN5Y19MaXN0X0xpc3RfbWlzbWF0 Y2hbCjE4dV07IGV4dGVybiB1bnNpZ25lZCBjaGFyIEN5Y19MaXN0X050aFsgOHVdOyBzdHJ1Y3Qg Q3ljX0RpY3RfRGljdDsgZXh0ZXJuCnVuc2lnbmVkIGNoYXIgQ3ljX0RpY3RfUHJlc2VudFsgMTJ1 XTsgZXh0ZXJuIHVuc2lnbmVkIGNoYXIgQ3ljX0RpY3RfQWJzZW50WyAxMXVdOwpleHRlcm4gdm9p ZCogQ3ljX0RpY3RfbG9va3VwKCBzdHJ1Y3QgQ3ljX0RpY3RfRGljdCogZCwgdm9pZCogayk7IGV4 dGVybiBzdHJ1Y3QKX3RhZ2dlZF9hcnIgQ3ljX0JpdHZlY19uZXdfZW1wdHkoIGludCk7IGV4dGVy biBzdHJ1Y3QgX3RhZ2dlZF9hcnIgQ3ljX0JpdHZlY19uZXdfZnVsbCgKaW50KTsgZXh0ZXJuIHN0 cnVjdCBfdGFnZ2VkX2FyciBDeWNfQml0dmVjX25ld19jb3B5KCBzdHJ1Y3QgX3RhZ2dlZF9hcnIp OyBleHRlcm4Kc3RydWN0IF90YWdnZWRfYXJyIEN5Y19CaXR2ZWNfZnJvbV9saXN0KCBzdHJ1Y3Qg Q3ljX0RpY3RfRGljdCogZCwgaW50KCogZikoIHZvaWQqKSwKaW50IHN6LCBzdHJ1Y3QgQ3ljX0xp c3RfTGlzdCopOyBleHRlcm4gc3RydWN0IEN5Y19MaXN0X0xpc3QqIEN5Y19CaXR2ZWNfdG9fc29y dGVkX2xpc3QoCnN0cnVjdCBfdGFnZ2VkX2FyciBidmVjLCBpbnQgc3opOyBleHRlcm4gdm9pZCBD eWNfQml0dmVjX3ByaW50X2J2ZWMoIHN0cnVjdApfdGFnZ2VkX2FyciBidmVjKTsgZXh0ZXJuIGlu dCBDeWNfQml0dmVjX2dldCggc3RydWN0IF90YWdnZWRfYXJyLCBpbnQpOyBleHRlcm4Kdm9pZCBD eWNfQml0dmVjX3NldCggc3RydWN0IF90YWdnZWRfYXJyLCBpbnQpOyBleHRlcm4gdm9pZCBDeWNf Qml0dmVjX2NsZWFyKApzdHJ1Y3QgX3RhZ2dlZF9hcnIsIGludCk7IGV4dGVybiBpbnQgQ3ljX0Jp dHZlY19nZXRfYW5kX3NldCggc3RydWN0IF90YWdnZWRfYXJyLAppbnQpOyBleHRlcm4gdm9pZCBD eWNfQml0dmVjX2NsZWFyX2FsbCggc3RydWN0IF90YWdnZWRfYXJyKTsgZXh0ZXJuIHZvaWQgQ3lj X0JpdHZlY19zZXRfYWxsKApzdHJ1Y3QgX3RhZ2dlZF9hcnIpOyBleHRlcm4gaW50IEN5Y19CaXR2 ZWNfYWxsX3NldCggc3RydWN0IF90YWdnZWRfYXJyIGJ2ZWMsIGludApzeik7IGV4dGVybiB2b2lk IEN5Y19CaXR2ZWNfdW5pb25fdHdvKCBzdHJ1Y3QgX3RhZ2dlZF9hcnIgZGVzdCwgc3RydWN0Cl90 YWdnZWRfYXJyIHNyYzEsIHN0cnVjdCBfdGFnZ2VkX2FyciBzcmMyKTsgZXh0ZXJuIHZvaWQgQ3lj X0JpdHZlY19pbnRlcnNlY3RfdHdvKApzdHJ1Y3QgX3RhZ2dlZF9hcnIgZGVzdCwgc3RydWN0IF90 YWdnZWRfYXJyIHNyYzEsIHN0cnVjdCBfdGFnZ2VkX2FyciBzcmMyKTsKZXh0ZXJuIHZvaWQgQ3lj X0JpdHZlY19kaWZmX3R3byggc3RydWN0IF90YWdnZWRfYXJyIGRlc3QsIHN0cnVjdCBfdGFnZ2Vk X2FycgpzcmMxLCBzdHJ1Y3QgX3RhZ2dlZF9hcnIgc3JjMik7IGV4dGVybiBpbnQgQ3ljX0JpdHZl Y19jb21wYXJlX3R3byggc3RydWN0Cl90YWdnZWRfYXJyIHNyYzEsIHN0cnVjdCBfdGFnZ2VkX2Fy ciBzcmMyKTsgc3RydWN0IEN5Y19Dc3RkaW9fX19zRklMRTsgc3RydWN0CkN5Y19TdGRfX19zRklM RTsgZXh0ZXJuIHVuc2lnbmVkIGNoYXIgQ3ljX1N0ZF9GaWxlQ2xvc2VFcnJvclsgMTl1XTsgZXh0 ZXJuCnVuc2lnbmVkIGNoYXIgQ3ljX1N0ZF9GaWxlT3BlbkVycm9yWyAxOHVdOyBzdHJ1Y3QgQ3lj X1N0ZF9GaWxlT3BlbkVycm9yX3N0cnVjdHsKdW5zaWduZWQgY2hhciogdGFnOyBzdHJ1Y3QgX3Rh Z2dlZF9hcnIgZjE7IH0gOyBzdGF0aWMgY29uc3QgaW50IEN5Y19TdGRfU3RyaW5nX3BhPQowOyBz dHJ1Y3QgQ3ljX1N0ZF9TdHJpbmdfcGFfc3RydWN0eyBpbnQgdGFnOyBzdHJ1Y3QgX3RhZ2dlZF9h cnIgZjE7IH0gOyBzdGF0aWMKY29uc3QgaW50IEN5Y19TdGRfSW50X3BhPSAxOyBzdHJ1Y3QgQ3lj X1N0ZF9JbnRfcGFfc3RydWN0eyBpbnQgdGFnOyB1bnNpZ25lZCBpbnQKZjE7IH0gOyBzdGF0aWMg Y29uc3QgaW50IEN5Y19TdGRfRG91YmxlX3BhPSAyOyBzdHJ1Y3QgQ3ljX1N0ZF9Eb3VibGVfcGFf c3RydWN0ewppbnQgdGFnOyBkb3VibGUgZjE7IH0gOyBzdGF0aWMgY29uc3QgaW50IEN5Y19TdGRf U2hvcnRQdHJfcGE9IDM7IHN0cnVjdCBDeWNfU3RkX1Nob3J0UHRyX3BhX3N0cnVjdHsKaW50IHRh Zzsgc2hvcnQqIGYxOyB9IDsgc3RhdGljIGNvbnN0IGludCBDeWNfU3RkX0ludFB0cl9wYT0gNDsg c3RydWN0IEN5Y19TdGRfSW50UHRyX3BhX3N0cnVjdHsKaW50IHRhZzsgdW5zaWduZWQgaW50KiBm MTsgfSA7IGV4dGVybiBpbnQgQ3ljX1N0ZF9wcmludGYoIHN0cnVjdCBfdGFnZ2VkX2FyciBmbXQs CnN0cnVjdCBfdGFnZ2VkX2Fycik7IHN0YXRpYyBjb25zdCBpbnQgQ3ljX1N0ZF9TaG9ydFB0cl9z YT0gMDsgc3RydWN0IEN5Y19TdGRfU2hvcnRQdHJfc2Ffc3RydWN0ewppbnQgdGFnOyBzaG9ydCog ZjE7IH0gOyBzdGF0aWMgY29uc3QgaW50IEN5Y19TdGRfVVNob3J0UHRyX3NhPSAxOyBzdHJ1Y3Qg Q3ljX1N0ZF9VU2hvcnRQdHJfc2Ffc3RydWN0ewppbnQgdGFnOyB1bnNpZ25lZCBzaG9ydCogZjE7 IH0gOyBzdGF0aWMgY29uc3QgaW50IEN5Y19TdGRfSW50UHRyX3NhPSAyOyBzdHJ1Y3QKQ3ljX1N0 ZF9JbnRQdHJfc2Ffc3RydWN0eyBpbnQgdGFnOyBpbnQqIGYxOyB9IDsgc3RhdGljIGNvbnN0IGlu dCBDeWNfU3RkX1VJbnRQdHJfc2E9CjM7IHN0cnVjdCBDeWNfU3RkX1VJbnRQdHJfc2Ffc3RydWN0 eyBpbnQgdGFnOyB1bnNpZ25lZCBpbnQqIGYxOyB9IDsgc3RhdGljIGNvbnN0CmludCBDeWNfU3Rk X1N0cmluZ1B0cl9zYT0gNDsgc3RydWN0IEN5Y19TdGRfU3RyaW5nUHRyX3NhX3N0cnVjdHsgaW50 IHRhZzsgc3RydWN0Cl90YWdnZWRfYXJyIGYxOyB9IDsgc3RhdGljIGNvbnN0IGludCBDeWNfU3Rk X0RvdWJsZVB0cl9zYT0gNTsgc3RydWN0IEN5Y19TdGRfRG91YmxlUHRyX3NhX3N0cnVjdHsKaW50 IHRhZzsgZG91YmxlKiBmMTsgfSA7IHN0YXRpYyBjb25zdCBpbnQgQ3ljX1N0ZF9GbG9hdFB0cl9z YT0gNjsgc3RydWN0IEN5Y19TdGRfRmxvYXRQdHJfc2Ffc3RydWN0ewppbnQgdGFnOyBmbG9hdCog ZjE7IH0gOyBpbnQgQ3ljX0JpdHZlY19nZXQoIHN0cnVjdCBfdGFnZ2VkX2FyciBidmVjLCBpbnQg cG9zKXsKaW50IHdvcmQ9IHBvcyA+PiA1OyBpbnQgb2Zmc2V0PSBwb3MgJiAzMTsgcmV0dXJuKCoo KCBpbnQqKQpfY2hlY2tfdW5rbm93bl9zdWJzY3JpcHQoIGJ2ZWMsIHNpemVvZiggaW50KSwgd29y ZCkpID4+IG9mZnNldCAmIDEpID09IDE7fQp2b2lkIEN5Y19CaXR2ZWNfc2V0KCBzdHJ1Y3QgX3Rh Z2dlZF9hcnIgYnZlYywgaW50IHBvcyl7IGludCB3b3JkPSBwb3MgPj4gNTsgaW50Cm9mZnNldD0g cG9zICYgMzE7KigoIGludCopIF9jaGVja191bmtub3duX3N1YnNjcmlwdCggYnZlYywgc2l6ZW9m KCBpbnQpLCB3b3JkKSk9KigoCmludCopIF9jaGVja191bmtub3duX3N1YnNjcmlwdCggYnZlYywg c2l6ZW9mKCBpbnQpLCB3b3JkKSkgfCAxIDw8IG9mZnNldDt9CnZvaWQgQ3ljX0JpdHZlY19jbGVh ciggc3RydWN0IF90YWdnZWRfYXJyIGJ2ZWMsIGludCBwb3MpeyBpbnQgd29yZD0gcG9zID4+IDU7 CmludCBvZmZzZXQ9IHBvcyAmIDMxOyooKCBpbnQqKSBfY2hlY2tfdW5rbm93bl9zdWJzY3JpcHQo IGJ2ZWMsIHNpemVvZiggaW50KSwKd29yZCkpPSooKCBpbnQqKSBfY2hlY2tfdW5rbm93bl9zdWJz Y3JpcHQoIGJ2ZWMsIHNpemVvZiggaW50KSwgd29yZCkpICYgfiggMSA8PApvZmZzZXQpO30gaW50 IEN5Y19CaXR2ZWNfZ2V0X2FuZF9zZXQoIHN0cnVjdCBfdGFnZ2VkX2FyciBidmVjLCBpbnQgcG9z KXsgaW50CndvcmQ9IHBvcyA+PiA1OyBpbnQgb2Zmc2V0PSBwb3MgJiAzMTsgaW50IHNsb3Q9Kigo IGludCopCl9jaGVja191bmtub3duX3N1YnNjcmlwdCggYnZlYywgc2l6ZW9mKCBpbnQpLCB3b3Jk KSk7IGludCBhbnM9KCBzbG90ID4+IG9mZnNldAomIDEpID09IDE7IGlmKCAhIGFucyl7KigoIGlu dCopIF9jaGVja191bmtub3duX3N1YnNjcmlwdCggYnZlYywgc2l6ZW9mKCBpbnQpLAp3b3JkKSk9 IHNsb3QgfCAxIDw8IG9mZnNldDt9IHJldHVybiBhbnM7fSB2b2lkIEN5Y19CaXR2ZWNfdW5pb25f dHdvKCBzdHJ1Y3QKX3RhZ2dlZF9hcnIgZGVzdCwgc3RydWN0IF90YWdnZWRfYXJyIHNyYzEsIHN0 cnVjdCBfdGFnZ2VkX2FyciBzcmMyKXsgaW50IGxlbj0oCmludCkgX2dldF9hcnJfc2l6ZSggZGVz dCwgc2l6ZW9mKCBpbnQpKTsgaW50IGk9IDA7IGZvciggMDsgaSA8IGxlbjsgKysgaSl7KigoCmlu dCopIF9jaGVja191bmtub3duX3N1YnNjcmlwdCggZGVzdCwgc2l6ZW9mKCBpbnQpLCBpKSk9Kigo IGludCopCl9jaGVja191bmtub3duX3N1YnNjcmlwdCggc3JjMSwgc2l6ZW9mKCBpbnQpLCBpKSkg fCAqKCggaW50KikKX2NoZWNrX3Vua25vd25fc3Vic2NyaXB0KCBzcmMyLCBzaXplb2YoIGludCks IGkpKTt9fSB2b2lkIEN5Y19CaXR2ZWNfaW50ZXJzZWN0X3R3bygKc3RydWN0IF90YWdnZWRfYXJy IGRlc3QsIHN0cnVjdCBfdGFnZ2VkX2FyciBzcmMxLCBzdHJ1Y3QgX3RhZ2dlZF9hcnIgc3JjMil7 IGludApsZW49KCBpbnQpIF9nZXRfYXJyX3NpemUoIGRlc3QsIHNpemVvZiggaW50KSk7IGludCBp PSAwOyBmb3IoIDA7IGkgPCBsZW47ICsrIGkpeyooKAppbnQqKSBfY2hlY2tfdW5rbm93bl9zdWJz Y3JpcHQoIGRlc3QsIHNpemVvZiggaW50KSwgaSkpPSooKCBpbnQqKQpfY2hlY2tfdW5rbm93bl9z dWJzY3JpcHQoIHNyYzEsIHNpemVvZiggaW50KSwgaSkpICYgKigoIGludCopCl9jaGVja191bmtu b3duX3N1YnNjcmlwdCggc3JjMiwgc2l6ZW9mKCBpbnQpLCBpKSk7fX0gdm9pZCBDeWNfQml0dmVj X2RpZmZfdHdvKApzdHJ1Y3QgX3RhZ2dlZF9hcnIgZGVzdCwgc3RydWN0IF90YWdnZWRfYXJyIHNy YzEsIHN0cnVjdCBfdGFnZ2VkX2FyciBzcmMyKXsgaW50Cmxlbj0oIGludCkgX2dldF9hcnJfc2l6 ZSggZGVzdCwgc2l6ZW9mKCBpbnQpKTsgaW50IGk9IDA7IGZvciggMDsgaSA8IGxlbjsgKysgaSl7 KigoCmludCopIF9jaGVja191bmtub3duX3N1YnNjcmlwdCggZGVzdCwgc2l6ZW9mKCBpbnQpLCBp KSk9KigoIGludCopCl9jaGVja191bmtub3duX3N1YnNjcmlwdCggc3JjMSwgc2l6ZW9mKCBpbnQp LCBpKSkgJiB+KCooKCBpbnQqKQpfY2hlY2tfdW5rbm93bl9zdWJzY3JpcHQoIHNyYzIsIHNpemVv ZiggaW50KSwgaSkpKTt9fSBpbnQgQ3ljX0JpdHZlY19jb21wYXJlX3R3bygKc3RydWN0IF90YWdn ZWRfYXJyIHNyYzEsIHN0cnVjdCBfdGFnZ2VkX2FyciBzcmMyKXsgaW50IGxlbj0oIGludCkgX2dl dF9hcnJfc2l6ZSgKc3JjMSwgc2l6ZW9mKCBpbnQpKTt7IGludCBpPSAwOyBmb3IoIDA7IGkgPCBs ZW47ICsrIGkpeyBpZigqKCggaW50KikKX2NoZWNrX3Vua25vd25fc3Vic2NyaXB0KCBzcmMxLCBz aXplb2YoIGludCksIGkpKSAhPSAqKCggaW50KikKX2NoZWNrX3Vua25vd25fc3Vic2NyaXB0KCBz cmMyLCBzaXplb2YoIGludCksIGkpKSl7IHJldHVybiAwO319fSByZXR1cm4gMTt9CnN0cnVjdCBf dGFnZ2VkX2FyciBDeWNfQml0dmVjX25ld19lbXB0eSggaW50IHN6KXsgc3RydWN0IF90YWdnZWRf YXJyIGFucz0oewp1bnNpZ25lZCBpbnQgX3RlbXAwPSggdW5zaWduZWQgaW50KSggc3ogLyAzMiAr IDEpOyBpbnQqIF90ZW1wMT0oIGludCopCl9jeWNhbGxvY19hdG9taWMoIF9jaGVja190aW1lcygg c2l6ZW9mKCBpbnQpLCBfdGVtcDApKTsgc3RydWN0IF90YWdnZWRfYXJyCl90ZW1wMz0gX3RhZ19h cnIoIF90ZW1wMSwgc2l6ZW9mKCBpbnQpLCggdW5zaWduZWQgaW50KSggc3ogLyAzMiArIDEpKTt7 CnVuc2lnbmVkIGludCBfdGVtcDI9IF90ZW1wMDsgdW5zaWduZWQgaW50IGk7IGZvciggaT0gMDsg aSA8IF90ZW1wMjsgaSArKyl7Cl90ZW1wMVsgaV09IDA7fX07IF90ZW1wMzt9KTsgcmV0dXJuIGFu czt9IHN0cnVjdCBfdGFnZ2VkX2FyciBDeWNfQml0dmVjX25ld19mdWxsKAppbnQgc3opeyBzdHJ1 Y3QgX3RhZ2dlZF9hcnIgYW5zPSh7IHVuc2lnbmVkIGludCBfdGVtcDQ9KCB1bnNpZ25lZCBpbnQp KCBzeiAvIDMyCisgMSk7IGludCogX3RlbXA1PSggaW50KikgX2N5Y2FsbG9jX2F0b21pYyggX2No ZWNrX3RpbWVzKCBzaXplb2YoIGludCksIF90ZW1wNCkpOwpzdHJ1Y3QgX3RhZ2dlZF9hcnIgX3Rl bXA3PSBfdGFnX2FyciggX3RlbXA1LCBzaXplb2YoIGludCksKCB1bnNpZ25lZCBpbnQpKCBzeiAv CjMyICsgMSkpO3sgdW5zaWduZWQgaW50IF90ZW1wNj0gX3RlbXA0OyB1bnNpZ25lZCBpbnQgaTsg Zm9yKCBpPSAwOyBpIDwgX3RlbXA2OwppICsrKXsgX3RlbXA1WyBpXT0gLTE7fX07IF90ZW1wNzt9 KTsgcmV0dXJuIGFuczt9IHN0cnVjdCBfdGFnZ2VkX2FyciBDeWNfQml0dmVjX25ld19jb3B5KApz dHJ1Y3QgX3RhZ2dlZF9hcnIgb2xkKXsgc3RydWN0IF90YWdnZWRfYXJyIGNvcHk9IEN5Y19CaXR2 ZWNfbmV3X2VtcHR5KCggaW50KQpfZ2V0X2Fycl9zaXplKCBvbGQsIHNpemVvZiggaW50KSkpOyBD eWNfQml0dmVjX3VuaW9uX3R3byggY29weSwgY29weSwgb2xkKTsKcmV0dXJuIGNvcHk7fSBzdHJ1 Y3QgX3RhZ2dlZF9hcnIgQ3ljX0JpdHZlY19mcm9tX2xpc3QoIHN0cnVjdCBDeWNfRGljdF9EaWN0 KiBkLAppbnQoKiBmKSggdm9pZCopLCBpbnQgc3osIHN0cnVjdCBDeWNfTGlzdF9MaXN0KiBsKXsg c3RydWN0IF90YWdnZWRfYXJyIGFucz0oewp1bnNpZ25lZCBpbnQgX3RlbXA4PSggdW5zaWduZWQg aW50KSggc3ogJSAzMiArIDEpOyBpbnQqIF90ZW1wOT0oIGludCopCl9jeWNhbGxvY19hdG9taWMo IF9jaGVja190aW1lcyggc2l6ZW9mKCBpbnQpLCBfdGVtcDgpKTsgc3RydWN0IF90YWdnZWRfYXJy Cl90ZW1wMTE9IF90YWdfYXJyKCBfdGVtcDksIHNpemVvZiggaW50KSwoIHVuc2lnbmVkIGludCko IHN6ICUgMzIgKyAxKSk7ewp1bnNpZ25lZCBpbnQgX3RlbXAxMD0gX3RlbXA4OyB1bnNpZ25lZCBp bnQgaTsgZm9yKCBpPSAwOyBpIDwgX3RlbXAxMDsgaSArKyl7Cl90ZW1wOVsgaV09IDA7fX07IF90 ZW1wMTE7fSk7IGZvciggMDsgbCAhPSAwOyBsPSBsLT50bCl7IEN5Y19CaXR2ZWNfc2V0KCBhbnMs IGYoCkN5Y19EaWN0X2xvb2t1cCggZCwoIHZvaWQqKSBsLT5oZCkpKTt9IHJldHVybiBhbnM7fSBz dHJ1Y3QgQ3ljX0xpc3RfTGlzdCogQ3ljX0JpdHZlY190b19zb3J0ZWRfbGlzdCgKc3RydWN0IF90 YWdnZWRfYXJyIGJ2ZWMsIGludCBzeil7IHN0cnVjdCBDeWNfTGlzdF9MaXN0KiBhbnM9IDA7eyBp bnQgcG9zPSBzeiAtCjE7IGZvciggMDsgcG9zID49IDA7IDApeyBpbnQgd29yZD0gcG9zID4+IDU7 IGludCBiaXRzPSooKCBpbnQqKQpfY2hlY2tfdW5rbm93bl9zdWJzY3JpcHQoIGJ2ZWMsIHNpemVv ZiggaW50KSwgd29yZCkpOyBpbnQgb2Zmc2V0PSBwb3MgJiAzMTsKZm9yKCAwOyBvZmZzZXQgPj0g MDsoIC0tIG9mZnNldCwgLS0gcG9zKSl7IGlmKCggYml0cyA+PiBvZmZzZXQgJiAxKSA9PSAxKXsK YW5zPSh7IHN0cnVjdCBDeWNfTGlzdF9MaXN0KiBfdGVtcDEyPSggc3RydWN0IEN5Y19MaXN0X0xp c3QqKSBfY3ljYWxsb2MoIHNpemVvZigKc3RydWN0IEN5Y19MaXN0X0xpc3QpICogMSk7IF90ZW1w MTJbIDBdPSh7IHN0cnVjdCBDeWNfTGlzdF9MaXN0IF90ZW1wMTM7Cl90ZW1wMTMuaGQ9KCB2b2lk KikgcG9zOyBfdGVtcDEzLnRsPSBhbnM7IF90ZW1wMTM7fSk7IF90ZW1wMTI7fSk7fX19fSByZXR1 cm4gYW5zO30Kdm9pZCBDeWNfQml0dmVjX2NsZWFyX2FsbCggc3RydWN0IF90YWdnZWRfYXJyIGJ2 ZWMpeyBpbnQgbGVuPSggaW50KQpfZ2V0X2Fycl9zaXplKCBidmVjLCBzaXplb2YoIGludCkpOyBp bnQgaT0gMDsgZm9yKCAwOyBpIDwgbGVuOyArKyBpKXsqKCggaW50KikKX2NoZWNrX3Vua25vd25f c3Vic2NyaXB0KCBidmVjLCBzaXplb2YoIGludCksIGkpKT0gMDt9fSB2b2lkIEN5Y19CaXR2ZWNf c2V0X2FsbCgKc3RydWN0IF90YWdnZWRfYXJyIGJ2ZWMpeyBpbnQgbGVuPSggaW50KSBfZ2V0X2Fy cl9zaXplKCBidmVjLCBzaXplb2YoIGludCkpOyBpbnQKaT0gMDsgZm9yKCAwOyBpIDwgbGVuOyAr KyBpKXsqKCggaW50KikgX2NoZWNrX3Vua25vd25fc3Vic2NyaXB0KCBidmVjLCBzaXplb2YoCmlu dCksIGkpKT0gLTE7fX0gaW50IEN5Y19CaXR2ZWNfYWxsX3NldCggc3RydWN0IF90YWdnZWRfYXJy IGJ2ZWMsIGludCBzeil7IGludAp3b3Jkcz0gc3ogPj4gNTt7IGludCBpPSAwOyBmb3IoIDA7IGkg PCB3b3JkczsgaSArKyl7IGlmKCooKCBpbnQqKQpfY2hlY2tfdW5rbm93bl9zdWJzY3JpcHQoIGJ2 ZWMsIHNpemVvZiggaW50KSwgaSkpICE9IC0xKXsgcmV0dXJuIDA7fX19eyBpbnQgaT0Kd29yZHMg KiAzMjsgZm9yKCAwOyBpIDwgc3o7IGkgKyspeyBpZiggISBDeWNfQml0dmVjX2dldCggYnZlYywg aSkpeyByZXR1cm4gMDt9fX0KcmV0dXJuIDE7fSB2b2lkIEN5Y19CaXR2ZWNfcHJpbnRfYnZlYygg c3RydWN0IF90YWdnZWRfYXJyIGJ2ZWMpe3sgaW50IGk9IDA7IGZvcigKMDsgaSA8IDMyICogX2dl dF9hcnJfc2l6ZSggYnZlYywgc2l6ZW9mKCBpbnQpKTsgKysgaSl7KHsgc3RydWN0IEN5Y19TdGRf SW50X3BhX3N0cnVjdApfdGVtcDE1OyBfdGVtcDE1LnRhZz0gQ3ljX1N0ZF9JbnRfcGE7IF90ZW1w MTUuZjE9KCBpbnQpKCggdW5zaWduZWQgaW50KSggQ3ljX0JpdHZlY19nZXQoCmJ2ZWMsIGkpPyAx OiAwKSk7eyB2b2lkKiBfdGVtcDE0WyAxdV09eyYgX3RlbXAxNX07IEN5Y19TdGRfcHJpbnRmKCBf dGFnX2FycigiJWQiLApzaXplb2YoIHVuc2lnbmVkIGNoYXIpLCAzdSksIF90YWdfYXJyKCBfdGVt cDE0LCBzaXplb2YoIHZvaWQqKSwgMXUpKTt9fSk7fX0oewp2b2lkKiBfdGVtcDE2WyAwdV09e307 IEN5Y19TdGRfcHJpbnRmKCBfdGFnX2FycigiXG4iLCBzaXplb2YoIHVuc2lnbmVkIGNoYXIpLCAy dSksCl90YWdfYXJyKCBfdGVtcDE2LCBzaXplb2YoIHZvaWQqKSwgMHUpKTt9KTt9Cg==