From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23987 invoked by alias); 1 Mar 2004 14:24:06 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 23969 invoked from network); 1 Mar 2004 14:24:02 -0000 Received: from unknown (HELO semigate.zarlink.com) (209.226.172.94) by sources.redhat.com with SMTP; 1 Mar 2004 14:24:02 -0000 Received: from OTTMTA01.zarlink.com (ottmta01 [134.199.14.110]) by semigate.zarlink.com (8.11.6+Sun/8.10.2) with ESMTP id i21EO0I15963; Mon, 1 Mar 2004 09:24:00 -0500 (EST) Subject: Unnamed Structure declaration To: gcc@gnu.org Cc: gcc-bugs@gcc.gnu.org Message-ID: From: Rob.McConnell@Zarlink.Com Date: Mon, 01 Mar 2004 14:24:00 -0000 MIME-Version: 1.0 Content-type: multipart/mixed; Boundary="0__=0FBBE4D9DFD87A858f9e8a93df938690918c0FBBE4D9DFD87A85" Content-Disposition: inline X-SW-Source: 2004-03/txt/msg00092.txt.bz2 List-Id: --0__=0FBBE4D9DFD87A858f9e8a93df938690918c0FBBE4D9DFD87A85 Content-type: text/plain; charset=US-ASCII Content-length: 2079 Hi Folks, I'm a newbie here, so I hope this is the right ML to send this query to. I have a problem when compiling the test.c program below using gcc 3.3 (C compiler) under Linux (RH 7.2) on my i686 architecture. The compiler doesn't allow an unnamed struct inside a named struct even though the unnamed struct ("wibble") is declared before it. I have used "gcc -Wall -save-temps test.c -o test" to generate the preprocessed "test.i" file attached. Here is the original source of only a few lines to give you a quick understanding of the problem. #include struct wibble { int a; }; struct wabble { struct wibble; /**** Compiler throws a wobbly here! ****/ int b; }; struct wabble wabble_init = { {.a = 1,}, .b = 4, }; int main(void) { struct wabble *ptr = &wabble_init; ptr->a=10; ptr->b=12; printf("Sizeof struct wibble = %d bytes\n", sizeof(struct wibble)); printf("Sizeof struct wabble = %d bytes\n", sizeof(struct wabble)); return 0; } The compiler produces the following error message: test.c:8: warning: declaration does not declare anything test.c:13: warning: braces around scalar initializer test.c:13: warning: (near initialization for `wabble_init.b') test.c:13: error: field name not in record or union initializer test.c:13: error: (near initialization for `wabble_init.b') test.c: In function `main': test.c:21: error: structure has no member named `a' Now under earlier versions of gcc (3.2 and 2.96) no errors or warnings are produced. I have also compiled this code under MS VC++ Version 6.0 with success (not that I program under Windozzz). Surely, the elements/fields of this unnamed structure wibble should be accessible as though they were part of the main structure "wabble" (e.g. ptr->a). This is how earlier versions of gcc handled this and is a feature that I definitely use/need for my code. Can someone let me know if this bug has been fixed in later releases of gcc and why does gcc 3.3 generate this error? Many TIA, Rob : ) (See attached file: test.i) --0__=0FBBE4D9DFD87A858f9e8a93df938690918c0FBBE4D9DFD87A85 Content-type: application/octet-stream; name="test.i" Content-Disposition: attachment; filename="test.i" Content-transfer-encoding: base64 Content-length: 25596 IyAxICJ0ZXN0LmMiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZCBs aW5lPiIKIyAxICJ0ZXN0LmMiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRpby5oIiAxIDMg NAojIDM3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt Z251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojIDEgIi91c3IvaW5jbHVk ZS9mZWF0dXJlcy5oIiAxIDMgNAojIDI4MyAiL3Vzci9pbmNsdWRlL2ZlYXR1 cmVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAz IDQKIyAyODQgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDMx MiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojIDEgIi91c3IvaW5j bHVkZS9nbnUvc3R1YnMuaCIgMSAzIDQKIyAzMTMgIi91c3IvaW5jbHVkZS9m ZWF0dXJlcy5oIiAyIDMgNAojIDM4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli L2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0 CgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDIxMyAiL3Vz ci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5j bHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVf dDsKIyA0NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4 LWdudS8zLjMvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKIyAxICIvdXNyL2lu Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMgNAojIDI5ICIvdXNyL2luY2x1ZGUv Yml0cy90eXBlcy5oIiAzIDQKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli L2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMg NAojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMgNAoKCnR5 cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25l ZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdV9p bnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9fZXh0ZW5z aW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFk X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVh ZF90OwojIDQ5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzIDQKdHlw ZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBj aGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50 MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsK dHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWdu ZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlw ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBl ZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3Qg X19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7CnR5cGVkZWYgX191 X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7CnR5cGVk ZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtf dDsKdHlwZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90 IF9fbG9mZl90Owp0eXBlZGVmIGludCBfX3BpZF90Owp0eXBlZGVmIGludCBf X3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CnR5cGVkZWYg X191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19pZF90 OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBf X2ZzaWRfdDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hh ciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBl ZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBp bnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7 Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVmIGludCBf X2Nsb2NraWRfdDsKCgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCgoKCnR5 cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBp bnQgX19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXpl X3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYg X19xdWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19m c2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7 CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191 X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9xdWFkX3Qg X19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5 cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVk IGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRw dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKCgoK CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMyA0 CiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzIDQK IyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMgNAojIDY4ICIv dXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzIDQKc3RydWN0IF9fc2NoZWRf cGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9OwojIDI0 ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzIDQKCgpz dHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVz OwogIGludCBfX3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0 aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsKCgoKCgp0eXBl ZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsKICBpbnQgX19kZXRhY2hz dGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9w YXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGlu dCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFj a2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0 YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QK ewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRo cmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoK dHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29u ZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90 OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwog IGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwog IGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19t X2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7 CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoK CnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwojIDE0MCAiL3Vzci9pbmNs dWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVk IGxvbmcgaW50IHB0aHJlYWRfdDsKIyAxNDQgIi91c3IvaW5jbHVkZS9iaXRz L3R5cGVzLmgiIDIgMyA0CiMgNDYgIi91c3IvbG9jYWwvbGliL2djYy1saWIv aTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQK IyA1NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu dS8zLjMvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgX0lP X0ZJTEUgRklMRTsKIyA2NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2 LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRl ZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxFOwojIDc0ICIvdXNyL2xvY2FsL2xp Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlv LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMgNAojIDMy ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRl L19HX2NvbmZpZy5oIiAxIDMgNAojIDE0ICIvdXNyL2luY2x1ZGUvX0dfY29u ZmlnLmgiIDMgNAojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1w Yy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzI1 ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu My9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBsb25nIGludCB3Y2hh cl90OwojIDM1NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp bnV4LWdudS8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgdW5z aWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZp Zy5oIiAyIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMg NAojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMgNAojIDQ4ICIvdXNy L2luY2x1ZGUvd2NoYXIuaCIgMyA0CiMgMSAiL3Vzci9sb2NhbC9saWIvZ2Nj LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRkZWYuaCIg MSAzIDQKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMyA0CgojIDEg Ii91c3IvaW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMyA0CiMgNTEgIi91c3Iv aW5jbHVkZS93Y2hhci5oIiAyIDMgNAojIDY3ICIvdXNyL2luY2x1ZGUvd2No YXIuaCIgMyA0CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1 bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRd OwogIH0gX192YWx1ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNs dWRlL19HX2NvbmZpZy5oIiAyIDMgNAoKdHlwZWRlZiBzdHJ1Y3QKewogIF9f b2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9z X3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CiAgX19t YnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiL3Vzci9p bmNsdWRlL19HX2NvbmZpZy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZ2Nv bnYuaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2djb252LmgiIDMgNAoj IDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMgNAojIDQ4ICIvdXNyL2lu Y2x1ZGUvd2NoYXIuaCIgMyA0CiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAz IDQKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMyA0CiMgMjkgIi91 c3IvaW5jbHVkZS9nY29udi5oIiAyIDMgNAoKCiMgMSAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRk ZWYuaCIgMSAzIDQKIyAzMiAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMyA0 CgoKCgoKZW51bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NP TlYsCiAgX19HQ09OVl9OT0RCLAogIF9fR0NPTlZfTk9NRU0sCgogIF9fR0NP TlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBVVCwKICBfX0dD T05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVU LAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lO VEVSTkFMX0VSUk9SCn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9 IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJPUlMgPSAweDAwMDIKfTsK CgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3RlcF9k YXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19n Y29udl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0 KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVw X2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg dW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBz aXplX3QgKiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9p bml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9p ZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7 CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3Qg X19nY29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25l ZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf X2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWdu ZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfY29u dGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv bnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBj aGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9m Y3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsK Cgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lk ICoqLCBjb25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X3Ry YW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNf ZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9f Z2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsK ICBfX2djb252X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZv aWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX25l eHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVjdCBfX2dj b252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3Qg Y2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpf X2Zyb21fbmFtZTsKICBjaGFyICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0 IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19pbml0X2ZjdDsKICBfX2dj b252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVkZWRf ZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25l ZWRlZF90bzsKICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3Rh dGVmdWw7CgogIHZvaWQgKl9fZGF0YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZf c3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZjsKICB1bnNp Z25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoK ICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJu YWxfdXNlOwoKICBfX21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRl X3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpf X3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252X2luZm8Kewog IHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0 ZXBzOwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRh IF9fZGF0YSBbXTsKfSAqX19nY29udl90OwojIDQ1ICIvdXNyL2luY2x1ZGUv X0dfY29uZmlnLmgiIDIgMyA0CnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBf X2djb252X2luZm8gX19jZDsKICBzdHJ1Y3QKICB7CiAgICBzdHJ1Y3QgX19n Y29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEg X19kYXRhOwogIH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlwZWRl ZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f SElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9f ICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg X0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18p KSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmli dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwojIDMzICIvdXNyL2luY2x1 ZGUvbGliaW8uaCIgMiAzIDQKIyA1MyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi IDMgNAojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51 eC1nbnUvMy4zL2luY2x1ZGUvc3RkYXJnLmgiIDEgMyA0CiMgNDMgIi91c3Iv bG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1 ZGUvc3RkYXJnLmgiIDMgNAp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9f Z251Y192YV9saXN0OwojIDU0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAz IDQKIyAxNjAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKc3RydWN0IF9J T19qdW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAxNzAgIi91c3IvaW5jbHVk ZS9saWJpby5oIiAzIDQKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCgoK c3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4 dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwoj IDE5MyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAp9OwoKCmVudW0gX19j b2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2RlY3Z0X29rLAogIF9fY29kZWN2dF9w YXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwKICBfX2NvZGVjdnRfbm9jb252 Cn07CiMgMjYxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CnN0cnVjdCBf SU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRf cHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9i YXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0 ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVm X2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZl X2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19z YXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBz dHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50 IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5zaWdu ZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9v ZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAq X2xvY2s7CiMgMzA1ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CiAgX19v ZmY2NF90IF9vZmZzZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAgdm9pZCAq X19wYWQyOwoKICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBz aXplb2YgKGludCkgLSAyICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKdHlw ZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJTEU7CgoKc3RydWN0IF9JT19G SUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJf MV9zdGRpbl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8x X3N0ZG91dF87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8x X3N0ZGVycl87CiMgMzQ0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CnR5 cGVkZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUs IGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRl ZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIF9f Y29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19z ZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50 IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19j b29raWUpOwojIDM5NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNApleHRl cm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQg X191ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fb3ZlcmZsb3cg KF9JT19GSUxFICosIGludCkgOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxv dyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9f RklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193b3ZlcmZsb3cgKF9JT19GSUxF ICosIHdpbnRfdCkgOwojIDQyNiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMg NApleHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkgOwpleHRl cm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgOwpl eHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4g aW50IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSA7CgpleHRlcm4gaW50 IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0 ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4g dm9pZCBfSU9fZnVubG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIGlu dCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSA7CiMgNDU2ICIvdXNy L2luY2x1ZGUvbGliaW8uaCIgMyA0CmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYg KF9JT19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJp Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0LCBp bnQgKl9fcmVzdHJpY3QpIDsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9J T19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAog ICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QpIDsKZXh0 ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50LCBfX3Nz aXplX3QpIDsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICos IHZvaWQgKiwgc2l6ZV90KSA7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVr b2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSA7CmV4dGVy biBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19GSUxFICosIF9fb2ZmNjRf dCwgaW50KSA7CgpleHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAo X0lPX0ZJTEUgKikgOwojIDc1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2 ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMg ODkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv My4zL2luY2x1ZGUvc3RkaW8uaCIgMyA0CnR5cGVkZWYgX0dfZnBvc190IGZw b3NfdDsKIyAxMzggIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s aW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9p bmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMyA0CiMgMTM5ICIvdXNyL2xv Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRl L3N0ZGlvLmgiIDIgMyA0CgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJu IEZJTEUgKnN0ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKIyAxNTMgIi91 c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2lu Y2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0 IGNoYXIgKl9fZmlsZW5hbWUpIDsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2Nv bnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSA7CgoKCgpl eHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCkgOwojIDE3MiAiL3Vzci9sb2Nh bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9z dGRpby5oIiAzIDQKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSA7 CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgOwojIDE4 OSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z LjMvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGNoYXIgKnRlbXBuYW0g KF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBp bnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZmx1 c2ggKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZmZsdXNoX3Vu bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwojIDIxMiAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRp by5oIiAzIDQKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgOwoKZXh0ZXJuIEZJTEUg KmZyZW9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1l LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jl c3RyaWN0IF9fc3RyZWFtKSA7CiMgMjQyICIvdXNyL2xvY2FsL2xpYi9nY2Mt bGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDMg NApleHRlcm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwgX19jb25zdCBjaGFy ICpfX21vZGVzKSA7CiMgMjY1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2 ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRl cm4gdm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNo YXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKZXh0ZXJuIGludCBzZXR2YnVm IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0 IF9fYnVmLAogICAgICAgICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXpl X3QgX19uKSA7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9f cmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgOwoKCmV4dGVy biB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRl cm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAg ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f Zm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBz cHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAg ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg OwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19z LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAg ICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgpleHRlcm4g aW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgOwoKZXh0ZXJuIGludCB2 c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19n bnVjX3ZhX2xpc3QgX19hcmcpIDsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAo Y2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAg ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y bWF0LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f cHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hh ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAg ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CiMgMzM2ICIvdXNy L2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNs dWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19y ZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50 IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4u LikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwojIDM2MiAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRp by5oIiAzIDQKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIDsK ZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBp bnQgZ2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3Vu bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGNoYXJf dW5sb2NrZWQgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5sb2Nr ZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwdXRjIChp bnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGMgKGlu dCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFy IChpbnQgX19jKSA7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2Vk IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBw dXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRl cm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIDsKCgoKCgpleHRl cm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBw dXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGNo YXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklM RSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CiMgNDI4ICIvdXNyL2xv Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRl L3N0ZGlvLmgiIDMgNApleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKSA7 CiMgNDUyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt Z251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZwdXRz IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3Ry aWN0IF9fc3RyZWFtKQogICAgIDsKIyA0NjIgIi91c3IvbG9jYWwvbGliL2dj Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkaW8uaCIg MyA0CmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoK ZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7 CgoKCmV4dGVybiBzaXplX3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19w dHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgIHNpemVf dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCmV4dGVybiBz aXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIs IHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcykgOwoKCgpleHRlcm4gc2l6ZV90 IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXpl X3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl X3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBz aXplX3QgZndyaXRlX3VubG9ja2VkIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJp Y3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry ZWFtKSA7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwg bG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIGxvbmcg aW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIHZvaWQgcmV3 aW5kIChGSUxFICpfX3N0cmVhbSkgOwojIDUwNiAiL3Vzci9sb2NhbC9saWIv Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRpby5o IiAzIDQKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9f c3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgOwoKZXh0 ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9z X3QgKl9fcG9zKSA7CiMgNTQyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2 ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRl cm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBp bnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVycm9y IChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91 bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZW9mX3Vu bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZlcnJvcl91 bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiB2b2lkIHBl cnJvciAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoKCmV4dGVybiBpbnQgc3lz X25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lzX2Vycmxp c3RbXTsKIyA1NzMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s aW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQg ZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmaWxl bm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKCmV4dGVybiBG SUxFICpwb3BlbiAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3Qg Y2hhciAqX19tb2RlcykgOwoKCmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpf X3N0cmVhbSkgOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpf X3MpIDsKIyA2MjAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s aW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiB2b2lk IGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBm dHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQg ZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNjQ0ICIvdXNyL2xv Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRl L3N0ZGlvLmgiIDMgNAoKIyAyICJ0ZXN0LmMiIDIKCnN0cnVjdCB3aWJibGUg ewogICAgICAgIGludCBhOwp9OwoKc3RydWN0IHdhYmJsZSB7CiAgICBzdHJ1 Y3Qgd2liYmxlOwogICAgaW50IGI7Cn07CgpzdHJ1Y3Qgd2FiYmxlIHdhYmJs ZV9pbml0ID0gewogICAgICAgIHsuYSA9IDEsfSwKICAgICAgICAuYiA9IDQs Cn07CgppbnQgbWFpbih2b2lkKQp7CiAgICBzdHJ1Y3Qgd2FiYmxlICpwdHIg PSAmd2FiYmxlX2luaXQ7CgogICAgcHRyLT5hPTEwOwogICAgcHRyLT5iPTEy OwogICAgcHJpbnRmKCJTaXplb2Ygc3RydWN0IHdpYmJsZSA9ICVkIGJ5dGVz XG4iLCBzaXplb2Yoc3RydWN0IHdpYmJsZSkpOwogICAgcHJpbnRmKCJTaXpl b2Ygc3RydWN0IHdhYmJsZSA9ICVkIGJ5dGVzXG4iLCBzaXplb2Yoc3RydWN0 IHdhYmJsZSkpOwogICAgcmV0dXJuIDA7Cn0K --0__=0FBBE4D9DFD87A858f9e8a93df938690918c0FBBE4D9DFD87A85--