From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17316 invoked by alias); 28 Jan 2002 15:46:06 -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 17262 invoked by uid 71); 28 Jan 2002 15:46:02 -0000 Resent-Date: 28 Jan 2002 15:46:02 -0000 Resent-Message-ID: <20020128154602.17261.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, cheng@pcigeomatics.com Received:(qmail 15509 invoked by uid 61); 28 Jan 2002 15:41:28 -0000 Message-Id:<20020128154128.15508.qmail@sources.redhat.com> Date: Mon, 28 Jan 2002 07:46:00 -0000 From: cheng@pcigeomatics.com Reply-To: cheng@pcigeomatics.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: debug/5514: 3.0.3 debug problem - undefined reference to LC5 X-SW-Source: 2002-01/txt/msg00982.txt.bz2 List-Id: >Number: 5514 >Category: debug >Synopsis: 3.0.3 debug problem - undefined reference to LC5 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jan 28 07:46:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Philip Cheng >Release: 3.0.3 >Organization: >Environment: Red Hat Linux 7.2 >Description: I have a C++ function which I used to create a shared library. When I compiled with -O2 option, I could link the library with my main program. However, when I compiled with -O0 option, I got an undefined reference to `LC5' error when I tried to link it with my main program. It did not happen in 2.95.2. I have no function call LC5. Seems it is internal. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="matrix.ii" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="matrix.ii" IyA1MjAgIm1hdHJpeC5jcHAiCiNwcmFnbWEgaW1wbGVtZW50YXRpb24gIm1hdHJpeC5oaCIKCgoj IDEgIm1hdHJpeC5oaCIgMQojIDY1ICJtYXRyaXguaGgiCiNwcmFnbWEgaW50ZXJmYWNlCgoKIyAx ICJsc2NtaXNjLmgiIDEKIyAyODUgImxzY21pc2MuaCIKIyAxICJsc2Nfc3RyLmgiIDEKIyA0NSAi bHNjX3N0ci5oIgojIDEgIi4uLy4uLy4uL2xpYi9jY2xiYXNlLmgiIDEKIyAzOSAiLi4vLi4vLi4v bGliL2NjbGJhc2UuaCIKZXh0ZXJuICJDIiB7CgojIDEgIi4uLy4uLy4uL2xpYi9wY2lzeXMuaCIg MQojIDQyICIuLi8uLi8uLi9saWIvY2NsYmFzZS5oIiAyCiMgMSAiLi4vLi4vLi4vbGliL2NjbGNv bmYuaCIgMQojIDQzICIuLi8uLi8uLi9saWIvY2NsYmFzZS5oIiAyCiMgMSAiLi4vLi4vLi4vbGli L2NjbHBvcnQuaCIgMQojIDY1ICIuLi8uLi8uLi9saWIvY2NscG9ydC5oIgojIDEgIi4uLy4uLy4u L2xpYi9wY2lzeXMuaCIgMQojIDY2ICIuLi8uLi8uLi9saWIvY2NscG9ydC5oIiAyCiMgMTI5ICIu Li8uLi8uLi9saWIvY2NscG9ydC5oIgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1w Yy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNyAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAx ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVy ZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIvdXNyL2lu Y2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwoj IDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEzICIvdXNyL2luY2x1ZGUvZmVh dHVyZXMuaCIgMiAzCiMgMzggIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n bnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgojIDEgIi91c3Iv bG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYu aCIgMSAzCiMgMTk5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu MC4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDQ0 ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUv c3RkaW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI2ICIv dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi IDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvbG9j YWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIg MSAzCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWdu ZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVk ZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsK Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7 Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNy L2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5 cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBf X2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYg c2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7Cgpf X2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4 dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlw ZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5 cGVkZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBf X3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2lu dCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBf X2xvZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBl ZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlw ZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJd OwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9f Y2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg X191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9u ZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiBp bnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgoKCgp0eXBlZGVmIGlu dCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0 eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2Nu dF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9f ZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYg X191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7 CgoKdHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2Zm NjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBs b25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRl ZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0 aHJlYWR0eXBlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi IDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRl L2JpdHMvc2NoZWQuaCIgMwpzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVk X3ByaW9yaXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAy IDMKCgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGlu dCBfX3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0 ICpfcHRocmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsK ICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hl ZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3Bl OwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9f c3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlw ZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRo cmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1 Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2ln bmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jl c2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGlu dCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVh ZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJl YWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwoKCgoKdHlwZWRl ZiBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrX3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBf X3J3X2xvY2s7CiAgaW50IF9fcndfcmVhZGVyczsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRl cjsKICBfcHRocmVhZF9kZXNjciBfX3J3X3JlYWRfd2FpdGluZzsKICBfcHRocmVhZF9kZXNjciBf X3J3X3dyaXRlX3dhaXRpbmc7CiAgaW50IF9fcndfa2luZDsKICBpbnQgX19yd19wc2hhcmVkOwp9 IHB0aHJlYWRfcndsb2NrX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19sb2Nra2luZDsK ICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKCgoKdHlwZWRlZiB2b2xh dGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190OwoKCnR5cGVkZWYgc3RydWN0IHsKICBzdHJ1Y3Qg X3B0aHJlYWRfZmFzdGxvY2sgX19iYV9sb2NrOwogIGludCBfX2JhX3JlcXVpcmVkOwogIGludCBf X2JhX3ByZXNlbnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19iYV93YWl0aW5nOwp9IHB0aHJlYWRfYmFy cmllcl90OwoKCnR5cGVkZWYgc3RydWN0IHsKICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfYmFy cmllcmF0dHJfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKIyAx NDQgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwojIDQ2ICIvdXNyL2xvY2FsL2xpYi9n Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNTQg Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9z dGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNjQgIi91c3IvbG9jYWwv bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCnR5 cGVkZWYgc3RydWN0IF9JT19GSUxFIF9fRklMRTsKIyA3NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2lu Y2x1ZGUvbGliaW8uaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vz ci9pbmNsdWRlL19HX2NvbmZpZy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi IDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAxMCAiL3Vzci9pbmNsdWRl L19HX2NvbmZpZy5oIiAyIDMKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBj LWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTIgIi91c3IvbG9jYWwv bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMwp0 eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcu aCIgMiAzCiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVk ZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xv Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkZGVmLmgi IDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9i aXRzL3djaGFyLmgiIDEgMwojIDUxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMgNjcgIi91 c3IvaW5jbHVkZS93Y2hhci5oIiAzCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1 bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1 ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5 cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0g X0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0 ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcu aCIgMwojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2dj b252LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5j bHVkZS9nY29udi5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIv dXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1w Yy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVk ZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEg Ii91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIg MwoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9p bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgoK CmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9E QiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVM TF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9J TlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9F UlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9J R05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBf X2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9f Z2NvbnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBf X2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQg Y2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6 ZV90ICosIGludCwgaW50KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1 Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1 Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAo c3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIg KiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRl ZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVuc2ln bmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19j b25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAo Kl9fZ2NvbnZfdHJhbnNfcXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAq KiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoK dHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hh ciAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0 cnVjdCBfX2djb252X3RyYW5zX2RhdGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2Zj dDsKICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19n Y29udl90cmFuc19lbmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3Ry dWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVw CnsKICBzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2Nv bnN0IGNoYXIgKl9fbW9kbmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9tX25h bWU7CiAgY2hhciAqX190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2lu aXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQg X19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21pbl9u ZWVkZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoKICB2 b2lkICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQg Y2hhciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50IF9f ZmxhZ3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVybmFs X3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoK CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1 Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3Rl cCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2Rh dGEgW107Cn0gKl9fZ2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMK dHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsK ICAgIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0 YSBfX2RhdGE7CiAgfSBfX2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19p bnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBf R19pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVu c2lnbmVkIGludCBfR191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykp KTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k ZV9fIChfX1NJX18pKSk7CiMgMzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MyAiL3Vz ci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMt bGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xvY2FsL2xp Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlw ZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA1NCAiL3Vzci9pbmNsdWRl L2xpYmlvLmgiIDIgMwojIDE2MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19q dW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAxNzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5 cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3Qg X0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3Bv czsKIyAxOTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVz dWx0CnsKICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vy cm9yLAogIF9fY29kZWN2dF9ub2NvbnYKfTsKIyAyNjEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz CnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRy OwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9J T193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2Vu ZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9J T19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2Vu ZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9j aGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZz ZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJs ZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMg MzA1ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAg dm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVz ZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCgoKCnN0 cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFf c3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRl cm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM0NCAiL3Vzci9pbmNs dWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nv b2tpZSwgY2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3Np emVfdCBfX2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBl ZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBp bnQgX193KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CgoK Cgp0eXBlZGVmIF9faW9fcmVhZF9mbiBjb29raWVfcmVhZF9mdW5jdGlvbl90Owp0eXBlZGVmIF9f aW9fd3JpdGVfZm4gY29va2llX3dyaXRlX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19zZWVrX2Zu IGNvb2tpZV9zZWVrX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19jbG9zZV9mbiBjb29raWVfY2xv c2VfZnVuY3Rpb25fdDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwog IF9faW9fd3JpdGVfZm4gKndyaXRlOwogIF9faW9fc2Vla19mbiAqc2VlazsKICBfX2lvX2Nsb3Nl X2ZuICpjbG9zZTsKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9JT19jb29r aWVfaW9fZnVuY3Rpb25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKc3RydWN0IF9JT19jb29r aWVfZmlsZTsKCgpleHRlcm4gdm9pZCBfSU9fY29va2llX2luaXQgKHN0cnVjdCBfSU9fY29va2ll X2ZpbGUgKl9fY2ZpbGUsIGludCBfX3JlYWRfd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAqX19jb29raWUsIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19mbnMpOwoK CgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhy b3cgKCk7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBp bnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBf X3d1bmRlcmZsb3cgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3VmbG93 IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJ TEUgKiwgd2ludF90KSB0aHJvdyAoKTsKIyA0MjYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4 dGVybiBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBf SU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9J T19mZW9mIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAo X0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChf SU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAo X0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJ TEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikg dGhyb3cgKCk7CiMgNDU2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192 ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAog ICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSB0 aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBj b25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3Zh X2xpc3QpIHRocm93ICgpOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBp bnQsIF9fc3NpemVfdCkgdGhyb3cgKCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklM RSAqLCB2b2lkICosIHNpemVfdCkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVr b2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIF9f b2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIHRocm93ICgp OwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgp OwojIDUxNCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKfQojIDc1ICIvdXNyL2xvY2FsL2xpYi9n Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgp0 eXBlZGVmIF9fZ251Y192YV9saXN0IF9fbm90X3ZhX2xpc3RfXzsKIyA4OSAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlw ZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoKdHlwZWRlZiBfR19mcG9zNjRfdCBmcG9zNjRfdDsK IyAxMzggIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5j bHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwoj IDEzOSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNs dWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRlcm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRv dXQ7CmV4dGVybiBGSUxFICpzdGRlcnI7CiMgMTUzICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2 ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IHJlbW92 ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgcmVuYW1l IChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSB0aHJvdyAoKTsKCgoK CmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSB0aHJvdyAoKTsKIyAxNjkgIi91c3IvbG9jYWwv bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCmV4 dGVybiBGSUxFICp0bXBmaWxlNjQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICp0bXBu YW0gKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIg Kl9fcykgdGhyb3cgKCk7CiMgMTg5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdGVtcG5hbSAoX19j b25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9f c3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgdGhy b3cgKCk7CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhy b3cgKCk7CgoKCgpleHRlcm4gaW50IGZjbG9zZWFsbCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0 ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAg ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgdGhyb3cg KCk7CgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmls ZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t b2RlcywKICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRo cm93ICgpOwojIDIzMyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z LjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIHRocm93ICgpOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0 IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAg ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAg ICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIEZJ TEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoK CgoKZXh0ZXJuIEZJTEUgKmZvcGVuY29va2llICh2b2lkICpfX3Jlc3RyaWN0IF9fbWFnaWNfY29v a2llLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25z X3QgX19pb19mdW5jcykgdGhyb3cgKCk7CgoKZXh0ZXJuIEZJTEUgKmZtZW1vcGVuICh2b2lkICpf X3MsIHNpemVfdCBfX2xlbiwgX19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgoKCmV4 dGVybiBGSUxFICpvcGVuX21lbXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2MsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxvYykg dGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry ZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzZXR2 YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAog ICAgICAgICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoK CmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAq X19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKSB0 aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg KCk7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAg ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p IHRocm93ICgpOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0 cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f Zm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVz dHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAg ICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgdnBy aW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBf X2FyZykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJp Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzbnBy aW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAg ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7Cgpl eHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxl biwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f Zm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGludCB2YXNwcmludGYg KGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mLAog ICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBp bnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAgICAg ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBp bnQgYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAg ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50 IHZkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAg ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBk cHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAg ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMp KSk7CgoKCgpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAg ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0 aHJvdyAoKTsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv cm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9f cmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAg ICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2Fu ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2Fy ZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAx LCAwKSkpOwoKCmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f cywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs IF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zv cm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKCgpleHRlcm4gaW50IGZnZXRjIChGSUxFICpf X3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pIHRocm93 ICgpOwoKCmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4g aW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBn ZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5s b2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGlu dCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBwdXRjIChpbnQgX19j LCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19j KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJ TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50 IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2Nr ZWQgKGludCBfX2MpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJl YW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0p IHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywg aW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0aHJvdyAoKTsKCgoKZXh0 ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0 aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIHRocm93ICgpOwojIDQz NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRl L3N0ZGlvLmgiIDMKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmlj dCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVz dHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIF9fc3NpemVfdCBn ZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAo KTsKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0 ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJv dyAoKTsKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg ZnB1dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgpl eHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu dCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNp emVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAg ICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhy b3cgKCk7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9f cHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklM RSAqX19yZXN0cmljdCBfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9j a2VkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0 aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19y ZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoK ZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193 aGVuY2UpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkg dGhyb3cgKCk7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK IyA1MDAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5j bHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNlZWtvIChGSUxFICpfX3N0cmVhbSwgX19vZmZf dCBfX29mZiwgaW50IF9fd2hlbmNlKSB0aHJvdyAoKTsKCmV4dGVybiBfX29mZl90IGZ0ZWxsbyAo RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9f cmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICB0aHJvdyAo KTsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpf X3BvcykgdGhyb3cgKCk7CiMgNTM0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbzY0IChGSUxF ICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpIHRocm93ICgpOwpleHRl cm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBp bnQgZmdldHBvczY0IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0 cmljdCBfX3BvcykKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGludCBmc2V0cG9zNjQgKEZJTEUgKl9f c3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90ICpfX3BvcykgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lk IGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZlb2YgKEZJ TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVh bSkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0 cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0p IHRocm93ICgpOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRo cm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cg KCk7CgoKCgpleHRlcm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0 IHN5c19lcnJsaXN0W107CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNo YXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUg Kl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxF ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBj aGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoKZXh0ZXJu IGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAq Y3Rlcm1pZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAo Y2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2Jz dGFja19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu Li4pIHRocm93ICgpOwpleHRlcm4gaW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0IG9ic3RhY2sg Kl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg X19nbnVjX3ZhX2xpc3QgX19hcmdzKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiB2b2lkIGZsb2Nr ZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmls ZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChG SUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CiMgNjQ0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2 ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwp9CiMgMTMwICIuLi8uLi8u Li9saWIvY2NscG9ydC5oIiAyCiMgMTYyICIuLi8uLi8uLi9saWIvY2NscG9ydC5oIgojIDEgIi91 c3IvaW5jbHVkZS9tYXRoLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAi L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAy IDMKCmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDEg MwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl L2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAyIDMK IyAzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv bmFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgojIDEgIi91c3IvaW5j bHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYu aCIgMwp0eXBlZGVmIGxvbmcgZG91YmxlIGZsb2F0X3Q7Cgp0eXBlZGVmIGxvbmcgZG91YmxlIGRv dWJsZV90OwojIDQxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRl L21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAi L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3Vi bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3MgKGRvdWJsZSBfX3gpIHRocm93 ICgpOwoKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv dWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhdGFuIChk b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4gKGRvdWJsZSBfX3gpIHRo cm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgdGhy b3cgKCk7IGV4dGVybiBkb3VibGUgX19hdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgdGhy b3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g ZG91YmxlIF9fY29zIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgc2luIChk b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NpbiAoZG91YmxlIF9feCkgdGhy b3cgKCk7CgpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBk b3VibGUgX190YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBzaW5jb3Mg KGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCk7IGV4 dGVybiB2b2lkIF9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpf X2Nvc3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGNvc2ggKGRvdWJsZSBfX3gpIHRo cm93ICgpOyBleHRlcm4gZG91YmxlIF9fY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRl cm4gZG91YmxlIHNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2lu aCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSBfX3gp IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK CmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl IF9fYWNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhc2luaCAoZG91 YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hc2luaCAoZG91YmxlIF9feCkgdGhy b3cgKCk7CgpleHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGRvdWJsZSBfX2F0YW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZG91Ymxl IGV4cCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJsZSBf X3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGV4cDEwIChkb3VibGUgX194KSB0aHJvdyAo KTsgZXh0ZXJuIGRvdWJsZSBfX2V4cDEwIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBk b3VibGUgcG93MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcG93MTAg KGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGZyZXhwIChkb3VibGUgX194 LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZnJleHAgKGRvdWJs ZSBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsZGV4cCAo ZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbGRl eHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91Ymxl IGxvZyAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cgKGRvdWJsZSBf X3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nMTAgKGRvdWJsZSBfX3gpIHRocm93ICgp OyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBk b3VibGUgbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4g ZG91YmxlIF9fbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOwoKCgpl eHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf X2V4cG0xIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZzFwIChkb3Vi bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzFwIChkb3VibGUgX194KSB0aHJv dyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g ZG91YmxlIF9fbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIGV4 cDIgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXhwMiAoZG91YmxlIF9f eCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cyIChkb3VibGUgX194KSB0aHJvdyAoKTsg ZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4g ZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3Vi bGUgX19wb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBkb3Vi bGUgc3FydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zcXJ0IChkb3Vi bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91 YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91 YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIGNicnQgKGRvdWJsZSBfX3gpIHRo cm93ICgpOyBleHRlcm4gZG91YmxlIF9fY2JydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoK CmV4dGVybiBkb3VibGUgY2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg X19jZWlsIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZhYnMgKGRvdWJs ZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJs ZSBfX2ZhYnMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsKCgpleHRlcm4gZG91YmxlIGZsb29yIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv dWJsZSBfX2Zsb29yIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZtb2Qg KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1vZCAo ZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IF9faXNpbmYg KGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK ZXh0ZXJuIGludCBfX2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGUg KGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK ZXh0ZXJuIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0 ZXJuIGRvdWJsZSBfX2RyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpl eHRlcm4gZG91YmxlIHNpZ25pZmljYW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv dWJsZSBfX3NpZ25pZmljYW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3Vi bGUgY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2NvcHlzaWduIChkb3VibGUgX194LCBk b3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRl cm4gZG91YmxlIG5hbiAoX19jb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25hbiAoX19jb25zdCBjaGFyICpfX3Rh Z2IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQg X19pc25hbiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGowIChkb3VibGUpIHRocm93 ICgpOyBleHRlcm4gZG91YmxlIF9fajAgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUg ajEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19qMSAoZG91YmxlKSB0aHJvdyAo KTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl IF9fam4gKGludCwgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKSB0 aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3kwIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91 YmxlIHkxIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9feTEgKGRvdWJsZSkgdGhy b3cgKCk7CmV4dGVybiBkb3VibGUgeW4gKGludCwgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRv dWJsZSBfX3luIChpbnQsIGRvdWJsZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBlcmYg KGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19lcmYgKGRvdWJsZSkgdGhyb3cgKCk7 CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Vy ZmMgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgbGdhbW1hIChkb3VibGUpIHRocm93 ICgpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hIChkb3VibGUpIHRocm93ICgpOwoKCgpleHRlcm4g ZG91YmxlIHRnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3RnYW1tYSAo ZG91YmxlKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJsZSkgdGhyb3cg KCk7IGV4dGVybiBkb3VibGUgX19nYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJu IGRvdWJsZSBsZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOyBleHRl cm4gZG91YmxlIF9fbGdhbW1hX3IgKGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsK CgoKCgoKZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv dWJsZSBfX3JpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbmV4dGFm dGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBf X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBkb3VibGUg bmV4dHRvd2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0dG93YXJkIChkb3VibGUg X194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsKCgoKZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo cm93ICgpOyBleHRlcm4gZG91YmxlIF9fcmVtYWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195 KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYiAoZG91YmxlIF9feCwgZG91YmxlIF9f bikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zY2FsYiAoZG91YmxlIF9feCwgZG91YmxlIF9f bikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxibiAoZG91YmxlIF9feCwgaW50IF9f bikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24p IHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlsb2diIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0 ZXJuIGludCBfX2lsb2diIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUg c2NhbGJsbiAoZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs ZSBfX3NjYWxibG4gKGRvdWJsZSBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVy biBkb3VibGUgbmVhcmJ5aW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf X25lYXJieWludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgcm91bmQg KGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcm91bmQgKGRvdWJsZSBfX3gp IHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHRydW5jIChkb3VibGUgX194KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX190cnVuYyAoZG91Ymxl IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGRv dWJsZSByZW1xdW8gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93ICgp OyBleHRlcm4gZG91YmxlIF9fcmVtcXVvIChkb3VibGUgX194LCBkb3VibGUgX195LCBpbnQgKl9f cXVvKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGxyaW50IChkb3VibGUgX194KSB0 aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwpl eHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g bG9uZyBsb25nIGludCBfX2xscmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBs b25nIGludCBscm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19s cm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5k IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kIChk b3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBmZGltIChkb3VibGUgX194LCBk b3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2ZkaW0gKGRvdWJsZSBfX3gsIGRv dWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZm1heCAoZG91YmxlIF9feCwgZG91 YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mbWF4IChkb3VibGUgX194LCBkb3Vi bGUgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZtaW4gKGRvdWJsZSBfX3gsIGRvdWJs ZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1pbiAoZG91YmxlIF9feCwgZG91Ymxl IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5IChkb3VibGUgX192YWx1 ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGlu dCBfX3NpZ25iaXQgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBf X3ksIGRvdWJsZSBfX3opIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1hIChkb3VibGUgX194 LCBkb3VibGUgX195LCBkb3VibGUgX196KSB0aHJvdyAoKTsKIyA2NCAiL3Vzci9pbmNsdWRlL21h dGguaCIgMiAzCiMgODIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv Yml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o IiAzCmV4dGVybiBmbG9hdCBhY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0 IF9fYWNvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgYXNpbmYgKGZsb2F0 IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2FzaW5mIChmbG9hdCBfX3gpIHRocm93ICgp OwoKZXh0ZXJuIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg X19hdGFuZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhdGFuMmYgKGZsb2F0 IF9feSwgZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXRhbjJmIChmbG9hdCBf X3ksIGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGNvc2YgKGZsb2F0IF9feCkg dGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Nvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRl cm4gZmxvYXQgc2luZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2luZiAo ZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCB0YW5mIChmbG9hdCBfX3gpIHRocm93 ICgpOyBleHRlcm4gZmxvYXQgX190YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4g dm9pZCBzaW5jb3NmIChmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIHRo cm93ICgpOyBleHRlcm4gdm9pZCBfX3NpbmNvc2YgKGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwg ZmxvYXQgKl9fY29zeCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCBjb3NoZiAoZmxvYXQg X194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7 CgpleHRlcm4gZmxvYXQgc2luaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf X3NpbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHRhbmhmIChmbG9hdCBf X3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX190YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsK CgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0 IF9fYWNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGFzaW5oZiAoZmxv YXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmIChmbG9hdCBfX3gpIHRocm93 ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZs b2F0IF9fYXRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBmbG9hdCBleHBm IChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHBmIChmbG9hdCBfX3gpIHRo cm93ICgpOwoKCgpleHRlcm4gZmxvYXQgZXhwMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRl cm4gZmxvYXQgX19leHAxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgcG93 MTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19wb3cxMGYgKGZsb2F0IF9f eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBmcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4 cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9hdCBfX3gsIGludCAq X19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBp bnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194 LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2YgKGZsb2F0IF9f eCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoK ZXh0ZXJuIGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f bG9nMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQg X194LCBmbG9hdCAqX19pcHRyKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZsb2F0 IF9feCwgZmxvYXQgKl9faXB0cikgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBleHBtMWYgKGZs b2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2V4cG0xZiAoZmxvYXQgX194KSB0aHJv dyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nMXBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4g ZmxvYXQgX19sb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2Jm IChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sb2diZiAoZmxvYXQgX194KSB0 aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBleHAyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0 ZXJuIGZsb2F0IF9fZXhwMmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxv ZzJmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sb2cyZiAoZmxvYXQgX194 KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwgZmxvYXQgX195 KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRo cm93ICgpOwoKCmV4dGVybiBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGZsb2F0IF9fc3FydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBoeXBv dGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9faHlwb3Rm IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgY2JydGYg KGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2NicnRmIChmbG9hdCBfX3gpIHRo cm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4 dGVybiBmbG9hdCBfX2NlaWxmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBm YWJzZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4 dGVybiBmbG9hdCBfX2ZhYnNmIChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZmxvb3JmIChmbG9hdCBfX3gpIHRocm93ICgpOyBl eHRlcm4gZmxvYXQgX19mbG9vcmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0 IGZtb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Zt b2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IF9faXNp bmZmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZmIChmbG9hdCBfX3ZhbHVl KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5p dGVmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 CgoKZXh0ZXJuIGZsb2F0IGRyZW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4 dGVybiBmbG9hdCBfX2RyZW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCmV4 dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h dCBfX3NpZ25pZmljYW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBj b3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBf X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBmbG9h dCBuYW5mIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uYW5mIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBfX2lzbmFu ZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK CgpleHRlcm4gaW50IGlzbmFuZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBqMGYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0 ZXJuIGZsb2F0IF9fajBmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBqMWYgKGZsb2F0 KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fajFmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBm bG9hdCBqbmYgKGludCwgZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19qbmYgKGludCwg ZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgeTBmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVy biBmbG9hdCBfX3kwZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgeTFmIChmbG9hdCkg dGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3kxZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxv YXQgeW5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9feW5mIChpbnQsIGZs b2F0KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZmxvYXQgZXJmZiAoZmxvYXQpIHRocm93ICgpOyBl eHRlcm4gZmxvYXQgX19lcmZmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBlcmZjZiAo ZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19lcmZjZiAoZmxvYXQpIHRocm93ICgpOwpl eHRlcm4gZmxvYXQgbGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sZ2Ft bWFmIChmbG9hdCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCB0Z2FtbWFmIChmbG9hdCkgdGhy b3cgKCk7IGV4dGVybiBmbG9hdCBfX3RnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsKCgoKCmV4dGVy biBmbG9hdCBnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZ2FtbWFmIChm bG9hdCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCBsZ2FtbWFmX3IgKGZsb2F0LCBpbnQg Kl9fc2lnbmdhbXApIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmX3IgKGZsb2F0LCBp bnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgcmludGYgKGZsb2F0 IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3JpbnRmIChmbG9hdCBfX3gpIHRocm93ICgp OwoKCmV4dGVybiBmbG9hdCBuZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJm IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOwoKZXh0ZXJuIGZsb2F0IG5leHR0b3dhcmRmIChmbG9hdCBfX3gsIGxvbmcgZG91YmxlIF9f eSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19u ZXh0dG93YXJkZiAoZmxvYXQgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGZsb2F0IHJlbWFpbmRlcmYgKGZsb2F0IF9f eCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcmVtYWluZGVyZiAoZmxvYXQg X194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc2NhbGJmIChmbG9hdCBf X3gsIGZsb2F0IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NjYWxiZiAoZmxvYXQgX194 LCBmbG9hdCBfX24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibmYgKGZsb2F0IF9f eCwgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NjYWxibmYgKGZsb2F0IF9feCwg aW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaWxvZ2JmIChmbG9hdCBfX3gpIHRocm93 ICgpOyBleHRlcm4gaW50IF9faWxvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJu IGZsb2F0IHNjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVy biBmbG9hdCBfX3NjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoK CmV4dGVybiBmbG9hdCBuZWFyYnlpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxv YXQgX19uZWFyYnlpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgcm91 bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19yb3VuZGYgKGZsb2F0IF9f eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCB0cnVuY2YgKGZsb2F0IF9feCkgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX190cnVuY2YgKGZsb2F0 IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGZs b2F0IHJlbXF1b2YgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsg ZXh0ZXJuIGZsb2F0IF9fcmVtcXVvZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19xdW8p IHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRmIChmbG9hdCBfX3gpIHRocm93 ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CmV4dGVy biBsb25nIGxvbmcgaW50IGxscmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25n IGxvbmcgaW50IF9fbGxyaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcg aW50IGxyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyb3Vu ZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmRmIChm bG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmRmIChmbG9h dCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQg X195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195 KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgZm1heGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0 aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1heGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJv dyAoKTsKCgpleHRlcm4gZmxvYXQgZm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAo KTsgZXh0ZXJuIGZsb2F0IF9fZm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsK CgoKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKQogICAg IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdGYgKGZs b2F0IF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK CgpleHRlcm4gZmxvYXQgZm1hZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgdGhy b3cgKCk7IGV4dGVybiBmbG9hdCBfX2ZtYWYgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBf X3opIHRocm93ICgpOwojIDgzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA5OSAiL3Vzci9p bmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMK IyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91Ymxl IGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19h Y29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lu bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmwg KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmwgKGxv bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sIChsb25n IGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBk b3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg X19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpl eHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGxvbmcgZG91YmxlIF9fY29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBs b25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBk b3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91 YmxlIHRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf X3RhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIHNpbmNvc2wg KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29z eCkgdGhyb3cgKCk7IGV4dGVybiB2b2lkIF9fc2luY29zbCAobG9uZyBkb3VibGUgX194LCBsb25n IGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19jb3N4KSB0aHJvdyAoKTsKCgoKCgoKZXh0 ZXJuIGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g bG9uZyBkb3VibGUgX19jb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBs b25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg ZG91YmxlIF9fc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBk b3VibGUgdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJs ZSBfX3RhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3Vi bGUgYWNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg X19hY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUg YXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19h c2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRh bmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFu aGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4 cGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cGwg KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHAxMGwg KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cDEwbCAo bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBwb3cxMGwgKGxv bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3BvdzEwbCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZyZXhwbCAobG9u ZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi bGUgX19mcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsK CgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9u ZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGRleHBsIChsb25nIGRvdWJsZSBf X3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAo bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMTBsIChsb25n IGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxMGwgKGxvbmcg ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG1vZGZsIChsb25nIGRv dWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi bGUgX19tb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSB0aHJvdyAo KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp OwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7 IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK CgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4 dGVybiBsb25nIGRvdWJsZSBfX2xvZ2JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoK ZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl cm4gbG9uZyBkb3VibGUgX19leHAybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRl cm4gbG9uZyBkb3VibGUgbG9nMmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs b25nIGRvdWJsZSBfX2xvZzJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRl cm4gbG9uZyBkb3VibGUgcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRo cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19wb3dsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg ZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNxcnRsIChsb25nIGRv dWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zcXJ0bCAobG9uZyBkb3Vi bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3Vi bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19o eXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCmV4 dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGxvbmcgZG91YmxlIF9fY2JydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4 dGVybiBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGxvbmcgZG91YmxlIF9fY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJu IGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91Ymxl IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25n IGRvdWJsZSBmbG9vcmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv dWJsZSBfX2Zsb29ybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBk b3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsg ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg X195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgX19pc2luZmwgKGxvbmcgZG91YmxlIF9fdmFs dWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9f ZmluaXRlbCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWwg KGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi bGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91Ymxl IF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNp Z25pZmljYW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxv bmcgZG91YmxlIGNvcHlzaWdubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f Y29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5hbmwgKF9f Y29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 IGV4dGVybiBsb25nIGRvdWJsZSBfX25hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAo KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW5sIChs b25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 CgoKCmV4dGVybiBpbnQgaXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGowbCAobG9uZyBk b3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19qMGwgKGxvbmcgZG91YmxlKSB0 aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGoxbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBl eHRlcm4gbG9uZyBkb3VibGUgX19qMWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxv bmcgZG91YmxlIGpubCAoaW50LCBsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv dWJsZSBfX2pubCAoaW50LCBsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJs ZSB5MGwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsIChs b25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSB5MWwgKGxvbmcgZG91Ymxl KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTFsIChsb25nIGRvdWJsZSkgdGhyb3cg KCk7CmV4dGVybiBsb25nIGRvdWJsZSB5bmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOyBl eHRlcm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoK CmV4dGVybiBsb25nIGRvdWJsZSBlcmZsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBs b25nIGRvdWJsZSBfX2VyZmwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91 YmxlIGVyZmNsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Vy ZmNsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSBsZ2FtbWFsIChs b25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWwgKGxvbmcg ZG91YmxlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHRnYW1tYWwgKGxvbmcgZG91 YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGdhbW1hbCAobG9uZyBkb3VibGUp IHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBkb3VibGUpIHRo cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAo KTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAq X19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWxfciAobG9u ZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRv dWJsZSByaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fcmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl IG5leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHRhZnRl cmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dHRvd2FyZGwgKGxvbmcg ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHR0b3dhcmRsIChsb25nIGRvdWJsZSBf X3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OwoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25n IGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1haW5kZXJsIChs b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25n IGRvdWJsZSBzY2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSB0aHJvdyAo KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91 YmxlIF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJubCAobG9uZyBk b3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJu bCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpbG9n YmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBpbnQgX19pbG9nYmwgKGxvbmcg ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsbmwgKGxv bmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoK ZXh0ZXJuIGxvbmcgZG91YmxlIG5lYXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7 IGV4dGVybiBsb25nIGRvdWJsZSBfX25lYXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg KCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSByb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg KCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHRydW5jbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RydW5j bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtcXVvbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv dWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1x dW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgaW50ICpfX3F1bykgdGhyb3cg KCk7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg KCk7IGV4dGVybiBsb25nIGludCBfX2xyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsg ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp OwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsg ZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKZXh0 ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4 dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7 CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmZGltbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs ZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mZGltbCAobG9uZyBkb3VibGUg X194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWF4 bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9u ZyBkb3VibGUgX19mbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93 ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv dWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWlubCAobG9uZyBkb3Vi bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFz c2lmeWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0bCAobG9uZyBkb3VibGUgX192YWx1 ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBs b25nIGRvdWJsZSBmbWFsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgbG9uZyBk b3VibGUgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1hbCAobG9uZyBkb3Vi bGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feikgdGhyb3cgKCk7CiMgMTAw ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyAxMTMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMK ZXh0ZXJuIGludCBzaWduZ2FtOwojIDE1NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwplbnVtCiAg ewogICAgRlBfTkFOLAoKICAgIEZQX0lORklOSVRFLAoKICAgIEZQX1pFUk8sCgogICAgRlBfU1VC Tk9STUFMLAoKICAgIEZQX05PUk1BTAoKICB9OwojIDI0MCAiL3Vzci9pbmNsdWRlL21hdGguaCIg Mwp0eXBlZGVmIGVudW0KewogIF9JRUVFXyA9IC0xLAogIF9TVklEXywKICBfWE9QRU5fLAogIF9Q T1NJWF8sCiAgX0lTT0NfCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgoKCgpleHRlcm4gX0xJQl9WRVJT SU9OX1RZUEUgX0xJQl9WRVJTSU9OOwojIDI2MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpzdHJ1 Y3QgX19leGNlcHRpb24KCgoKICB7CiAgICBpbnQgdHlwZTsKICAgIGNoYXIgKm5hbWU7CiAgICBk b3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAgZG91YmxlIHJldHZhbDsKICB9OwoKCmV4 dGVybiBpbnQgbWF0aGVyciAoc3RydWN0IF9fZXhjZXB0aW9uICpfX2V4YykgdGhyb3cgKCk7CiMg NDExICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCn0KIyAxNjMgIi4uLy4uLy4uL2xpYi9jY2xwb3J0 LmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRl L2N0eXBlLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3Iv aW5jbHVkZS9jdHlwZS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMK IyAyOCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwoKZXh0ZXJuICJDIiB7CiMgNDAgIi91c3Iv aW5jbHVkZS9jdHlwZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAyMiAi L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEg MwojIDIzICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDM3ICIvdXNyL2luY2x1ZGUvZW5k aWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3Iv aW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgNDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMKCgoK CgoKZW51bQp7CiAgX0lTdXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDogKCgx IDw8ICgwKSkgPj4gOCkpLAogIF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8PCA4 KSA6ICgoMSA8PCAoMSkpID4+IDgpKSwKICBfSVNhbHBoYSA9ICgoMikgPCA4ID8gKCgxIDw8ICgy KSkgPDwgOCkgOiAoKDEgPDwgKDIpKSA+PiA4KSksCiAgX0lTZGlnaXQgPSAoKDMpIDwgOCA/ICgo MSA8PCAoMykpIDw8IDgpIDogKCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdpdCA9ICgoNCkg PCA4ID8gKCgxIDw8ICg0KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSksCiAgX0lTc3BhY2Ug PSAoKDUpIDwgOCA/ICgoMSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1KSkgPj4gOCkpLAogIF9J U3ByaW50ID0gKCg2KSA8IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6ICgoMSA8PCAoNikpID4+IDgp KSwKICBfSVNncmFwaCA9ICgoNykgPCA4ID8gKCgxIDw8ICg3KSkgPDwgOCkgOiAoKDEgPDwgKDcp KSA+PiA4KSksCiAgX0lTYmxhbmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAoOCkpIDw8IDgpIDogKCgx IDw8ICg4KSkgPj4gOCkpLAogIF9JU2NudHJsID0gKCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8PCA4 KSA6ICgoMSA8PCAoOSkpID4+IDgpKSwKICBfSVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8PCAo MTApKSA8PCA4KSA6ICgoMSA8PCAoMTApKSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8IDgg PyAoKDEgPDwgKDExKSkgPDwgOCkgOiAoKDEgPDwgKDExKSkgPj4gOCkpCn07CiMgNzUgIi91c3Iv aW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBfX2NvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19j dHlwZV9iOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG9sb3dlcjsKZXh0ZXJu IF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3RvdXBwZXI7CiMgOTEgIi91c3IvaW5jbHVkZS9j dHlwZS5oIiAzCmV4dGVybiBpbnQgaXNhbG51bSAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBp c2FscGhhIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgdGhyb3cgKCk7 CmV4dGVybiBpbnQgaXNkaWdpdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2xvd2VyIChp bnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgdGhyb3cgKCk7CmV4dGVybiBp bnQgaXNwcmludCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3B1bmN0IChpbnQpIHRocm93 ICgpOwpleHRlcm4gaW50IGlzc3BhY2UgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXN1cHBl ciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSB0aHJvdyAoKTsKCgpl eHRlcm4gaW50IGlzYmxhbmsgKGludCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHRvbG93ZXIg KGludCBfX2MpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdG91cHBlciAoaW50IF9fYykgdGhyb3cg KCk7CgoKCgoKCmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVy biBpbnQgdG9hc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX3RvdXBwZXIg KGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX3RvbG93ZXIgKGludCkgdGhyb3cgKCk7CiMgMjEw ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEg MwojIDI4ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAzCnR5cGVkZWYgc3RydWN0IF9fbG9jYWxl X3N0cnVjdAp7CgogIHN0cnVjdCBsb2NhbGVfZGF0YSAqX19sb2NhbGVzWzEzXTsKCgogIGNvbnN0 IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0IGludCAqX19jdHlwZV90b2xv d2VyOwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwp9ICpfX2xvY2FsZV90OwojIDIxMSAi L3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwojIDIyMyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMK ZXh0ZXJuIGludCBfX2lzYWxudW1fbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJu IGludCBfX2lzYWxwaGFfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBf X2lzY250cmxfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzZGln aXRfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzbG93ZXJfbCAo aW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzZ3JhcGhfbCAoaW50LCBf X2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzcHJpbnRfbCAoaW50LCBfX2xvY2Fs ZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzcHVuY3RfbCAoaW50LCBfX2xvY2FsZV90KSB0 aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzc3BhY2VfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAo KTsKZXh0ZXJuIGludCBfX2lzdXBwZXJfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0 ZXJuIGludCBfX2lzeGRpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CgpleHRlcm4g aW50IF9faXNibGFua19sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwoKCgpleHRlcm4gaW50 IF9fdG9sb3dlcl9sIChpbnQgX19jLCBfX2xvY2FsZV90IF9fbCkgdGhyb3cgKCk7CgoKZXh0ZXJu IGludCBfX3RvdXBwZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwojIDI3 NiAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKfQojIDE2NiAiLi4vLi4vLi4vbGliL2NjbHBvcnQu aCIgMgojIDEgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2Vy cm5vLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzAgIi91c3IvaW5j bHVkZS9lcnJuby5oIiAyIDMKCgpleHRlcm4gIkMiIHsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0 cy9lcnJuby5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwojIDEgIi91 c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vy cm5vLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyIDMKIyAyNiAiL3Vz ci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5v LmgiIDMKZXh0ZXJuIGludCBlcnJubzsKCgpleHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0aW9uICh2 b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMzcgIi91c3IvaW5j bHVkZS9lcnJuby5oIiAyIDMKIyA1NSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKZXh0ZXJuIGNo YXIgKnByb2dyYW1faW52b2NhdGlvbl9uYW1lLCAqcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25h bWU7CgoKCn0KIyA2OSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKdHlwZWRlZiBpbnQgZXJyb3Jf dDsKIyAxNjcgIi4uLy4uLy4uL2xpYi9jY2xwb3J0LmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9z dGRsaWIuaCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5j bHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoK CgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9p bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCmV4 dGVybiAiQyIgewoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRmbGFncy5oIiAxIDMK IyA0MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93 YWl0c3RhdHVzLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMK IyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0cy93 YWl0c3RhdHVzLmgiIDIgMwoKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAgIHN0 cnVjdAogICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAgICAg IHVuc2lnbmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3Jl dGNvZGU6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90 ZXJtaW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19z dG9wdmFsOjg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5z aWduZWQgaW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91 c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0 eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoK Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07 CiAgfSBsZGl2X3Q7CgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxv bmcgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsKIyAx MzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21i X2N1cl9tYXggKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3Qg Y2hhciAqX19ucHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVy biBpbnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRy KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBl eHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9k IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc3Ry dG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3Vi bGUgc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoK ZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf X2Jhc2UpIHRocm93ICgpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAo KTsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKX19leHRlbnNp b25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsK CgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgpfX2V4dGVu c2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cg KCk7CiMgMjExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxv Y2FsZS5oIiAxIDMKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBs b25nIGludCBfX3N0cnRvbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf X2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJv dyAoKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0 ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpl eHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0 aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf X2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBf X3N0cnRvZl9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2Mp IHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg KipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f bG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2lu dGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXAp CiAgICAgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CmV4 dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg KipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50 ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgp OwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRo cm93ICgpOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxf aW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9f Z3JvdXApIHRocm93ICgpOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxv bmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CiMg Mzg0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50 IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19z KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgojIDEgIi91c3IvaW5jbHVk ZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEg Ii91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBl cy5oIiAyIDMKCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAx IDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VfY2hh ciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2lu dDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBl ZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCgoKdHlw ZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKCgoKCgoKdHlw ZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5 cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlw ZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0 eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCnR5cGVkZWYgX19vZmY2NF90IG9mZjY0X3Q7CgoK Cgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoKCgoKdHlw ZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owp0 eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKIyAx MzIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgi IDEgMwojIDU2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMuaCIgMSAzCiMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX19j bG9ja190IGNsb2NrX3Q7CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEg MwojIDY4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fdGltZV90IHRpbWVf dDsKIyA3OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5 cGVzLmgiIDEgMwojIDgwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fY2xv Y2tpZF90IGNsb2NraWRfdDsKIyA5MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3Iv aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDkyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMK Cgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEzMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBl cy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VzZWNvbmRzX3QgdXNlY29uZHNfdDsKCgoKdHlwZWRlZiBf X3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91 c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg dWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgdWludDsKIyAxOTAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGlu dCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgaW50 IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50 IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgaW50 IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7CgoKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7 CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g KF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18g KChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDY0X3QgX19h dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90 IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CiMgMjEyICIvdXNyL2luY2x1 ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDIxMyAi L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2Vs ZWN0LmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMSAiL3Vzci9p bmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAy IDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1 ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAx IDMKIyAzMiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1 ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAz CnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1 bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25n IGludCkpKV07CiAgfSBfX3NpZ3NldF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o IiAyIDMKCgoKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90OwoKCgoKCiMgMSAiL3Vzci9pbmNs dWRlL3RpbWUuaCIgMSAzCiMgMTA2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0aW1l c3BlYwogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7CiAgfTsK IyA0NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9i aXRzL3RpbWUuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMwojIDEgIi91 c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0cy90aW1l LmgiIDIgMwoKCgpzdHJ1Y3QgdGltZXZhbAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIF9f c3VzZWNvbmRzX3QgdHZfdXNlYzsKICB9OwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o IiAyIDMKIyA1NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwp0eXBlZGVmIGxvbmcgaW50 IF9fZmRfbWFzazsKCgoKCgoKCnR5cGVkZWYgc3RydWN0CiAgewoKCgogICAgX19mZF9tYXNrIGZk c19iaXRzWzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCgoKCiAgfSBmZF9zZXQ7 CgoKCgoKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CiMgOTUgIi91c3IvaW5jbHVkZS9zeXMv c2VsZWN0LmgiIDMKZXh0ZXJuICJDIiB7CgoKCgoKCmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19u ZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgZmRf c2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9f cmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAq X19yZXN0cmljdCBfX3RpbWVvdXQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcHNlbGVjdCAo aW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAg ICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAgICAgICBm ZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCwKICAgICAgICAgICAgICAgICAg ICBjb25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2lnbWFzaykgdGhyb3cgKCk7CgoKfQoj IDIxNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9z eXMvc3lzbWFjcm9zLmgiIDEgMwojIDIxOSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK CgoKCnR5cGVkZWYgX19ibGtzaXplX3QgYmxrc2l6ZV90OwoKCgoKCgp0eXBlZGVmIF9fYmxrY250 X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CgoKCnR5cGVk ZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7CiMgMjU3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz LmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxrY250 NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90OwoK Cn0KIyAzOTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCmV4dGVybiBsb25nIGlu dCByYW5kb20gKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVk IGludCBfX3NlZWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2ln bmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCBfX3N0YXRlbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChj aGFyICpfX3N0YXRlYnVmKSB0aHJvdyAoKTsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsK ICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7 CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwog ICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJh bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90 ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICh1 bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSB0aHJvdyAoKTsK CmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVz dHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVs ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmlj dCBfX2J1ZikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJp Y3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEg Kl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcmFuZCAodm9pZCkg dGhyb3cgKCk7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cg KCk7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgdGhyb3cgKCk7 CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4gZG91 YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsKCgpl eHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBu cmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0ZXJu IGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0 OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIHRocm93ICgpOwoKCmV4dGVybiB2b2lk IHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkgdGhyb3cgKCk7CmV4dGVybiB1bnNpZ25lZCBz aG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgdGhyb3cg KCk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddKSB0 aHJvdyAoKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQg aW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNdOwogICAgdW5zaWdu ZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAgICB1bnNp Z25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1 Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAg ICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBlcmFu ZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAg ICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJu IGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs CiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhy b3cgKCk7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl c3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2Rh dGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAq X19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNp Z25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk cmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBs b25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzcmFu ZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIp CiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQg X19zZWVkMTZ2WzNdLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf X2J1ZmZlcikgdGhyb3cgKCk7CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQg aW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRh ICpfX2J1ZmZlcikgdGhyb3cgKCk7CiMgNTI3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0 ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXpl X3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoK CgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAodm9p ZCAqX19wdHIpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19wdHIpIHRo cm93ICgpOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzCiMgMjIgIi91c3IvaW5j bHVkZS9hbGxvY2EuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAi L3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIv aTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjYgIi91c3Iv aW5jbHVkZS9hbGxvY2EuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKCgpleHRlcm4gdm9pZCAqYWxs b2NhIChzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgoKCgp9CiMgNTQ3ICIvdXNyL2luY2x1ZGUv c3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgcG9zaXhf bWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19z aXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVy biB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f KSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIHRocm93ICgp OwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2 b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lk IGV4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f XykpOwoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25z dCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52 IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYg KGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25z dCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAg ICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIHRocm93ICgpOwojIDYy MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9f dGVtcGxhdGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3Rl bXBsYXRlKSB0aHJvdyAoKTsKIyA2NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g aW50IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CiMgNjUwICIvdXNyL2lu Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUp IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5k KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hbWUgKF9f Y29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyA2NzIgIi91c3IvaW5jbHVkZS9zdGRsaWIu aCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25h bWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSB0 aHJvdyAoKTsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2b2lk ICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNvbl9m bl90OwoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2Nv bnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBz aXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNv cnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAg ICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGlu dCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcg aW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBsbGFicyAobG9uZyBsb25n IGludCBfX3gpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK CgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgKGxvbmcg aW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAobG9u ZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs b25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwojIDcyOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICplY3Z0 IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwK ICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwoKCgoK ZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln bikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBf X25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChs b25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50 ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwpl eHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAg ICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0 IF9fc2lnbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192YWx1 ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGVj dnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVj cHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jl c3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsK ZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln biwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xl bikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGlu dCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwg aW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3Ry aWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxv bmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQg Kl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAg ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoK CgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgdGhy b3cgKCk7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsCiAg ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19u KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2No YXIpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3Ry aWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgpleHRlcm4gc2l6ZV90IHdjc3RvbWJzIChj aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hh cl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgoK CmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSB0aHJvdyAoKTsK IyA4MDggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldHN1Ym9wdCAoY2hh ciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19j b25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf X3Jlc3RyaWN0IF9fdmFsdWVwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkgKF9f Y29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9vcGVu cHQgKGludCBfX29mbGFnKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZ3JhbnRwdCAoaW50 IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19mZCkgdGhyb3cg KCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRocm93ICgpOwoKCgoKCgpl eHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZs ZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIHRocm93ICgpOwoKCgoKCgpl eHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIHRo cm93ICgpOwoKCgoKCn0KIyAxNzAgIi4uLy4uLy4uL2xpYi9jY2xwb3J0LmgiIDIKCgoKCgoKCiMg MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAxNzggIi4uLy4uLy4uL2xpYi9jY2xw b3J0LmgiIDIKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIyAyNiAiL3Vzci9p bmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3 ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKZXh0ZXJuICJDIiB7CiMgMTc1ICIvdXNyL2lu Y2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeF9vcHQuaCIgMSAz CiMgMTc2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9i aXRzL2Vudmlyb25tZW50cy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1l bnRzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAyNCAiL3Vz ci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDIgMwojIDE4MCAiL3Vzci9pbmNsdWRlL3Vu aXN0ZC5oIiAyIDMKIyAxOTAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5j bHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDE5MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMK IyAxOTkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1s aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjAwICIv dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDI0MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz CnR5cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJfdDsKCgoKCgoKdHlwZWRlZiBfX3NvY2tsZW5fdCBz b2NrbGVuX3Q7CiMgMjYwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBhY2Nl c3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSB0aHJvdyAoKTsKCgoKCmV4dGVy biBpbnQgZXVpZGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpIHRocm93 ICgpOwojIDI5MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX29mZl90IGxzZWVr IChpbnQgX19mZCwgX19vZmZfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKSB0aHJvdyAoKTsKIyAz MDIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmY2NF90IGxzZWVrNjQgKGlu dCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CgoKCmV4 dGVybiBpbnQgY2xvc2UgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNzaXplX3QgcmVh ZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpIHRocm93ICgpOwoKCmV4 dGVybiBzc2l6ZV90IHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90 IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBzc2l6ZV90IHByZWFkIChpbnQgX19mZCwgdm9pZCAq X19idWYsIHNpemVfdCBfX25ieXRlcywgX19vZmZfdCBfX29mZnNldCkKICAgICB0aHJvdyAoKTsK ZXh0ZXJuIHNzaXplX3QgcHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6 ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICBfX29mZl90IF9fb2Zmc2V0KSB0aHJvdyAo KTsKIyAzNDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gc3NpemVfdCBwcmVhZDY0 IChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywKICAgICAgICAgICAgICAg ICAgICAgICAgX19vZmY2NF90IF9fb2Zmc2V0KSB0aHJvdyAoKTsKCgpleHRlcm4gc3NpemVfdCBw d3JpdGU2NCAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sCiAgICAg ICAgICAgICAgICAgICAgICAgICBfX29mZjY0X3QgX19vZmZzZXQpIHRocm93ICgpOwoKCgoKCgoK ZXh0ZXJuIGludCBwaXBlIChpbnQgX19waXBlZGVzWzJdKSB0aHJvdyAoKTsKIyAzNjIgIi91c3Iv aW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gdW5zaWduZWQgaW50IGFsYXJtICh1bnNpZ25lZCBp bnQgX19zZWNvbmRzKSB0aHJvdyAoKTsKIyAzNzEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl eHRlcm4gdW5zaWduZWQgaW50IHNsZWVwICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSB0aHJvdyAo KTsKCgoKCgoKZXh0ZXJuIF9fdXNlY29uZHNfdCB1YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVl LCBfX3VzZWNvbmRzX3QgX19pbnRlcnZhbCkKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1 c2xlZXAgKF9fdXNlY29uZHNfdCBfX3VzZWNvbmRzKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50 IHBhdXNlICh2b2lkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBjaG93biAoX19jb25zdCBjaGFy ICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgIHRocm93ICgp OwoKCgpleHRlcm4gaW50IGZjaG93biAoaW50IF9fZmQsIF9fdWlkX3QgX19vd25lciwgX19naWRf dCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgbGNob3duIChfX2NvbnN0IGNoYXIg Kl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7 CgoKCgpleHRlcm4gaW50IGNoZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCk7CgoK CmV4dGVybiBpbnQgZmNoZGlyIChpbnQgX19mZCkgdGhyb3cgKCk7CiMgNDIzICIvdXNyL2luY2x1 ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGNoYXIgKmdldGN3ZCAoY2hhciAqX19idWYsIHNpemVfdCBf X3NpemUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpnZXRfY3VycmVudF9kaXJfbmFtZSAo dm9pZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpIHRo cm93ICgpOwoKCgoKZXh0ZXJuIGludCBkdXAgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgpleHRlcm4g aW50IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICoq X19lbnZpcm9uOwoKZXh0ZXJuIGNoYXIgKiplbnZpcm9uOwoKCgoKCmV4dGVybiBpbnQgZXhlY3Zl IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwKICAgICAgICAg ICAgICAgICAgIGNoYXIgKl9fY29uc3QgX19lbnZwW10pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGlu dCBmZXhlY3ZlIChpbnQgX19mZCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwgY2hhciAqX19jb25z dCBfX2VudnBbXSkKICAgICB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3Qg Y2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSB0aHJvdyAoKTsKCgoKZXh0ZXJu IGludCBleGVjbGUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAu Li4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGV4ZWNsIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwg X19jb25zdCBjaGFyICpfX2FyZywgLi4uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBleGVjdnAg KF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSB0aHJvdyAoKTsK CgoKCmV4dGVybiBpbnQgZXhlY2xwIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBjaGFy ICpfX2FyZywgLi4uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgbmljZSAoaW50IF9faW5jKSB0 aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRl X18gKChfX25vcmV0dXJuX18pKTsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1l LmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAg ICBfUENfTElOS19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoK ICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoK ICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJ U0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklP X0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTLAoKICAgIF9Q Q19SRUNfSU5DUl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAoKICAgIF9Q Q19SRUNfTUlOX1hGRVJfU0laRSwKCiAgICBfUENfUkVDX1hGRVJfQUxJR04sCgogICAgX1BDX0FM TE9DX1NJWkVfTUlOLAoKICAgIF9QQ19TWU1MSU5LX01BWAoKICB9OwoKCmVudW0KICB7CiAgICBf U0NfQVJHX01BWCwKCiAgICBfU0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9T Q19OR1JPVVBTX01BWCwKCiAgICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgog ICAgX1NDX1RaTkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9J RFMsCgogICAgX1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJ TkcsCgogICAgX1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19Q UklPUklUSVpFRF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywK CiAgICBfU0NfTUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NL X1JBTkdFLAoKICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNT SU5HLAoKICAgIF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMs CgogICAgX1NDX0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9f UFJJT19ERUxUQV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVO X01BWCwKCiAgICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BB R0VTSVpFLAoKCiAgICBfU0NfUlRTSUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAg IF9TQ19TRU1fVkFMVUVfTUFYLAoKICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVS X01BWCwKCgoKCiAgICBfU0NfQkNfQkFTRV9NQVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAg X1NDX0JDX1NDQUxFX01BWCwKCiAgICBfU0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9X RUlHSFRTX01BWCwKCiAgICBfU0NfRVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1Rf TUFYLAoKICAgIF9TQ19MSU5FX01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hB UkNMQVNTX05BTUVfTUFYLAoKCiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwK CiAgICBfU0NfMl9DX0RFViwKCiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JV TiwKCiAgICBfU0NfMl9TV19ERVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJ LAoKICAgIF9TQ19QSUlfWFRJLAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5U RVJORVQsCgogICAgX1NDX1BJSV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwK CiAgICBfU0NfVUlPX01BWElPViwKCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9WLAoK ICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0s CgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19Q SUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9T Q19USFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAg X1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19U VFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAg X1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0Nf VEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAg X1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVE VUxJTkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklP X1BST1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9D RVNTT1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFH RVMsCgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0Nf UEFTU19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVS U0lPTiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1ND X1hPUEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVS TSwKCiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5f WFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1ND X0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1ND X0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19X T1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NT SVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1ND X1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9T Q19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAg IF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwK CiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFY LAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcs CgogICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoK ICAgIF9TQ19YT1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19Y T1BFTl9SRUFMVElNRV9USFJFQURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0Nf QkFSUklFUlMsCgogICAgX1NDX0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9T Q19DX0xBTkdfU1VQUE9SVF9SLAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQ VVRJTUUsCgogICAgX1NDX1RIUkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAg X1NDX0RFVklDRV9TUEVDSUZJQywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1ND X0ZEX01HTVQsCgogICAgX1NDX0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRU UklCVVRFUywKCiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAg ICBfU0NfTU9OT1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAoKICAgIF9TQ19T SU5HTEVfUFJPQ0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRF Ul9MT0NLUywKCiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19S RUdFWF9WRVJTSU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0Nf U1BBV04sCgogICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElD X1NFUlZFUiwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJB U0VfUiwKCiAgICBfU0NfVElNRU9VVFMsCgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoK ICAgIF9TQ19VU0VSX0dST1VQUywKCiAgICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9Q QlMsCgogICAgX1NDXzJfUEJTX0FDQ09VTlRJTkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAg ICBfU0NfMl9QQlNfTUVTU0FHRSwKCiAgICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxP T1BfTUFYLAoKICAgIF9TQ19TVFJFQU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5ULAoKCiAg ICBfU0NfVjZfSUxQMzJfT0ZGMzIsCgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKCiAgICBfU0Nf VjZfTFA2NF9PRkY2NCwKCiAgICBfU0NfVjZfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfSE9TVF9O QU1FX01BWCwKCiAgICBfU0NfVFJBQ0UsCgogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKCiAg ICBfU0NfVFJBQ0VfSU5IRVJJVCwKCiAgICBfU0NfVFJBQ0VfTE9HCgogIH07CgoKCgoKZW51bQog IHsKICAgIF9DU19QQVRILAoKCgoKICAgIF9DU19MRlNfQ0ZMQUdTID0gMTAwMCwKCiAgICBfQ1Nf TEZTX0xERkxBR1MsCgogICAgX0NTX0xGU19MSUJTLAoKICAgIF9DU19MRlNfTElOVEZMQUdTLAoK ICAgIF9DU19MRlM2NF9DRkxBR1MsCgogICAgX0NTX0xGUzY0X0xERkxBR1MsCgogICAgX0NTX0xG UzY0X0xJQlMsCgogICAgX0NTX0xGUzY0X0xJTlRGTEFHUywKCgoKCiAgICBfQ1NfWEJTNV9JTFAz Ml9PRkYzMl9DRkxBR1MgPSAxMTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1Ms CgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYz Ml9MSU5URkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1Nf WEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElC UywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0xQ NjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAgICBf Q1NfWEJTNV9MUDY0X09GRjY0X0xJQlMsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxB R1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJ R19PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAgICBf Q1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTLAoKCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMy X09GRjMyX0NGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTERGTEFHUywKCiAg ICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJf T0ZGMzJfTElOVEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAoK ICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZf SUxQMzJfT0ZGQklHX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSU5URkxB R1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9W Nl9MUDY0X09GRjY0X0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElCUywK CiAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2 X0xQQklHX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MREZM QUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfUE9TSVhf VjZfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUywKCgoKICAgIF9DU19WNl9XSURUSF9SRVNUUklDVEVE X0VOVlMKCiAgfTsKIyA1MDEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxv bmcgaW50IHBhdGhjb25mIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkgdGhyb3cg KCk7CgoKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAoaW50IF9fZmQsIGludCBfX25hbWUpIHRo cm93ICgpOwoKCmV4dGVybiBsb25nIGludCBzeXNjb25mIChpbnQgX19uYW1lKSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBzaXplX3QgY29uZnN0ciAoaW50 IF9fbmFtZSwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4g X19waWRfdCBnZXRwaWQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBfX3BpZF90IGdldHBwaWQg KHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAodm9pZCkgdGhyb3cg KCk7CiMgNTM2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3QgX19nZXRw Z2lkIChfX3BpZF90IF9fcGlkKSB0aHJvdyAoKTsKCmV4dGVybiBfX3BpZF90IGdldHBnaWQgKF9f cGlkX3QgX19waWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3Qg X19waWQsIF9fcGlkX3QgX19wZ2lkKSB0aHJvdyAoKTsKIyA1NjIgIi91c3IvaW5jbHVkZS91bmlz dGQuaCIgMwpleHRlcm4gaW50IHNldHBncnAgKHZvaWQpIHRocm93ICgpOwojIDU4MCAiL3Vzci9p bmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IHNldHNpZCAodm9pZCkgdGhyb3cgKCk7 CgoKCmV4dGVybiBfX3BpZF90IGdldHNpZCAoX19waWRfdCBfX3BpZCkgdGhyb3cgKCk7CgoKCmV4 dGVybiBfX3VpZF90IGdldHVpZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fdWlkX3QgZ2V0 ZXVpZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSB0aHJv dyAoKTsKCgpleHRlcm4gX19naWRfdCBnZXRlZ2lkICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVy biBpbnQgZ2V0Z3JvdXBzIChpbnQgX19zaXplLCBfX2dpZF90IF9fbGlzdFtdKSB0aHJvdyAoKTsK CgoKZXh0ZXJuIGludCBncm91cF9tZW1iZXIgKF9fZ2lkX3QgX19naWQpIHRocm93ICgpOwoKCgoK CgpleHRlcm4gaW50IHNldHVpZCAoX191aWRfdCBfX3VpZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4g aW50IHNldHJldWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIHRocm93ICgpOwoK CgoKZXh0ZXJuIGludCBzZXRldWlkIChfX3VpZF90IF9fdWlkKSB0aHJvdyAoKTsKCgoKCgoKZXh0 ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3QgX19naWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBz ZXRyZWdpZCAoX19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSB0aHJvdyAoKTsKCgoKCmV4 dGVybiBpbnQgc2V0ZWdpZCAoX19naWRfdCBfX2dpZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBf X3BpZF90IGZvcmsgKHZvaWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX19waWRfdCB2Zm9yayAo dm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgKGludCBfX2ZkKSB0aHJv dyAoKTsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6 ZV90IF9fYnVmbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpc2F0dHkgKGludCBfX2ZkKSB0 aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0 ZXJuIGludCBsaW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSB0 aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzeW1saW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19j b25zdCBjaGFyICpfX3RvKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcmVhZGxpbmsgKF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX3BhdGgsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdW5s aW5rIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBybWRpciAo X19jb25zdCBjaGFyICpfX3BhdGgpIHRocm93ICgpOwoKCgpleHRlcm4gX19waWRfdCB0Y2dldHBn cnAgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9fZmQs IF9fcGlkX3QgX19wZ3JwX2lkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKmdldGxvZ2luICh2 b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZ2V0bG9naW5fciAoY2hhciAqX19uYW1lLCBz aXplX3QgX19uYW1lX2xlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHNldGxvZ2luIChfX2Nv bnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CiMgNzI2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi IDMKIyAxICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZ2V0 b3B0LmgiIDMKZXh0ZXJuICJDIiB7CiMgNDcgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRl cm4gY2hhciAqb3B0YXJnOwojIDYxICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGlu dCBvcHRpbmQ7CgoKCgpleHRlcm4gaW50IG9wdGVycjsKCgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMg MTQ1ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGludCBnZXRvcHQgKGludCBfX19h cmdjLCBjaGFyICpjb25zdCAqX19fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMpOwojIDE3 NSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCn0KIyA3MjcgIi91c3IvaW5jbHVkZS91bmlzdGQu aCIgMiAzCgoKCgoKCgpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFyICpfX25hbWUsIHNpemVf dCBfX2xlbikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgc2V0aG9zdG5hbWUgKF9fY29uc3Qg Y2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHNldGhv c3RpZCAobG9uZyBpbnQgX19pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXRkb21haW5u YW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CmV4dGVybiBpbnQgc2V0 ZG9tYWlubmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7 CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHJl dm9rZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBw cm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXpl LAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQgX19zY2Fs ZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg dGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpnZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwpl eHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwpleHRlcm4gdm9pZCBzZXR1 c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZGFlbW9uIChpbnQgX19u b2NoZGlyLCBpbnQgX19ub2Nsb3NlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBjaHJvb3Qg KF9fY29uc3QgY2hhciAqX19wYXRoKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKmdldHBhc3Mg KF9fY29uc3QgY2hhciAqX19wcm9tcHQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZnN5bmMg KGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9p ZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc3luYyAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRl cm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7CgoKCgpleHRlcm4gaW50IHRydW5jYXRlIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19v ZmZfdCBfX2xlbmd0aCkgdGhyb3cgKCk7CiMgODM2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMK ZXh0ZXJuIGludCB0cnVuY2F0ZTY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmY2NF90IF9f bGVuZ3RoKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnRydW5jYXRlIChpbnQgX19mZCwgX19v ZmZfdCBfX2xlbmd0aCkgdGhyb3cgKCk7CiMgODUxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMK ZXh0ZXJuIGludCBmdHJ1bmNhdGU2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX2xlbmd0aCkgdGhy b3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICh2b2lkKSB0aHJvdyAoKTsKIyA4 NjYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGJyayAodm9pZCAqX19hZGRy KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAqc2JyayAoaW50cHRyX3QgX19kZWx0YSkgdGhy b3cgKCk7CiMgODg3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN5 c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgdGhyb3cgKCk7CiMgOTA3ICIvdXNyL2luY2x1 ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBsb2NrZiAoaW50IF9fZmQsIGludCBfX2NtZCwgX19v ZmZfdCBfX2xlbikgdGhyb3cgKCk7CiMgOTE3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0 ZXJuIGludCBsb2NrZjY0IChpbnQgX19mZCwgaW50IF9fY21kLCBfX29mZjY0X3QgX19sZW4pIHRo cm93ICgpOwojIDkzOCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZmRhdGFz eW5jIChpbnQgX19maWxkZXMpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmNyeXB0IChf X2NvbnN0IGNoYXIgKl9fa2V5LCBfX2NvbnN0IGNoYXIgKl9fc2FsdCkgdGhyb3cgKCk7CgoKCmV4 dGVybiB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fYmxvY2ssIGludCBfX2VkZmxhZykgdGhyb3cgKCk7 CgoKCgoKCmV4dGVybiB2b2lkIHN3YWIgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX2Zyb20s IHZvaWQgKl9fcmVzdHJpY3QgX190bywKICAgICAgICAgICAgICAgICAgc3NpemVfdCBfX24pIHRo cm93ICgpOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7 CiMgOTgzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9y ayAodm9pZCAoKl9fcHJlcGFyZSkgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICgqX19wYXJlbnQpICh2b2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo Kl9fY2hpbGQpICh2b2lkKSkgdGhyb3cgKCk7CgoKfQojIDE4MyAiLi4vLi4vLi4vbGliL2NjbHBv cnQuaCIgMgojIDE5OCAiLi4vLi4vLi4vbGliL2NjbHBvcnQuaCIKIyAxICIvdXNyL2luY2x1ZGUv c2V0am1wLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc2V0am1wLmgiIDMKIyAxICIvdXNyL2lu Y2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMiAzCgpl eHRlcm4gIkMiIHsKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2V0am1wLmgiIDEgMwojIDM2ICIv dXNyL2luY2x1ZGUvYml0cy9zZXRqbXAuaCIgMwp0eXBlZGVmIGludCBfX2ptcF9idWZbNl07CiMg MzEgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2ln c2V0LmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvc2V0am1wLmgiIDIgMwoKCnR5cGVkZWYgc3Ry dWN0IF9fam1wX2J1Zl90YWcKICB7CgoKCgogICAgX19qbXBfYnVmIF9fam1wYnVmOwogICAgaW50 IF9fbWFza193YXNfc2F2ZWQ7CiAgICBfX3NpZ3NldF90IF9fc2F2ZWRfbWFzazsKICB9IGptcF9i dWZbMV07CgoKCgpleHRlcm4gaW50IHNldGptcCAoam1wX2J1ZiBfX2VudikgdGhyb3cgKCk7CgoK CmV4dGVybiBpbnQgX3NldGptcCAoam1wX2J1ZiBfX2VudikgdGhyb3cgKCk7CgoKCgpleHRlcm4g aW50IF9fc2lnc2V0am1wIChqbXBfYnVmIF9fZW52LCBpbnQgX19zYXZlbWFzaykgdGhyb3cgKCk7 CiMgNzMgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMwpleHRlcm4gdm9pZCBsb25nam1wIChqbXBf YnVmIF9fZW52LCBpbnQgX192YWwpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9y ZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX2xvbmdqbXAgKGptcF9idWYgX19lbnYsIGludCBf X3ZhbCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoK Cgp0eXBlZGVmIGptcF9idWYgc2lnam1wX2J1ZjsKIyA5OCAiL3Vzci9pbmNsdWRlL3NldGptcC5o IiAzCmV4dGVybiB2b2lkIHNpZ2xvbmdqbXAgKHNpZ2ptcF9idWYgX19lbnYsIGludCBfX3ZhbCkK ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKfQojIDE5OSAi Li4vLi4vLi4vbGliL2NjbHBvcnQuaCIgMgojIDI1MSAiLi4vLi4vLi4vbGliL2NjbHBvcnQuaCIK IyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RyaW5n LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVk ZS9zdHJpbmcuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2Nj LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAi L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAq X19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19y ZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgKm1lbW1v dmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywgc2l6ZV90IF9fbikKICAgICB0 aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rl c3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAg IGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCAqbWVt c2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBp bnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90 IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g dm9pZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAg ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gdm9pZCAq cmF3bWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbXJjaHIgKF9fY29uc3Qgdm9pZCAq X19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19k ZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCk7CgpleHRl cm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAg ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93 ICgpOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAq c3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4 dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikK ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgc3Ry bmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24p CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBz dHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAo Y2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCgojIDEgIi91 c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMwojIDEwOSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAy IDMKCgpleHRlcm4gaW50IF9fc3RyY29sbF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg Y2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIF9f Y29uc3QgY2hhciAqX19zcmMsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg IF9fbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAgKF9fY29u c3QgY2hhciAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoK CgpleHRlcm4gY2hhciAqc3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9f bikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDE1NSAiL3Vz ci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hhciAq X19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVy biBjaGFyICpzdHJyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gY2hhciAqc3RyY2hybnVsIChfX2Nv bnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f KSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0 IGNoYXIgKl9fcmVqZWN0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp OwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFy ICpfX2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4 dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2Fj Y2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBj aGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25l ZWRsZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJu IGNoYXIgKnN0cmNhc2VzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFy ICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoK ZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2RlbGltKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0 b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNo YXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cnRv a19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVs aW0sCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikg dGhyb3cgKCk7CgoKCgoKCmV4dGVybiB2b2lkICptZW1tZW0gKF9fY29uc3Qgdm9pZCAqX19oYXlz dGFjaywgc2l6ZV90IF9faGF5c3RhY2tsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg dm9pZCAqX19uZWVkbGUsIHNpemVfdCBfX25lZWRsZWxlbikKICAgICB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIHZvaWQgKl9fbWVtcGNweSAodm9pZCAqX19y ZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19y ZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CmV4dGVybiB2b2lkICptZW1wY3B5 ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg dm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4g c2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJubGVuIChfX2NvbnN0IGNoYXIgKl9f c3RyaW5nLCBzaXplX3QgX19tYXhsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f cHVyZV9fKSk7CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgdGhyb3cg KCk7CgoKCmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVm LCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9p ZCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29u c3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0 ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJu IGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90 IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g Y2hhciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIg Kl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4 dGVybiBpbnQgZmZzIChpbnQgX19pKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50IF9fbCkgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsIChsb25n IGxvbmcgaW50IF9fbGwpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg Y2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl eHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq X19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KTsKCgoKCgpleHRlcm4gaW50IF9fc3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f Y29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBf X2xvYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IF9f c3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQog ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFy ICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAg ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIHRocm93ICgpOwoKCgoKZXh0ZXJu IGludCBzdHJ2ZXJzY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikK ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAq c3Ryc2lnbmFsIChpbnQgX19zaWcpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAo Y2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykK ICAgICB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCgoKZXh0 ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAg ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikg dGhyb3cgKCk7CmV4dGVybiBjaGFyICpzdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwK ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6 ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcp IHRocm93ICgpOwoKCmV4dGVybiB2b2lkICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24p IHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hhciAqYmFzZW5hbWUgKF9fY29uc3QgY2hhciAqX19m aWxlbmFtZSkgdGhyb3cgKCk7CiMgMzY0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKfQojIDI1 MiAiLi4vLi4vLi4vbGliL2NjbHBvcnQuaCIgMgojIDMzNSAiLi4vLi4vLi4vbGliL2NjbHBvcnQu aCIKICB0eXBlZGVmIGNoYXIgRlN0cmluZzsKIyAzNDUgIi4uLy4uLy4uL2xpYi9jY2xwb3J0Lmgi CmNoYXIgKiBHZXRGT1JUUkFOU3RyaW5nKCBGU3RyaW5nICosIGludCwgY29uc3QgY2hhciAqICk7 CmNoYXIgKiBHZXRGT1JUUkFOU3RyaW5nRXgoIEZTdHJpbmcgKiwgaW50LCBjb25zdCBjaGFyICos IGludCApOwpjaGFyICogR2V0Rk9SVFJBTlBhdGhTdHJpbmcoIEZTdHJpbmcgKiwgaW50LCBjb25z dCBjaGFyICogKTsKIyAzOTUgIi4uLy4uLy4uL2xpYi9jY2xwb3J0LmgiCiMgMSAiL3Vzci9sb2Nh bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGFyZy5oIiAx IDMKIyAxMTAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMv aW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgMzk2 ICIuLi8uLi8uLi9saWIvY2NscG9ydC5oIiAyCiMgNDM5ICIuLi8uLi8uLi9saWIvY2NscG9ydC5o IgppbnQgUENJR2V0T1NWZXJzaW9uKGNoYXIgKiogcHBzek9TTmFtZSxjaGFyICoqIHBwc3pPU1Zl cnNpb24pOwp2b2lkIFBDSV9xc29ydCh2b2lkICpiYXNlLCBzaXplX3Qgbiwgc2l6ZV90IHNpemUs CiAgICAgICAgICAgaW50ICgqY29tcGFyKShjb25zdCB2b2lkKixjb25zdCB2b2lkKikpOwoKZG91 YmxlIFBDSV9tb2RmKGRvdWJsZSB2YWx1ZSwgZG91YmxlICogaXB0cik7CiMgNDc0ICIuLi8uLi8u Li9saWIvY2NscG9ydC5oIgogICAgICB0eXBlZGVmIGludCAoKlFTQ01QKShjb25zdCB2b2lkICos IGNvbnN0IHZvaWQgKik7CiMgNDQgIi4uLy4uLy4uL2xpYi9jY2xiYXNlLmgiIDIKIyAxICIuLi8u Li8uLi9saWIvY2NsdHlwZXMuaCIgMQojIDQzICIuLi8uLi8uLi9saWIvY2NsdHlwZXMuaCIKdHlw ZWRlZiB1bnNpZ25lZCBjaGFyIFRCeXRlOwp0eXBlZGVmIGludCBUQm9vbDsKIyAxMDkgIi4uLy4u Ly4uL2xpYi9jY2x0eXBlcy5oIgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NDsKdHlwZWRlZiB1bnNp Z25lZCBsb25nIGxvbmcgdWludDY0OwoKCnR5cGVkZWYgaW50IGludDMyOwp0eXBlZGVmIHVuc2ln bmVkIGludCB1aW50MzI7CgoKdHlwZWRlZiBzaG9ydCBpbnQxNjsKdHlwZWRlZiB1bnNpZ25lZCBz aG9ydCB1aW50MTY7CgoKCgoKCnR5cGVkZWYgdm9pZCAoKlBDSUNvdW50ZXIpKGRvdWJsZSk7Cgp0 eXBlZGVmIHN0cnVjdCB7CiAgZG91YmxlIHg7CiAgZG91YmxlIHk7Cn0gVmVjdG9yX3Q7CiMgMjE5 ICIuLi8uLi8uLi9saWIvY2NsdHlwZXMuaCIKdHlwZWRlZiB2b2lkICgqVHJhbnNmb3JtRnVuYyko dm9pZCAqLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICosIGRvdWJsZSAqKTsKCnR5cGVkZWYgc3Ry dWN0CnsKICAgIGRvdWJsZSB4OwogICAgZG91YmxlIHk7CiAgICBkb3VibGUgejsKfSBHREJWZXJ0 ZXg7CiMgNDUgIi4uLy4uLy4uL2xpYi9jY2xiYXNlLmgiIDIKIyAxICIuLi8uLi8uLi9saWIvY2Ns dGFzay5oIiAxCiMgMjA1ICIuLi8uLi8uLi9saWIvY2NsdGFzay5oIgp0eXBlZGVmIHZvaWQgKCpJ TVBFeGl0UHJvYykodm9pZCk7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgY2hhciBwcm9ncmFtX25hbWVb MTZdOwogIGNoYXIgVGFza0Rlc2NbNDhdOwogIGludCBNb25pdG9yOwogIGludCB0dHl0eXBlOwog IGNoYXIgU3lzTGFiZWxbMTldOwogIGNoYXIgTWlzc2luZ1s0NV07CiAgaW50IGZhdGFsX2Vycm9y OwogIGludCBwcm1fcmVxdWlyZWQ7CiAgaW50IHBybV9wcmVzZW50OwoKCiAgbG9uZyBKQmxEaXI7 CiAgbG9uZyBKQmxEYXQ7CiAgbG9uZyBQcm1PcG47CiAgRklMRSAqUHJtRlA7CiAgdWludDMyICpK RGF0OwogIHVuc2lnbmVkIGNoYXIgQ0RhdFsxNTM2XTsKCiAgY2hhciBQQ0lIb21lWzY0XTsKICBp bnQgaW1wX2ZsYWdzOwoKICBpbnQgbWFpbl9hcmdjOwogIGNoYXIgKiptYWluX2FyZ3Y7CgogIGlu dCBuRXhpdFByb2M7CiAgSU1QRXhpdFByb2MgKnBhcGZuRXhpdFByb2M7Cn0gSU1QSW5mb190OwoK CmV4dGVybiBJTVBJbmZvX3QgSU1QSW5mbzsKZXh0ZXJuIGludCBJTVBJbml0aWFsaXplZDsKCgoK CgoKZXh0ZXJuIGludCBpbXBfZXJybm87CmV4dGVybiBpbnQgaW1wX2VycnR5cGU7CmV4dGVybiBp bnQgaW1wX3N5c19lcnJubzsKZXh0ZXJuIGNoYXIgKmltcF9lcnJzdHJpbmc7CiMgMjYyICIuLi8u Li8uLi9saWIvY2NsdGFzay5oIgpleHRlcm4gRklMRSAqUmVwb3J0OwpleHRlcm4gaW50IERlYnVn TW9kZTsKCgoKCgp2b2lkIERlYnVnKGNvbnN0IGNoYXIgKiwgLi4uICk7CnZvaWQgRGVidWdPdmVy KGludCwgY29uc3QgY2hhciAqLCAuLi4gKTsKCnZvaWQgRGVidWdPTiggdm9pZCApOwp2b2lkIERl YnVnT0ZGKCB2b2lkICk7CnZvaWQgRGVidWdSRVNUT1JFKCB2b2lkICk7CnZvaWQgSW5zdGFsbERl YnVnSGFuZGxlciggdm9pZCAoKikoY29uc3QgY2hhciAqKSApOwppbnQgR2V0RGVidWdNb2RlKCB2 b2lkICk7CgoKCgoKdm9pZCBJTVBTdGF0dXMoIGNoYXIgKiwgY2hhciAqLCBjaGFyICosIGNoYXIg KiwgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGludCAqLCB2b2lk ICoqLCBpbnQsIGNoYXIgKiogKTsKdm9pZCBJTVBJbml0KCBjaGFyICosIGludCwgaW50LCBjaGFy ICoqICk7CgoKCgppbnQgSU1QU2VlUGFybSggY2hhciAqLCBpbnQsIGludCwgaW50ICk7CnZvaWQg SU1QUmVhbEVuY29kZSggZG91YmxlLCBpbnQsIGNoYXIgKiApOwpjaGFyICogSU1QVGltZSggY2hh ciAqLCBpbnQgKTsKaW50IElNUFRlcm1pbmFsKCBjaGFyICogKTsKaW50IElNUEF1dG9tYXRpY1Rl cm0oIHZvaWQgKTsKdm9pZCBJTVBBdEV4aXQoIElNUEV4aXRQcm9jICk7ClRCb29sIElNUFJlZ2lz dGVyZWRGb3JFeGl0KElNUEV4aXRQcm9jKTsKdm9pZCBJTVBJbnN0YWxsRXhpdEZ1bmMoIHZvaWQg KCopKGludCkgKTsKaW50IElNUEZhdGFsKCBpbnQgKTsKaW50IElNUFJ1blRhc2soIGNoYXIgKiwg Y2hhciAqLCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqKSggaW50LCBp bnQgKSwgaW50ICogKTsKaW50IElNUEtpbGxUYXNrKCBpbnQgKTsKaW50IElNUEtpbGxUYXNrQnlO YW1lKCBjb25zdCBjaGFyICogKTsKaW50IElNUEdldFBJRCggdm9pZCApOwpUQm9vbCBJTVBHZXRQ SURCeU5hbWUoIGNvbnN0IGNoYXIgKiwgaW50ICogKTsKClRCb29sIElNUFNldENXRCggY29uc3Qg Y2hhciAqICk7ClRCb29sIElNUFNldENXREZyb21GaWxlKCBjb25zdCBjaGFyKiBwc3pGaWxlICk7 Cgpjb25zdCBjaGFyICpJTVBHZXRDV0QoIHZvaWQgKTsKY29uc3QgY2hhciAqSU1QR2V0VXNlckhv bWUoIHZvaWQgKTsKaW50IElNUE1rRGlyZWN0b3J5KCBjb25zdCBjaGFyICogKTsKClRCb29sIElN UEludm9rZUZ1bmN0aW9uKCB2b2lkICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqKiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgdm9pZCAqICk7CnZvaWQgKklN UEdldFN5bWJvbCggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwoK Y2hhciAqKiBJTVBHZXRBcmdzKCBpbnQgKiApOwpJTVBJbmZvX3QgKiBJTVBHZXRJbmZvKCB2b2lk ICk7CmludCBJTVBTY3JQYWdlKCBGSUxFICosIGludCApOwoKaW50IElNUEhscFNlYXJjaCggY2hh ciAqLCBjaGFyICogKTsKaW50IElNUEV4ZVNlYXJjaCggY2hhciAqLCBjaGFyICogKTsKaW50IElN UEVhc1NlYXJjaCggY2hhciAqLCBjaGFyICogKTsKdm9pZCBJTVBHZXRTeXNOYW1lKCBjaGFyICoq LCBjaGFyICoqICk7CmNoYXIgKiBJTVBHZXRNeUV4ZVBhdGgoIHZvaWQgKTsKaW50IElNUEdldE1l bW9yeSggVEJvb2wgKiApOwpjaGFyICogSU1QRmluZEZpbGUoIGNvbnN0IGNoYXIgKiwgY29uc3Qg Y2hhciAqICk7CnZvaWQgSU1QT3ZlcnJpZGVGaW5kRmlsZUZ1bmMoY2hhciAqKCopKGNvbnN0IGNo YXIqLCBjb25zdCBjaGFyKikpOwpjaGFyICogSU1QRmluZENvbmZpZyggY29uc3QgY2hhciAqcHN6 RmlsZW5hbWUsIFRCb29sIGJSZWFkTW9kZSApOwoKdm9pZCBJbnN0YWxsVVNsZWVwSG9vayggdm9p ZCAoKikoaW50KSApOwp2b2lkIFVTbGVlcCggaW50ICk7CmRvdWJsZSBHZXRNaWNyb1NlY29uZHMo KTsKc2hvcnQgQVBhcnNlKGNoYXIgKik7Cgp2b2lkIElNUENvdW50ZXIoIGRvdWJsZSApOwp2b2lk IElNUFNldEN1bXVsYXRpdmVQYXJtcyggZG91YmxlLCBkb3VibGUsIHZvaWQgKCopKCBkb3VibGUg KSApOwp2b2lkIElNUEN1bXVsYXRpdmVDb3VudGVyKCBkb3VibGUgKTsKCnR5cGVkZWYgVEJvb2wg KCpJTVBQcm9ncmVzc0Z1bmMpKCBkb3VibGUsIGNvbnN0IGNoYXIgKiwgdm9pZCAqICk7CgpUQm9v bCBJTVBUZXJtUHJvZ3Jlc3NDb3VudGVyKCBkb3VibGUsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsK VEJvb2wgSU1QRHVtbXlQcm9ncmVzcyggZG91YmxlLCBjb25zdCBjaGFyICosIHZvaWQgKiApOwpQ Q0lDb3VudGVyIElNUFByb2dyZXNzQ291bnRlckdhdGUoIElNUFByb2dyZXNzRnVuYywgY29uc3Qg Y2hhciAqLHZvaWQgKiApOwoKdm9pZCAqSU1QQ3JlYXRlQ3VtdWxhdGl2ZVByb2dyZXNzKCBkb3Vi bGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElNUFByb2dyZXNzRnVuYywgdm9pZCAqICk7ClRCb29sIElNUEN1bXVsYXRpdmVQcm9ncmVzcygg ZG91YmxlLCBjb25zdCBjaGFyICosIHZvaWQgKiApOwoKClRCb29sIE5DQ0VzdGFibGlzaExpbmtQ Uk0oIHZvaWQgKTsKdm9pZCBOQ0NFc3RhYmxpc2hMaW5rKCBGSUxFICogKTsKVEJvb2wgTkNDUHJv Z3Jlc3MoIGRvdWJsZSwgY29uc3QgY2hhciAqLCB2b2lkICogKTsKCnZvaWQgTkNTU2V0dXBNb25p dG9yKCB2b2lkICk7ClRCb29sIE5DU1BvbGwoIGRvdWJsZSAqLCBjaGFyICoqICk7CnZvaWQgTkNT SW5zdGFsbFBvbGxlciggSU1QUHJvZ3Jlc3NGdW5jLCB2b2lkICogKTsKVEJvb2wgTkNTR2V0VGFz a0luZm8oIGludCAqLCBjaGFyICogKTsKClRCb29sIElzV2luMzJzKCB2b2lkICk7CgppbnQgRGVz dHJveUNvbnNvbGUoIHZvaWQgKTsKdm9pZCBTaG93Q29uc29sZSggVEJvb2wgKTsKaW50IENyZWF0 ZUNvbnNvbGUoIHZvaWQgKTsKCgoKCgoKCnZvaWQgSU1QUmV0dXJuKHZvaWQpIF9fYXR0cmlidXRl X18oKF9fdm9sYXRpbGUpKTsKdm9pZCBJTVBFeGl0KCBpbnQgKSBfX2F0dHJpYnV0ZV9fKChfX3Zv bGF0aWxlKSk7CiMgMzgxICIuLi8uLi8uLi9saWIvY2NsdGFzay5oIgppbnQgRE5QQ2hlY2soY29u c3QgY2hhciopOwppbnQgRE5QUGVlayhjb25zdCBjaGFyKik7CmNoYXIgKkROUEVycm9yTXNnKHZv aWQpOwojIDQ0OSAiLi4vLi4vLi4vbGliL2NjbHRhc2suaCIKaW50IElNUF9Qcm90ZWN0KCB2b2lk ICk7CnZvaWQgKiBJTVBQcm90ZWN0QnVmZmVyKCB2b2lkICk7CnZvaWQgSU1QVW5wcm90ZWN0KCB2 b2lkICk7CnZvaWQgSU1QVmlvbGF0aW9uKCBpbnQsIGludCwgY29uc3QgY2hhciAqICk7CmludCBJ TVBHZXRQcm90ZWN0UmluZ0NvdW50KCB2b2lkICk7CgoKCgoKaW50IF9JTVBBc3NlcnQoIGNoYXIg KiwgY2hhciAqLCBpbnQgKTsKdm9pZCBJTVBDaGVja0V4cHIoY2hhciAqLCBjaGFyICosIGludCk7 CiMgNDY5ICIuLi8uLi8uLi9saWIvY2NsdGFzay5oIgp2b2lkIElNUEVyckNoYXIoIGludCwgaW50 LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwp2b2lkIElNUEVyclJlYWwoIGludCwgaW50 LCBjb25zdCBjaGFyICosIGRvdWJsZSwgaW50ICk7CnZvaWQgSU1QRXJySW50KCBpbnQsIGludCwg Y29uc3QgY2hhciAqLCBpbnQsIGludCApOwp2b2lkIElNUEVyckxvbmcoIGludCwgaW50LCBjb25z dCBjaGFyICosIGxvbmcsIGludCApOwp2b2lkIElNUEVyck1zZyggaW50LCBpbnQgKTsKdm9pZCBJ TVBSZXBvcnRFcnJvciggaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgVEJvb2wgKTsKaW50IElNUEVy cm5vKCB2b2lkICk7CnZvaWQgSU1QU2V0RXJybm8oIGludCApOwpjb25zdCBjaGFyICogSU1QRXJy U3RyaW5nKCB2b2lkICk7CnZvaWQgSW5zdGFsbElNUFdhcm5pbmdIYW5kbGVyKCB2b2lkICgqKShj b25zdCBjaGFyICopICk7CnZvaWQgUG9wSU1QV2FybmluZ0hhbmRsZXIodm9pZCk7Cgp2b2lkIElN UEVycm9yKCBpbnQsIGludCwgY29uc3QgY2hhciAqLCAuLi4gKTsKCnZvaWQgSU1QUHV0Q2hhcigg Y2hhciAqLCBjaGFyICogKTsKdm9pZCBJTVBQdXRSZWFsKCBjaGFyICosIGZsb2F0ICosIGludCAp OwppbnQgSU1QR2V0RGVmYXVsdCggY2hhciAqLCBjaGFyICosIGNoYXIgKixmbG9hdCAqLCBmbG9h dCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqICk7CmludCBJTVBPcGVu KCBpbnQgKTsKY29uc3QgY2hhciAqSU1QR2V0UFJNRmlsZW5hbWUoIHZvaWQgKTsKVEJvb2wgSU1Q QWNxdWlyZVBSTUZpbGUoY29uc3QgY2hhciogUFJNRmlsZW5hbWUsIFRCb29sIGJPdmVyd3JpdGUp OwppbnQgSU1QQ3JlYXRlKCB2b2lkICk7CmludCBJTVBHZXROdW1lcmljKCBjaGFyICosIGNoYXIg Kiwgdm9pZCAqLCBpbnQgKTsKaW50IElNUEdldENoYXIoIGNoYXIgKiwgY2hhciAqLCBpbnQgKTsK aW50IElNUERlZlBhcm0oIGNoYXIgKiwgY2hhciAqLCBpbnQsIGRvdWJsZSwgZG91YmxlLCBkb3Vi bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiApOwpUQm9vbCBJTVBVbmRlZmlu ZVBhcm0oIGNvbnN0IGNoYXIgKiApOwoKY29uc3QgY2hhciAqSU1QR2V0TWFqb3JSZXYoIHZvaWQg KTsKdm9pZCBJTVBQYXRoRXhwYW5kKCBjaGFyICogKTsKdm9pZCBJTVBTZXRQQ0lIb21lKCBjb25z dCBjaGFyICogKTsKY29uc3QgY2hhciAqIElNUE11bmdlKCBjb25zdCBjaGFyICosIC4uLiApOwpp bnQgQ0RQYXRoRXhwYW5kKCBjaGFyICosIGludCApOwpUQm9vbCBJbml0Q0RQYXRoRXhwYW5kKGNv bnN0IGNoYXIgKik7CnZvaWQgaW1wbXNnYyggaW50LCBjaGFyICosIGNoYXIgKiApOwppbnQgaW1w a2V5YyggY2hhciAqLCBjaGFyICogKTsKdm9pZCBpbXBleHJjKCBpbnQsIGludCwgaW50ICk7Cmlu dCBpbXBzcmhjKCBjaGFyICosIGxvbmcgKiwgbG9uZyAqICk7CgoKdm9pZCBJTVBQYWdlVGl0bGUo IEZJTEUgKiwgY2hhciAqLCBjaGFyICogKTsKdm9pZCBJTVBQYWdlKCBGSUxFICosIGludCApOwoK dm9pZCBJTVBBc3luY0Rpc2FibGUoIHZvaWQgKTsKaW50IElNUEFzeW5jR2V0Q2hhciggaW50ICk7 CmludDY0IElNUEdldEZyZWVTcGFjZSggY29uc3QgY2hhciAqICk7CgpUQm9vbCBJTVBMb2NrRmls ZSggRklMRSAqLCBUQm9vbCApOwpUQm9vbCBJTVBVbmxvY2tGaWxlKCBGSUxFICogKTsKY29uc3Qg Y2hhciAqIElNUEdldEVudiggY29uc3QgY2hhciAqICk7CnZvaWQgSU1QU2V0RW52KCBjb25zdCBj aGFyICpwc3pOYW1lLCBjb25zdCBjaGFyICpwc3pWYWx1ZSApOwpUQm9vbCBJTVBSZWFkRW52Rmls ZShjb25zdCBjaGFyICpwc3pGaWxlKTsKY29uc3QgY2hhciAqIElNUEdldFBDSUhvbWVEaXIoY29u c3QgY2hhciogcHN6VmFyaWFibGUpOwoKY2hhciAqSU1QUmVkaXJlY3RTdGRvdXQoIHZvaWQgKTsK dm9pZCBJTVBSZXN0b3JlU3Rkb3V0KCB2b2lkICk7CmNoYXIgKklNUFJlZGlyZWN0U3Rkb3V0T25s eSggdm9pZCApOwp2b2lkIElNUFJlc3RvcmVTdGRvdXRPbmx5KCB2b2lkICk7CmNoYXIgKklNUFJl ZGlyZWN0U3RkZXJyKCB2b2lkICk7CnZvaWQgSU1QUmVzdG9yZVN0ZGVyciggdm9pZCApOwoKVEJv b2wgSU1QQWRkR3JvdXBJY29uKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpUQm9v bCBJTVBDcmVhdGVHcm91cCAoY29uc3QgY2hhciAqKTsKVEJvb2wgSU1QU2V0UmVnaXN0cnlQQ0ko Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpUQm9vbCBJTVBTZXRSZWdpc3RyeShjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKik7CmNvbnN0IGNoYXIgKiBJTVBHZXRSZWdpc3RyeVBDSShjb25z dCBjaGFyICopOwpjb25zdCBjaGFyICogSU1QR2V0UmVnaXN0cnlQQ0lWZXIoY29uc3QgY2hhciAq LCBjb25zdCBjaGFyICopOwpjb25zdCBjaGFyICogSU1QR2V0UmVnaXN0cnkoY29uc3QgY2hhciAq KTsKY2hhciAqKklNUEdldFJlZ2lzdHJ5Q2hpbGRyZW4oIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqICk7CnZvaWQgSU1QU2V0UmVnaXN0cnlQQ0lIYW5kbGVycyhjb25zdCBjaGFyICooKnBmbkdl dFJlZykoY29uc3QgY2hhciAqKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUQm9vbCAoKnBmblNldFJlZ2lzdHJ5KShjb25zdCBjaGFyICosCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqKSk7ClRCb29sIElNUEdldERhdGFiYXNlUGFybXMoY2hhciAqLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiosIGNoYXIgKiosIGNoYXIqKiwgY2hhciAq KiwgY2hhciAqKiwgY2hhciAqKik7CiMgNzIzICIuLi8uLi8uLi9saWIvY2NsdGFzay5oIgppbnQg ZnBWYWxpZGF0ZSggRklMRSAqICk7CmludCBmcDJ0eXBlKCBGSUxFICogKTsKaW50IGZwMmluZGV4 KCBGSUxFICogKTsKdm9pZCBmcFNFVGluZGV4KCBGSUxFICosIGludCApOwppbnQgZnAyZmQoIEZJ TEUgKiApOwp2b2lkIGZwU0VUZmQoIEZJTEUgKiwgaW50ICk7CkZJTEUgKiBmcEFsbG9jKCBjb25z dCBjaGFyICosIGludCwgRklMRSAqICk7CnZvaWQgZnBSZWFsbG9jKEZJTEUgKmZwLCBjb25zdCBj aGFyICogZmlsZW5hbWUsIGludCBka3R5cGUpOwp2b2lkIGZwRGVhbGxvYyggRklMRSAqICk7CmNo YXIgKiBmcDJmaWxlbmFtZSggRklMRSAqICk7CnZvaWQgZnBTRVRmbGFnKCBGSUxFICosIGludCAp Owp2b2lkIGZwQ0xFQVJmbGFnKCBGSUxFICosIGludCApOwppbnQgZnBUZXN0RmxhZyggRklMRSAq LCBpbnQgKTsKaW50IGZwUmVmZXJlbmNlKCBGSUxFICogKTsKaW50IGZwRGVyZWZlcmVuY2UoIEZJ TEUgKiApOwppbnQgZnBHZXRSZWZDb3VudCggRklMRSAqICk7CmludCBmcER1bXBGaWxlcyggdm9p ZCApOwpGSUxFICoqIGZwRmlsZUxpc3QoIHZvaWQgKTsKVEJvb2wgREtGaWxlc0xvdyggdm9pZCAp OwoKaW50IFByb21vdGUoIEZJTEUgKiwgdm9pZCAqICk7CgoKCgppbnQgREtDaGVjayggY29uc3Qg Y2hhciAqICk7CnZvaWQgREtHZXQoIEZJTEUgKiwgbG9uZywgbG9uZywgdm9pZCAqICk7CnZvaWQg REtQdXQoIEZJTEUgKiwgbG9uZywgbG9uZywgdm9pZCAqICk7CkZJTEUgKiBES09wZW4oIGNvbnN0 IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICogKTsKdm9pZCBES0Nsb3NlKCBGSUxFICogKTsKY2hh ciAqIERLTmFtZSggRklMRSAqICk7CnZvaWQgREtFcnJvciggRklMRSAqICk7CmludCBES1JlYWQo IEZJTEUgKiwgdm9pZCAqLCBpbnQ2NCwgbG9uZyApOwpjaGFyICogREtSZWFkTGluZSggRklMRSAq ICk7CmludCBES1dyaXRlKCBGSUxFICosIHZvaWQgKiwgaW50NjQsIGxvbmcgKTsKdW5zaWduZWQg Y2hhciAqIERLTU1hcEluZm8oIEZJTEUgKiwgaW50ICogKTsKaW50IERLQWxsb2MoIEZJTEUgKiAp Owpsb25nIERLU2l6ZSggY29uc3QgY2hhciAqICk7CnZvaWQgREtTeW5jKCBGSUxFICogKTsKdm9p ZCBES0RlbGV0ZSggY29uc3QgY2hhciAqICk7CnZvaWQgREtSZW5hbWUoIGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqICk7CnZvaWQgREtUcnVuY2F0ZSggY29uc3QgY2hhciAqLCBpbnQgKTsKCmlu dCBES0ZSZWFkKCB2b2lkICosIGxvbmcsIGxvbmcsIEZJTEUgKiApOwppbnQgREtGV3JpdGUoIHZv aWQgKiwgbG9uZywgbG9uZywgRklMRSAqICk7CmludCBES0ZTZWVrKCBGSUxFICosIGludDY0LCBp bnQgKTsKaW50IERLRlNlZWs2NCggRklMRSAqLCBpbnQ2NCwgaW50ICk7CmludDY0IERLRlRlbGwo IEZJTEUgKiApOwoKCgoKaW50IERLUHJpbnRmKCBjb25zdCBjaGFyICosIC4uLiApOwppbnQgREtG UHJpbnRmKCBGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uICk7CnZvaWQgSW5zdGFsbFByaW50Zkhh bmRsZXIoIHZvaWQgKCpIYW5kbGVyRnVuY3Rpb24pKGNvbnN0IGNoYXIgKikpOwoKCgoKaW50IERL Q29weShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBES0NobW9kKGNvbnN0IGNoYXIg KiwgaW50KTsKIyA3OTkgIi4uLy4uLy4uL2xpYi9jY2x0YXNrLmgiCkZJTEUgKkZIYW5kbGUyZnAo IGludCApOwppbnQgZnAyRkhhbmRsZSggRklMRSAqICk7CmludCBBc3NpZ25GSGFuZGxlRm9yZnAo IEZJTEUgKiwgaW50ICk7CnZvaWQgUmVtb3ZlRkhhbmRsZSggaW50ICk7CiMgODU5ICIuLi8uLi8u Li9saWIvY2NsdGFzay5oIgp2b2lkIFNldEhNYWxsb2NEZWJ1ZyhpbnQgbkxldmVsKTsKdm9pZCAq IF9ITWFsbG9jKHNpemVfdCBuU2l6ZSwgY2hhciAqcHN6RmlsZSwgaW50IG5MaW5lKTsKdm9pZCAq IF9IQ2FsbG9jKHNpemVfdCBuRWxlbSwgc2l6ZV90IG5TaXplLAogICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFyICpwc3pGaWxlLCBpbnQgbkxpbmUpOwpjaGFyICogX0hTdHJpbmcoY29uc3Qg Y2hhciAqcHN6U3RyaW5nLCBjaGFyICpwc3pGaWxlLCBpbnQgbkxpbmUpOwp2b2lkIF9IRnJlZSgg dm9pZCAqcEJsb2NrLCBjaGFyICpwc3pGaWxlLCBpbnQgbkxpbmUpOwp2b2lkICogX0hSZWFsbG9j KHZvaWQgKnBCbG9jaywgc2l6ZV90IG5TaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqcHN6RmlsZSwgaW50IG5MaW5lKTsKdm9pZCBfSE1lbW9yeVRlc3QoY2hhciAqcHN6Rmls ZSwgaW50IG5MaW5lKTsKdm9pZCBfSFJlcG9ydChjaGFyICpwc3pGaWxlLCBpbnQgbkxpbmUpOwp2 b2lkIEhNSGFuZGxlcihpbnQpOwp2b2lkIEhNRGVidWdMZXZlbChpbnQgbkxldmVsKTsKdm9pZCBf SE1hcmsoY2hhciAqcHN6RmlsZSwgaW50IG5MaW5lKTsKaW50IF9IQ2hlY2tNYXJrKGNoYXIgKnBz ekZpbGUsIGludCBuTGluZSk7ClRCb29sIF9IVGVzdEJsb2NrKHZvaWQgKnBCbG9jaywgY2hhciAq cHN6RmlsZSwgaW50IG5MaW5lKTsKY2hhciAqIEhTUHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwg Li4uKTsKdm9pZCBfSFJlcG9ydEJ5RmlsZXMoY2hhciAqcHN6RmlsZSwgaW50IG5MaW5lKTsKdm9p ZCBIUHJpbnRCbG9jayh2b2lkICpwQmxvY2spOwp2b2lkIF9ITWVtSW5mbyh2b2lkICosIGNoYXIg KiwgaW50KTsKY2hhciAqIEhTdHJpbmdFeHBhbmQoY29uc3QgY2hhciAqcHN6SW5wdXQpOwpUQm9v bCBDQ0xIU3RyaW5nRXhwYW5kVGVzdCggdm9pZCApOwojIDkyNyAiLi4vLi4vLi4vbGliL2NjbHRh c2suaCIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVk ZS9zeXMvc3RhdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIv dXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz LmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCgoKCiMgMSAiL3Vzci9p bmNsdWRlL3RpbWUuaCIgMSAzCiMgMzMgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyA5 NiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuICJDIiB7CgojIDEgIi91c3IvaW5j bHVkZS9iaXRzL3N0YXQuaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMwpz dHJ1Y3Qgc3RhdAogIHsKICAgIF9fZGV2X3Qgc3RfZGV2OwogICAgdW5zaWduZWQgc2hvcnQgaW50 IF9fcGFkMTsKCiAgICBfX2lub190IHN0X2lubzsKCgoKICAgIF9fbW9kZV90IHN0X21vZGU7CiAg ICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsKICAgIF9fZ2lkX3Qgc3Rf Z2lkOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fcGFkMjsK CiAgICBfX29mZl90IHN0X3NpemU7CgoKCiAgICBfX2Jsa3NpemVfdCBzdF9ibGtzaXplOwoKCiAg ICBfX2Jsa2NudF90IHN0X2Jsb2NrczsKCgoKICAgIF9fdGltZV90IHN0X2F0aW1lOwogICAgdW5z aWduZWQgbG9uZyBpbnQgX191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CiAgICB1bnNp Z25lZCBsb25nIGludCBfX3VudXNlZDI7CiAgICBfX3RpbWVfdCBzdF9jdGltZTsKICAgIHVuc2ln bmVkIGxvbmcgaW50IF9fdW51c2VkMzsKCiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDQ7 CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDU7CgoKCiAgfTsKCgpzdHJ1Y3Qgc3RhdDY0 CiAgewogICAgX19kZXZfdCBzdF9kZXY7CiAgICB1bnNpZ25lZCBpbnQgX19wYWQxOwoKICAgIF9f aW5vX3QgX19zdF9pbm87CiAgICBfX21vZGVfdCBzdF9tb2RlOwogICAgX19ubGlua190IHN0X25s aW5rOwogICAgX191aWRfdCBzdF91aWQ7CiAgICBfX2dpZF90IHN0X2dpZDsKICAgIF9fZGV2X3Qg c3RfcmRldjsKICAgIHVuc2lnbmVkIGludCBfX3BhZDI7CiAgICBfX29mZjY0X3Qgc3Rfc2l6ZTsK ICAgIF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7CgogICAgX19ibGtjbnQ2NF90IHN0X2Jsb2NrczsK ICAgIF9fdGltZV90IHN0X2F0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQxOwog ICAgX190aW1lX3Qgc3RfbXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDI7CiAg ICBfX3RpbWVfdCBzdF9jdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKICAg IF9faW5vNjRfdCBzdF9pbm87CiAgfTsKIyA5OSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIg MwojIDIwMCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBzdGF0IChfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0 ICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBmc3RhdCAoaW50IF9f ZmQsIHN0cnVjdCBzdGF0ICpfX2J1ZikgdGhyb3cgKCk7CiMgMjE5ICIvdXNyL2luY2x1ZGUvc3lz L3N0YXQuaCIgMwpleHRlcm4gaW50IHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f ZmlsZSwKICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fcmVzdHJpY3QgX19idWYp IHRocm93ICgpOwpleHRlcm4gaW50IGZzdGF0NjQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpf X2J1ZikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgbHN0YXQgKF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3Jlc3RyaWN0 IF9fYnVmKSB0aHJvdyAoKTsKIyAyNDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCmV4dGVy biBpbnQgbHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoK CgoKZXh0ZXJuIGludCBjaG1vZCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9k ZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZmNobW9kIChpbnQgX19mZCwgX19tb2RlX3QgX19t b2RlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gX19tb2RlX3QgdW1hc2sgKF9fbW9kZV90IF9fbWFz aykgdGhyb3cgKCk7CgoKCgpleHRlcm4gX19tb2RlX3QgZ2V0dW1hc2sgKHZvaWQpIHRocm93ICgp OwoKCgpleHRlcm4gaW50IG1rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19t b2RlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IG1rbm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0 aCwgX19tb2RlX3QgX19tb2RlLCBfX2Rldl90IF9fZGV2KQogICAgIHRocm93ICgpOwoKCgoKZXh0 ZXJuIGludCBta2ZpZm8gKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpIHRo cm93ICgpOwojIDMwNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBfX2Z4 c3RhdCAoaW50IF9fdmVyLCBpbnQgX19maWxkZXMsIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSB0 aHJvdyAoKTsKZXh0ZXJuIGludCBfX3hzdGF0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19m aWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgdGhy b3cgKCk7CmV4dGVybiBpbnQgX19seHN0YXQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2Zp bGVuYW1lLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgdGhy b3cgKCk7CiMgMzMwICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IF9fZnhz dGF0NjQgKGludCBfX3ZlciwgaW50IF9fZmlsZGVzLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRfYnVm KQogICAgIHRocm93ICgpOwpleHRlcm4gaW50IF9feHN0YXQ2NCAoaW50IF9fdmVyLCBfX2NvbnN0 IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpf X3N0YXRfYnVmKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2x4c3RhdDY0IChpbnQgX192ZXIsIF9f Y29uc3QgY2hhciAqX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3Rh dDY0ICpfX3N0YXRfYnVmKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgX194bWtub2QgKGludCBfX3Zl ciwgX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgICAgICAgICAg ICAgICAgX19kZXZfdCAqX19kZXYpIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9faW5saW5lX18gaW50 IHN0YXQgKF9fY29uc3QgY2hhciAqX19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikgdGhyb3cgKCkKewogIHJldHVybiBfX3hzdGF0ICgzLCBf X3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbHN0YXQgKF9fY29u c3QgY2hhciAqX19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0 ICpfX3N0YXRidWYpIHRocm93ICgpCnsKICByZXR1cm4gX19seHN0YXQgKDMsIF9fcGF0aCwgX19z dGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBmc3RhdCAoaW50IF9fZmQsIHN0cnVj dCBzdGF0ICpfX3N0YXRidWYpIHRocm93ICgpCnsKICByZXR1cm4gX19meHN0YXQgKDMsIF9fZmQs IF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbWtub2QgKF9fY29uc3QgY2hh ciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg X19kZXZfdCBfX2RldikgdGhyb3cgKCkKewogIHJldHVybiBfX3hta25vZCAoMSwgX19wYXRoLCBf X21vZGUsICZfX2Rldik7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgc3RhdDY0IChfX2Nv bnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0 YXQ2NCAqX19zdGF0YnVmKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9feHN0YXQ2NCAoMywgX19wYXRo LCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IGxzdGF0NjQgKF9fY29uc3Qg Y2hhciAqX19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2 NCAqX19zdGF0YnVmKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fbHhzdGF0NjQgKDMsIF9fcGF0aCwg X19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBmc3RhdDY0IChpbnQgX19mZCwg c3RydWN0IHN0YXQ2NCAqX19zdGF0YnVmKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fZnhzdGF0NjQg KDMsIF9fZmQsIF9fc3RhdGJ1Zik7Cn0KCgoKCn0KIyA5MjggIi4uLy4uLy4uL2xpYi9jY2x0YXNr LmgiIDIKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHN0YXQgREtTdGF0X3Q7CiMgOTU4ICIuLi8uLi8u Li9saWIvY2NsdGFzay5oIgppbnQgREtTdGF0KCBjb25zdCBjaGFyICosIERLU3RhdF90ICogKTsK CgoKCmNoYXIgKiogSU1QRGlyZWN0b3J5KCBjb25zdCBjaGFyICogKTsKaW50IElNUFJlZ2V4KCBj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgVEJvb2wgKTsKVEJvb2wgSU1QRmlsZW5hbWVDb21w YXJlKCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwpjb25zdCBjaGFyICogSU1QVGVtcE5h bWUodm9pZCk7CmNvbnN0IGNoYXIgKiBJTVBSZWxUZW1wTmFtZSggY29uc3QgY2hhciAqcHN6TG9j YXRpb24gKTsKY29uc3QgY2hhciAqIElNUFJlbFRlbXBOYW1lRXh0KCBjb25zdCBjaGFyICpwc3pM b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqcHN6RXh0KTsKClRCb29sIElNUElzRGlyZWN0b3J5KCBjb25zdCBjaGFyKiBwc3pEaXJl Y3RvcnkgKTsKVEJvb2wgSU1QSXNEaXJlY3RvcnlXcml0YWJsZSggY29uc3QgY2hhciogcHN6RGly ZWN0b3J5ICk7CmNvbnN0IGNoYXIgKiBJTVBHZXRUZW1wRGlyKCB2b2lkICk7CgoKCgppbnQgSU1Q U2lnbmFsKCBpbnQsIHZvaWQgKCopKHZvaWQpICk7CnZvaWQgSU1QU2lnbmFsSWdub3JlKCB2b2lk ICk7CiMgMTAwMSAiLi4vLi4vLi4vbGliL2NjbHRhc2suaCIKVEJvb2wgTkVUSW5pdCggdm9pZCAp Owp2b2lkIE5FVENsb3NlKCBGSUxFICogKTsKaW50IE5FVFNlbmQoIEZJTEUgKiwgdm9pZCAqLCBp bnQgKTsKaW50IE5FVEFjY2VwdCggRklMRSAqLCB2b2lkICosIGludCApOwpGSUxFICpORVRPcGVu KCBjb25zdCBjaGFyICosIGludDMyLCBpbnQzMiApOwpGSUxFICpORVRBZHZlcnRpc2UoIGNvbnN0 IGNoYXIgKiwgaW50MzIgKiwgaW50MzIgKiApOwpGSUxFICpORVRTZWxlY3QoIEZJTEUgKiwgaW50 ICk7CmxvbmcgTkVURmxhZ3MoIEZJTEUgKiApOwp2b2lkIE5FVFNldEZsYWdzKCBGSUxFICosIGxv bmcgKTsKdm9pZCBORVRGbHVzaCggRklMRSAqICk7CmNvbnN0IGNoYXIgKk5FVEhvc3RuYW1lKCB2 b2lkICk7ClRCb29sIE5FVFBlbmRpbmdSZWFkIChGSUxFKiBmcCwgaW50IG1zZWNzKTsKIyAxMDIz ICIuLi8uLi8uLi9saWIvY2NsdGFzay5oIgp0eXBlZGVmIGVudW0geGRyX3R5cGUgewogIFhEUlZv aWQgPSAwLAogIFhEUkludDMyID0gMSwKICBYRFJGbG9hdCA9IDIsCiAgWERSRG91YmxlID0gMywK ICBYRFJTdHJpbmcgPSA0LAogIFhEUkJ5dGUgPSA1LAogIFhEUkludDMyQ291bnRlZCA9IDYsCiAg WERSRmxvYXRDb3VudGVkID0gNywKICBYRFJEb3VibGVDb3VudGVkID0gOCwKICBYRFJCeXRlQ291 bnRlZCA9IDkKfSBYRFJUeXBlOwoKaW50IFhEUlNlbmQoIEZJTEUgKiwgWERSVHlwZSwgaW50LCB2 b2lkICogKTsKaW50IFhEUkFjY2VwdCggRklMRSAqLCBYRFJUeXBlLCBpbnQsIHZvaWQgKiApOwoj IDEwNDcgIi4uLy4uLy4uL2xpYi9jY2x0YXNrLmgiCmludCBSUENBY2NlcHQoIEZJTEUgKiwgaW50 ICogKTsKaW50IFJQQ1NlbmQoIEZJTEUgKiwgaW50LCBpbnQgKTsKCgoKCgoKCnR5cGVkZWYgVEJv b2wgKCpJTVBEZGVDQikoIHZvaWQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0 IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgaW50 ICogKTsKdm9pZCAqSU1QRGRlQ29ubmVjdCggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogKTsK dm9pZCBJTVBEZGVEaXNjb25uZWN0KCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwpUQm9v bCBJTVBEZGVFeGVjdXRlKCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq ICk7ClRCb29sIElNUERkZVJlcXVlc3QoIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoq LCBpbnQgKiApOwp2b2lkIElNUERkZVJlZ2lzdGVyU2VydmljZSggY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICosIElNUERkZUNCICk7CgoKClRCb29sIElNUFN0YXJ0KGludCwgY2hhciAqLCBjaGFy ICosIGNoYXIqKTsKVEJvb2wgSU1QUHJpbnQoaW50LCBjaGFyICosIGNoYXIgKik7CiMgNDYgIi4u Ly4uLy4uL2xpYi9jY2xiYXNlLmgiIDIKCn0KIyA0NiAibHNjX3N0ci5oIiAyCgoKZXh0ZXJuICJD IiB7CiMgNzEgImxzY19zdHIuaCIKdHlwZWRlZiBlbnVtCnsKICAgIENIUlVBYWN1dGUsCiAgICBD SFJVQWNpcmN1bWZsZXgsCiAgICBDSFJVQWRpZXJlc2lzLAogICAgQ0hSVUFHcmF2ZSwKICAgIENI UkxBYWN1dGUsCiAgICBDSFJMQWNpcmN1bWZsZXgsCiAgICBDSFJMQWRpZXJlc2lzLAogICAgQ0hS TEFHcmF2ZSwKCiAgICBDSFJVQ2NlZGlsbGEsCiAgICBDSFJMQ2NlZGlsbGEsCgogICAgQ0hSVUVh Y3V0ZSwKICAgIENIUlVFY2lyY3VtZmxleCwKICAgIENIUlVFZGllcmVzaXMsCiAgICBDSFJVRWdy YXZlLAogICAgQ0hSTEVhY3V0ZSwKICAgIENIUkxFY2lyY3VtZmxleCwKICAgIENIUkxFZGllcmVz aXMsCiAgICBDSFJMRWdyYXZlLAoKICAgIENIUlVJYWN1dGUsCiAgICBDSFJVSWNpcmN1bWZsZXgs CiAgICBDSFJVSWRpZXJlc2lzLAogICAgQ0hSVUlncmF2ZSwKICAgIENIUkxJYWN1dGUsCiAgICBD SFJMSWNpcmN1bWZsZXgsCiAgICBDSFJMSWRpZXJlc2lzLAogICAgQ0hSTElncmF2ZSwKCiAgICBD SFJVT2FjdXRlLAogICAgQ0hSVU9jaXJjdW1mbGV4LAogICAgQ0hSVU9kaWVyZXNpcywKICAgIENI UlVPZ3JhdmUsCiAgICBDSFJMT2FjdXRlLAogICAgQ0hSTE9jaXJjdW1mbGV4LAogICAgQ0hSTE9k aWVyZXNpcywKICAgIENIUkxPZ3JhdmUsCgogICAgQ0hSVVVhY3V0ZSwKICAgIENIUlVVY2lyY3Vt ZmxleCwKICAgIENIUlVVZGllcmVzaXMsCiAgICBDSFJVVWdyYXZlLAogICAgQ0hSTFVhY3V0ZSwK ICAgIENIUkxVY2lyY3VtZmxleCwKICAgIENIUkxVZGllcmVzaXMsCiAgICBDSFJMVWdyYXZlLAoK ICAgIENIUkRlZ3JlZSwKCiAgICBDSFJMYXN0RW50cnkKfUNIUkNoYXJOYW1lOwoKCgp0eXBlZGVm IGVudW0gewogICAgU01fRklSU1QgPSAtMSwKICAgIFNNX0lTT19MQVRJTl8xX1NUQU5EQVJEX1NP UlQsCiAgICBTTV9JU09fTEFUSU5fMV9BQ0NFTlRfU09SVCwKICAgIFNNX0xBU1QKICAgIH0gZVNv cnRpbmdNYXBUeXBlOwoKCnVuc2lnbmVkIGNoYXIgR2V0RXh0ZW5kZWRDaGFyKCBDSFJDaGFyTmFt ZSBlQ2hhck5hbWUgKTsKVEJvb2wgU01TZXRTb3J0aW5nTWFwKGVTb3J0aW5nTWFwVHlwZSBlU0NQ KTsKZVNvcnRpbmdNYXBUeXBlIFNNR2V0U29ydGluZ01hcCh2b2lkKTsKCgoKCgpjaGFyICpMU0NJ dG9hKGludCBuTnVtYmVyKTsKVEJvb2wgTFNDSXNFbXB0eVN0cmluZyhjb25zdCBjaGFyKiBwc3pT dHIpOwpUQm9vbCBMU0NJc0luU3RyaW5nTGlzdChjaGFyICoqcGFwc3pTdHJpbmdMaXN0LCBjaGFy ICpwc3pTdHJpbmcpOwoKY2hhciAqTFNDUmV2ZXJzZVN0cmluZyhjaGFyICogcHN6U3RyLCBpbnQg bkNvdW50KTsKY2hhciAqTFNDU3RyaW5nVG9VcHBlcihjaGFyICogcHN6U3RyKTsKY2hhciAqTFND U3RyaW5nVG9Mb3dlcihjaGFyICogcHN6U3RyKTsKY2hhciAqTFNDRWF0V1NGcm9udChjaGFyICog cHN6U3RyKTsKY2hhciAqTFNDRWF0V1NCYWNrKGNoYXIgKiBwc3pTdHIpOwpjaGFyICpMU0NFYXRX UyhjaGFyICogcHN6U3RyKTsKY2hhciAqTFNDRWF0QWxsV1MoY2hhciAqcHN6U3RyaW5nKTsKY2hh ciAqTFNDRWF0QWxsQ2hhck1hdGNoaW5nKGNoYXIgKnBzelN0cmluZywgaW50IGNDaGFyVG9SZW1v dmUpOwpjaGFyICpXaGl0ZVNwYWNlVG9PbmVTcGFjZShjaGFyICogcHN6U3RyKTsKCmNoYXIgKkxT Q0dldEZpcnN0Tm9uV2hpdGVTcGFjZShjb25zdCBjaGFyKiBwc3pTdHIpOwoKCmNoYXIgKkxTQ1N0 clRvayhjaGFyKiBwc3pTdHIsIGNvbnN0IGNoYXIqIHBzelRva3MpOwpjaGFyICpMU0NTdHJwYnJr KHJlZ2lzdGVyIGNvbnN0IGNoYXIqIHBzelN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVnaXN0ZXIgY29uc3QgY2hhciogcHN6VG9rcyk7CmNoYXIgKkxTQ1N0ckNocihyZWdpc3RlciBj b25zdCBjaGFyKiBwc3pUb2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNv bnN0IGNoYXIgdUNoYXIpOwoKdm9pZCBMU0NTcGxpdEF1eExpbmUoY2hhciAqcHN6QXV4TGluZSwg Y2hhciAqKnBwc3pBMSwgY2hhciAqKnBwc3pBMik7CgoKaW50IFNNU3RyaW5nQ29tcGFyZShjb25z dCBjaGFyKiBwc3pTdHIxLCBjb25zdCBjaGFyKiBwc3pTdHIyKTsKaW50IFNNU3RyaW5nQ2FzZUNv bXBhcmUoY29uc3QgY2hhciogcHN6U3RyMSwgY29uc3QgY2hhciogcHN6U3RyMik7CgppbnQgU01T dHJpbmdOQ29tcGFyZShjb25zdCBjaGFyKiBwc3pTdHIxLCBjb25zdCBjaGFyKiBwc3pTdHIyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5DaGFycyk7CmludCBTTVN0cmluZ05D YXNlQ29tcGFyZShjb25zdCBjaGFyKiBwc3pTdHIxLCBjb25zdCBjaGFyKiBwc3pTdHIyLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuQ2hhcnMpOwoKaW50IFNNU3BlY2lh bFN0cmluZ0NvbXBhcmUoY29uc3QgY2hhciogcHN6U3RyMSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBzelN0cjIpOwoKaW50IFNNU3BlY2lhbFN0cmlu Z0Nhc2VDb21wYXJlKGNvbnN0IGNoYXIqIHBzelN0cjEsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcHN6U3RyMik7CgppbnQgTFNDU3BlY2lhbFN0 ckNtcCggY29uc3QgY2hhciogcHN6UzEsIGNvbnN0IGNoYXIqIHBzelMyICk7CmludCBMU0NTcGVj aWFsU3RyQ2FzZUNtcCggY29uc3QgY2hhciogcHN6UzEsIGNvbnN0IGNoYXIqIHBzelMyICk7CgoK fQojIDI4NiAibHNjbWlzYy5oIiAyCiMgMSAiLi4vLi4vLi4vbGliL2dkYi5oIiAxCiMgMzQ1ICIu Li8uLi8uLi9saWIvZ2RiLmgiCiMgMSAiLi4vLi4vLi4vbGliL2NjbGNvbnYuaCIgMQojIDc1ICIu Li8uLi8uLi9saWIvY2NsY29udi5oIgojIDEgIi4uLy4uLy4uL2xpYi9jY2xiYXNlLmgiIDEKIyA3 NiAiLi4vLi4vLi4vbGliL2NjbGNvbnYuaCIgMgoKZXh0ZXJuICJDIiB7CiMgOTEgIi4uLy4uLy4u L2xpYi9jY2xjb252LmgiCmNoYXIgKiBTdHJpcFdoaXRlU3BhY2UoIGNoYXIgKiApOwppbnQgTmV4 dE11bHQoIGludCwgaW50ICk7CnZvaWQgU3RyVG9BcmcoIGNoYXIgKiwgY2hhciAqLCBjaGFyICoq LCBpbnQgKik7CmNoYXIgKiBNa05hbWUoIGNvbnN0IGNoYXIgKiwgLi4uICk7CgpjaGFyICogTWtT dHJpbmcoIGNoYXIgKiApOwp2b2lkIFByaW50RmxvYXQoIGNoYXIgKiwgY2hhciAqLCBkb3VibGUg KTsKdm9pZCBQcmludERvdWJsZSggY2hhciAqLCBjaGFyICosIGRvdWJsZSApOwpjb25zdCBjaGFy ICogRm9ybWF0RG91YmxlKCBkb3VibGUsIGNoYXIgKiApOwoKdm9pZCBQcmludEludCggY2hhciAq LCBjaGFyICosIGxvbmcgKTsKdm9pZCBUZXh0RmllbGRGaWxsKCBjaGFyICosIGNvbnN0IGNoYXIg KiwgaW50ICk7CgoKCgp2b2lkIFVDYXNlU3RyaW5nKCBjaGFyICogKTsKdm9pZCBMQ2FzZVN0cmlu ZyggY2hhciAqICk7CmRvdWJsZSBTY2FuRG91YmxlKCBjaGFyICosIGludCApOwpsb25nIFNjYW5J bnQoIGNoYXIgKiwgaW50ICk7CnZvaWQgRmlsZU5hbWUoIGNoYXIgKiwgY2hhciAqICk7CnZvaWQg Qml0Q291bnQodW5zaWduZWQgY2hhciAqLCBpbnQsIGludCAqKTsKCmRvdWJsZSBJTVBSYW5kb20o dm9pZCk7CmludCBJTVBJbml0UmFuZG9tKGludCk7CmludCBJTVBSYW5kSW50KHZvaWQpOwpkb3Vi bGUgSU1QUmFuZE5vcm0oZG91YmxlKTsKCmNoYXIgKiogR2V0TmljZUdyYXBoTGFiZWxzKCBkb3Vi bGUsIGRvdWJsZSwgaW50LCBpbnQgKik7CgoKCgp2b2lkIE1hdHJpeEludiggZG91YmxlICosIGlu dCwgZG91YmxlICogKTsKdm9pZCBUcmlhbmd1bGFyRGVjb21wb3NlKGludCwgZG91YmxlICopOwp2 b2lkIFByaW50TWF0cml4KGNoYXIgKm5hbWUsIGludCBuLCBpbnQgbSwgZG91YmxlICptYXQpOwpk b3VibGUgUG93SW50IChkb3VibGUsIGludCk7CgoKCgoKdm9pZCBNTTNfTXVsdChkb3VibGUgKm1h dDEsIGRvdWJsZSAqbWF0MiwgZG91YmxlICptYXQzKTsKdm9pZCBNVjNfTXVsdChkb3VibGUgKm1h dCwgZG91YmxlICp2ZWMxLCBkb3VibGUgKnZlYzIpOwp2b2lkIE10VjNfTXVsdChkb3VibGUgKm1h dCwgZG91YmxlICp2ZWMxLCBkb3VibGUgKnZlYzIpOwpkb3VibGUgVmVjTGVuZ3RoKGRvdWJsZSAq dmVjKTsKdm9pZCBWZWNOb3JtYWxpemUoZG91YmxlICp2ZWMpOwp2b2lkIFZlY0RpZmYoZG91Ymxl ICp2ZWMxLCBkb3VibGUgKnZlYzIsIGRvdWJsZSAqdmVjMyk7CnZvaWQgVmVjU2NhbGUoZG91Ymxl IHNjYWxlLCBkb3VibGUgKnZlYzEsIGRvdWJsZSAqdmVjMik7CmRvdWJsZSBWZWNEaXN0YW5jZShk b3VibGUgKnZlYzEsIGRvdWJsZSAqdmVjMik7CmRvdWJsZSBEb3RQcm9kdWN0KGRvdWJsZSAqdmVj MSwgZG91YmxlICp2ZWMyKTsKdm9pZCBDcm9zc1Byb2R1Y3QoZG91YmxlICp2ZWMxLCBkb3VibGUg KnZlYzIsIGRvdWJsZSAqdmVjMyk7CmRvdWJsZSBwb2x5dmFsKGRvdWJsZSAqY29lZiwgaW50IG5P cmRlciwgZG91YmxlIHgpOwoKCgoKCmNoYXIgKiogUmVhZEF1eEZpbGUoIGNvbnN0IGNoYXIgKiAp OwpjaGFyICogRmV0Y2hBdXhFbnRyeSggY2hhciAqKiwgY29uc3QgY2hhciAqICk7CmNvbnN0IGNo YXIgKiBGZXRjaE5leHRBdXhFbnRyeSggY2hhciAqKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICogKTsKY2hhciAqKiBTZXRBdXhFbnRyeSggY2hhciAqKiwgY29uc3QgY2hhciAqLCBjb25zdCBj aGFyICogKTsKY2hhciAqKiBBZGRBdXhFbnRyeSggY2hhciAqKiwgY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICogKTsKY2hhciAqKiBEZWxldGVBdXhFbnRyaWVzKCBjaGFyICoqLCBjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKiAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRCb29sKTsKdm9pZCBXcml0ZUF1eEZpbGUoIGNvbnN0IGNoYXIgKiwgY2hhciAqKiApOwppbnQg RmV0Y2hBdXhGaWVsZE5hbWVMZW5ndGgoIGNvbnN0IGNoYXIgKiApOwpUQm9vbCBQYXJzZUF1eEVu dHJ5KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKiwgY29uc3QgY2hhciAqKik7CmNoYXIgKiBC dWlsZEF1eEVudHJ5KCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwoKY2hhciAqKiBEZWxl dGVTdHJpbmdMaXN0RW50cnkoIGNoYXIgKiosIGludCApOwpUQm9vbCBTdHJpbmdMaXN0c0VxdWFs KCBjaGFyICoqLCBjaGFyICoqICk7CmNoYXIgKiogRHVwbGljYXRlU3RyaW5nTGlzdCggY2hhciAq KiApOwppbnQgQ291bnRTdHJpbmdMaXN0KCBjaGFyICoqICk7CnZvaWQgRGVzdHJveVN0cmluZ0xp c3QoIGNoYXIgKiogKTsKY2hhciAqKiBBZGRTdHJpbmdMaXN0KCBjaGFyICoqLCBjaGFyICoqICk7 CmNoYXIgKiogQWRkU3RyaW5nVG9MaXN0KCBjaGFyICoqLCBjb25zdCBjaGFyICogKTsKaW50IEZp bmRFbnRyeUluU3RyaW5nTGlzdCggY2hhciAqKiwgY29uc3QgY2hhciAqICk7CmludCBGaW5kUmVn ZXhJblN0cmluZ0xpc3QoIGNoYXIgKiosIGNvbnN0IGNoYXIgKiApOwppbnQgUmVwbGFjZVN0cmlu Z0luTGlzdCggY2hhciAqKiwgY29uc3QgY2hhciAqLCBpbnQgKTsKY2hhciAqKiBUZXh0RmlsZVRv U3RyaW5nTGlzdCggY29uc3QgY2hhciAqICk7ClRCb29sIFN0cmluZ0xpc3RUb0ZpbGUoIGNoYXIg KiosIGNvbnN0IGNoYXIgKiApOwpjaGFyICpTdHJpbmdMaXN0VG9CdWZmZXIoIGNoYXIgKiogcGFw c3pTdHJpbmdMaXN0ICk7CmNoYXIgKipCdWZmZXJUb1N0cmluZ0xpc3QoIGNvbnN0IGNoYXIqIHBz ekJ1ZmZlciApOwpjaGFyICoqIFRva2VuaXplKCBjb25zdCBjaGFyICogKTsKY2hhciAqKiBUb2tl bml6ZURlbGltKCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwpjaGFyICoqIFRva2VuaXpl RGVsaW0yKCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwpjaGFyICogR2V0TGFzdFRva2Vu KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqKiBJbnNlcnRTdHJpbmdJbkxpc3Qo Y2hhciAqKiwgY29uc3QgY2hhciAqLCBpbnQgLCBUQm9vbCk7CiMgMTkxICIuLi8uLi8uLi9saWIv Y2NsY29udi5oIgp2b2lkIFN3YXBXb3JkKCBpbnQsIHZvaWQgKiApOwojIDIwNiAiLi4vLi4vLi4v bGliL2NjbGNvbnYuaCIKdm9pZCBDQ0xMb2dFcnJvciggY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosIC4uLiApOwp2b2lkIENDTExvZ1N1Y2Nlc3MoIGNvbnN0IGNoYXIgKiApOwp2b2lkIENDTFN0 YXJ0VGVzdCggY29uc3QgY2hhciAqICk7ClRCb29sIENDTEVuZFRlc3QoIHZvaWQgKTsKIyAyMTgg Ii4uLy4uLy4uL2xpYi9jY2xjb252LmgiCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgKmJhc2Vu YW1lOwogICAgY2hhciAqZXh0ZW5zaW9uOwogICAgY2hhciAqZHJpdmU7CiAgICBpbnQgcmVsYXRp dmU7CiAgICBpbnQgcGF0aF9lbGVtZW50czsKICAgIGNoYXIgKnBhdGhbMjRdOwp9IEdsb2JfdDsK IyAyNTAgIi4uLy4uLy4uL2xpYi9jY2xjb252LmgiCnZvaWQgSU1QRGVzdHJveUdsb2IoIEdsb2Jf dCAqICk7Ckdsb2JfdCAqIElNUEZpbGUyR2xvYiggY29uc3QgY2hhciAqLCBpbnQgKTsKY2hhciAq IElNUEdsb2IyRmlsZSggY29uc3QgR2xvYl90ICosIGludCApOwpjaGFyICogSU1QR2xvYmJlcigg Y29uc3QgY2hhciAqLCBpbnQsIGludCApOwpjaGFyICogSU1QR2V0UGF0aCggY29uc3QgR2xvYl90 ICosIGludCApOwpjaGFyICogSU1QR2V0RmlsZW5hbWUoIGNvbnN0IEdsb2JfdCAqLCBpbnQgKTsK Y29uc3QgY2hhciAqIElNUEdldEZpbGVuYW1lUmVmKCBjb25zdCBHbG9iX3QgKiwgaW50ICk7CmNv bnN0IGNoYXIgKiBJTVBFeHRyYWN0RmlsZW5hbWVSZWYoIGNvbnN0IGNoYXIgKiwgaW50ICk7CgoK dm9pZCBJTVBTZXRGaWxlbmFtZSggR2xvYl90ICosIGNvbnN0IGNoYXIgKiApOwpjaGFyICogSU1Q U2V0RXh0ZW5zaW9uKCBjb25zdCBjaGFyKiBwc3pGaWxlLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBzekV4dCApOwpjaGFyICogSU1QQWJicmV2 aWF0ZVBhdGgoIEdsb2JfdCAqLCBpbnQsIGludCApOwpjb25zdCBjaGFyICogSU1QU2VhcmNoRmls ZSggY29uc3QgY2hhciAqICk7CgpjaGFyICogSU1QTWFrZVJlbGF0aXZlUGF0aCggY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICogKTsKY2hhciAqIElNUE1lcmdlUmVsYXRpdmVQYXRoKCBjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKiApOwpUQm9vbCBDQ0xSZWxhdGl2ZVRlc3QoIHZvaWQgKTsKCgoK CnR5cGVkZWYgc3RydWN0IGxpbmtfdCB7CiAgc3RydWN0IGxpbmtfdCAqbmV4dDsKICB2b2lkICpv YmplY3Q7Cn0gTGlua190OwoKTGlua190ICogSW5zZXJ0TGluayggTGlua190ICosIExpbmtfdCAq ICk7CkxpbmtfdCAqIEFkZExpbmsoIExpbmtfdCAqLCBMaW5rX3QgKiApOwpMaW5rX3QgKiBDcmVh dGVMaW5rKCB2b2lkICogKTsKTGlua190ICogRmluZExpbmsoIExpbmtfdCAqLCB2b2lkICogKTsK TGlua190ICogRGVsZXRlTGluayggTGlua190ICosIExpbmtfdCAqICk7CkxpbmtfdCAqIFJlbW92 ZUxpbmsoIExpbmtfdCAqLCBMaW5rX3QgKiApOwpMaW5rX3QgKiBMaW5rTiggTGlua190ICosIGlu dCApOwp2b2lkIERlc3Ryb3lMaXN0KCBMaW5rX3QgKiApOwpMaW5rX3QgKiBEdXBsaWNhdGVMaXN0 KCBMaW5rX3QgKik7CiMgMzEyICIuLi8uLi8uLi9saWIvY2NsY29udi5oIgp0eXBlZGVmIHN0cnVj dCBDQ0hFbnRyeV90CnsKICAgIHZvaWQgKmhLZXk7CiAgICB2b2lkICpwRGF0YTsKfSBDQ0hFbnRy eTsKCnN0cnVjdCBDQ0hDYWNoZV90OwoKdHlwZWRlZiBsb25nICgqQ0NISGFzaEZ1bmMpKHZvaWQg Kik7CnR5cGVkZWYgaW50ICgqQ0NIQ29tcEZ1bmMpKHZvaWQgKiwgdm9pZCAqKTsKdHlwZWRlZiB2 b2lkICgqQ0NIRmx1c2hGdW5jKShzdHJ1Y3QgQ0NIQ2FjaGVfdCAqLCBDQ0hFbnRyeSAqLCB2b2lk ICopOwoKdHlwZWRlZiBzdHJ1Y3QgQ0NIQ2FjaGVfdAp7CiAgICBpbnQzMiBuT3B0aW9uczsKICAg IGludCBuU2l6ZTsKICAgIGludCBuRW50cmllczsKICAgIHVuc2lnbmVkIGludCBuU2xvdHM7CiAg ICBpbnQgKnBhbkVudHJpZXNJblNsb3Q7CiAgICBDQ0hFbnRyeSAqKnBhcGFzRW50cmllczsKICAg IENDSEhhc2hGdW5jIHBmbkhhc2g7CiAgICBDQ0hDb21wRnVuYyBwZm5Db21wOwogICAgQ0NIRmx1 c2hGdW5jIHBmbkZsdXNoOwogICAgdm9pZCAqcEZsdXNoQ0JEYXRhOwp9IENDSENhY2hlLCAqQ0NI SGFuZGxlOwoKQ0NIRW50cnkgKiBDQ0hGaW5kRW50cnkoQ0NISGFuZGxlIHBzQ2FjaGUsIHZvaWQg KmhLZXkpOwp2b2lkICogQ0NIRGVsZXRlKENDSEhhbmRsZSBwc0NhY2hlLCB2b2lkICpoS2V5KTsK Q0NISGFuZGxlIENDSENyZWF0ZUNhY2hlKHNpemVfdCBuU2l6ZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludDMyIG5PcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ0NIRmx1c2hGdW5jIHBmY0ZsdXNoRnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZvaWQgKnBGbHVzaENCRGF0YSk7CnZvaWQgKiBDQ0hVcGRhdGUoQ0NISGFuZGxlIHBzQ2Fj aGUsIHZvaWQgKmhLZXksIHZvaWQgKnBEYXRhKTsKQ0NIRW50cnkgKiBDQ0hGaW5kRW50cnkoQ0NI SGFuZGxlIHBzQ2FjaGUsIHZvaWQgKmhLZXkpOwp2b2lkICogQ0NIRGVsZXRlKENDSEhhbmRsZSBw c0NhY2hlLCB2b2lkICpoS2V5KTsKdm9pZCBDQ0hGbHVzaENhY2hlKENDSEhhbmRsZSBwc0NhY2hl KTsKdm9pZCAqKiBDQ0hHZXRBbGwoQ0NISGFuZGxlIHBzQ2FjaGUpOwppbnQgQ0NIR2V0TnVtRW50 cmllcyhDQ0hIYW5kbGUgcHNDYWNoZSk7CnZvaWQgKiBDQ0hGaW5kKENDSEhhbmRsZSBwc0NhY2hl LCB2b2lkICpoS2V5KTsKdm9pZCBDQ0hEZWxldGVDYWNoZShDQ0hIYW5kbGUgcHNDYWNoZSk7CkND SEVudHJ5ICoqIENDSEdldEFsbEVudHJpZXMoQ0NISGFuZGxlIHBzQ2FjaGUpOwoKCgoKY2hhciAq IE5MU1RhZ0xvb2t1cCAoY29uc3QgY2hhciogcHN6VGFnICk7CmNoYXIgKiBOTFNMb29rdXAgKGNv bnN0IGNoYXIqIHBzelN0cmluZyApOwpjaGFyICoqIE5MU0xvb2t1cFN0cmluZ0xpc3QgKGNoYXIg KiogcGFzelN0cmluZ0xpc3QgKTsKVEJvb2wgTkxTVG9Eb3VibGVCeXRlIChjb25zdCBjaGFyICos IGNoYXIgKiwgaW50KTsKY2hhciAqIE5MU0RvdWJsZVRvQ29tcG91bmQoY29uc3QgY2hhciAqcHN6 RG91YmxlQnl0ZSwgaW50IG5DaGFyQ291bnQpOwoKVEJvb2wgTkxTSGFzRG91YmxlIChjb25zdCBj aGFyICopOwpUQm9vbCBOTFNEb3VibGVDaGFySXNOVUxMIChjb25zdCBjaGFyICopOwp2b2lkIE5M U1NldExvY2FsZSAoY29uc3QgY2hhciAqICk7CnZvaWQgTkxTQ2xlYXJEYXRhYmFzZSAodm9pZCk7 CgoKdm9pZCBOTFNTZXRUZXN0TW9kZShUQm9vbCk7CnZvaWQgTkxTU2V0TG9nTW9kZShUQm9vbCk7 CnZvaWQgTkxTSW5pdCgpOwpUQm9vbCBOTFNJc0xlYWRCeXRlKHVuc2lnbmVkIGNoYXIpOwpjaGFy ICogTkxTTmV4dENoYXIoY2hhciAqKTsKY2hhciAqIE5MU1ByZXZDaGFyKGNoYXIgKiwgY2hhciAq KTsKaW50IE5MU1N0cmluZ0xlbmd0aChjaGFyICopOwppbnQgTkxTTWF4Q2hhcldpZHRoKCk7CgoK Cgp2b2lkIFBNSW5pdGlhbGl6ZSggVEJvb2wgKTsKdm9pZCBQTVN0YXJ0VGltaW5nKCBjb25zdCBj aGFyICogKTsKdm9pZCBQTUVuZFRpbWluZyggY29uc3QgY2hhciAqICk7CnZvaWQgUE1TdGFydFBy b2Nlc3Modm9pZCk7CnZvaWQgUE1FbmRQcm9jZXNzKHZvaWQpOwpjaGFyICoqUE1HZXRBY3Rpb25z KHZvaWQpOwpkb3VibGUgUE1HZXRBdmVyYWdlQWN0aW9uVGltZSggY29uc3QgY2hhciAqICk7CnZv aWQgUE1EZWJ1Z1JlcG9ydCh2b2lkKTsKaW50IFBNR2V0RXJyb3JzKGNvbnN0IGNoYXIgKik7CgoK Cgp0eXBlZGVmIGNoYXIgKihJTVBQcm9tcHRFbmNyeXB0S2V5KSggdW5zaWduZWQgY2hhciAqcGFi eUZpbmdlcnByaW50RW5jcnlwdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqcHN6RmluZ2VycHJpbnRDbGVhciwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzelF1ZXN0aW9uICk7Cgp2b2lkIElNUFhvcldp dGhTdHJpbmcoIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICos IGludCApOwp2b2lkIElNUEVuY3J5cHRCdWZmZXIoIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgY2hh ciAqLCB1bnNpZ25lZCBjaGFyICosIGludCApOwp2b2lkIElNUERlY3J5cHRCdWZmZXIoIGNvbnN0 IGNoYXIgKiwgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICosIGludCApOwpjaGFyICpJ TVBHZW5lcmF0ZUVuY3J5cHRpb25LZXkoIGludCApOwoKdm9pZCBJTVBSZW1lbWJlckVuY3J5cHRL ZXkoIGNvbnN0IGNoYXIgKiApOwpjaGFyICoqSU1QUmVjYWxsRW5jcnlwdEtleXMoIHZvaWQgKTsK Y2hhciAqSU1QR2V0TWF0Y2hpbmdLZXkoIHVuc2lnbmVkIGNoYXIgKnBhYnlGaW5nZXJwcmludEVu Y3J5cHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpw c3pGaW5nZXJwcmludENsZWFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKnBzelF1ZXN0aW9uICk7CnZvaWQgSU1QU2V0RW5jcnlwdEtleVByb21wdGVyKCBJ TVBQcm9tcHRFbmNyeXB0S2V5IHBmblByb21wdGVyICk7CmNoYXIgKklNUFByb21wdFRlcm1FbmNy eXB0S2V5KCB1bnNpZ25lZCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqICk7CgoK CgoKdm9pZCBQcmludEhpc0RhdGEoRklMRSAqZnAsIGNvbnN0IGludCAqYW5IaXNEYXRhLCBpbnQg bkhpc0RhdGFTaXplLAogICAgICAgICAgICAgICAgICBkb3VibGUgZGZGaXJzdEJpblZhbHVlLCBk b3VibGUgZGZCaW5TaXplKTsKCnZvaWQgUHJpbnRIaXNBU0NJSShGSUxFICpmcCwgY29uc3QgaW50 ICphbkhpc0RhdGEsIGludCBuSGlzRGF0YVNpemUsCiAgICAgICAgICAgICAgICAgICBkb3VibGUg ZGZGaXJzdEJpblZhbHVlLCBkb3VibGUgZGZCaW5TaXplLCBpbnQgbkhpc0NvdW50LAogICAgICAg ICAgICAgICAgICAgZG91YmxlIGRmSGlzTWluLCBkb3VibGUgZGZIaXNNYXgsIGRvdWJsZSBkZkhp c01lYW4sCiAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZIaXNTdGREZXYsIGRvdWJsZSBkZkhp c01lZGlhbiwgZG91YmxlIGRmQ291bnRNaW4sCiAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZD b3VudE1heCwgZG91YmxlIGRmR3JleUxldmVsTWluLAogICAgICAgICAgICAgICAgICAgZG91Ymxl IGRmR3JleUxldmVsTWF4LCBjb25zdCBjaGFyICpwc3pUaXRsZSwKICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKnBzekxhYmVsWCwgY29uc3QgY2hhciAqcHN6TGFiZWxZLAogICAgICAgICAg ICAgICAgICAgVEJvb2wgYlByaW50U3RhdHMpOwoKdm9pZCBQcmludEhpc1BTKEZJTEUgKmZwLCBj b25zdCBpbnQgKmFuSGlzRGF0YSwgaW50IG5IaXNEYXRhU2l6ZSwKICAgICAgICAgICAgICAgIGRv dWJsZSBkZkZpcnN0QmluVmFsdWUsIGRvdWJsZSBkZkJpblNpemUsIGludCBuSGlzQ291bnQsCiAg ICAgICAgICAgICAgICBkb3VibGUgZGZIaXNNaW4sIGRvdWJsZSBkZkhpc01heCwgZG91YmxlIGRm SGlzTWVhbiwKICAgICAgICAgICAgICAgIGRvdWJsZSBkZkhpc1N0ZERldiwgZG91YmxlIGRmSGlz TWVkaWFuLCBkb3VibGUgZGZDb3VudE1pbiwKICAgICAgICAgICAgICAgIGRvdWJsZSBkZkNvdW50 TWF4LCBkb3VibGUgZGZHcmV5TGV2ZWxNaW4sIGRvdWJsZSBkZkdyZXlMZXZlbE1heCwKICAgICAg ICAgICAgICAgIGRvdWJsZSBkZlBhZ2VXaWR0aCwgZG91YmxlIGRmUGFnZUhlaWdodCwgZG91Ymxl IGRmV2luZG93V2lkdGgsCiAgICAgICAgICAgICAgICBkb3VibGUgZGZXaW5kb3dIZWlnaHQsIGlu dCBiTGFuZFNjYXBlLCBjb25zdCBjaGFyICpwc3pUaXRsZSwKICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKnBzekxhYmVsWCwgY29uc3QgY2hhciAqcHN6TGFiZWxZLAogICAgICAgICAgICAgICAg VEJvb2wgYlByaW50U3RhdHMsIGludCBuTnVtQ29waWVzKTsKCn0KIyAzNDYgIi4uLy4uLy4uL2xp Yi9nZGIuaCIgMgojIDEgIi4uLy4uLy4uL2xpYi9jY2xwcm9qLmgiIDEKIyAyMSAiLi4vLi4vLi4v bGliL2NjbHByb2ouaCIKZXh0ZXJuICJDIiB7CgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICBjaGFy IFVuaXRzWzIwXTsKICBkb3VibGUgRGVhcnRoWzJdOwogIGRvdWJsZSBSZWZMb25nOwogIGRvdWJs ZSBSZWZMYXQ7CiAgZG91YmxlIFN0ZFBhcmFsbGVsMTsKICBkb3VibGUgU3RkUGFyYWxsZWwyOwog IGRvdWJsZSBGYWxzZUVhc3Rpbmc7CiAgZG91YmxlIEZhbHNlTm9ydGhpbmc7CiAgZG91YmxlIFNj YWxlOwogIGRvdWJsZSBIZWlnaHQ7CiAgZG91YmxlIExvbmcxOwogIGRvdWJsZSBMYXQxOwogIGRv dWJsZSBMb25nMjsKICBkb3VibGUgTGF0MjsKICBkb3VibGUgQXppbXV0aDsKICBpbnQgTGFuZHNh dE51bTsKCiAgaW50IExhbmRzYXRQYXRoOwoKICBkb3VibGUgWE9mZjsKICBkb3VibGUgWU9mZjsK ICBkb3VibGUgWFNpemU7CiAgZG91YmxlIFlTaXplOwoKICBpbnQgUHJvamVjdGlvbkNvZGU7CiAg aW50IFByb2plY3Rpb25ab25lOwogIGRvdWJsZSBVU0dTUGFybXNbMTVdOwogIGludCBVbml0c0Nv ZGU7CiAgaW50IFNwaGVyb2lkOwogIGludCBJRmllbGRzOwoKICBkb3VibGUgWFJvdDsKICBkb3Vi bGUgWVJvdDsKCn0gUHJvakluZm9fdDsKIyA3MyAiLi4vLi4vLi4vbGliL2NjbHByb2ouaCIKdHlw ZWRlZiBzdHJ1Y3QgewogIGNoYXIgc3pEYXR1bUNvZGVbNV07CiAgY2hhciAqIHBzekRhdHVtTmFt ZTsKICBjaGFyICogcHN6RGF0dW1XaGVyZTsKCgoKCiAgY2hhciBzekVsbGlwc0NvZGVbNV07CiAg Y2hhciAqIHBzekVsbGlwc05hbWU7CiAgZG91YmxlIGRBOwogIGRvdWJsZSBkQjsKCiAgY2hhciAq IHBzelNoaWZ0RmlsZTE7CiAgY2hhciAqIHBzelNoaWZ0RmlsZTI7CgoKICBkb3VibGUgZFhPZmZz ZXQ7CiAgZG91YmxlIGRZT2Zmc2V0OwogIGRvdWJsZSBkWk9mZnNldDsKCgogIGRvdWJsZSBkWFJv dGF0ZTsKICBkb3VibGUgZFlSb3RhdGU7CiAgZG91YmxlIGRaUm90YXRlOwoKICBkb3VibGUgZFNj YWxlOwoKICBkb3VibGUgZFhTaWdtYTsKICBkb3VibGUgZFlTaWdtYTsKICBkb3VibGUgZFpTaWdt YTsKCiAgaW50IG5Eb3BwbGVyOwoKCiAgZG91YmxlIGRGbGF0dGVuaW5nOwojIDExOCAiLi4vLi4v Li4vbGliL2NjbHByb2ouaCIKICBjaGFyICoqcGFzekdyaWRGaWxlOwoKICB2b2lkICogcHNHRjsK CgoKfSBEYXR1bUluZm9fdDsKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBjaGFyIHN6VXNlck5hbWVb MTJdOwogIGNoYXIgc3pQcm9qRGVzY1s4MF07CiAgY2hhciBzelByb2pDb3VudHJ5WzgwXTsKICBU Qm9vbCBiQ29tbW9uOwoKICBpbnQgblJlYWxUeXBlOwoKICBQcm9qSW5mb190IHNSZWFsUHJvajsK fSBVc2VyUHJvakluZm9fdDsKIyAxOTYgIi4uLy4uLy4uL2xpYi9jY2xwcm9qLmgiClRCb29sIEND TFByb2pUZXN0KCB2b2lkICk7ClRCb29sIENDTFVzZXJQcm9qVGVzdCggdm9pZCApOwoKaW50IEdD VFBTaW1wbGVUcmFuc2Zvcm0gKCBjaGFyICosIGRvdWJsZSwgZG91YmxlLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwoKaW50 IFBDSTJHQ1RQICggUHJvakluZm9fdCAqICk7CnZvaWQgR0NUUDJQQ0kgKCBQcm9qSW5mb190ICog KTsKCmludCBHZW9zeXMyUHJvakluZm8gKCBQcm9qSW5mb190ICosIGNoYXIgKiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUgKTsK aW50IEdlb3N5czJQcm9qSW5mbzIgKCBQcm9qSW5mb190ICosIGNoYXIgKiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlLCBkb3VibGUgKTsKCmludCBHQ1RQVHJh bnNmb3JtICggUHJvakluZm9fdCAqLCBkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHJvakluZm9fdCAqLCBkb3VibGUgKiwgZG91YmxlICogKTsKCnZvaWQgSW5p dFByb2pJbmZvICggUHJvakluZm9fdCAqLCBpbnQgKTsKY2hhciAqIFByb2pJbmZvMlBhcm1zICgg UHJvakluZm9fdCAqICk7CmludCBQcm9qUGFybXMySW5mbyAoIGNoYXIgKiwgUHJvakluZm9fdCAq ICk7CmludCBQcm9qSW5mbzJQUk1GaWxlICggUHJvakluZm9fdCAqICk7CmludCBQcm9qUFJNRmls ZTJJbmZvICggY2hhciAqLCBQcm9qSW5mb190ICogKTsKaW50IEdlb3N5c0NvbXBhdGlibGUoIGNv bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqICk7CmludCBQcm9qQ29tcGF0aWJsZSggY29uc3QgUHJv akluZm9fdCAqLCBjb25zdCBQcm9qSW5mb190ICogKTsKaW50IERlY29kZUdlb3N5cyggY29uc3Qg Y2hhciAqLCBjaGFyICogKTsKaW50IEdldEVsbGlwc29pZCggY29uc3QgY2hhciAqICk7CmludCBn ZXRfZWxsKCBjaGFyICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwpjaGFyIGdldF9wcm9qKCBpbnQs IGNoYXIgKiwgY2hhciAqLCBQcm9qSW5mb190ICosIGNoYXIgKiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSApOwpUQm9vbCBHZXRFYXJ0 aE1vZGVsKCBjb25zdCBjaGFyICosIGNoYXIgKiApOwpUQm9vbCBHZXRFbGxpcHNvaWREYXRhKCBj b25zdCBjaGFyICosIGludCAqLCBkb3VibGUgKiwgZG91YmxlICogKTsKVEJvb2wgR2V0RWxsaXBz b2lkSW5mbyggY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAqLCBkb3VibGUgKiwgZG91YmxlICosIGNoYXIgKiogKTsKY2hhciAqIEdldEVsbGlwc29pZENv ZGUoIGRvdWJsZSwgZG91YmxlICk7ClRCb29sIEdldERhdHVtSW5mbyAoIGNvbnN0IGNoYXIgKiwg RGF0dW1JbmZvX3QgKiApOwpUQm9vbCBHZXREYXR1bUluZm8yICggY29uc3QgY2hhciAqLCBEYXR1 bUluZm9fdCAqKiApOwpUQm9vbCBMb25nTGF0UHJvakluZm8oIGNvbnN0IGNoYXIgKiwgUHJvaklu Zm9fdCAqLCBQcm9qSW5mb190ICogKTsKaW50IEdlb3N5c0Rlc2NyaXB0aW9uKCBpbnQsIGNvbnN0 IGNoYXIgKiwgY2hhciAqLCBjaGFyICoqLCBjaGFyICoqICk7ClRCb29sIElzUHJvamVjdGFibGUo IGNvbnN0IGNoYXIgKiwgY29uc3QgUHJvakluZm9fdCAqICk7ClRCb29sIFJlcXVpcmVzUHJvaklu Zm8oIGludCApOwpUQm9vbCBJc0NvbmZvcm1hbCggY29uc3QgY2hhciAqICk7CmludCBQcm9qRGVm YXVsdHMoIFByb2pJbmZvX3QgKiwgaW50ICosIGludCAqLCBjaGFyICosIFByb2pJbmZvX3QgKiAp OwpjaGFyICoqIFByb2pSZXBvcnQoIFByb2pJbmZvX3QgKiApOwpUQm9vbCBQcm9qTm9ybWFsaXpl KCBQcm9qSW5mb190ICogKTsKVXNlclByb2pJbmZvX3QgKkZpbmRVc2VyUHJvamVjdGlvbiggY29u c3QgY2hhciAqICk7ClRCb29sIEdldFVzZXJQcm9qZWN0aW9uTmFtZSggUHJvakluZm9fdCAqLCBj aGFyICogKTsKdm9pZCBEZWZpbmVVc2VyUHJvamVjdGlvbiggVXNlclByb2pJbmZvX3QgKiApOwpV c2VyUHJvakluZm9fdCAqKkdldFVzZXJQcm9qZWN0aW9ucyh2b2lkKTsKCnZvaWQgVVRNWm9uZSAo ZG91YmxlLCBkb3VibGUsIGludCAqLCBjaGFyICopOwoKdm9pZCBEZWNUb0RNUyAoZG91YmxlLCBp bnQsIGNoYXIgKik7CmludCBETVNUb0RlYyAoY29uc3QgY2hhciAqLCBkb3VibGUgKik7CnZvaWQg RGVjaW1hbFRvRGVncmVlcyggZG91YmxlLCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCAqLCBpbnQgKiwgaW50ICosCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCAqLCBpbnQsIGNoYXIgKiApOwoKVEJvb2wgUmVhZEFyY0luZm9Qcm9q ZWN0aW9uRmlsZSggY2hhciAqKiwgUHJvakluZm9fdCAqICk7CmNoYXIgKiogV3JpdGVBcmNJbmZv UHJvamVjdGlvbkZpbGUoIFByb2pJbmZvX3QgKiApOwppbnQgVVNHU19BcmNJbmZvX1NQQ1Nab25l KCBUQm9vbCwgaW50ICk7CgoKCgoKVEJvb2wgSW52ZXJzZUFmZmluZSggZG91YmxlLCBkb3VibGUs IGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICBkb3Vi bGUgKiwgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosIGRvdWJsZSAqKTsK dm9pZCBBcHBseUFmZmluZSggZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUs IGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgZG91YmxlICosIGRv dWJsZSAqLCBpbnQgKTsKZG91YmxlIEFmZmluZVhTaXplKCBkb3VibGUsIGRvdWJsZSwgZG91Ymxl LCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICk7CmRvdWJsZSBBZmZpbmVZU2l6ZSggZG91YmxlLCBk b3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSApOwpkb3VibGUgQWZmaW5lUm90 YXRpb24oIGRvdWJsZSxkb3VibGUsZG91YmxlLGRvdWJsZSxkb3VibGUsZG91YmxlICk7CgoKCgoK aW50IERhdHVtU2hpZnQgKCBjaGFyICosIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91Ymxl ICogKTsKCmludCBHb29kZVRyYW5zZm9ybSggUHJvakluZm9fdCAqLCBpbnQsIGRvdWJsZSwgZG91 YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvakluZm9fdCAqLCBkb3Vi bGUgKiwgZG91YmxlICogKTsKCmludCBDYXNzaW5pVHJhbnNmb3JtKCBQcm9qSW5mb190ICosIGlu dCwgZG91YmxlLCBkb3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBy b2pJbmZvX3QgKiwgZG91YmxlICosIGRvdWJsZSAqICk7CgppbnQgUlNPVHJhbnNmb3JtKCBQcm9q SW5mb190ICosIGludCwgZG91YmxlLCBkb3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHJvakluZm9fdCAqLCBkb3VibGUgKiwgZG91YmxlICogKTsKCmludCBLcm92YWtUcmFu c2Zvcm0oIFByb2pJbmZvX3QgKiwgaW50LCBkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQcm9qSW5mb190ICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwoK aW50IFNHRE9UcmFuc2Zvcm0oIFByb2pJbmZvX3QgKiwgaW50LCBkb3VibGUsIGRvdWJsZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvakluZm9fdCAqLCBkb3VibGUgKiwgZG91 YmxlICogKTsKCmludCBMQlNHVHJhbnNmb3JtKCBQcm9qSW5mb190ICosIGludCwgZG91YmxlLCBk b3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2pJbmZvX3QgKiwgZG91 YmxlICosIGRvdWJsZSAqICk7CgppbnQgSVNJTlRyYW5zZm9ybSggUHJvakluZm9fdCAqLCBpbnQs IGRvdWJsZSwgZG91YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9qSW5m b190ICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwoKVEJvb2wgR2VvY29kZWRUb01HUlMoIFByb2pJ bmZvX3QgKiwgZG91YmxlLCBkb3VibGUsIGludCwgY2hhciAqICk7ClRCb29sIE1HUlNUb0dlb2Nv ZGVkKCBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9q SW5mb190ICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwp2b2lkIEVQU0d0b1Byb2pJbmZvKCBjaGFy ICosIFByb2pJbmZvX3QgKik7CiMgMzEwICIuLi8uLi8uLi9saWIvY2NscHJvai5oIgp2b2lkIHBy al9zaW5jb3MgKCBkb3VibGUsIGRvdWJsZSAqLCBkb3VibGUgKiApOwpkb3VibGUgYXNpbnogKCBk b3VibGUgKTsKZG91YmxlIG1zZm56ICggZG91YmxlLCBkb3VibGUsIGRvdWJsZSApOwpkb3VibGUg cXNmbnogKCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICk7CmRvdWJsZSBwaGkxeiAoIGRvdWJsZSwg ZG91YmxlLCBsb25nICogKTsKZG91YmxlIHBoaTJ6ICggZG91YmxlLCBkb3VibGUsIGxvbmcgKiAp Owpkb3VibGUgcGhpM3ogKCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwg bG9uZyAqICk7CmRvdWJsZSBwaGk0eiAoIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwg ZG91YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSwgZG91YmxlLCBkb3VibGUg KiwgZG91YmxlICogKTsKZG91YmxlIHBha2N6ICggZG91YmxlICk7CmRvdWJsZSBwYWtyMmRtICgg ZG91YmxlICk7CmRvdWJsZSB0c2ZueiAoIGRvdWJsZSwgZG91YmxlLCBkb3VibGUgKTsKaW50IHBy al9zaWduICggZG91YmxlICk7CmRvdWJsZSBhZGp1c3RfbG9uICggZG91YmxlICk7CmRvdWJsZSBl MGZuICggZG91YmxlICk7CmRvdWJsZSBlMWZuICggZG91YmxlICk7CmRvdWJsZSBlMmZuICggZG91 YmxlICk7CmRvdWJsZSBlM2ZuICggZG91YmxlICk7CmRvdWJsZSBlNGZuICggZG91YmxlICk7CmRv dWJsZSBtbGZuICggZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUgKTsKaW50 IGNhbGNfdXRtX3pvbmUgKCBkb3VibGUgKTsKIyAzNTYgIi4uLy4uLy4uL2xpYi9jY2xwcm9qLmgi ClRCb29sIENDTFRyYW5zZm9ybVRlc3QoIHZvaWQgKTsKIyAzNjYgIi4uLy4uLy4uL2xpYi9jY2xw cm9qLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBwYng7CiAgICBpbnQgcGJ5OwogICAgZG91 YmxlIHJieFsyMV07CiAgICBkb3VibGUgcmJ5WzIxXTsKICAgIGRvdWJsZSByYWJ4WzNdOwogICAg ZG91YmxlIHJhYnlbM107Cn0gR0VPSW5mb190OwoKCgoKdm9pZCBHQ1BMaXN0IChpbnQsIGludCAq LCBpbnQgKiwgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAgICAgICAgZG91Ymxl ICosIGRvdWJsZSAqLCBkb3VibGUgKiwgaW50LCBkb3VibGUgKiwgZG91YmxlICosIGRvdWJsZSAq ICk7CnZvaWQgR0NQUm9vdE1lYW5TcSAoIEdFT0luZm9fdCAqLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkb3VibGUgKiwgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBkb3VibGUgKiwgZG91YmxlICopOwp2b2lkIEdD UFRyYW5zZm9ybSAoIEdFT0luZm9fdCAqLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICosIGRvdWJs ZSAqKTsKdm9pZCBHQ1BSZWdyZXNzaW9uICggR0VPSW5mb190ICosIGRvdWJsZSAqLCBkb3VibGUg KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqLCBpbnQs IGludCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKiwgZG91YmxlICop Owp2b2lkIEdDUFJlZ3Jlc3Npb24yICggR0VPSW5mb190ICosCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNoYXIgKiwgZG91YmxlICosIGRvdWJsZSAqLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaGFyICosIGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50LCBpbnQgKiwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb3VibGUgKiwgZG91YmxlICopOwp2b2lkIEdDUFJlZ3Jlc3Npb24yV2l0aFdvcnN0UG9pbnQg KCBHRU9JbmZvX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBkb3Vi bGUgKiwgZG91YmxlICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgZG91 YmxlICosIGRvdWJsZSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCAq LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiwg aW50ICosIGRvdWJsZSAqLCBkb3VibGUgKik7CgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGlu dCBSYWRpYWxUZXJtQ291bnQ7CiAgICBkb3VibGUgQ1BJWFs0KjI1Nl07CiAgICBkb3VibGUgQ1BJ WVs0KjI1Nl07CiAgICBkb3VibGUgQ29lZmZYWzQqMjU2ICszXTsKICAgIGRvdWJsZSBDb2VmZllb NCoyNTYgKzNdOwogICAgZG91YmxlIEFmZmluZVhbM107CiAgICBkb3VibGUgQWZmaW5lWVszXTsK ICAgIGludCBSYW5rT2ZBOwogICAgZG91YmxlIENvbmROdW1PZkE7Cn0gVFBTSW5mb190OwoKdm9p ZCBUUFNDYWxjdWxhdGUgKFRQU0luZm9fdCAqdHBzLCBpbnQgbmNwLCBkb3VibGUgKnJpeCwgZG91 YmxlICpyaXksCiAgICAgICAgICAgICAgICAgICBkb3VibGUgKnJvdSwgZG91YmxlICpyb3YpOwoK dm9pZCBUUFNUcmFuc2Zvcm0gKFRQU0luZm9fdCAqdHBzLCBkb3VibGUgcml4LCBkb3VibGUgcml5 LAogICAgICAgICAgICAgICAgICAgZG91YmxlICpyb3UsIGRvdWJsZSAqcm92KTsKCnZvaWQgVFBT Uk1TRXJyb3IgKFRQU0luZm9fdCAqdHBzLCBpbnQgbmNoa3AsCiAgICAgICAgICAgICAgICAgIGRv dWJsZSAqY2hrcGl4LCBkb3VibGUgKmNoa3BpeSwKICAgICAgICAgICAgICAgICAgZG91YmxlICpj aGtwb3UsIGRvdWJsZSAqY2hrcG92LAogICAgICAgICAgICAgICAgICBkb3VibGUgKmF2eCwgZG91 YmxlICphdnksIGRvdWJsZSAqcm1zeCwgZG91YmxlICpybXN5KTsKCgoKCgp0eXBlZGVmIHN0cnVj dCB7CiAgICBkb3VibGUgZGZYT2ZmLCBkZllPZmYsIGRmWFNpemUsIGRmWVNpemU7CiAgICBUQm9v bCBiUmVwcm9qZWN0OwogICAgUHJvakluZm9fdCBzVmVjUHJvajsKICAgIFByb2pJbmZvX3Qgc0lt Z1Byb2o7Cn0gVlRyYW5JbmZvOwoKVEJvb2wgVlRyYW5TZXR1cCggUHJvakluZm9fdCAqIHBzSW1n UHJvaiwgUHJvakluZm9fdCAqIHBzVmVjUHJvaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg IFZUcmFuSW5mbyAqIHBzVlRyYW4gKTsKCnZvaWQgVlRyYW5Ub1BpeGVsKCB2b2lkICosIGRvdWJs ZSwgZG91YmxlLCBkb3VibGUgKiwgZG91YmxlICogKTsKdm9pZCBWVHJhbkZyb21QaXhlbCggdm9p ZCAqLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICosIGRvdWJsZSAqICk7CgoKCgp2b2lkIGRkY29t cGMoaW50LCBkb3VibGUgKiwgaW50ICosIGludCAqKTsKdm9pZCBkc29sdmMoaW50LCBkb3VibGUg KiwgaW50ICosIGRvdWJsZSAqKTsKdm9pZCBkcXJsc2MoZG91YmxlICosIGludCwgaW50LCBkb3Vi bGUsIGludCAqLCBkb3VibGUgKiwgZG91YmxlICosCiAgICAgICAgICAgICAgICAgICAgICBkb3Vi bGUgKiwgaW50ICosIGRvdWJsZSAqLCBkb3VibGUgKiwgaW50LCBpbnQgKik7CiMgNDYxICIuLi8u Li8uLi9saWIvY2NscHJvai5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IG5UeXBlOwogIFRCb29s IGJWYWxpZDsKCiAgdW5pb24gewogICAgR0VPSW5mb190ICpwc0dFTzsKICAgIFRQU0luZm9fdCAq cHNUUFM7CgogICAgdm9pZCAqcHNSVENTOwogICAgdm9pZCAqcHNTUklUOwoKICB9IHU7Cn0gVFJO SW5mb190OwoKClRSTkluZm9fdCAqIFRSTkFsbG9jYXRlKCBpbnQgKTsKdm9pZCBUUk5EZWFsbG9j YXRlKCBUUk5JbmZvX3QgKiApOwp2b2lkIFRSTkNhbGN1bGF0ZSggVFJOSW5mb190ICosIGludCwg ZG91YmxlICosIGRvdWJsZSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg KiwgZG91YmxlICosIHZvaWQgKiApOwp2b2lkIFRSTkNhbGN1bGF0ZTNEKCBUUk5JbmZvX3QgKiwg aW50LCBkb3VibGUgKiwgZG91YmxlICosIGRvdWJsZSAqLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosIHZvaWQgKiApOwpUQm9vbCBU Uk5UcmFuc2Zvcm0oIFRSTkluZm9fdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICosIGRv dWJsZSAqKTsKVEJvb2wgVFJOVHJhbnNmb3JtM0QoIFRSTkluZm9fdCAqLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKik7CnZvaWQgVFJO Uk1TRXJyb3IoIFRSTkluZm9fdCAqLCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqICk7Cgp2b2lkIFRSTlJNU0Vycm9yM0QoIFRS TkluZm9fdCAqLCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKiwg ZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb3VibGUgKiwgZG91YmxlICogKTsKCmRvdWJsZSBQQUsyUENJKCBkb3Vi bGUgZGVnLCBpbnQgZnVuY3Rpb24gKTsKCn0KIyAzNDcgIi4uLy4uLy4uL2xpYi9nZGIuaCIgMgoK CmV4dGVybiAiQyIgewojIDM4NSAiLi4vLi4vLi4vbGliL2dkYi5oIgp0eXBlZGVmIGludDMyIEdE QlNoYXBlSWQ7CiMgMzk0ICIuLi8uLi8uLi9saWIvZ2RiLmgiCnR5cGVkZWYgZW51bSBHREJMYXll clR5cGVfZQp7CiAgICBHREJMVW5rbm93bj0wLAogICAgR0RCTFRvcG9BcmMsCiAgICBHREJMVG9w b0FyZWEsCiAgICBHREJMVG9wb05vZGUsCiAgICBHREJMV2hvbGVQb2x5Z29uLAogICAgR0RCTFBv aW50LAogICAgR0RCTExpbmUsCiAgICBHREJMVGFibGUKfSBHREJMYXllclR5cGU7CgoKCgoKc3Ry dWN0IEdEQkxheWVyX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICBjaGFyIFVuaXRzWzIwXTsKCgog IGludCBOU3RydWN0dXJlOwogIGludCBOVmVydGV4OwogIGRvdWJsZSBYU3RhcnQ7CiAgZG91Ymxl IFlTdGFydDsKICBkb3VibGUgWEVuZDsKICBkb3VibGUgWUVuZDsKICBkb3VibGUgc2NhbGU7CgoK ICBGSUxFICpmcDsKICBpbnQgc2VnOwogIGludCBsYXN0X3N0cnVjdCwKICAgICAgICAgICAgbmV4 dF9zdHJ1Y3QsCgogICAgICAgICAgICBidWZmZXJbMTI4XTsKICBsb25nIGxhc3RfYmxvY2s7Cgog ICAgc3RydWN0IEdEQkxheWVyX3QgKmhMYXllcjsKfSBWSW5mb190OwoKCgoKCnR5cGVkZWYgc3Ry dWN0IHsKICBpbnQgYWNjZXNzOwogIEZJTEUgKmZwOwogIGludCBzZWdudW07CiAgRklMRSAqdGV4 dF9mcDsKCgogIGNoYXIgKmNiX2J1ZmZlcjsKICBpbnQgY2hhcl9vZmZzZXQ7CiAgaW50IHNlZ19v ZmZzZXQ7Cn0gVEluZm9fdDsKIyA0NjYgIi4uLy4uLy4uL2xpYi9nZGIuaCIKdHlwZWRlZiBzdHJ1 Y3QgewogICAgaW50IFNsYW50UmFuZ2VGc3RQaXhlbDsKICAgIGludCBTbGFudFJhbmdlTGFzdFBp eGVsOwogICAgZmxvYXQgRnN0UGl4ZWxMYXQ7CiAgICBmbG9hdCBNaWRQaXhlbExhdDsKICAgIGZs b2F0IExzdFBpeGVsTGF0OwogICAgZmxvYXQgRnN0UGl4ZWxMb25nOwogICAgZmxvYXQgTWlkUGl4 ZWxMb25nOwogICAgZmxvYXQgTHN0UGl4ZWxMb25nOwp9IEFuY2lsbGFyeURhdGFfdDsKCnR5cGVk ZWYgc3RydWN0CnsKICAgIGNoYXIgSWRlbnRpZmllclsxN107CiAgICBjaGFyIEZhY2lsaXR5WzE3 XTsKICAgIGNoYXIgRWxsaXBzb2lkWzE3XTsKICAgIGRvdWJsZSBFcXVhdG9yaWFsUmFkaXVzOwog ICAgZG91YmxlIFBvbGFyUmFkaXVzOwogICAgZG91YmxlIEluY2lkZW5jZUFuZ2xlOwogICAgZG91 YmxlIFBpeGVsU3BhY2luZzsKICAgIGRvdWJsZSBMaW5lU3BhY2luZzsKICAgIGRvdWJsZSBDbG9j a0FuZ2xlOwoKICAgIGludCBOdW1iZXJCbG9ja0RhdGE7CiAgICBpbnQzMiBOdW1iZXJEYXRhOwoK ICAgIEFuY2lsbGFyeURhdGFfdCAqTGluZTsKfSBSYWRhclNlZ190OwojIDUwMiAiLi4vLi4vLi4v bGliL2dkYi5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgICBkb3VibGUgQ2hhbmdlSW5BdHRpdHVkZTsK ICAgIGRvdWJsZSBDaGFuZ2VFYXJ0aFNhdGVsbGl0ZURpc3Q7Cgp9IEF0dGl0dWRlTGluZV90OwoK dHlwZWRlZiBzdHJ1Y3QKewogICAgZG91YmxlIFJvbGw7CiAgICBkb3VibGUgUGl0Y2g7CiAgICBk b3VibGUgWWF3OwogICAgaW50MzIgTnVtYmVyT2ZMaW5lOwoKICAgIGludCBOdW1iZXJCbG9ja0Rh dGE7CiAgICBBdHRpdHVkZUxpbmVfdCAqTGluZTsKCn0gQXR0aXR1ZGVTZWdfdDsKCgoKCgoKCnR5 cGVkZWYgc3RydWN0CnsKCiAgICBpbnQgblNjYW5MaW5lTnVtOwogICAgaW50IG5TdGFydFNjYW5U aW1lR01UTXNlYzsKICAgIHVuc2lnbmVkIGNoYXIgYWJ5U2NhbkxpbmVRdWFsaXR5WzEwXTsKICAg IHVuc2lnbmVkIGNoYXIgYWFieUJhZEJhbmRJbmRpY2F0b3JzWzVdWzJdOwogICAgdW5zaWduZWQg Y2hhciBhYnlTYXRlbGxpdGVUaW1lQ29kZVs4XTsKCgogICAgaW50IGFuVGFyZ2V0VGVtcERhdGFb M107CiAgICBpbnQgYW5UYXJnZXRTY2FuRGF0YVszXTsKICAgIGludCBhblNwYWNlU2NhbkRhdGFb NV07Cgp9IEF2aHJyTGluZV90OwoKdHlwZWRlZiBzdHJ1Y3QKewoKICAgIGNoYXIgc3pJbWFnZUZv cm1hdFs1MF07CiAgICBpbnQgbkltYWdlWFNpemU7CiAgICBpbnQgbkltYWdlWVNpemU7CiAgICBU Qm9vbCBiSXNBc2NlbmRpbmc7CiAgICBUQm9vbCBiSXNJbWFnZVJvdGF0ZWQ7CgoKICAgIGNoYXIg c3pPcmJpdE51bWJlclsxN107CiAgICBjaGFyIHN6QXNjZW5kRGVzY2VuZE5vZGVGbGFnWzE3XTsK ICAgIGNoYXIgc3pFcG9jaFllYXJBbmREYXlbMTddOwogICAgY2hhciBzekVwb2NoVGltZVdpdGhp bkRheVsxN107CiAgICBjaGFyIHN6VGltZURpZmZTdGF0aW9uU2F0ZWxsaXRlTXNlY1sxN107CiAg ICBjaGFyIHN6QWN0dWFsU2Vuc29yU2NhblJhdGVbMTddOwogICAgY2hhciBzeklkZW50T2ZPcmJp dEluZm9Tb3VyY2VbMTddOwogICAgY2hhciBzekludGVybmF0aW9uYWxEZXNpZ25hdG9yWzE3XTsK ICAgIGNoYXIgc3pPcmJpdE51bUF0RXBvY2hbMTddOwogICAgY2hhciBzekp1bGlhbkRheUFzY2Vu ZE5vZGVbMTddOwogICAgY2hhciBzekVwb2NoWWVhclsxN107CiAgICBjaGFyIHN6RXBvY2hNb250 aFsxN107CiAgICBjaGFyIHN6RXBvY2hEYXlbMTddOwogICAgY2hhciBzekVwb2NoSG91clsxN107 CiAgICBjaGFyIHN6RXBvY2hNaW51dGVbMTddOwogICAgY2hhciBzekVwb2NoU2Vjb25kWzE3XTsK ICAgIGNoYXIgc3pQb2ludE9mQXJpZXNEZWdyZWVzWzE3XTsKICAgIGNoYXIgc3pBbm9tYWxpc3Rp Y1BlcmlvZFsxN107CiAgICBjaGFyIHN6Tm9kYWxQZXJpb2RbMTddOwogICAgY2hhciBzekVjY2Vu dHJpY2l0eVsxN107CiAgICBjaGFyIHN6QXJndW1lbnRPZlBlcmlnZWVbMTddOwogICAgY2hhciBz elJBQU5bMTddOwogICAgY2hhciBzekluY2xpbmF0aW9uWzE3XTsKICAgIGNoYXIgc3pNZWFuQW5v bWFseVsxN107CiAgICBjaGFyIHN6U2VtaU1ham9yQXhpc1sxN107CgoKCgogICAgaW50IG5SZWNv cmRTaXplOwogICAgaW50IG5CbG9ja1NpemU7CiAgICBpbnQgbk51bVJlY29yZHNQZXJCbG9jazsK ICAgIGludCBuTnVtQmxvY2tzOwogICAgaW50IG5OdW1TY2FubGluZVJlY29yZHM7CgoKICAgIEF2 aHJyTGluZV90ICpMaW5lOwoKfSBBdmhyclNlZ190OwoKCgoKCnR5cGVkZWYgdW5pb24KewogICBB dHRpdHVkZVNlZ190ICpBdHRpdHVkZVNlZzsKICAgUmFkYXJTZWdfdCAqUmFkYXJTZWc7CiAgIEF2 aHJyU2VnX3QgKkF2aHJyU2VnOwoKfSBPcmJpdERhdGFfdDsKCnR5cGVkZWYgZW51bSB7IE9yYk5v bmUsIE9yYkF0dGl0dWRlLCBPcmJMYXRMb25nLCBPcmJBdmhyciB9IE9yYml0VHlwZTsKdHlwZWRl ZiBzdHJ1Y3QKewogICAgY2hhciBTYXRlbGxpdGVEZXNjWzMzXTsKICAgIGNoYXIgU2NlbmVJRFsz M107CgogICAgY2hhciBTYXRlbGxpdGVTZW5zb3JbMTddOwogICAgY2hhciBTZW5zb3JOb1szXTsK ICAgIGNoYXIgRGF0ZUltYWdlVGFrZW5bMjNdOwogICAgVEJvb2wgU3VwU2VnRXhpc3Q7CiAgICBk b3VibGUgRmllbGRPZlZpZXc7CiAgICBkb3VibGUgVmlld0FuZ2xlOwogICAgZG91YmxlIE51bUNv bENlbnRyZTsKICAgIGRvdWJsZSBSYWRpYWxTcGVlZDsKICAgIGRvdWJsZSBFY2NlbnRyaWNpdHk7 CiAgICBkb3VibGUgSGVpZ2h0OwogICAgZG91YmxlIEluY2xpbmF0aW9uOwogICAgZG91YmxlIFRp bWVJbnRlcnZhbDsKICAgIGRvdWJsZSBOdW1MaW5lQ2VudHJlOwogICAgZG91YmxlIExvbmdDZW50 cmU7CiAgICBkb3VibGUgQW5ndWxhclNwZDsKICAgIGRvdWJsZSBBc2NOb2RlTG9uZzsKICAgIGRv dWJsZSBBcmdQZXJpZ2VlOwogICAgZG91YmxlIExhdENlbnRyZTsKICAgIGRvdWJsZSBFYXJ0aFNh dGVsbGl0ZURpc3Q7CiAgICBkb3VibGUgTm9taW5hbFBpdGNoOwogICAgZG91YmxlIFRpbWVBdENl bnRyZTsKICAgIGRvdWJsZSBTYXRlbGxpdGVBcmc7CgogICAgZG91YmxlIFhDZW50cmU7CiAgICBk b3VibGUgWUNlbnRyZTsKICAgIGRvdWJsZSBVdG1ZQ2VudHJlOwogICAgZG91YmxlIFV0bVhDZW50 cmU7CiAgICBkb3VibGUgUGl4ZWxSZXM7CiAgICBkb3VibGUgTGluZVJlczsKICAgIFRCb29sIENv cm5lckF2YWlsOwogICAgY2hhciBNYXBVbml0WzE3XTsKICAgIGRvdWJsZSBYVUw7CiAgICBkb3Vi bGUgWVVMOwogICAgZG91YmxlIFhVUjsKICAgIGRvdWJsZSBZVVI7CiAgICBkb3VibGUgWExSOwog ICAgZG91YmxlIFlMUjsKICAgIGRvdWJsZSBYTEw7CiAgICBkb3VibGUgWUxMOwogICAgZG91Ymxl IFV0bVlVTDsKICAgIGRvdWJsZSBVdG1YVUw7CiAgICBkb3VibGUgVXRtWVVSOwogICAgZG91Ymxl IFV0bVhVUjsKICAgIGRvdWJsZSBVdG1ZTFI7CiAgICBkb3VibGUgVXRtWExSOwogICAgZG91Ymxl IFV0bVlMTDsKICAgIGRvdWJsZSBVdG1YTEw7CgogICAgZG91YmxlIExhdENlbnRyZURlZzsKICAg IGRvdWJsZSBMb25nQ2VudHJlRGVnOwogICAgZG91YmxlIExhdFVMOwogICAgZG91YmxlIExvbmdV TDsKICAgIGRvdWJsZSBMYXRVUjsKICAgIGRvdWJsZSBMb25nVVI7CiAgICBkb3VibGUgTGF0TFI7 CiAgICBkb3VibGUgTG9uZ0xSOwogICAgZG91YmxlIExhdExMOwogICAgZG91YmxlIExvbmdMTDsK CiAgICBkb3VibGUgU1BDb2VmZjFCWzM5XTsKICAgIGludCBTUENvZWZmU2dbNF07CgogICAgaW50 IEltYWdlUmVjb3JkTGVuZ3RoOwogICAgaW50IE51bWJlckltYWdlTGluZTsKICAgIGludCBOdW1i ZXJCeXRlUGVyUGl4ZWw7CiAgICBpbnQgTnVtYmVyU2FtcGxlUGVyTGluZTsKICAgIGludCBOdW1i ZXJQcmVmaXhCeXRlczsKICAgIGludCBOdW1iZXJTdWZmaXhCeXRlczsKICAgIGludCBTUE5Db2Vm ZjsKCiAgICBPcmJpdFR5cGUgVHlwZTsKICAgIE9yYml0RGF0YV90ICpPcmJpdExpbmU7Cgp9IEVw aGVtZXJpc1NlZ190OwojIDY5OCAiLi4vLi4vLi4vbGliL2dkYi5oIgp0eXBlZGVmIHN0cnVjdCB7 CiAgICAgICAgZG91YmxlIE4weDI7CiAgICAgICAgZG91YmxlIGFhOwogICAgICAgIGRvdWJsZSBT bUFMUEhBOwogICAgICAgIGRvdWJsZSBiYjsKICAgICAgICBkb3VibGUgQzA7CiAgICAgICAgZG91 YmxlIGNjOwogICAgICAgIGRvdWJsZSBDT1NfS0hJOwogICAgICAgIGRvdWJsZSBERUxUQV9HQU1N QTsKICAgICAgICBkb3VibGUgR0FNTUE7CiAgICAgICAgZG91YmxlIEtfMTsKICAgICAgICBkb3Vi bGUgTDA7CiAgICAgICAgZG91YmxlIFA7CiAgICAgICAgZG91YmxlIFE7CiAgICAgICAgZG91Ymxl IFRBVTsKICAgICAgICBkb3VibGUgVEhFVEE7CiAgICAgICAgZG91YmxlIFRIRVRBX1NFQzsKICAg ICAgICBkb3VibGUgWDA7CiAgICAgICAgZG91YmxlIFkwOwogICAgICAgIGRvdWJsZSBkZWxoOwog ICAgICAgIGRvdWJsZSBDT0VGX1kyOwogICAgICAgIGludCBuR0NQQ291bnQ7CiAgICAgICAgaW50 IG5FcGhlbWVyaXNTZWdObzsKICAgICAgICBpbnQgbkF0dGl0dWRlRmxhZzsKICAgICAgICBjaGFy IEdDUFVuaXRbMTddOwogICAgICAgIGNoYXIgR0NQTWVhbkh0RmxhZzsKICAgICAgICBkb3VibGUg ZGZHQ1BNZWFuSHQ7CiAgICAgICAgZG91YmxlIGRmR0NQTWluSHQ7CiAgICAgICAgZG91YmxlIGRm R0NQTWF4SHQ7CiAgICAgICAgaW50IG5HQ1BJZHNbMjU2XTsKICAgICAgICBpbnQgblBpeGVsWzI1 Nl0sbkxpbmVbMjU2XTsKICAgICAgICBkb3VibGUgZGZFbGV2WzI1Nl07CiAgICAgICAgZG91Ymxl ICpRZGVsdGFyOwogICAgICAgIGRvdWJsZSAqSGRlbHRhdDsKICAgICAgICBjaGFyIFNlbnNvclsx Nl07CiAgICAgICAgaW50IG5TZW5zb3I7CiAgICAgICAgRXBoZW1lcmlzU2VnX3QgKk9yYml0UHRy OwogICAgICAgIFByb2pJbmZvX3QgKnNHZW9UcmFuc2Zvcm07CiAgICAgICAgVEJvb2wgUmF3VG9H ZW87Cn0gU1JJVEluZm9fdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIFRCb29sIGJOSVRGUlBD OwogICAgaW50IG5Db2VmZjsKICAgIGludCBuUGl4ZWxzLCBuTGluZXM7CiAgICBkb3VibGUgKnBh ZGZQaXhlbE51bTsKICAgIGRvdWJsZSAqcGFkZlBpeGVsRGVuOwogICAgZG91YmxlICpwYWRmTGlu ZU51bTsKICAgIGRvdWJsZSAqcGFkZkxpbmVEZW47CiAgICBkb3VibGUgZGZYT2ZmLCBkZlhTY2Fs ZTsKICAgIGRvdWJsZSBkZllPZmYsIGRmWVNjYWxlOwogICAgZG91YmxlIGRmWk9mZiwgZGZaU2Nh bGU7CiAgICBkb3VibGUgZGZQT2ZmLCBkZlBTY2FsZTsKICAgIGRvdWJsZSBkZkxPZmYsIGRmTFNj YWxlOwogICAgZG91YmxlIGRmWEFkanVzdFszXTsKICAgIGRvdWJsZSBkZllBZGp1c3RbM107CiAg ICBjaGFyICptYXB1bml0OwogICAgUHJvakluZm9fdCAqc1Byb2plY3Rpb247Cn0gUkZJbmZvX3Q7 CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgblBpeGVsczsKICAgIGludCBuTGluZXM7CiAg ICBkb3VibGUgZGZmb2NhbDsKICAgIGRvdWJsZSBhZGZYWVpbM107CiAgICBkb3VibGUgYWRmT1BL WzNdOwogICAgZG91YmxlIGFkZngzZFszXTsKICAgIGRvdWJsZSBhZGZ5M2RbM107CiAgICBkb3Vi bGUgYWRmejNkWzNdOwogICAgZG91YmxlIGFkZnBpeDJtbVs0XTsKICAgIGRvdWJsZSBhZGZsaW4y bW1bNF07CiAgICBkb3VibGUgYWRmbW0ycGl4WzRdOwogICAgZG91YmxlIGFkZm1tMmxpbls0XTsK ICAgIGRvdWJsZSBhZGZQcm9mZlsyXTsKICAgIGRvdWJsZSBhZGZSYWRpc3RbOF07CiAgICBkb3Vi bGUgYWRmRGVjZW50WzRdOwogICAgZG91YmxlIGRmUmFkaXVzOwogICAgZG91YmxlIGRmcmZmOwog ICAgZG91YmxlIGRmR0NQTWluSHQ7CiAgICBkb3VibGUgZGZHQ1BNYXhIdDsKICAgIFRCb29sIGJQ cmluT2ZmOwogICAgVEJvb2wgYkRpc3RvcnQ7CiAgICBUQm9vbCBiRGVjZW50ZXI7CiAgICBUQm9v bCBiUmFkaXVzOwogICAgY2hhciAqdXRtdW5pdDsKICAgIGNoYXIgKm1hcHVuaXQ7CiAgICBQcm9q SW5mb190ICpzUHJvamVjdGlvbjsKfSBBUEluZm9fdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAg IEZJTEUgKmZwX2luOwogICAgRklMRSAqZnBfb3V0OwoKICAgIGNoYXIgKnBzekZpbGVPcHRpb25z OwoKICAgIGNoYXIgc3pGaWxlVHlwZVsxNl07CgogICAgaW50ICpwYW5JVzsKCiAgICBpbnQgKmFw YW5JQ1s0XTsKICAgIGludCBwYW5Db3VudElDWzRdOwoKICAgIGludCAqcGFuR0VPOwogICAgaW50 IG5Db3VudEdFTzsKCiAgICBpbnQgKnBhbkxVVDsKICAgIGludCBuQ291bnRMVVQ7CgogICAgaW50 ICpwYW5CSVQ7CiAgICBpbnQgbkNvdW50QklUOwoKICAgIGludCAqcGFuVkVDOwogICAgaW50IG5D b3VudFZFQzsKCiAgICBpbnQgKnBhbk9SQjsKICAgIGludCBuQ291bnRPUkI7CgogICAgaW50ICpw YW5TSUc7CiAgICBpbnQgbkNvdW50U0lHOwoKICAgIGludCAqcGFuVEVYOwogICAgaW50IG5Db3Vu dFRFWDsKCiAgICBpbnQgKnBhblBDVDsKICAgIGludCBuQ291bnRQQ1Q7CgogICAgaW50ICpwYW5C SU47CiAgICBpbnQgbkNvdW50QklOOwoKICAgIGludCAqcGFuR0NQOwogICAgaW50IG5Db3VudEdD UDsKICAgIGludCBuT3V0cHV0Rm9ybWF0VHlwZTsKICAgIFRCb29sIGJDbGlwVmVjdG9yczsKICAg IFRCb29sIGJDbGlwR0NQczsKCn0gRmlsZVRyYW5zZmVyX3Q7CgoKCgoKdm9pZCBDbGVhckZpbGVU cmFuc2ZlclN0cnVjdChGaWxlVHJhbnNmZXJfdCAqcHNGVCk7Cgp2b2lkIEFsbG9jYXRlQ2hhbm5l bExpc3QoaW50ICpwYW5Db3VudElDLGludCAqYXBhbklDWzRdLAogICAgICAgICAgICAgICAgICAg ICAgaW50ICpuTnVtQ2hhbixpbnQgKipwYW5EQklDLGludCAqKnBhbkRCT0MpOwoKdm9pZCBEZWFs bG9jYXRlQ2hhbm5lbExpc3QoaW50ICoqcGFuREJJQyxpbnQgKipwYW5EQk9DKTsKCgp2b2lkIFRy YW5zZmVySW1hZ2VyeShGSUxFICpmcF9pbixGSUxFICpmcF9vdXQsaW50IG5PdXRwdXRGb3JtYXRU eXBlLAogICAgICAgICAgICAgICAgICAgICBpbnQgbkNvdW50SUMsaW50ICpwYW5JQyxpbnQgKnBh bklXLGludCAqcGFuREJPQywKICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHN6RGVzY3JpcHRp b24sCiAgICAgICAgICAgICAgICAgICAgIFBDSUNvdW50ZXIgcGZuQ291bnRlciApOwoKdm9pZCBU cmFuc2ZlckJpdE1hcHMoRklMRSogZnBfaW4sRklMRSogZnBfb3V0LAogICAgICAgICAgICAgICAg ICAgICBpbnQgbk91dHB1dEZvcm1hdFR5cGUsaW50IG5Db3VudEJJVCwKICAgICAgICAgICAgICAg ICAgICAgaW50ICpwYW5CSVQsaW50ICpwYW5JVywKICAgICAgICAgICAgICAgICAgICAgY2hhciAq cHN6RGVzY3JpcHRpb24sUENJQ291bnRlciBwZm5Db3VudGVyKTsKCnZvaWQgVHJhbnNmZXJWZWN0 b3JzKEZJTEUgKmZwX2luLEZJTEUgKmZwX291dCxpbnQgbk91dHB1dEZvcm1hdFR5cGUsCiAgICAg ICAgICAgICAgICAgICAgIGludCBuQ291bnRWRUMsaW50ICpwYW5WRUMsaW50ICpwYW5JVyxUQm9v bCBiQ2xpcCwKICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHN6RGVzY3JpcHRpb24sCiAgICAg ICAgICAgICAgICAgICAgIFBDSUNvdW50ZXIgcGZuQ291bnRlcik7Cgp2b2lkIFRyYW5zZmVyR0NQ cyhGSUxFICpmcF9pbixGSUxFICpmcF9vdXQsaW50IG5PdXRwdXRGb3JtYXRUeXBlLAogICAgICAg ICAgICAgICAgICBpbnQgbkNvdW50R0NQLGludCAqcGFuR0NQLGludCAqcGFuSVcsCiAgICAgICAg ICAgICAgICAgIGNoYXIgKnBzekRlc2NyaXB0aW9uKTsKCnZvaWQgVHJhbnNmZXJURVhzKEZJTEUg KmZwX2luLEZJTEUgKmZwX291dCxpbnQgbk91dHB1dEZvcm1hdFR5cGUsCiAgICAgICAgICAgICAg ICAgIGludCBuQ291bnRURVgsaW50ICpwYW5URVgsaW50ICpwYW5JVywKICAgICAgICAgICAgICAg ICAgY2hhciAqcHN6RGVzY3JpcHRpb24pOwoKdm9pZCBUcmFuc2ZlckJJTnMoRklMRSAqZnBfaW4s RklMRSAqZnBfb3V0LGludCBuT3V0cHV0Rm9ybWF0VHlwZSwKICAgICAgICAgICAgICAgICAgaW50 IG5Db3VudEJJTixpbnQgKnBhbkJJTixpbnQgKnBhbklXLAogICAgICAgICAgICAgICAgICBjaGFy ICpwc3pEZXNjcmlwdGlvbik7Cgp2b2lkIFRyYW5zZmVyUENUcyhGSUxFICpmcF9pbixGSUxFICpm cF9vdXQsaW50IG5PdXRwdXRGb3JtYXRUeXBlLAogICAgICAgICAgICAgICAgICBpbnQgbkNvdW50 UENULGludCAqcGFuUENULAogICAgICAgICAgICAgICAgICBjaGFyICpwc3pEZXNjcmlwdGlvbik7 Cgp2b2lkIFRyYW5zZmVyTFVUcyhGSUxFICpmcF9pbixGSUxFICpmcF9vdXQsaW50IG5PdXRwdXRG b3JtYXRUeXBlLAogICAgICAgICAgICAgICAgICBpbnQgbkNvdW50TFVULGludCAqcGFuTFVULAog ICAgICAgICAgICAgICAgICBjaGFyICpwc3pEZXNjcmlwdGlvbik7Cgp2b2lkIFRyYW5zZmVyU0lH cyhGSUxFICpmcF9pbixGSUxFICpmcF9vdXQsaW50IG5PdXRwdXRGb3JtYXRUeXBlLAogICAgICAg ICAgICAgICAgICBpbnQgbkNvdW50U0lHLGludCAqcGFuU0lHLGludCAqcGFuSVcsCiAgICAgICAg ICAgICAgICAgIGNoYXIgKnBzekRlc2NyaXB0aW9uKTsKCnZvaWQgVHJhbnNmZXJPUkJzKEZJTEUg KmZwX2luLEZJTEUgKmZwX291dCxpbnQgbk91dHB1dEZvcm1hdFR5cGUsCiAgICAgICAgICAgICAg ICAgIGludCBuQ291bnRPUkIsaW50ICpwYW5PUkIsaW50ICpwYW5JVywKICAgICAgICAgICAgICAg ICAgY2hhciAqcHN6RGVzY3JpcHRpb24pOwoKdm9pZCBVcGRhdGVDaGFubmVsSGlzdG9yeShGSUxF ICpmcF9pbixGSUxFICpmcF9vdXQsaW50IG5Db3VudElDLAogICAgICAgICAgICAgICAgICAgICAg ICAgIGludCAqcGFuSUMsaW50ICpwYW5EQk9DLGNoYXIgKnBzekRlc2NyaXB0aW9uKTsKCnZvaWQg VXBkYXRlU2VnbWVudEhpc3RvcnkoRklMRSAqZnBfaW4sRklMRSAqZnBfb3V0LGludCBuQ291bnQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpwYW5JblNlZyxpbnQgKnBhbk91dFNlZyxj aGFyICpwc3pEZXNjcmlwdGlvbik7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBUeXBlOwog IGNoYXIgKk5hbWU7CiAgdW5zaWduZWQgY2hhciAqRGF0YUNhY2hlOwogIGludCBDYWNoZVNpemU7 CiAgY2hhciAqKkRpckVudHJ5OwogIGludCBEaXJFbnRyaWVzOwogIEZJTEUgKmZwOwogIGludCBm cFByaXZhdGU7Cn0gR0RCVGVzdEluZm9fdDsKCnR5cGVkZWYgR0RCVGVzdEluZm9fdCBHREJUZXN0 SW5mbzsKCnR5cGVkZWYgc3RydWN0CnsKICAgIGRvdWJsZSB4OwogICAgZG91YmxlIHk7Cn0gR0RC VmVydGV4MkQ7CgoKZXh0ZXJuIEdEQlZlcnRleCBnc0dEQlZlcnRleE1pbjsKZXh0ZXJuIEdEQlZl cnRleCBnc0dEQlZlcnRleE1heDsKZXh0ZXJuIEdEQlZlcnRleCBnc0dEQlZlcnRleFplcm87CgoK dHlwZWRlZiB1aW50MzIgR0RCRmxhZ3M7CnR5cGVkZWYgdWludDMyIEdEQkhpbnRzOwoKCgoKCgp0 eXBlZGVmIHVuaW9uCnsKICBmbG9hdCBmRmxvYXQ7CiAgZG91YmxlIGREb3VibGU7CiAgY2hhciAq cHN6U3RyaW5nOwogIGludDMyIG5JbnRlZ2VyOwogIGludDMyICpwYW5JbnRzOwp9IEdEQkZpZWxk LCAqR0RCUmVjb3JkOwoKdHlwZWRlZiBpbnQgR0RCRmllbGRUeXBlOwojIDk2NSAiLi4vLi4vLi4v bGliL2dkYi5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgICBjaGFyICpwc3pOYW1lOwogICAgY2hhciAq cHN6RGVzYzsKICAgIEdEQkZpZWxkVHlwZSBlVHlwZTsKICAgIEdEQkZpZWxkIHVEZWZhdWx0Owog ICAgY2hhciAqcHN6Rm9ybWF0Owp9IEdEQkRlZm47CgoKCgoKdHlwZWRlZiBpbnQgR0RCQW5nbGVV bml0OwojIDk5MCAiLi4vLi4vLi4vbGliL2dkYi5oIgpzdHJ1Y3QgR0RCR3JvdXBJbmRleF90Owpz dHJ1Y3QgR0RCSW5mb19zOwpzdHJ1Y3QgR0RCUVQ7CnN0cnVjdCBHREJUb3BvSW5mb190OwoKc3Ry dWN0IEdEQkxheWVyX3QKewogICAgc3RydWN0IEdEQkluZm9fcyAqcHNNZXRob2RzOwogICAgdm9p ZCAqcE5hdGl2ZUluZm87CiAgICBGSUxFICpmcDsKICAgIGludCBuU2VnbWVudDsKICAgIGNoYXIg KnBzek5hbWU7CiAgICBjaGFyICpwc3pEZXNjOwoKCgogICAgR0RCRmxhZ3MgZkZsYWdzOwoKCgog ICAgaW50IG5GaWVsZHM7CiAgICBHREJEZWZuICpwYXNEZWZuOwoKCgogICAgQ0NISGFuZGxlIGhN b2RDYWNoZTsKICAgIENDSEhhbmRsZSBoUmVhZENhY2hlOwogICAgQ0NISGFuZGxlIGhEZWxldGVk Q2FjaGU7CiAgICBpbnQgbk1vZENhY2hlT3B0aW9uczsKICAgIGludCBuUmVhZENhY2hlT3B0aW9u czsKICAgIGludCBuUmVhZENhY2hlU2l6ZTsKICAgIGludCBuTW9kQ2FjaGVTaXplOwoKCgogICAg VEJvb2wgYk5vQ2FjaGU7CiAgICBUQm9vbCBiMkQ7CgoKCiAgICBUQm9vbCBiRXh0ZW50c0RpcnR5 OwogICAgR0RCVmVydGV4IHNNaW47CiAgICBHREJWZXJ0ZXggc01heDsKCgoKICAgIGludCBpUmVw Q29kZUZpZWxkOwogICAgaW50IGlHcm91cElkRmllbGQ7CiAgICBpbnQgaUNoaWxkTGlzdEZpZWxk OwogICAgaW50IGlUZXh0RmllbGQ7CiAgICBpbnQgaUFuZ2xlRmllbGQ7CiAgICBpbnQgaUhlaWdo dEZpZWxkOwoKCgoKICAgIEdEQkFuZ2xlVW5pdCBlQW5nbGVVbml0OwoKCgoKICAgIHN0cnVjdCBH REJHcm91cEluZGV4X3QgKmhHcm91cEluZGV4OwoKCgogICAgc3RydWN0IEdEQlFUICpwc1F1YWRU cmVlOwoKCgoKICAgIGludCBuU2hhcGVDb3VudDsKICAgIGludCBiU2hhcGVDb3VudFZhbGlkOwoK ICAgIGludCBuUG9pbnRzQ291bnQ7CiAgICBpbnQgbkxpbmVzQ291bnQ7CiAgICBpbnQgbkFyZWFz Q291bnQ7CiAgICBUQm9vbCBiU2hhcGVzQ291bnRUeXBlVmFsaWQ7CgoKCgogICAgc3RydWN0IEdE QlRvcG9JbmZvX3QgKnBzVG9wbzsKCiAgICBpbnQgaVhDb29yZEZpZWxkOwogICAgaW50IGlZQ29v cmRGaWVsZDsKCgoKCiAgICBHREJTaGFwZUlkICpwYWhTZWxlY3RlZElkczsKICAgIGludCBuU2Vs ZWN0ZWRDb3VudDsKICAgIGludCBuTG9ja2VkU2VsZWN0aW9uQ291bnQ7CgogICAgVEJvb2wgYlN5 bmNpbmc7CgogICAgc3RydWN0IEdEQlZlY1VuZG9MZXZlbF90ICpwc1ZVTDsKICAgIHZvaWQgKnBK T0xUVmVjdG9yTGF5ZXI7CgoKCgogICAgaW50IGlSaW5nU3RhcnRGaWVsZDsKfTsKCnR5cGVkZWYg c3RydWN0IEdEQkxheWVyX3QgKiBHREJMYXllcjsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHZvaWQg Km5vdGhpbmc7Cn0gR0RCUnN0OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgZG91YmxlIGRmQm91bmRh cnk7CiAgICBkb3VibGUgZGZWYWx1ZTsKfSBHREJCcmVha1BvaW50TFVUX3Q7Cgp0eXBlZGVmIHN0 cnVjdCB7CiAgICBkb3VibGUgZGZCb3VuZGFyeTsKICAgIHVuc2lnbmVkIGNoYXIgblJlZDsKICAg IHVuc2lnbmVkIGNoYXIgbkdyZWVuOwogICAgdW5zaWduZWQgY2hhciBuQmx1ZTsKfSBHREJCcmVh a1BvaW50UENUX3Q7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBHREJWZXJ0ZXggKnBhc1ZlcnRpY2Vz OwogICAgaW50IG5Db3VudDsKICAgIEdEQkZpZWxkICpwYXNGaWVsZHM7Cn0gR0RCU2hhcGU7Cgp0 eXBlZGVmIHN0cnVjdAp7CiAgICBHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzOwogICAgaW50IG5Db3Vu dDsKICAgIEdEQkZpZWxkICogcGFzRmllbGRzOwogICAgR0RCRGVmbiAqcGFzRGVmbjsKICAgIGlu dCBuRmllbGRzOwp9IEdEQkZhdFNoYXBlOwoKCgoKCnR5cGVkZWYgc3RydWN0IEdEQkNhcHNfdAp7 CgoKCiAgICBUQm9vbCBiSGFzVmVydGljZXM7CiAgICBUQm9vbCBiVmVydGljZXNPbmx5OwoKCgog ICAgVEJvb2wgYkhhc0F0dHJpYnV0ZXM7CiAgICBUQm9vbCBiQXR0cmlidXRlc09ubHk7CgoKCgoK CiAgICBUQm9vbCBiQWRkRmllbGQ7CgoKCgoKCiAgICBUQm9vbCBiQWRkUmFuZEZpZWxkOwoKCgoK ICAgIFRCb29sIGJDYW5DcmVhdGU7CgoKCgogICAgVEJvb2wgYkNhbk1vZGlmeTsKCgoKCgoKICAg IFRCb29sIGJSYW5kb21VcGRhdGU7CgoKCgoKCiAgICBUQm9vbCBiQ3JlYXRlTGF5ZXJzOwoKCgoK CiAgICBpbnQgbk1heExheWVyczsKCgoKCiAgICBUQm9vbCBiRGVsZXRlTGF5ZXJzOwoKCgoKCgog ICAgVEJvb2wgYkNhbkNyZWF0ZUxheWVyc0F0QW55VGltZTsKCgoKCiAgICBUQm9vbCBiSGFzRmxv YXRzOwogICAgVEJvb2wgYkhhc0ludHM7CiAgICBUQm9vbCBiSGFzRG91YmxlczsKICAgIFRCb29s IGJIYXNDaGFyOwogICAgVEJvb2wgYkhhc0ludExpc3Q7CgoKCgoKICAgIFRCb29sIGJOZWVkc0V4 dGVudHM7CgoKCgoKICAgIFRCb29sIGJOZWVkc051bWJlckVudGl0aWVzUGVyTGF5ZXI7CgoKCgoK ICAgIFRCb29sIGJOYXRpdmVMYXllclJldHVybnNDb3B5OwoKCgoKCgogICAgR0RCRGVmbiAqKnBh cGFzRGVmbjsKCgoKCiAgICBUQm9vbCBiQ2FuUmVhZFJlcFRhYmxlOwogICAgVEJvb2wgYkNhbldy aXRlUmVwVGFibGU7CiAgICBUQm9vbCBiQ2FuV3JpdGVSZXBUYWJsZUxvc3NsZXNzbHk7CiMgMTI1 MSAiLi4vLi4vLi4vbGliL2dkYi5oIgogICAgVEJvb2wgYkhpZGVGcm9tVXNlcjsKICAgIFRCb29s IGJIaWRlRnJvbVVzZXJJbkZpbGVTZWxlY3RvcjsKCgoKCgogICAgVEJvb2wgYlNwYXRpYWxRdWVy eTsKICAgIFRCb29sIGJBdHRyaWJ1dGVRdWVyeTsKCgoKCiAgICBUQm9vbCBiVXNlcnNQYXNzd29y ZDsKCgoKCiAgICBUQm9vbCBiQ2Fubm90Q3JlYXRlUnN0OwoKfSBHREJDYXBhYmlsaXRpZXM7CgoK CgoKdHlwZWRlZiBzdHJ1Y3QgewogIEZJTEUgKmZwU3JjOwogIGludCBuREJJQzsKCiAgaW50IG5U YXJnZXRDaGFuOwoKICBUQm9vbCBiQ2xlYW47CiAgVEJvb2wgYlVzZUZvckhpc3RvZ3JhbTsKCiAg ZG91YmxlIGRmUmVzRmFjdG9yOwp9IEdEQk92ZXJ2aWV3SW5mb190OwoKCgoKCnR5cGVkZWYgc3Ry dWN0IHsKICAgIEZJTEUgKmZwU3JjOwogICAgaW50IG5MYXllclR5cGU7CiAgICBpbnQgblNyY0xh eWVyOwogICAgaW50ICpwYW5EQklXOwoKICAgIGludCBuRHN0TGF5ZXI7CgogICAgaW50IG5PcHRp b25zOwoKICAgIFRCb29sIGJDbGlwR2VvOwogICAgZG91YmxlIGRmQ2xpcFhPZmY7CiAgICBkb3Vi bGUgZGZDbGlwWU9mZjsKICAgIGRvdWJsZSBkZkNsaXBYU2l6ZTsKICAgIGRvdWJsZSBkZkNsaXBZ U2l6ZTsKCiAgICB1bmlvbgogICAgewogICAgICAgIHN0cnVjdAogICAgICAgIHsKICAgICAgICAg ICAgVEJvb2wgKCpwZm5Qcm9jV2l0aElkKShzdHJ1Y3QgR0RCTGF5ZXJfdCosIEdEQlNoYXBlSWQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0RCU2hhcGUq LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQkxheWVyLCBHREJT aGFwZSAqLCBUQm9vbCwgVEJvb2wgKik7CiAgICAgICAgICAgIHZvaWQgKCpwZm5NYXBwaW5nRnVu YykoR0RCTGF5ZXIsIEdEQkxheWVyLCBpbnQgKik7CiAgICAgICAgICAgIHZvaWQgKCpwZm5Db3B5 TGF5ZXJTdHJ1Y3QpKEdEQkxheWVyLCBHREJMYXllcik7CiAgICAgICAgfSBzVk9wdDsKCiAgICAg ICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICB2b2lkICgqcGZuUHJvY2Vzc1RpbGUpKCBp bnQsIGludCwgaW50LCBpbnQsIHZvaWQgKiApOwogICAgICAgIH0gc0lPcHQ7CiAgICB9IHU7Cn0g R0RCVHJhbnNmZXJMYXllckluZm87Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBGSUxFICpmcERzdDsK ICAgIGludCBuRHN0Q3JlYXRlVHlwZTsKICAgIGNoYXIgKnBzekRzdENyZWF0ZU9wdGlvbnM7CiAg ICBjaGFyICpwc3pEc3RDcmVhdGVGaWxlbmFtZTsKCiAgICBjaGFyICpwc3pQcm9jZXNzSW5nOwog ICAgY2hhciAqcHN6UHJvY2Vzc0VkOwoKICAgIGludCBuT3B0aW9uczsKCiAgICBpbnQgKnBhbkRC T1c7CgogICAgSU1QUHJvZ3Jlc3NGdW5jIHBmblByb2dyZXNzOwogICAgdm9pZCAqcFByb2dyZXNz QXJnOwoKICAgIGludCBuTGF5ZXJzOwogICAgR0RCVHJhbnNmZXJMYXllckluZm8gKipwYXBzTGF5 ZXJzOwoKfSBHREJUcmFuc2ZlckluZm87CgpHREJUcmFuc2ZlckluZm8gKiBHREJDcmVhdGVUcmFu c2Zlciggdm9pZCApOwp2b2lkIEdEQkRlc3Ryb3lUcmFuc2ZlciggR0RCVHJhbnNmZXJJbmZvICog KTsKR0RCVHJhbnNmZXJMYXllckluZm8gKgogICAgICAgIEdEQkFkZFRyYW5zZmVyTGF5ZXIoIEdE QlRyYW5zZmVySW5mbyAqLCBGSUxFICosIGludCwgaW50LCBpbnQgKiwgaW50ICk7CgpUQm9vbCBH REJUcmFuc2ZlckxheWVycyggR0RCVHJhbnNmZXJJbmZvICogKTsKIyAxMzcwICIuLi8uLi8uLi9s aWIvZ2RiLmgiCnR5cGVkZWYgZW51bSB7CiAgR0RCU0FsbCwKICBHREJTTmVhcmVzdCwKICBHREJT TmVhcmVzdFdpdGhEaXN0YW5jZSwKICBHREJTUG9seWdvbnNJbnNpZGUsCiAgR0RCU1JhZGl1cywK ICBHREJTUmVjdCwKICBHREJTSW5zaWRlUG9seSwKICBHREJTQ3V0UG9seSwKICBHREJTT3V0c2lk ZVBvbHksCiAgR0RCU0F0dHJpYnV0ZSwKICBHREJTSW5jbHVzaXZlLAogIEdEQlNOZWFyZXN0Tm90 SW5MaXN0LAogIEdEQlNOZWFyZXN0M0QsCiAgR0RCU05lYXJlc3ROb3RJbkxpc3QzRCwKICBHREJT UmVwcm9qZWN0UmVjdCwKICBHREJTUmVwcm9qZWN0TmVhcmVzdCwKICBHREJTUmFkaXVzTmVhcmVz dCwKICBHREJTUmFkaXVzTm90SW5MaXN0LAogIEdEQlNQcm9wZXJseUluc2lkZVBvbHkKCgp9IEdE QlNlYXJjaFR5cGU7CgoKCgp0eXBlZGVmIHN0cnVjdCBHREJJbmZvX3MKewogICAgdm9pZCAoKlNp emVJbmZvKSAoIEZJTEUgKiwgaW50ICosIGludCAqLCBpbnQgKiApOwogICAgaW50ICgqQ2hhblhT aXplKSAoIEZJTEUgKiApOwogICAgaW50ICgqQ2hhbllTaXplKSAoIEZJTEUgKiApOwogICAgaW50 ICgqQ2hhbk51bSkgKCBGSUxFICogKTsKICAgIGludCAoKkNoYW5UeXBlKSAoIEZJTEUgKiwgaW50 ICk7CiAgICB2b2lkICgqQnl0ZUNoYW5JTykgKCBGSUxFICosIGludCwgaW50LCBpbnQsIGludCwg aW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh ciAqLCBpbnQsIGludCwgaW50LCBpbnQgKiApOwogICAgdm9pZCAoKkludENoYW5JTykgKCBGSUxF ICosIGludCwgaW50LCBpbnQsIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50MzIgKiwgaW50LCBpbnQsIGludCwgaW50ICogKTsKICAgIHZvaWQgKCpS ZWFsQ2hhbklPKSAoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqLCBpbnQsIGludCwgaW50LCBpbnQg KiApOwogICAgRklMRSAqKCpDcmVhdGUpICggY2hhciAqLCBpbnQsIGludCwgaW50LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBjaGFyICogKTsKICAgIGludCAo Kkdlb3JlZklPKSAoIEZJTEUgKiwgaW50LCBjaGFyICosIGRvdWJsZSAqLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiAp OwogICAgaW50ICgqR2VvcmVmSU8yKSAoIEZJTEUgKiwgaW50LCBjaGFyICosIGRvdWJsZSAqLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAq LCBkb3VibGUgKiAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3Vi bGUgKiwgZG91YmxlICopOwogICAgaW50ICgqSGludCkgKCBGSUxFICogKTsKICAgIGludCAoKkNo YW5EZXNjSU8pICggRklMRSAqLCBpbnQsIGludCwgY2hhciAqICk7CiAgICB2b2lkICgqQ2xvc2Up ICggRklMRSAqICk7CiAgICBGSUxFICooKk9wZW4pICggY2hhciAqLCBjaGFyICogKTsKICAgIEZJ TEUgKigqUmVvcGVuKSAoIEZJTEUgKiApOwogICAgbG9uZyAoKkZpbGVBdHRyaWJ1dGUpICggdm9p ZCApOwogICAgbG9uZyBEZWZhdWx0QXR0cmlidXRlOwogICAgdm9pZCAoKkZpbGVEZXNjKSAoIEZJ TEUgKiApOwogICAgdm9pZCAoKlNlZ0Rlc2NJTykgKCBGSUxFICosIGludCwgaW50LCBpbnQsIGNo YXIgKiApOwogICAgdm9pZCAoKlZlY3RvckluZm8pICggRklMRSAqLCBpbnQsIGludCwgVkluZm9f dCAqICk7CiAgICBpbnQgKCpWZWN0b3JJTykgKCBWSW5mb190ICosIGludCwgaW50LCBpbnQsIGlu dCAqLCBpbnQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy ICosIGludDMyICosIGRvdWJsZSAqKiwgZG91YmxlICosCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgKTsKICAgIGludCAoKlNlZ05leHQpICggRklMRSAqLCBpbnQs IGludCApOwogICAgaW50ICgqR2V0Q2hhbkluZm8pICggRklMRSAqLCBpbnQsIGNoYXIgKiwgaW50 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqLCBsb25nICos IGxvbmcgKiwgaW50ICogKTsKICAgIHZvaWQgKCpQY3RJTykgKCBGSUxFICosIGludCwgaW50LCB1 bnNpZ25lZCBjaGFyICogKTsKICAgIHZvaWQgKCpCcmVha1BvaW50UGN0SU8pICggRklMRSAqLCBp bnQsIGludCwKICAgICAgICAgICAgICAgICAgICBpbnQgKiwgaW50ICosIEdEQkJyZWFrUG9pbnRQ Q1RfdCAqKik7CiAgICB2b2lkICgqTHV0SU8pICggRklMRSAqLCBpbnQsIGludCwgdW5zaWduZWQg Y2hhciAqICk7CiAgICB2b2lkICgqQnJlYWtQb2ludEx1dElPKSAoIEZJTEUgKiwgaW50LCBpbnQs CiAgICAgICAgICAgICAgICAgICAgaW50ICosIGludCAqLCBHREJCcmVha1BvaW50TFVUX3QgKiog KTsKICAgIHZvaWQgKCpCaXRtYXBJTykgKCBGSUxFICosIGludCwgaW50LCBpbnQsIGludCwgaW50 LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICos IGludCwgaW50ICk7CiAgICBpbnQgKCpUZXN0T3BlbikgKCBHREJUZXN0SW5mb190ICogKTsKICAg IHZvaWQgKCpUZXh0QWNjZXNzKSAoIEZJTEUgKiwgVEluZm9fdCAqLCBjaGFyICosIGludCApOwog ICAgaW50ICgqVGV4dFJlYWQpICggVEluZm9fdCAqLCBjaGFyICosIGludCApOwogICAgdm9pZCAo KlRleHRXcml0ZSkgKCBUSW5mb190ICosIGNoYXIgKiApOwogICAgdm9pZCAoKlN5bmMpICggRklM RSAqICk7CiAgICB2b2lkICgqRmlsZURlc2NJTykgKCBGSUxFICosIGludCwgaW50LCBjaGFyICog KTsKICAgIGludCAoKlByb2plY3Rpb25JTykgKCBGSUxFICosIGludCwgUHJvakluZm9fdCAqICk7 CiAgICBjaGFyIFNob3J0TmFtZVs1XTsKICAgIGNoYXIgRXh0ZW5zaW9uWzRdOwogICAgY2hhciAq TG9uZ05hbWU7CiAgICBpbnQgcGFkZGluZ1s4XTsKICAgIGludCAoKk1lbUNoYW5JbmZvKSAoIEZJ TEUgKiwgaW50LCB1bnNpZ25lZCBjaGFyICoqLCBsb25nICosIGxvbmcgKiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAqICk7CiAgICB2b2lkICgqR2NwSU8pICggRklMRSAq LCBpbnQsIGludCwgaW50ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy ICosIGNoYXIgKiwgY2hhciAqLCBjaGFyICosIGludCAqLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICogKTsKCgogICAg R0RCTGF5ZXIgKCpHZXRMYXllcikgKEZJTEUgKiwgaW50KTsKICAgIEdEQkxheWVyICgqQ3JlYXRl TGF5ZXIpIChGSUxFICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICopOwogICAgdm9pZCAoKkRlbGV0ZUxheWVy KSAoRklMRSAqLCBpbnQpOwoKICAgIGludCAoKkdldFByb2plY3Rpb25JbmZvKSAoR0RCTGF5ZXIg LCBQcm9qSW5mb190ICopOwogICAgdm9pZCAoKlNldFByb2plY3Rpb25JbmZvKSAoR0RCTGF5ZXIg LCBQcm9qSW5mb190ICopOwoKICAgIEdEQlNoYXBlSWQgKCpHZXROZXh0U2hhcGVJZCkoR0RCTGF5 ZXIgLCBHREJTaGFwZUlkKTsKICAgIHZvaWQgKCpEZWxldGVTaGFwZSkgKEdEQkxheWVyICwgR0RC U2hhcGVJZCk7CiAgICBHREJTaGFwZUlkICgqQ3JlYXRlU2hhcGUpIChHREJMYXllciAsIEdEQlNo YXBlSWQpOwoKICAgIEdEQlZlcnRleCAqKCpHZXRWZXJ0aWNlcykgKEdEQkxheWVyICxHREJTaGFw ZUlkLCBpbnQgKik7CiAgICB2b2lkICgqU2V0VmVydGljZXMpIChHREJMYXllciAsR0RCU2hhcGVJ ZCwgaW50LEdEQlZlcnRleCAqKTsKCiAgICBHREJGaWVsZCAqICgqR2V0UmVjb3JkKSAoR0RCTGF5 ZXIsIEdEQlNoYXBlSWQpOwogICAgdm9pZCAoKlNldFJlY29yZCkgKEdEQkxheWVyLCBHREJTaGFw ZUlkLCBHREJGaWVsZCAqKTsKCiAgICBHREJTaGFwZSAqKCpHZXRTaGFwZSkgKEdEQkxheWVyICwg R0RCU2hhcGVJZCk7CiAgICB2b2lkICgqU2V0U2hhcGUpIChHREJMYXllciAsIEdEQlNoYXBlSWQs IEdEQlNoYXBlICopOwoKICAgIFRCb29sICgqQWRkRmllbGQpIChHREJMYXllciwgY2hhciAqLCBH REJGaWVsZFR5cGUsIEdEQkZpZWxkICopOwogICAgVEJvb2wgKCpEZWxldGVGaWVsZCkgKEdEQkxh eWVyICwgY2hhciAqKTsKCiAgICB2b2lkICooKkdldFJzdCkgKEdEQkxheWVyKTsKICAgIHZvaWQg KCpTZXRSc3QpIChHREJMYXllciwgdm9pZCAqKTsKICAgIFRCb29sICgqQ2xlYXJMYXllcikgKEdE QkxheWVyKTsKICAgIFRCb29sICgqU2V0VXBkYXRlTW9kZSkgKEdEQkxheWVyLCBUQm9vbCk7Cgog ICAgR0RCQ2FwYWJpbGl0aWVzIHNDYXBhYmlsaXRpZXM7CgogICAgY2hhciAqKigqTWV0YURhdGFJ TykgKEZJTEUgKiwgaW50LCBpbnQsIGludCwgY2hhciAqKik7CgogICAgVEJvb2wgKCpDb3B5VG9w b0xheWVycykoRklMRSAqLCBHREJMYXllciwgR0RCTGF5ZXIqLCBjb25zdCBjaGFyICosCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJMYXllciwgR0RCTGF5ZXIqLCBjb25zdCBj aGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJMYXllciwgR0RCTGF5 ZXIqLCBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lD b3VudGVyKTsKCiAgICB2b2lkICgqV3JpdGVIaXN0b3J5KSAoRklMRSAqLCBpbnQsIGludCwgY29u c3QgY2hhciAqKTsKICAgIGNvbnN0IGNoYXIgKigqUmVhZEhpc3RvcnkpIChGSUxFICosIGludCwg aW50LCBpbnQpOwoKICAgIHZvaWQgKCpDb21wcmVzcykgKEZJTEUgKik7CiAgICB2b2lkICgqQ2hh bkFkZCkgKEZJTEUgKiwgaW50LCBpbnQsIFBDSUNvdW50ZXIpOwogICAgdm9pZCAoKkNoYW5EZWxl dGUpIChGSUxFICosIGludCwgaW50ICosIFBDSUNvdW50ZXIpOwogICAgdm9pZCAoKkJ1aWxkT3Zl cnZpZXdzKShGSUxFICosIGludCwgaW50ICosIGludCwgVEJvb2wsIGNvbnN0IGNoYXIgKiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUFByb2dyZXNzRnVuYywgdm9pZCAqICk7 CiAgICBUQm9vbCAoKkdldFRpbGVJbmZvKSAoRklMRSAqLCBpbnQsIGludCAqLCBpbnQgKik7Cgog ICAgR0RCT3ZlcnZpZXdJbmZvX3QgKigqR2V0T3ZlcnZpZXdzKShGSUxFICosIGludCAqICk7Cgog ICAgdm9pZCAoKkRlbGV0ZSkgKCBjaGFyICogKTsKICAgIHZvaWQgKCpTYXRFcGhlbWVyaXNJTykg KEZJTEUgKiwgaW50LCBpbnQsIEVwaGVtZXJpc1NlZ190ICopOwogICAgdm9pZCAoKkJpbmFyeUlP KSAoRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIgKik7CiAgICBpbnQg KCpHZXRCaW5hcnlMZW5ndGgpIChGSUxFICosIGludCk7CiAgICBpbnQgKCpTZWdDcmVhdGUpIChG SUxFICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQgKTsKICAgIHZvaWQgKCpBcnJh eUlPKSAoRklMRSAqLCBpbnQsIGludCwgaW50ICosIGludCAqLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRvdWJsZSAqKixjaGFyKik7CgogICAgR0RCU2hhcGVJZCAqKCpTcGF0 aWFsUXVlcnkpIChHREJMYXllciwgaW50ICosIEdEQlNoYXBlSWQgKiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCwgR0RCU2VhcmNoVHlwZSwgdmFfbGlzdCk7CiAgICBj aGFyICoqKCpMYXllckxpc3QpIChGSUxFICosIFRCb29sKTsKICAgIEdEQlNoYXBlSWQgKigqQXR0 cmlidXRlUXVlcnkpIChHREJMYXllciwgaW50ICosIEdEQlNoYXBlSWQgKiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgY29uc3QgY2hhciAqKTsKICAgIGNoYXIgKioo Kkxpc3ROYW1lcykgKGNvbnN0IGNoYXIgKiwgaW50KTsKICAgIGNoYXIgKiooKkxpc3RGaWVsZE5h bWVzKSAoY29uc3QgY2hhciAqKTsKCiAgICBUQm9vbCAoKkF1dG9TZXRDaGFuUElEKSggRklMRSog ZnAsIGludCwgdWludDMyICogKTsKICAgIFRCb29sICgqR2V0Q2hhblBJRCkoIEZJTEUqIGZwLCBp bnQsIHVpbnQzMiAqICk7CiAgICBpbnQgKCpGaW5kQ2hhbkZyb21QSUQpKCBGSUxFKiBmcCwgdWlu dDMyICk7CgogICAgY2hhciAqKiggKkdldFZhbGlkRmllbGRWYWx1ZXMpICggR0RCTGF5ZXIsaW50 ICk7Cgp9IEdEQkluZm9fdDsKCgoKCnN0cnVjdCBHREJHcm91cF90CnsKICAgIGludCBpR3JvdXBJ ZDsKICAgIGludCBuRW50aXRpZXM7CiAgICBHREJTaGFwZUlkICpwYWhFbnRpdGllczsKfTsKCnR5 cGVkZWYgc3RydWN0IEdEQkdyb3VwX3QgKkdEQkdyb3VwOwoKc3RydWN0IEdEQkdyb3VwSW5kZXhf dAp7CiAgICBHREJMYXllciBoTGF5ZXI7CiAgICBpbnQgbkdyb3VwczsKICAgIGludCBuQWxsb2Nh dGVkR3JvdXBzOwogICAgR0RCR3JvdXAgcGFzR3JvdXBzOwogICAgaW50IG5OZXh0VW51c2VkR3Jv dXBJZDsKfTsKCnR5cGVkZWYgc3RydWN0IEdEQkdyb3VwSW5kZXhfdCAqR0RCR3JvdXBJbmRleDsK CgoKCnR5cGVkZWYgc3RydWN0IEdRTgp7CiAgICBzdHJ1Y3QgR1FOICpwc1BhcmVudDsKICAgIHN0 cnVjdCBHUU4gKmFwc05vZGVzWzRdOwogICAgR0RCVmVydGV4IHNNaW47CiAgICBHREJWZXJ0ZXgg c01heDsKICAgIGludCBuU2hhcGVzOwogICAgaW50IG5DYXBhY2l0eTsKICAgIEdEQlNoYXBlSWQg KnBhaFNoYXBlSWRzOwogICAgaW50IGlJbmRleDsKfSBHREJRdWFkTm9kZTsKCnR5cGVkZWYgc3Ry dWN0IEdEQlFUCnsKICAgIEdEQlF1YWROb2RlICpyb290OwogICAgR0RCTGF5ZXIgaExheWVyOwog ICAgQ0NISGFuZGxlIGhFbnRpdHlMb29rVXA7CiAgICBpbnQgbkRlcHRoOwogICAgVEJvb2wgYkl0 ZW1PdXRzaWRlUm9vdDsKfSBHREJRdWFkVHJlZTsKCnR5cGVkZWYgc3RydWN0IEdEQlFUSQp7CiAg ICBHREJRdWFkTm9kZSAqcHNDdXJyZW50Tm9kZTsKICAgIGludCBuQ3VycmVudEluZGV4OwogICAg R0RCVmVydGV4IHNNaW47CiAgICBHREJWZXJ0ZXggc01heDsKICAgIFRCb29sIGJFeHRlbnRzQ2hh bmdlZDsKfSBHREJRVEl0ZXJhdG9yOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBHREJTZWFyY2hfdAp7 CiAgICBUQm9vbCAoKlNlYXJjaEZ1bmMpKHN0cnVjdCBHREJTZWFyY2hfdCAqLCBHREJTaGFwZSAq LCBpbnQzMiAqKTsKICAgIEdEQkxheWVyIHBzTGF5ZXI7CiAgICBHREJMYXllclR5cGUgZUxheWVy VHlwZTsKICAgIEdEQkxheWVyIHBzQXJlYUxheWVyOwogICAgY2hhciAqcHN6U2VhcmNoRXhwcjsK ICAgIEdEQlZlcnRleCBzUG9pbnQ7CiAgICBHREJWZXJ0ZXggc01pbjsKICAgIEdEQlZlcnRleCBz TWF4OwogICAgR0RCU2hhcGVJZCBoQ2xvc2VzdFNoYXBlSWQ7CiAgICBkb3VibGUgZERpc3RhbmNl OwogICAgZG91YmxlICpwZERpc3RhbmNlOwogICAgaW50IGlDbG9zZXN0U2VnbWVudDsKICAgIEdE QlNoYXBlSWQgaExhc3RTaGFwZUlkOwogICAgaW50IG5MYXN0SW5kZXg7CiAgICBUQm9vbCBiSXNG aW5kRmlyc3Q7CgoKCgogICAgVEJvb2wgYklzQXROb2RlOwogICAgR0RCVmVydGV4IHNOb2RlOwog ICAgZG91YmxlIGRBbmdsZTsKCgoKICAgIHN0cnVjdCBHREJRVEkgc1F1YWRJdGVyYXRvcjsKICAg IEdEQlNoYXBlSWQgKnBhaEV4Y2x1c2lvbklkTGlzdDsKICAgIGludCBuRXhjbHVzaW9uSWRDb3Vu dDsKCgoKICAgIGludCBuQ291bnQ7CiAgICBHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzOwoKCgogICAg aW50IG5OZWFyZXN0SW5kZXg7CiAgICBpbnQgbk5lYXJlc3RTaXplOwogICAgR0RCU2hhcGVJZCAq cGFoTmVhcmVzdDsKICAgIGRvdWJsZSAqcGFkRGlzdGFuY2VzOwogICAgVEJvb2wgYlVzZUluc2lk ZTsKfSBHREJTZWFyY2g7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgR0RCQ3BGdW5jc190CnsKICAgIFRC b29sICgqUHJvY2Vzc2luZ19GdW5jKSAoR0RCTGF5ZXIsIGNvbnN0IEdEQlNoYXBlICosCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCTGF5ZXIgLCBHREJTaGFwZSAq KTsKICAgIHZvaWQgKCpNYXBwaW5nX0Z1bmMpIChHREJMYXllciwgR0RCTGF5ZXIsIGludCAqKTsK ICAgIHZvaWQgKCpDb3VudGVyX0Z1bmMpIChkb3VibGUpOwogICAgdm9pZCAoKkNvcHlMYXllclN0 cnVjdF9GdW5jKSAoR0RCTGF5ZXIsIEdEQkxheWVyKTsKICAgIFRCb29sICgqUHJvY1dpdGhJZF9G dW5jKSAoR0RCTGF5ZXIsIEdEQlNoYXBlSWQsIGNvbnN0IEdEQlNoYXBlKiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJMYXllciwgR0RCU2hhcGUgKiwgVEJvb2ws IFRCb29sICopOwoKICAgIElNUFByb2dyZXNzRnVuYyBwZm5Qcm9ncmVzczsKICAgIHZvaWQgKnBQ cm9ncmVzc0FyZzsKfSBHREJDcEZ1bmNzOwojIDE2NzggIi4uLy4uLy4uL2xpYi9nZGIuaCIKR0RC SW5mb190ICogR0RCUmVnaXN0ZXIgKCBpbnQgKTsKR0RCSW5mb190ICogR0RCR2V0Rm9ybWF0SW5m byAoIGludCApOwp2b2lkIEdEQkJ5dGVDaGFuSU8gKCBGSUxFICosIGludCwgaW50LCBpbnQsIGlu dCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo YXIgKiwgaW50LCBpbnQsIGludCwgaW50ICogKTsKdm9pZCBHREJCeXRlQ2hhbklPTG93ICggRklM RSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIGludCwgaW50LCBpbnQsIGludCAqICk7CnZvaWQg R0RCSW50Q2hhbklPICggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMiAqLCBpbnQsIGludCwgaW50LCBpbnQg KiApOwp2b2lkIEdEQkludENoYW5JT0xvdyAoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBp bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzIgKiwgaW50LCBp bnQsIGludCwgaW50ICogKTsKdm9pZCBHREJSZWFsQ2hhbklPICggRklMRSAqLCBpbnQsIGludCwg aW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h dCAqLCBpbnQsIGludCwgaW50LCBpbnQgKiApOwp2b2lkIEdEQlJlYWxDaGFuSU9Mb3cgKCBGSUxF ICosIGludCwgaW50LCBpbnQsIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZsb2F0ICosIGludCwgaW50LCBpbnQsIGludCAqICk7CnZvaWQgR0RCQml0Q2hh bklPICggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIGludCwgaW50LCBpbnQsIGludCAq ICk7Cgp2b2lkIEdEQkJpdG1hcElPTG93KEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs IGludCwgdW5zaWduZWQgY2hhciAqLCBpbnQsIGludCk7CgppbnQgR0RCQ2hhblR5cGUgKCBGSUxF ICosIGludCApOwpjb25zdCBjaGFyICogR0RCQ2hhblR5cGVEZXNjcmlwdGlvblJlZiAoIGludCAp OwppbnQgR0RCQ2hhblhTaXplICggRklMRSAqICk7CmludCBHREJDaGFuWVNpemUgKCBGSUxFICog KTsKaW50IEdEQkNoYW5OdW0gKCBGSUxFICogKTsKdm9pZCBHREJTaXplSW5mbyAoIEZJTEUgKiwg aW50ICosIGludCAqLCBpbnQgKiApOwppbnQgR0RCSGludCAoIEZJTEUgKiApOwpUQm9vbCBHREJU ZXN0RGVzY3JpcHRpb24oIGNvbnN0IGNoYXIgKiApOwppbnQgR0RCQ2hhbkRlc2NJTyAoIEZJTEUg KiwgaW50LCBpbnQsIGNoYXIgKiApOwpGSUxFICogR0RCQ3JlYXRlICggaW50LCBjb25zdCBjaGFy ICosIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyKik7Cgp2b2lkIEdEQkNoYW5GbHVzaChGSUxFICosIGludCk7CkZJTEUgKiBHREJP cGVuICggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogKTsKRklMRSAqIEdEQlJlb3BlbiAoIEZJ TEUgKiApOwp2b2lkIEdEQkNsb3NlICggRklMRSAqICk7CnZvaWQgR0RCQ2xvc2VKT0xURmlsZSAo IEZJTEUgKiApOwp2b2lkIEdEQkRlbGV0ZSAoIGludCwgY29uc3QgY2hhciAqICk7ClRCb29sIEdE QkRlbGV0ZUZpZWxkICggR0RCTGF5ZXIsIGNoYXIgKiApOwpsb25nIEdEQkZpbGVBdHRyaWJ1dGUg KCBGSUxFICogKTsKY2hhciAqKiBHREJNZXRhRGF0YUlPICggRklMRSAqLCBpbnQsIGludCwgaW50 LCBjaGFyICoqICk7CmxvbmcgR0RCQXR0cmlidXRlICggaW50ICk7CnZvaWQgR0RCRmlsZURlc2Mg KCBGSUxFICogKTsKdm9pZCBHREJTZWdEZXNjSU8gKCBGSUxFICosIGludCwgaW50LCBpbnQsIGNo YXIgKiApOwoKdm9pZCBHREJWZWN0b3JJbmZvICggRklMRSAqLCBpbnQsIGludCwgVkluZm9fdCAq ICk7CmludCBHREJWZWN0b3JJTyAoIFZJbmZvX3QgKiwgaW50LCBpbnQsIGludCwgaW50ICosCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGludDMyICosIGludDMy ICosIGRvdWJsZSAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3Vi bGUgKiwgaW50ICk7CgppbnQgR0RCQ29tcGF0VmVjdG9ySU8oVkluZm9fdCAqLCBpbnQgLCBpbnQg LCBpbnQgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBp bnQgKiwgaW50MzIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQzMiAqLCBkb3VibGUgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG91YmxlICosIGludCApOwoKdm9pZCBHREJOZXdWZWN0b3JJbmZvKCBGSUxFICosIGludCwg aW50LCBWSW5mb190ICogKTsKaW50IEdEQk5ld1ZlY3RvcklPKCBWSW5mb190ICosIGludCwgaW50 LCBpbnQsIGludCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg KiwgaW50MzIgKiwgaW50MzIgKiwgZG91YmxlICoqLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb3VibGUgKiwgaW50ICk7Cgp2b2lkIEdEQkJpdG1hcElPKCBGSUxFICos IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgaW50LCBpbnQgKTsKaW50IEdEQkdlb3JlZklPKCBG SUxFICosIGludCwgY2hhciAqLCBkb3VibGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwppbnQgR0RCR2VvcmVmSU8y KCBGSUxFICosIGludCwgY2hhciAqLCBkb3VibGUgKiwgZG91YmxlICosCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosIGRvdWJs ZSAqICk7CmludCBHREJQcm9qZWN0aW9uSU8oIEZJTEUgKiwgaW50LCBQcm9qSW5mb190ICogKTsK dm9pZCBHREJQY3RJTyggRklMRSAqLCBpbnQsIGludCwgdW5zaWduZWQgY2hhciAqICk7CnZvaWQg R0RCTHV0SU8oIEZJTEUgKiwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIgKiApOwp2b2lkIEdEQkJy ZWFrUG9pbnRQY3RJTyggRklMRSAqLCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50ICosIGludCAqLCBHREJCcmVha1BvaW50UENUX3QgKiogKTsK dm9pZCBHREJCcmVha1BvaW50THV0SU8oIEZJTEUgKiwgaW50LCBpbnQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBpbnQgKiwgR0RCQnJlYWtQb2ludExV VF90ICoqICk7Cgp2b2lkIEdEQkdjcElPKCBGSUxFICosIGludCwgaW50ICwgaW50LCBpbnQgKiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBjaGFyICosIGNoYXIgKiwg Y2hhciAqLCBpbnQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICos IGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91 YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwoKdm9pZCBHREJTYXRFcGhlbWVyaXNJTyggRklM RSAqLCBpbnQsIGludCwgRXBoZW1lcmlzU2VnX3QgKik7CnZvaWQgR0RCU2F0RXBoZW1lcmlzRnJl ZSggRXBoZW1lcmlzU2VnX3QgKiApOwpFcGhlbWVyaXNTZWdfdCAqR0RCU2F0RXBoZW1lcmlzRHVw bGljYXRlKCBFcGhlbWVyaXNTZWdfdCAqICk7CkVwaGVtZXJpc1NlZ190ICpHREJCaW5hcnlUb0Vw aGVtZXJpcyggaW50LCB1bnNpZ25lZCBjaGFyICogKTsKdW5zaWduZWQgY2hhciAqR0RCRXBoZW1l cmlzVG9CaW5hcnkoIEVwaGVtZXJpc1NlZ190ICosIGludCAqICk7CgpTUklUSW5mb190ICpHREJT YXRNb2RlbElPKCBGSUxFICosIGludCwgaW50LCBTUklUSW5mb190ICogKTsKdm9pZCBHREJGcmVl U1JJVEluZm8oIFNSSVRJbmZvX3QgKiApOwpTUklUSW5mb190ICpHREJCaW5hcnlUb1NSSVRJbmZv KCBpbnQsIHVuc2lnbmVkIGNoYXIgKiApOwp1bnNpZ25lZCBjaGFyICpHREJTUklUSW5mb1RvQmlu YXJ5KCBTUklUSW5mb190ICosIGludCAqICk7CgpSRkluZm9fdCAqUkZBbGxvY2F0ZSAoUkZJbmZv X3QgKiwgaW50KTsKdm9pZCBSRkRlYWxsb2NhdGUgKFJGSW5mb190ICopOwpSRkluZm9fdCAqR0RC UkZNb2RlbElPKCBGSUxFICosIGludCwgaW50LCBSRkluZm9fdCAqICk7CnZvaWQgR0RCRnJlZVJG SW5mbyggUkZJbmZvX3QgKiApOwpSRkluZm9fdCAqR0RCQmluYXJ5VG9SRkluZm8oIGludCwgdW5z aWduZWQgY2hhciAqICk7CnVuc2lnbmVkIGNoYXIgKkdEQlJGSW5mb1RvQmluYXJ5KCBSRkluZm9f dCAqLCBpbnQgKiApOwoKQVBJbmZvX3QgKkFQQWxsb2NhdGUgKEFQSW5mb190ICopOwp2b2lkIEFQ RGVhbGxvY2F0ZSAoQVBJbmZvX3QgKik7CkFQSW5mb190ICpHREJBUE1vZGVsSU8oIEZJTEUgKiwg aW50LCBpbnQsIEFQSW5mb190ICogKTsKdm9pZCBHREJGcmVlQVBJbmZvKCBBUEluZm9fdCAqICk7 CkFQSW5mb190ICpHREJCaW5hcnlUb0FQSW5mbyggaW50LCB1bnNpZ25lZCBjaGFyICogKTsKdW5z aWduZWQgY2hhciAqR0RCQVBJbmZvVG9CaW5hcnkoIEFQSW5mb190ICosIGludCAqICk7Cgp2b2lk IEdEQkFycmF5SU8oIEZJTEUgKiwgaW50LCBpbnQsIGludCAqLCBpbnQgKiwgZG91YmxlICoqLCBj aGFyKik7CgppbnQgR0RCU2VnQ3JlYXRlKCBGSUxFICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqLCBpbnQpOwoKaW50IEdEQlNlZ05leHQoIEZJTEUgKiwgaW50LCBpbnQgKTsKdm9pZCBHREJT ZWdDaGVjayggRklMRSAqLCBpbnQgKiwgaW50LCBpbnQsIGNoYXIgKiApOwpUQm9vbCBHREJTZWdF eGlzdCggRklMRSAqLCBpbnQsIGludCk7CmludCBHREJTZWdDb3VudCggRklMRSAqLCBpbnQgKTsK aW50IEdEQkxheWVyTmFtZVRvU2VnKCBGSUxFICosIGNvbnN0IGNoYXIgKiApOwpjb25zdCBjaGFy ICogR0RCTGF5ZXJUeXBlVG9TaG9ydE5hbWUoIGludCApOwpjb25zdCBjaGFyICogR0RCTGF5ZXJU eXBlVG9Mb25nTmFtZSggaW50ICk7CmludCBHREJTaG9ydE5hbWVUb0xheWVyVHlwZSggY29uc3Qg Y2hhciAqICk7CmludCBHREJHZXRDaGFuSW5mbyggRklMRSAqLCBpbnQsIGNoYXIgKiwgaW50LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICosIGxvbmcgKiwgbG9u ZyAqLCBpbnQgKiApOwoKaW50IEdEQk1lbUNoYW5JbmZvKCBGSUxFICosIGludCwgdW5zaWduZWQg Y2hhciAqKiwgbG9uZyAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICosIGlu dCAqICk7ClRCb29sIEdEQkdldFRpbGVJbmZvKCBGSUxFICosIGludCwgaW50ICosIGludCAqICk7 CgppbnQgR0RCVGVzdE9wZW4gKCBjb25zdCBjaGFyICogKTsKaW50IEdEQlRleHRBY2Nlc3MgKCBG SUxFICosIFRJbmZvX3QgKiwgY2hhciAqLCBpbnQsIGNoYXIgKiApOwppbnQgR0RCVGV4dFJlYWQg KCBUSW5mb190ICosIGNoYXIgKiwgaW50ICk7CnZvaWQgR0RCVGV4dFdyaXRlICggVEluZm9fdCAq LCBjaGFyICogKTsKdm9pZCBHREJTeW5jICggRklMRSAqICk7CnZvaWQgR0RCQ29tcHJlc3MgKCBG SUxFICogKTsKdm9pZCBHREJDaGFuQWRkICggRklMRSAqLCBpbnQsIGludCwgUENJQ291bnRlciAp Owp2b2lkIEdEQkNoYW5EZWxldGUgKCBGSUxFICosIGludCwgaW50ICosIFBDSUNvdW50ZXIgKTsK dm9pZCBHREJVbml0VGVzdGluZyAodm9pZCk7CgpUQm9vbCBHREJCdWlsZE92ZXJ2aWV3cyggRklM RSAqLCBpbnQsIGludCAqLCBpbnQsIFRCb29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKiwgSU1QUHJvZ3Jlc3NGdW5jLCB2b2lkICogKTsKR0RCT3ZlcnZp ZXdJbmZvX3QgKgogICAgICAgICAgICAgICBHREJHZXRPdmVydmlld3MgKCBGSUxFICosIGludCAq KTsKdm9pZCBHREJDaGFuQ29weSAoIEZJTEUgKiwgaW50ICosIGludCwgRklMRSAqLCBpbnQgKiwg aW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqKSggaW50 LCBpbnQsIGludCwgdm9pZCAqKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv aWQgKCopKCBkb3VibGUgKSApOwpUQm9vbCBHREJNdWx0aUNoYW5Db3B5KCBGSUxFICosIGludCAq LCBpbnQgKiwgRklMRSAqLCBpbnQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCAqLCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg KCopKCBpbnQsIGludCwgaW50LGludCx2b2lkICopLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU1QUHJvZ3Jlc3NGdW5jLCB2b2lkICogKTsKdm9pZCBHREJCaXRtYXBDb3B5ICgg RklMRSAqLCBpbnQgKiwgaW50LCBGSUxFICosIGludCAqLCBpbnQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2b2lkICgqKShpbnQsaW50LGludCxpbnQsdm9pZCopLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJQ291bnRlciApOwoKaW50IEdEQlZlY3RvckNv cHkoRklMRSAqZnBfaW4sIGludCBuU2VnSW4sIEZJTEUgKmZwX291dCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBuU2VnT3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVEJv b2wgKCpUcmFuc2Zvcm1fRnVuYykoR0RCTGF5ZXIgLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0RCU2hhcGUgKiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQkxheWVyICwgR0RCU2hh cGUgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqTWFwcGluZ19GdW5jKShH REJMYXllcixHREJMYXllcixpbnQgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICgqQ291bnRlcl9GdW5jKShkb3VibGUpKTsKCmludCBHREJWZWN0b3JDcChGSUxFICpmcF9pbiwg aW50IG5TZWdJbiwgRklMRSAqZnBfb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBu U2VnT3V0LCBHREJDcEZ1bmNzICpwc0Z1bmNzKTsKCkdEQkxheWVyCiAgICAgICAgR0RCVmVjdG9y VHJhbnNmZXIoR0RCTGF5ZXIgaFNyY0xheWVyLCBHREJTaGFwZUlkICpwYWhTaGFwZUlkcywKICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkNvdW50LCBHREJMYXllciBoRHN0TGF5ZXIsIGlu dCBuT3B0aW9ucyk7CgoKR0RCU2hhcGVJZCAqR0RCR2V0TGF5ZXJTZWxlY3Rpb25SZWYoR0RCTGF5 ZXIpOwp2b2lkIEdEQlNldExheWVyU2VsZWN0aW9uKEdEQkxheWVyLCBHREJTaGFwZUlkICosIGlu dCk7CnZvaWQgR0RCQWRkVG9MYXllclNlbGVjdGlvbihHREJMYXllciwgR0RCU2hhcGVJZCk7CnZv aWQgR0RCQWRkVG9NdWx0aXBsZUxheWVyU2VsZWN0aW9uKEdEQkxheWVyLCBHREJTaGFwZUlkKiwg aW50KTsKdm9pZCBHREJSZW1vdmVMYXllclNlbGVjdGlvbihHREJMYXllciwgR0RCU2hhcGVJZCAq LCBpbnQpOwppbnQgR0RCR2V0TGF5ZXJTZWxlY3Rpb25Db3VudChHREJMYXllcik7ClRCb29sIEdE QklzU2hhcGVTZWxlY3RlZChHREJMYXllciwgR0RCU2hhcGVJZCk7ClRCb29sIEdEQlNldExvY2tM YXllclNlbGVjdGlvblN0YXR1cyggR0RCTGF5ZXIsIFRCb29sICk7ClRCb29sIEdEQkdldExvY2tM YXllclNlbGVjdGlvblN0YXR1cyggR0RCTGF5ZXIgKTsKCnZvaWQgR0RCUmVzZXRSZWFkQ2FjaGVT aXplKHZvaWQpOwp2b2lkIEdEQlNldFJlYWRDYWNoZVNpemUoaW50IG5TaXplKTsKaW50IEdEQkdl dFJlYWRDYWNoZVNpemUodm9pZCk7CnZvaWQgR0RCQ3JlYXRlTGF5ZXJDYWNoZXMoR0RCTGF5ZXIg cHNMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgbk1vZE9wdGlvbnMgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBuTW9kU2l6ZSAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IG5SZWFkT3B0aW9ucyAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IG5SZWFkU2l6ZSApOwoKVEJvb2wgR0RCTGF5ZXJDYW5I b2xkVGlsbENvbW1pdChHREJMYXllcik7CnZvaWQgR0RCRGlzY2FyZExheWVyQ2hhbmdlcyhHREJM YXllcik7CnZvaWQgR0RCU3luY0xheWVyKEdEQkxheWVyKTsKCnZvaWQgR0RCUmVtYXBSZWNvcmQo R0RCTGF5ZXIsIEdEQkxheWVyLCBpbnQgKiwgR0RCU2hhcGUgKik7CmludCAqIEdEQkdldExheWVy U3RydWN0dXJlTWFwcGluZyhHREJMYXllciBoU3JjLCBHREJMYXllciBoRGVzdCk7CmludCAqIEdE QkdldERlZm5TdHJ1Y3R1cmVNYXBwaW5nKEdEQkRlZm4gKixpbnQsR0RCRGVmbiAqLGludCk7CgoK aW50IEhhc2hHREJJbWFnZSggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCApOwp2b2lk IEdEQkF2Z1JlYWQoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBmbG9hdCAqLCBpbnQsIGlu dCwgaW50KTsKdm9pZCBHREJNb2RlUmVhZCggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGZs b2F0ICosIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKTsKCnZvaWQg R0RCUmVzYW1wbGVCeXRlSW1hZ2UgKEZJTEUgKmZwLCBkb3VibGUgZGZHZW9YT2ZmLAogICAgICAg ICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZHZW9ZT2ZmLCBkb3VibGUgZGZHZW9YU2l6ZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmR2VvWVNpemUsIHVuc2lnbmVkIGNo YXIgKnBhYnlJbWFnZUJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5CdWZY U2l6ZSwgaW50IG5CdWZZU2l6ZSwgaW50IG5CdWZDaGFuLAogICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgKmFuQ2hhbk1hcCwgaW50IG5SZXNhbXBsZVR5cGUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRCb29sIGJCYWNrVXNlZCwgZG91YmxlIGRmQmFja1ZhbHVlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICBQQ0lDb3VudGVyIHBmbkNvdW50ZXIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvdWJsZSBkZkZpcnN0Q291bnQsIGRvdWJsZSBkZkxhc3RDb3VudCk7Cgp2b2lk IEdEQlJlc2FtcGxlSW50SW1hZ2UgKEZJTEUgKmZwLCBkb3VibGUgZGZHZW9YT2ZmLAogICAgICAg ICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZHZW9ZT2ZmLCBkb3VibGUgZGZHZW9YU2l6ZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmR2VvWVNpemUsIGludDMyICpwYW4z MkltYWdlQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkJ1ZlhTaXplLCBp bnQgbkJ1ZllTaXplLCBpbnQgbkJ1ZkNoYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAqYW5DaGFuTWFwLCBpbnQgblJlc2FtcGxlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgVEJvb2wgYkJhY2tVc2VkLCBkb3VibGUgZGZCYWNrVmFsdWUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBDSUNvdW50ZXIgcGZuQ291bnRlciwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG91YmxlIGRmRmlyc3RDb3VudCwgZG91YmxlIGRmTGFzdENvdW50KTsKCnZvaWQgR0RCUmVz YW1wbGVSZWFsSW1hZ2UgKEZJTEUgKmZwLCBkb3VibGUgZGZHZW9YT2ZmLAogICAgICAgICAgICAg ICAgICAgICAgICAgICBkb3VibGUgZGZHZW9ZT2ZmLCBkb3VibGUgZGZHZW9YU2l6ZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmR2VvWVNpemUsIGZsb2F0ICpwYWZJbWFnZUJ1 ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5CdWZYU2l6ZSwgaW50IG5CdWZZ U2l6ZSwgaW50IG5CdWZDaGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmFuQ2hh bk1hcCwgaW50IG5SZXNhbXBsZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCb29s IGJCYWNrVXNlZCwgZG91YmxlIGRmQmFja1ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAg ICBQQ0lDb3VudGVyIHBmbkNvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJs ZSBkZkZpcnN0Q291bnQsIGRvdWJsZSBkZkxhc3RDb3VudCk7Cgpjb25zdCBjaGFyICogR0RCRmV0 Y2hNZXRhRGF0YUVudHJ5KEZJTEUgKiwgaW50LCBpbnQsY29uc3QgY2hhciAqKTsKdm9pZCBHREJT ZXRNZXRhRGF0YUVudHJ5KEZJTEUgKiwgaW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwp2b2lkIEdE QkRlbGV0ZU1ldGFEYXRhRW50cmllcyhGSUxFICosIGludCwgaW50LGNvbnN0IGNoYXIgKiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KiwgVEJvb2wpOwoKdm9pZCBHREJXcml0ZUhpc3RvcnkoRklMRSAqLCBpbnQsIGludCwgY29uc3Qg Y2hhciAqKTsKY29uc3QgY2hhciAqIEdEQlJlYWRIaXN0b3J5KEZJTEUgKiwgaW50LCBpbnQsIGlu dCApOwoKdm9pZCBHREJCaW5hcnlJTyggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIHVuc2ln bmVkIGNoYXIgKiApOwppbnQgR0RCR2V0QmluYXJ5TGVuZ3RoKCBGSUxFICosIGludCApOwoKdm9p ZCBHREJKT0xUSGFyZFN5bmMoIEZJTEUgKiwgVEJvb2wgYkRlc3Ryb3lJbWFnZUxheWVycyApOwoK dm9pZCBHREJKT0xURmlsbENoYW5uZWxzQWRkZWRMaXN0KCBGSUxFKiBmcCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBwYW5DaGFuTWFwLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbk5ld0NoYW5uZWxDb3Vu dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5PbGRD aGFubmVsQ291bnQgKTsKIyAxOTI4ICIuLi8uLi8uLi9saWIvZ2RiLmgiClRCb29sIEdEQkFzc2ln bkFsbFBJRHMoIEZJTEUqIGZwICk7CgpUQm9vbCBHREJBdXRvU2V0Q2hhblBJRCggRklMRSogZnAs IGludCBuQ2hhbk51bWJlciwgdWludDMyICpwdVBJRCApOwpUQm9vbCBHREJHZXRDaGFuUElEKCBG SUxFKiBmcCwgaW50IG5DaGFuTnVtYmVyLCB1aW50MzIgKnB1UElEICk7CmludCBHREJGaW5kQ2hh bkZyb21QSUQoIEZJTEUqIGZwLCB1aW50MzIgblBJRCApOwoKVEJvb2wgU2V0Q2hhbkNSQyhGSUxF ICpmcCwgaW50IG5DaGFuTnVtYmVyLCB1aW50MzIgKnB1UElEICk7ClRCb29sIEdldENoYW5DUkMo IEZJTEUqIGZwLCBpbnQgbkNoYW5OdW1iZXIsIHVpbnQzMiAqcHVQSUQgKTsKaW50IEZpbmRDaGFu RnJvbUNSQyggRklMRSogZnAsIHVpbnQzMiBuUElEICk7CgpUQm9vbCBHZW5lcmF0ZUNSQyhGSUxF ICpmcCwgaW50IG5DaGFubmVsLCB1aW50MzIgKm5DUkMpOwoKCnZvaWQgR0RCSk9MVFJlbWFwQW5k Q29tbWl0Q2hhbm5lbERlbGV0aW9ucyggRklMRSogZnAsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogcGFuQ2hhbk1hcCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5OZXdDaGFu bmVsQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBuT2xkQ2hhbm5lbENvdW50ICk7Cgp2b2lkIEdEQkpPTFRSZW1hcEFuZENvbW1p dENoYW5uZWxBZGRpdGlvbnMoRklMRSogZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQqIHBhbkNoYW5NYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgbk5ld0NoYW5uZWxDb3VudCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuT2xkQ2hhbm5lbENvdW50KTsKCgoKCgpUQm9v bCBHREJUZXN0Q2FwYWJpbGl0eSggR0RCTGF5ZXIgLCBHREJGbGFncyApOwojIDE5NjQgIi4uLy4u Ly4uL2xpYi9nZGIuaCIKaW50IEdEQkdldFByb2plY3Rpb25JbmZvKCBHREJMYXllciAsIFByb2pJ bmZvX3QgKiApOwp2b2lkIEdEQlNldFByb2plY3Rpb25JbmZvKCBHREJMYXllciAsIFByb2pJbmZv X3QgKiApOwoKR0RCTGF5ZXIgR0RCR2V0TGF5ZXIoIEZJTEUgKiwgaW50ICk7CkdEQkxheWVyVHlw ZSBHREJHZXRMYXllclR5cGUoIEdEQkxheWVyIGhMYXllciwgVEJvb2wgYkRvU2NhbklmVW5rbm93 biApOwpHREJMYXllciBHREJDcmVhdGVMYXllciggRklMRSAqLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogcHN6TmFtZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHBzekRlc2MsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBwc3pPcHRp b25zICk7CgppbnQgR0RCTGF5ZXIyU2VnbWVudCggR0RCTGF5ZXIgaExheWVyICk7CmludCBHREJM YXllcjJUeXBlKCBHREJMYXllciApOwpGSUxFICogR0RCTGF5ZXIyZnAoIEdEQkxheWVyICk7Cgp2 b2lkIEdEQkRlbGV0ZUxheWVyKCBGSUxFICpmcCwgaW50IG5TZWdtZW50ICk7CgpHREJTaGFwZUlk IEdEQkdldEZpcnN0KEdEQkxheWVyICk7CkdEQlNoYXBlSWQgR0RCR2V0TmV4dChHREJMYXllciAs IEdEQlNoYXBlSWQpOwoKCgoKR0RCU2hhcGVJZCAqIEdEQlF1ZXJ5KCBHREJMYXllciBoTGF5ZXIs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBuT3V0U2hhcGVDb3Vu dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlNoYXBlSWQgKnBhaFNo YXBlSWRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5JblNoYXBl Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpw c3pFeHByZXNzaW9uICk7CgpHREJTaGFwZUlkICogR0RCUXVlcnlMYXllciggR0RCTGF5ZXIgLCBp bnQgKnBuQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdE QlNoYXBlSWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IG5Db3VudCwgR0RCU2VhcmNoVHlwZSwgLi4uICk7Cgp2b2lkIEdEQkZpbmRFeHRlbnRzKEdEQlZl cnRleCAqcGFzVmVydGljZXMsIGludCBuQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHREJWZXJ0ZXggKnBzTWluLCBHREJWZXJ0ZXggKnBzTWF4KTsKVEJvb2wgR0RCRmluZFNo YXBlRXh0ZW50cyhHREJMYXllciwgR0RCU2hhcGVJZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqLCBHREJWZXJ0ZXggKiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCb29sIGJEaXNwbGF5RXJyb3Ip Owp2b2lkIEdEQkZpbmRFeHRlbnRzMihHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzLCBpbnQgbkNvdW50 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqcHNNaW4sIEdEQlZl cnRleCAqcHNNYXgpOwp2b2lkIEdEQk1ha2VNaW5NYXgoR0RCVmVydGV4ICpwc01pbiwgR0RCVmVy dGV4ICpwc01heCk7CmludCBHREJGaW5kTmVhcmVzdFZlcnRleChHREJMYXllciwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJTaGFwZUlkLCBHREJWZXJ0 ZXggKik7CgpHREJTZWFyY2ggKiBHREJTZXRTZWFyY2hDcml0ZXJpYShHREJMYXllciAsIEdEQlNl YXJjaFR5cGUsIC4uLik7CkdEQlNoYXBlSWQgR0RCRmluZEZpcnN0KEdEQlNlYXJjaCAqLCBHREJT aGFwZUlkICosIGludCk7CkdEQlNoYXBlSWQgR0RCRmluZE5leHQoR0RCU2VhcmNoICosR0RCU2hh cGVJZCAqLCBpbnQpOwp2b2lkIEdEQlJlbGVhc2VDcml0ZXJpYShHREJTZWFyY2ggKik7CgpHREJT aGFwZUlkIEdEQkNyZWF0ZVNoYXBlKCBHREJMYXllciAsIEdEQlNoYXBlSWQpOwp2b2lkIEdEQkRl bGV0ZVNoYXBlKCBHREJMYXllciAsIEdEQlNoYXBlSWQgKTsKR0RCU2hhcGVJZCBHREJVbkRlbGV0 ZVNoYXBlKCBHREJMYXllciAsIEdEQlNoYXBlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0RCU2hhcGUgKnBzU2hhcGUgKTsKCkdEQlZlcnRleCAqIEdEQkdl dFZlcnRpY2VzKEdEQkxheWVyICwgR0RCU2hhcGVJZCwgaW50ICpwbkNvdW50ICk7CkdEQlZlcnRl eCAqIEdEQkdldFZlcnRpY2VzUmVmKEdEQkxheWVyLCBHREJTaGFwZUlkLCBpbnQgKnBuQ291bnQp Owp2b2lkIEdEQlNldFZlcnRpY2VzKEdEQkxheWVyICwgR0RCU2hhcGVJZCwgaW50IG5Db3VudCwg R0RCVmVydGV4ICopOwpHREJWZXJ0ZXggKiBHREJWZXJ0ZXhDb3B5KEdEQlZlcnRleCAqLCBpbnQg bkNvdW50KTsKCmludCBHREJHZXROdW1GaWVsZHMoR0RCTGF5ZXIpOwppbnQgR0RCR2V0RmllbGRJ bmRleChHREJMYXllciwgY29uc3QgY2hhciAqKTsKaW50IEdEQkdldEZpZWxkSW5kZXhSZWdleChH REJMYXllciwgY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50LCBUQm9vbCk7CmNvbnN0IGNoYXIgKiBHREJHZXRGaWVsZE5hbWUoR0RCTGF5 ZXIsIGludCk7Cgpjb25zdCBjaGFyICogR0RCR2V0RmllbGREZXNjKEdEQkxheWVyIGhMYXllciwg aW50IGlGaWVsZCk7CnZvaWQgR0RCU2V0RGVmYXVsdChHREJMYXllciBoTGF5ZXIsIGludCBpRmll bGQsIEdEQkZpZWxkICpwdVZhbHVlKTsKdm9pZCBHREJTZXRGaWVsZERlc2MoR0RCTGF5ZXIgaExh eWVyLCBpbnQgaUZpZWxkLCBjaGFyICpwc3pEZXNjKTsKdm9pZCBHREJTZXRGaWVsZE5hbWUoR0RC TGF5ZXIgaExheWVyLCBpbnQgaUZpZWxkLCBjaGFyICpwc3pOYW1lKTsKdm9pZCBHREJTZXRGaWVs ZEZvcm1hdChHREJMYXllciBoTGF5ZXIsIGludCBpRmllbGQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpwc3pGb3JtYXQpOwoKCmNvbnN0IGNoYXIgKiBHREJH ZXRGaWVsZEZvcm1hdChHREJMYXllciwgaW50KTsKaW50IEdEQkdldEZpZWxkV2lkdGgoR0RCTGF5 ZXIsIGludCwgaW50ICosIFRCb29sICopOwpjb25zdCBjaGFyICogR0RCR2VuRmllbGRGb3JtYXQo R0RCRmllbGRUeXBlLCBpbnQsIGludCwgVEJvb2wgKTsKdm9pZCBHREJJbml0aWFsaXplRmllbGRG b3JtYXRzKEdEQkxheWVyIHBzTGF5ZXIpOwoKR0RCRmllbGRUeXBlIEdEQkdldEZpZWxkVHlwZSAo R0RCTGF5ZXIsIGludCk7ClRCb29sIEdEQklzU3lzRmllbGQgKGNoYXIgKiwgR0RCTGF5ZXIsIGlu dCk7CkdEQkZpZWxkICogR0RCR2V0RmllbGREZWZhdWx0IChHREJMYXllciwgaW50KTsKdm9pZCBH REJTZXRGaWVsZFZhbHVlIChHREJMYXllciwgR0RCU2hhcGVJZCwgaW50LCBHREJGaWVsZCopOwpk b3VibGUgR0RCU2V0VmFsdWUgKEdEQkxheWVyLCBHREJTaGFwZUlkLCBpbnQsIGRvdWJsZSApOwpH REJGaWVsZCAqIEdEQkdldEZpZWxkVmFsdWUgKEdEQkxheWVyLCBHREJTaGFwZUlkLCBpbnQpOwpH REJGaWVsZCAqIEdEQkdldEZpZWxkVmFsdWVRdWlja2x5KEdEQkxheWVyICwgR0RCU2hhcGUgKiwg aW50KTsKZG91YmxlIEdEQkdldFZhbHVlIChHREJMYXllciwgR0RCU2hhcGVJZCwgaW50KTsKY2hh ciAqIEdEQkdldFZhbHVlU3RyaW5nIChHREJMYXllciwgR0RCU2hhcGVJZCwgaW50KTsKdm9pZCBH REJTZXRWYWx1ZVN0cmluZyAoR0RCTGF5ZXIsIEdEQlNoYXBlSWQsIGludCwgY2hhciAqKTsKdm9p ZCBHREJTZXRGaWVsZFZhbHVlU3RyaW5nKEdEQkZpZWxkICpwdUZpZWxkLCBHREJGaWVsZFR5cGUg ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aGFyICpwc3pWYWx1ZSk7CgoKCgp2b2lkIEdEQlNldEZpZWxkTWlzc2luZ1ZhbHVlKEdEQkxheWVy LCBpbnQsIGNoYXIgKik7CmNoYXIgKkdEQkdldEZpZWxkTWlzc2luZ1ZhbHVlKEdEQkxheWVyLCBp bnQpOwp2b2lkIEdEQlNldEZpZWxkUmVhZE9ubHkoR0RCTGF5ZXIsIGludCwgVEJvb2wpOwpUQm9v bCBHREJJc0ZpZWxkUmVhZE9ubHkoR0RCTGF5ZXIsIGludCk7CnZvaWQgR0RCU2V0RmllbGRIaWRk ZW4oR0RCTGF5ZXIsIGludCwgVEJvb2wpOwpUQm9vbCBHREJJc0ZpZWxkSGlkZGVuKEdEQkxheWVy LCBpbnQpOwp2b2lkIEdEQlNldEZpZWxkQWxpYXMoR0RCTGF5ZXIsIGludCwgY2hhciAqKTsKY2hh ciAqR0RCR2V0RmllbGRBbGlhcyhHREJMYXllciwgaW50KTsKdm9pZCBHREJTZXRGaWVsZFZhbGlk YXRpb25SdWxlKEdEQkxheWVyLCBpbnQsIGNoYXIgKik7CmNoYXIgKkdEQkdldEZpZWxkVmFsaWRh dGlvblJ1bGUoR0RCTGF5ZXIsIGludCk7CnZvaWQgR0RCU2V0RmllbGRVbmlxdWVWYWx1ZXMoR0RC TGF5ZXIsIGludCwgVEJvb2wpOwpUQm9vbCBHREJIYXNGaWVsZFVuaXF1ZVZhbHVlcyhHREJMYXll ciwgaW50KTsKCkdEQkZpZWxkICogR0RCR2V0UmVjb3JkIChHREJMYXllciwgR0RCU2hhcGVJZCk7 CnZvaWQgR0RCU2V0UmVjb3JkIChHREJMYXllciwgR0RCU2hhcGVJZCwgR0RCRmllbGQgKik7CkdE QkZpZWxkICogR0RCR2V0UmVjb3JkUmVmIChHREJMYXllciwgR0RCU2hhcGVJZCk7CmludCBHREJB ZGRGaWVsZCAoR0RCTGF5ZXIsIGNoYXIgKnBzek5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0RCRmllbGRUeXBlIGVUeXBlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdEQkZpZWxkICpwc0RlZmF1bHQpOwoKCkdEQkZpZWxkICog R0RCUmVjb3JkQ29weSAoR0RCTGF5ZXIsIEdEQkZpZWxkICopOwpHREJGaWVsZCAqIEdEQlJlY29y ZEFsbG9jIChHREJMYXllcik7CnZvaWQgR0RCUmVjb3JkRnJlZSAoR0RCTGF5ZXIsIEdEQkZpZWxk ICopOwoKCnZvaWQgR0RCRmllbGRGcmVlIChHREJGaWVsZFR5cGUsIEdEQkZpZWxkICopOwpHREJG aWVsZCBHREJGaWVsZENvcHkgKEdEQkZpZWxkVHlwZSwgR0RCRmllbGQgKik7ClRCb29sIEdEQkZp ZWxkVmFsdWVJZGVudGljYWwoR0RCRmllbGRUeXBlIGVUeXBlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCRmllbGQqIHBzRmllbGQxLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCRmllbGQqIHBzRmll bGQyKTsKCnZvaWQgR0RCRmx1c2hDYWNoZSAoR0RCTGF5ZXIgcHNMYXllcik7CgpHREJTaGFwZSAq IEdEQlNoYXBlQWxsb2MoR0RCTGF5ZXIpOwp2b2lkIEdEQlNoYXBlRnJlZShHREJMYXllciwgR0RC U2hhcGUgKik7CkdEQlNoYXBlICogR0RCR2V0U2hhcGUoR0RCTGF5ZXIsIEdEQlNoYXBlSWQpOwoK R0RCU2hhcGUgKiBHREJHZXRTaGFwZVJlZihHREJMYXllciwgR0RCU2hhcGVJZCk7CnZvaWQgR0RC U2V0U2hhcGUoR0RCTGF5ZXIsIEdEQlNoYXBlSWQsIEdEQlNoYXBlKik7CkdEQlNoYXBlICogR0RC U2hhcGVDb3B5KEdEQkxheWVyLCBHREJTaGFwZSAqKTsKR0RCVmVydGV4ICogR0RCRmluZENsb3Nl c3RQb2ludCggR0RCTGF5ZXIsIEdEQlNoYXBlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHREJWZXJ0ZXgsIGludCAqLCBkb3VibGUgKiwgaW50ICogKTsKR0RCVmVy dGV4ICpHREJGaW5kQ2xvc2VzdEZyb21BcnJheShHREJWZXJ0ZXggKnBzUG9pbnQsCiAgICAgICAg ICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqcGFzVmVydGljZXMsIGludCBuQ291bnQsCiAgICAg ICAgICAgICAgICAgICAgICAgIGludCAqbkxlZnRJbmRleCwgZG91YmxlICpkZk1pbkRpc3QsIGlu dCAqblZlcnRleEluZGV4KTsKCnZvaWQgX0dEQlNldENvb3JkRnJvbUF0dHJpYiggR0RCTGF5ZXIs IEdEQlNoYXBlICogKTsKdm9pZCBfR0RCU2V0QXR0cmliRnJvbUNvb3JkKCBHREJMYXllciwgR0RC U2hhcGUgKiApOwoKdm9pZCBHREJNb2RDYWNoZUZsdXNoRnVuYyhDQ0hIYW5kbGUgcHNDYWNoZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ0hFbnRyeSAq cHNFbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICpwRGF0YSk7Cgp2b2lkIEdEQlJlYWRDYWNoZUZsdXNoRnVuYyhDQ0hIYW5kbGUgcHNDYWNo ZSwgQ0NIRW50cnkgKnBzRW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZvaWQgKnBEYXRhKTsKCmludCBHREJHZXROdW1TaGFwZXMoR0RCTGF5ZXIpOwp2b2lkIF9H REJTZXROdW1TaGFwZXMoR0RCTGF5ZXIsIGludCk7CnZvaWQgR0RCU2V0TnVtT2ZTaGFwZXNCeVR5 cGUoR0RCTGF5ZXIgaExheWVyLCBpbnQgblBvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkxpbmVzLCBpbnQgbkFyZWFzKTsKdm9pZCBH REJHZXROdW1PZlNoYXBlc0J5VHlwZShHREJMYXllciBoTGF5ZXIsIGludCogcG5Qb2ludHMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBwbkxp bmVzLCBpbnQqIHBuQXJlYXMpOwpHREJMYXllclR5cGUgR0RCR2V0U2hhcGVUeXBlKEdEQkxheWVy IGhMYXllciwgR0RCU2hhcGVJZCBoRW50aXR5KTsKdm9pZCBHREJVcGRhdGVTaGFwZUJ5VHlwZShH REJMYXllciBoTGF5ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0RCU2hhcGVJZCBoRW50aXR5LCBpbnQgbk9wZXJhdGlvbik7CgpHREJGYXRTaGFwZSAq IEdEQkdldEZhdFNoYXBlKEdEQkxheWVyLCBHREJTaGFwZUlkKTsKdm9pZCBHREJTZXRGYXRTaGFw ZShHREJMYXllciwgR0RCU2hhcGVJZCwgR0RCRmF0U2hhcGUgKiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICopOwp2b2lkIEdEQkZhdFNoYXBlRnJlZShHREJG YXRTaGFwZSAqcHNGYXRTaGFwZSk7CkdEQkZhdFNoYXBlICogR0RCRmF0U2hhcGVBbGxvYyhHREJM YXllcik7CgoKdm9pZCAqIEdEQkdldFJlcFRhYmxlKEdEQkxheWVyKTsKdm9pZCBHREJTZXRSZXBU YWJsZShHREJMYXllciwgdm9pZCAqKTsKCkdEQkxheWVyIEdEQkNvcHlMYXllclN0cnVjdHVyZShH REJMYXllciBTcmMsIEdEQkxheWVyIERlc3QpOwpUQm9vbCBHREJMYXllckhhc05vR2VvZ3JhcGh5 KEdEQkxheWVyIGhMYXllcik7CgpUQm9vbCBHREJHZXRFeHRlbnRzKEdEQkxheWVyIHBzTGF5ZXIs IEdEQlZlcnRleCAqcHNNaW4gLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdEQlZlcnRleCAqcHNNYXgpOwoKdm9pZCBfR0RCU2V0RXh0ZW50cyhHREJMYXllciBwc0xh eWVyLCBHREJWZXJ0ZXggKnBzTWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJW ZXJ0ZXggKnBzTWF4KTsKVEJvb2wgR0RCQ2FsY0V4dGVudHMoR0RCTGF5ZXIgcHNMYXllciwgR0RC VmVydGV4ICpwc01pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0RCVmVydGV4ICpwc01heCk7ClRCb29sIEdEQkdldE92ZXJhbGxFeHRlbnRzKCBGSUxFICosIFBy b2pJbmZvX3QgKiApOwoKdm9pZCBHREJTZXRDdXJyZW50QXJlYUV4dGVudHMoR0RCVmVydGV4ICpw c01pbiwgR0RCVmVydGV4ICpwc01heCk7CnZvaWQgR0RCR2V0Q3VycmVudEFyZWFFeHRlbnRzKEdE QlZlcnRleCAqcHNNaW4sIEdEQlZlcnRleCAqcHNNYXgpOwp2b2lkIEdEQlNldEN1cnJlbnRBcmVh SGFzRml4ZWRFeHRlbnRzKFRCb29sIGJGaXhlZCk7ClRCb29sIEdEQkN1cnJlbnRBcmVhSGFzRml4 ZWRFeHRlbnRzKHZvaWQpOwoKVEJvb2wgR0RCR2V0VmVjQWRqdXN0ZWRYWVNpemUoIEZJTEUgKiwg aW50ICosIGludCAqICk7Cgp2b2lkIEdEQkFkZEF0dEluZm8oIEdEQkxheWVyLCBjb25zdCBjaGFy ICosIEdEQkZpZWxkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQkZpZWxk ICopOwpHREJEZWZuICogR0RCRGVmaW5lTmV3RmllbGQoR0RCTGF5ZXIgcHNMYXllciwgY29uc3Qg Y2hhciAqcHN6RmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpwc3pGaWVsZERlc2MsIEdEQkZpZWxkVHlwZSBlRmllbGRUeXBlLAogICAgICAgICAgICAgICAg ICAgICAgICAgICBHREJGaWVsZCAqcHVGaWVsZCwgY29uc3QgY2hhciAqcHN6Rm9ybWF0LCAuLi4p OwoKR0RCRGVmbiAqIEdEQkdldEZpZWxkRGVmbihHREJMYXllciwgaW50KTsKR0RCRGVmbiAqIEdE QkFkZEZpZWxkRGVmbihHREJMYXllciApOwp2b2lkIEdEQkRlZm5GcmVlKCBHREJEZWZuICogcHNE ZWZuICk7Cgp2b2lkIEdEQkZyZWVBdHRJbmZvKEdEQkxheWVyKTsKdm9pZCBHREJGcmVlTGF5ZXJT dHJ1Y3QoR0RCTGF5ZXIpOwoKRklMRSAqIEdEQkNyZWF0ZU1lbUNvcHkoR0RCTGF5ZXIgcHNMYXll cik7CkZJTEUgKiBHREJDcmVhdGVDb21wTWVtQ29weShHREJMYXllciwgY29uc3QgY2hhciAqKTsK CmludCAqIEdEQkNvdW50ZWRJbnRMaXN0Q29weShpbnQgKik7CmludCBHREJHZXRTZWdtZW50TnVt KEdEQkxheWVyKTsKCkdEQkxheWVyICogR0RCQXBwZW5kTGF5ZXJBcnJheShHREJMYXllciAsIEdE QkxheWVyICogLCBpbnQgKikgOwpHREJMYXllciBHREJJbmNyZWFzZUxheWVyQXJyYXkoRklMRSAq LCBHREJMYXllciAqKiwgaW50ICopOwpHREJMYXllciBHREJMYXllckFsbG9jKEZJTEUgKmZwKTsK dm9pZCBHREJMYXllckZyZWUoIEdEQkxheWVyICk7CgpHREJTaGFwZSAqIEdldEdEQlNoYXBlKFZJ bmZvX3QgKiwgR0RCU2hhcGVJZCk7CnZvaWQgU2V0R0RCU2hhcGUoVkluZm9fdCAqLCBHREJTaGFw ZSopOwpUQm9vbCBHREJTZXRVcGRhdGVNb2RlKEdEQkxheWVyLFRCb29sKTsKCgoKCkdEQlNoYXBl ICogR0RCR2V0UmluZ1JlZiggR0RCTGF5ZXIsIEdEQlNoYXBlICosIGludCwgaW50MzIgKiApOwpH REJTaGFwZSAqIEdEQkdldFJpbmcoIEdEQkxheWVyLCBHREJTaGFwZSAqLCBpbnQsIGludDMyICog KTsKaW50IEdEQkFkZFJpbmdUb1NoYXBlKCBHREJMYXllciwgR0RCU2hhcGUgKiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqLCBpbnQgKTsKVEJv b2wgR0RCR2V0UmluZ0luZm8oIEdEQkxheWVyLCBHREJTaGFwZSAqLCBpbnQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiwgaW50ICosIGludDMyICogKTsKdm9p ZCBHREJEZWxldGVSaW5nKCBHREJMYXllciwgR0RCU2hhcGUgKiwgaW50ICk7CmludCBHREJHZXRS aW5nQ291bnQoIEdEQkxheWVyLCBHREJTaGFwZSAqLCBpbnQzMiAqICk7CnZvaWQgR0RCU2V0Umlu Z1ZlcnRpY2VzKEdEQkxheWVyIGhMYXllciwgR0RCU2hhcGUqIHBzU2hhcGUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaVJpbmcsIEdEQlZlcnRleCAqcGFz VmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg bkNvdW50KTsKdm9pZCBDQ0xSaW5nVGVzdCggdm9pZCApOwpHREJWZXJ0ZXggKkdEQkNvbWJpbmVW ZXJ0aWNlcyhHREJMYXllciBwc0xheWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdEQlNoYXBlSWQqIHBhblNoYXBlSWRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBuTnVtU2hhcGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogcG5D b3VudCk7CgoKCgp2b2lkIElEQkNsZWFyU2hhcGVzKEdEQkxheWVyICk7ClRCb29sIElEQkNvbnZl cnRUb05ldyhHREJMYXllciApOwpUQm9vbCBJREJDbGVhckxheWVyKEdEQkxheWVyKTsKClRCb29s IEdEQkNsZWFyTGF5ZXIoR0RCTGF5ZXIpOwoKdm9pZCBJREJCdWZmQWxsb2MoKTsKdm9pZCBJREJC dWZmUmVhbGxvYyhsb25nKTsKCgoKCgoKdm9pZCBNUllDbGVhckVkaXRMaXN0KEdEQkxheWVyKTsK R0RCU2hhcGVJZCAqIE1SWUdldEVkaXRMaXN0KEdEQkxheWVyLCBpbnQgKik7CnZvaWQgTVJZSW5p dEVkaXRMaXN0KEdEQkxheWVyKTsKdm9pZCBNUllEZXN0cm95RWRpdExpc3QoR0RCTGF5ZXIpOwpH REJTaGFwZSAqIE1SWUdldFNoYXBlKEdEQkxheWVyLCBHREJTaGFwZUlkKTsKCgoKCgpHREJRdWFk VHJlZSAqIEdEQlF1YWRUcmVlQWxsb2MoR0RCTGF5ZXIgaExheWVyLCBHREJWZXJ0ZXggKnBzTWlu LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBzTWF4LCBpbnQgbkRl cHRoKTsKdm9pZCBHREJRdWFkVHJlZUZyZWUoR0RCUXVhZFRyZWUgKnBzUVQpOwpUQm9vbCBHREJR dWFkVHJlZVVwZGF0ZShHREJRdWFkVHJlZSAqcHNRVCwgR0RCU2hhcGVJZCBoU2hhcGUsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBzTWluLCBHREJWZXJ0ZXggKnBz TWF4KTsKCnZvaWQgR0RCUXVhZFRyZWVEZWxldGUoR0RCUXVhZFRyZWUgKnBzUVQsIEdEQlNoYXBl SWQgaFNoYXBlKTsKCkdEQlF1YWROb2RlICogR0RCVXBRdWFkVHJlZShHREJRdWFkTm9kZSAqcHND dXJyZW50LCBHREJRdWFkTm9kZSAqcHNTdGFydCk7CkdEQlNoYXBlSWQgR0RCSW5jbHVzaXZlU2Vh cmNoKEdEQlFUSXRlcmF0b3IgKnBzSXRlcik7CnZvaWQgR0RCRW5xdWFkTGF5ZXIoR0RCTGF5ZXIp Owp2b2lkIEdEQkRlcXVhZExheWVyKEdEQkxheWVyKTsKR0RCUXVhZE5vZGUgKiogR0RCR2V0SW5j bHVzaXZlTm9kZUxpc3QoR0RCUXVhZFRyZWUgKiwgR0RCVmVydGV4ICosCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICopOwoKCgoKVEJvb2wgR0RCU2V0UmVw Q29kZUZpZWxkKEdEQkxheWVyLCBjaGFyICopOwppbnQgR0RCR2V0UmVwQ29kZShHREJMYXllciwg R0RCU2hhcGVJZCk7CnZvaWQgR0RCU2V0UmVwQ29kZShHREJMYXllciwgR0RCU2hhcGVJZCwgaW50 KTsKClRCb29sIEdEQlNldEdyb3VwSWRGaWVsZChHREJMYXllciwgY2hhciAqKTsKaW50IEdEQkdl dEdyb3VwSWQoR0RCTGF5ZXIsIEdEQlNoYXBlSWQpOwp2b2lkIEdEQlNldEdyb3VwSWQoR0RCTGF5 ZXIsIEdEQlNoYXBlSWQsIGludCk7CgpUQm9vbCBHREJTZXRDaGlsZExpc3RGaWVsZChHREJMYXll ciwgY2hhciAqKTsKaW50ICogR0RCR2V0Q2hpbGRMaXN0KEdEQkxheWVyLCBHREJTaGFwZUlkKTsK dm9pZCBHREJTZXRDaGlsZExpc3QoR0RCTGF5ZXIsIEdEQlNoYXBlSWQsIGludCAqKTsKClRCb29s IEdEQlNldFRleHRGaWVsZChHREJMYXllciwgY2hhciAqKTsKY2hhciAqIEdEQkdldFRleHQoR0RC TGF5ZXIsIEdEQlNoYXBlSWQpOwpjaGFyICogR0RCR2V0VGV4dFF1aWNrbHkoR0RCTGF5ZXIgLCBH REJTaGFwZSAqKTsKdm9pZCBHREJTZXRUZXh0KEdEQkxheWVyLCBHREJTaGFwZUlkLCBjaGFyICop OwoKVEJvb2wgR0RCU2V0QW5nbGVGaWVsZChHREJMYXllciwgY2hhciAqKTsKVEJvb2wgR0RCR2V0 QW5nbGUoR0RCTGF5ZXIsIEdEQlNoYXBlSWQsIGRvdWJsZSAqKTsKVEJvb2wgR0RCR2V0QW5nbGVR dWlja2x5KEdEQkxheWVyLCBHREJTaGFwZSAqLCBkb3VibGUgKik7CnZvaWQgR0RCU2V0QW5nbGUo R0RCTGF5ZXIsIEdEQlNoYXBlSWQsIGRvdWJsZSk7CnZvaWQgR0RCU2V0QW5nbGVVbml0KEdEQkxh eWVyLCBHREJBbmdsZVVuaXQpOwp2b2lkIEdEQlNldEFuZ2xlVW5pdFN0cihHREJMYXllciwgY2hh ciopOwpHREJBbmdsZVVuaXQgR0RCR2V0QW5nbGVVbml0KEdEQkxheWVyKTsKY2hhciAqR0RCR2V0 QW5nbGVVbml0U3RyKEdEQkxheWVyKTsKdm9pZCBHREJDb252ZXJ0QW5nbGUoR0RCQW5nbGVVbml0 LCBHREJBbmdsZVVuaXQsIGRvdWJsZSopOwpjaGFyICoqR0RCR2V0QW5nbGVVbml0c0xpc3QoKTsK ClRCb29sIEdEQlNldEhlaWdodEZpZWxkKEdEQkxheWVyLCBjaGFyICopOwpkb3VibGUgR0RCR2V0 SGVpZ2h0KEdEQkxheWVyLCBHREJTaGFwZUlkKTsKVEJvb2wgR0RCR2V0SGVpZ2h0UXVpY2tseShH REJMYXllciwgR0RCU2hhcGUgKiwgZG91YmxlICopOwp2b2lkIEdEQlNldEhlaWdodChHREJMYXll ciwgR0RCU2hhcGVJZCwgZG91YmxlKTsKCnZvaWQgR0RCSW5pdFNwZWNpYWxGaWVsZHMoR0RCTGF5 ZXIpOwp2b2lkIEdEQlJlSW5pdFNwZWNpYWxGaWVsZHMoR0RCTGF5ZXIpOwp2b2lkIEdEQlNldFN5 c3RlbUZpZWxkKCBHREJMYXllciwgY29uc3QgY2hhciAqLCBpbnQgKTsKaW50IEdEQkdldFN5c3Rl bUZpZWxkKCBHREJMYXllciwgY29uc3QgY2hhciAqICk7CgoKCgoKdm9pZCBHREJCdWlsZEdyb3Vw SW5kZXgoR0RCTGF5ZXIgaExheWVyKTsKdm9pZCBHREJEZXN0cm95R3JvdXBJbmRleChHREJMYXll ciBoTGF5ZXIpOwpUQm9vbCBHREJBZGRUb0dyb3VwKEdEQkxheWVyIGhMYXllciwgR0RCU2hhcGVJ ZCBoU2hhcGVJZCk7CkdEQkdyb3VwIEdEQkdldEdyb3VwKEdEQkxheWVyIGhMYXllciwgaW50IGlH cm91cElkKTsKVEJvb2wgR0RCRGVsZXRlRnJvbUdyb3VwKEdEQkxheWVyIGhMYXllciwgR0RCU2hh cGVJZCBoU2hhcGVJZCk7ClRCb29sIEdEQlVuR3JvdXAoR0RCTGF5ZXIgaExheWVyLCBpbnQgaUdy b3VwSWQpOwppbnQgR0RCRmluZEZyZWVHcm91cElkKEdEQkxheWVyIGhMYXllciwgaW50IGlBZHZp c29yeUdyb3VwSWQpOwpUQm9vbCBHREJQYWNrR3JvdXBzKEdEQkxheWVyIGhMYXllcik7CmludCBH REJHcm91cEVudGl0aWVzKCBHREJMYXllciBoTGF5ZXIsIEdEQlNoYXBlSWQgKnBhaEVudGl0aWVz LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5FbnRpdGllcyApOwoKCgoK R0RCU2hhcGVJZCAqIEdEQkdldENoaWxkTGlzdENvcHkoR0RCTGF5ZXIgaExheWVyLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlNoYXBlSWQgaEVudGl0eSk7 CnZvaWQgR0RCQXR0YWNoRW50aXRpZXMoR0RCTGF5ZXIgaExheWVyLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlNoYXBlSWQgKnBhaEVudGl0aWVzLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuRW50aXRpZXMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCU2hhcGVJZCBoUGFy ZW50U2hhcGVJZCk7CkdEQlNoYXBlSWQgR0RCRmluZENoaWxkTGlzdFBhcmVudChHREJMYXllciBo TGF5ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH REJTaGFwZUlkIGhTaGFwZUlkKTsKR0RCU2hhcGVJZCAqIEdEQkdldEF0dGFjaGVkRW50aXRpZXMo R0RCTGF5ZXIgaExheWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdEQlNoYXBlSWQgaFNoYXBlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpwbkVudGl0aWVzKTsKR0RCU2hhcGVJZCAqIEdE QkRldGFjaEVudGl0aWVzKEdEQkxheWVyIGhMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0RCU2hhcGVJZCBoRW50aXR5LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBuRW50aXRpZXMpOwp2b2lkIEdEQkRl dGFjaENoaWxkTGlzdEVudGl0aWVzKEdEQkxheWVyIGhMYXllciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCU2hhcGVJZCBoRW50aXR5KTsK CgoKCnZvaWQgKiBMb2FkR0RCRHluRm9ybWF0KGNvbnN0IGNoYXIgKnBzekZvcm1hdE5hbWUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwc3pCYXNlTmFtZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzelJlZ2lzdGVy RnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuVmVyc2lvbiAsIGNv bnN0IGNoYXIgKiBwc3pGaWxlTmFtZSk7Cgp2b2lkIEFMTFJlZ2lzdGVyKCB2b2lkICk7CnZvaWQg VmVjdG9yUmVnaXN0ZXIoIHZvaWQgKTsKdm9pZCBJbWFnZVJlZ2lzdGVyKCB2b2lkICk7CnZvaWQg Q2hlYXBSZWdpc3Rlciggdm9pZCApOwoKdm9pZCBHREJSZWdpc3RlcldpdGhKT0xUUmVnaXN0cnko dm9pZCk7CgpHREJUZXN0SW5mb190ICogR0RCVGVzdEluZm9NYXJzaGFsKCBjb25zdCBjaGFyICos IEZJTEUgKiApOwp2b2lkIEdEQlRlc3RJbmZvRGVzdHJveSggR0RCVGVzdEluZm9fdCAqICk7Cgpp bnQgR0RCRmlsZW5hbWUyRm9ybWF0KCBjaGFyICpwc3pGaWxlTmFtZSApOwoKCgoKdHlwZWRlZiBz dHJ1Y3Qgc2VndHlwZSB7CiAgaW50IG5Db2RlOwogIGNoYXIgKnBzelNob3J0TmFtZTsKICBjaGFy ICpwc3pMb25nTmFtZTsKfSBTRUdUeXBlOwoKCmV4dGVybiBTRUdUeXBlIGdhc1R5cGVUYWJsZVtd OwoKZXh0ZXJuIEdEQkluZm9fdCAqR0RCSW5mb1syMDBdOwojIDIzNzkgIi4uLy4uLy4uL2xpYi9n ZGIuaCIKdHlwZWRlZiBlbnVtCnsKICAgIFBhcnNlclR5cGVGaWxlLAogICAgUGFyc2VyVHlwZVN0 cmluZwp9IFBhcnNlclR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QKewogICAgUGFyc2VyVHlwZSBUeXBl OwogICAgdm9pZCAqU291cmNlOwoKICAgIGNoYXIgKipTdHJpbmc7CiAgICBpbnQgKklEOwogICAg aW50IFNpemU7CgogICAgaW50IEluZGV4OwoKCn0gUEFSU0VSOwojIDI0MTEgIi4uLy4uLy4uL2xp Yi9nZGIuaCIKUEFSU0VSICpQYXJzZXJJbml0IChQYXJzZXJUeXBlKTsKdm9pZCBQYXJzZXJUZXJt IChQQVJTRVIgKik7CnZvaWQgUGFyc2VyUmVzZXQgKFBBUlNFUiAqLCB2b2lkICopOwp2b2lkIFBh cnNlclRva2VuUmVnaXN0ZXIgKFBBUlNFUiAqLCBjaGFyICoqLCBpbnQgKiwgaW50KTsKaW50IFBh cnNlclRva2VuR2V0IChQQVJTRVIgKiwgY2hhciAqKTsKIyAyNDQxICIuLi8uLi8uLi9saWIvZ2Ri LmgiCnR5cGVkZWYgZW51bQp7CiAgICBFeHByVHlwZVByaW1hcnksCiAgICBFeHByVHlwZUJvb2xl YW5BTkQsCiAgICBFeHByVHlwZUJvb2xlYW5PUiwKICAgIEV4cHJUeXBlQm9vbGVhbk5PVAp9IEV4 cHJUeXBlOwoKCgoKCnR5cGVkZWYgZW51bQp7CiAgICBQcmltYXJ5T3BFcXVhbCwKICAgIFByaW1h cnlPcExlc3MsCiAgICBQcmltYXJ5T3BHcmVhdGVyLAogICAgUHJpbWFyeU9wTGVzc0VxdWFsLAog ICAgUHJpbWFyeU9wR3JlYXRlckVxdWFsLAogICAgUHJpbWFyeU9wTm90RXF1YWwKfSBQcmltYXJ5 T3A7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBFeHByCnsKICAgIEV4cHJUeXBlIFR5cGU7CiAgICB1 bmlvbgogICAgewogICAgICAgIHN0cnVjdAogICAgICAgIHsKICAgICAgICAgICAgY2hhciAqTmFt ZTsKICAgICAgICAgICAgaW50IE51bTsKICAgICAgICAgICAgUHJpbWFyeU9wIE9wOwogICAgICAg ICAgICBpbnQgSXNDaGFyVmFsdWU7CiAgICAgICAgICAgIHVuaW9uCiAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgIGNoYXIgKkNWYWx1ZTsKICAgICAgICAgICAgICAgIHN0cnVjdAogICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNoYXIgKk5hbWU7CiAgICAgICAgICAgICAg ICAgICAgaW50IE51bTsKICAgICAgICAgICAgICAgIH0gRlZhbHVlOwogICAgICAgICAgICB9IFZh bHVlOwogICAgICAgIH0gUHJpbWFyeTsKCiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAg ICAgICBzdHJ1Y3QgRXhwciAqTGVmdDsKICAgICAgICAgICAgc3RydWN0IEV4cHIgKlJpZ2h0Owog ICAgICAgIH0gQm9vbGVhbjsKICAgIH0gRGF0YTsKfSBFWFBSOwojIDI1MDYgIi4uLy4uLy4uL2xp Yi9nZGIuaCIKRVhQUiAqRXhwckluaXRQcmltYXJ5IChjaGFyICosIFByaW1hcnlPcCwgY2hhciAq LCBpbnQpOwpFWFBSICpFeHBySW5pdEJvb2xlYW4gKEV4cHJUeXBlLCBFWFBSICosIEVYUFIgKik7 CnZvaWQgRXhwclRlcm0gKEVYUFIgKik7CnZvaWQgRXhwclNldE51bSAoRVhQUiAqLCBpbnQpOwp2 b2lkIEV4cHJTZXRGVmFsdWUgKEVYUFIgKiwgY2hhciAqLCBpbnQpOwppbnQgRXhwcklzRlZhbHVl IChFWFBSICopOwppbnQgRXhwcklzU3RyaW5nQ29uc3RhbnQgKEVYUFIgKik7CmludCBFeHByR2V0 Rk51bSAoRVhQUiAqKTsKdm9pZCBFeHByR2V0UHJpbWFyeSAoRVhQUiAqLCBjaGFyICoqLCBpbnQg KiwgUHJpbWFyeU9wICosIGNoYXIgKiopOwppbnQgRXhwckV2YWx1YXRlIChFWFBSICosIGludCAo KikoRVhQUiAqLCB2b2lkICopLCB2b2lkICopOwppbnQgRXhwclRyYXZlcnNlIChFWFBSICosIGlu dCAoKikoRVhQUiAqLCB2b2lkICopLCB2b2lkICopOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIGNo YXIgKk5hbWU7CiAgY2hhciAqRGVzY3JpcHRpb247CgogIGludCBOU2FtcGxlczsKICBpbnQgTkNo YW5uZWxzOwoKICBpbnQgKkNoYW5uZWw7CiAgZG91YmxlICpNZWFuOwogIGRvdWJsZSAqU3RkRGV2 aWF0aW9uOwogIGRvdWJsZSAqTG93ZXJQUEJvdW5kOwogIGRvdWJsZSAqVXBwZXJQUEJvdW5kOwoK ICBkb3VibGUgRGV0ZXJtaW5hbnQ7CiAgZG91YmxlIFRocmVzaG9sZDsKICBkb3VibGUgQmlhczsK CiAgZG91YmxlICpJQ292YXJpYW5jZTsKCiAgZG91YmxlICpDb3ZhcmlhbmNlOwoKICBpbnQgRW5j b2Rpbmc7Cn0gU2lnbmF0dXJlX3Q7CgoKCgoKdm9pZCBDaGVja0NoYW4oIEZJTEUgKiwgY2hhciAq LCBpbnQgKiwgaW50ICk7CnZvaWQgQ2hlY2tXaW4oIEZJTEUgKiwgY2hhciAqLCBpbnQgKiApOwoj IDI2NDQgIi4uLy4uLy4uL2xpYi9nZGIuaCIKdHlwZWRlZiBpbnQgKCpUaWxlUldGdW5jKSggRklM RSAqLCB2b2lkICosIGludCwgaW50LCB1bnNpZ25lZCBjaGFyICogKTsKdHlwZWRlZiB2b2lkICgq Q2hhblJXRnVuYykoIEZJTEUgKiwgdm9pZCAqLCBpbnQsIGludCwgdW5zaWduZWQgY2hhciAqKTsK CnR5cGVkZWYgc3RydWN0IHsKICBpbnQgbkxhc3RBY2Nlc3M7CiAgaW50IG5YU2l6ZTsKICBpbnQg bllTaXplOwoKICBpbnQgblRpbGVzOwogIGludCAqcGFuVGlsZUFjY2VzczsKICBpbnQgKnBhblRp bGVJRDsKICB1bnNpZ25lZCBjaGFyICoqcGFwYWJ5VGlsZTsKCiAgVGlsZVJXRnVuYyBwZm5Xcml0 ZVRpbGU7CiAgVGlsZVJXRnVuYyBwZm5SZWFkVGlsZTsKICB2b2lkICpwRnVuY1Rva2VuOwp9IFJh d0NoYW5UaWxlSW5mb190OwoKdHlwZWRlZiBHREJPdmVydmlld0luZm9fdCBSYXdPdmVydmlld0lu Zm9fdDsKCnR5cGVkZWYgc3RydWN0IHJpbmZvCnsKICBzdHJ1Y3QgcmluZm8gKm5leHQ7CiAgRklM RSAqZnBSYXc7CiAgaW50IFhTaXplOwogIGludCBZU2l6ZTsKICBpbnQgQ2hhbm5lbHM7CiAgaW50 IEludGVybGVhdmluZzsKCgogIGxvbmcgKkNoT2ZmOwogIGxvbmcgKlBpeGVsT2Zmc2V0OwogIGxv bmcgKkxpbmVPZmZzZXQ7CiAgaW50ICpEYXRhVHlwZTsKICBpbnQgKkRhdGFTaXplOwogIGNoYXIg KkJ5dGVTd2FwcGVkOwoKCiAgQ2hhblJXRnVuYyAqV3JpdGVGdW5jOwogIENoYW5SV0Z1bmMgKlJl YWRGdW5jOwogIHZvaWQgKipGdW5jVG9rZW47CgoKICBpbnQgTkJpdG1hcHM7CiAgbG9uZyAqQml0 T2Zmc2V0OwogIGxvbmcgKkJpdExpbmVPZmZzZXQ7CiAgaW50ICpCaXRTZWdtZW50OwogIGludCAq Qml0Q29tcDsKCgogIHVuc2lnbmVkIGNoYXIgKipSYXdCaXRCdWY7CiAgbG9uZyAqUmF3Qml0QnVm U2l6ZTsKCiAgY2hhciAqKkF1eGlsYXJ5SW5mbzsKICBUQm9vbCBiQXV4aWxhcnlNb2RpZmllZDsK CiAgdW5zaWduZWQgY2hhciAqKk1NYXBQdHI7CgogIGludCBSYXdPcGVuZWQ7CgoKICBSYXdDaGFu VGlsZUluZm9fdCAqKnBhcHNUaWxlSW5mbzsKCgogIGludCBuT3ZlcnZpZXdzOwogIGludCBuTWF4 T3ZlcnZpZXdzOwogIFJhd092ZXJ2aWV3SW5mb190ICpwYXNPdmVydmlld3M7CiAgVEJvb2wgYlJh d01hbmFnZWRPdmVydmlld3M7Cgp9IFJhd0luZm9fdDsKCkZJTEUgKiBSYXdDcmVhdGUoIGNoYXIg KiwgaW50LCBpbnQsIGludCwgaW50LCBjaGFyICogKTsKRklMRSAqIFJhd09wZW4oIGNoYXIgKiwg Y2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgbG9uZyApOwpGSUxFICogUmF3UmVvcGVu KCBGSUxFICogKTsKdm9pZCBSYXdEZWZpbmUoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBp bnQsIGxvbmcgKTsKaW50IFJhd1Byb21vdGUoIEZJTEUgKiApOwppbnQgUmF3Q2hhblR5cGUoIEZJ TEUgKiwgaW50ICk7CnZvaWQgUmF3U2l6ZUluZm8oIEZJTEUgKiwgaW50ICosIGludCAqLCBpbnQg KiApOwppbnQgUmF3R2VvcmVmSU8oIEZJTEUgKiwgaW50LCBjaGFyICosIGRvdWJsZSAqLCBkb3Vi bGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiAp OwppbnQgUmF3UHJvamVjdGlvbklPKCBGSUxFICosIGludCwgUHJvakluZm9fdCAqICk7CnZvaWQg UmF3U2V0UHJvamVjdGlvbkluZm8oIEdEQkxheWVyLCBQcm9qSW5mb190ICogKTsKaW50IFJhd0dl dFByb2plY3Rpb25JbmZvKCBHREJMYXllciwgUHJvakluZm9fdCAqICk7CnZvaWQgUmF3Qnl0ZUNo YW5JTyggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQgKiApOwp2 b2lkIFJhd0ludENoYW5JTyggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMiAqLCBpbnQsIGludCwgaW50LCBpbnQgKiAp Owp2b2lkIFJhd1JlYWxDaGFuSU8oIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICosIGludCwgaW50LCBpbnQsIGlu dCAqICk7CnZvaWQgUmF3Q2hhbklPXzEoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs IGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgaW50 LCBpbnQsIGludCwgaW50ICk7CmludCBSYXdDaGFuSU9fTiggRklMRSAqLCBpbnQsIGludCwgaW50 LCBpbnQsIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg Y2hhciAqLCBpbnQsIGludCwgaW50ICosIGludCApOwp2b2lkIFJhd0NoYW5JT19NYXBwZWQoIEZJ TEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCwgdW5zaWduZWQgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQgKTsKVEJv b2wgUmF3Q2hhbklPX092ZXJ2aWV3KCBGSUxFICosIGludCwgaW50LCBpbnQsIGludCwgaW50LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgaW50 LCBpbnQsIGludCwgaW50ICk7CnZvaWQgUmF3UmVnaXN0ZXIoKTsKdm9pZCBGQ05DaGFuSU9fMSgg RklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQgKTsKdm9pZCBG Q05DaGFuSU9fVGlsZWQoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIGludCwgaW50 LCBpbnQsIGludCApOwpUQm9vbCBGQ05DaGFuSU9fTiggRklMRSAqLCBpbnQsIGludCwgaW50LCBp bnQsIGludCwgaW50LCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQsIGludCwgaW50ICosIGludCApOwp2b2lkIEZDTlNldENoYW5JbmZvKCBGSUxFICos IGludCwgaW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFuUldG dW5jLCBDaGFuUldGdW5jLCB2b2lkICogKTsKdm9pZCBGQ05TZXRUaWxlSW5mbyggRklMRSAqLCBp bnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRpbGVSV0Z1bmMsIFRpbGVSV0Z1bmMsIHZvaWQgKiApOwp2b2lkIFJhd1NldENoYW5JbmZvKCBG SUxFICosIGludCwgbG9uZywgbG9uZywgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCwgaW50ICk7CnZvaWQgUmF3U2V0Q2hhbkJ5dGVTd2FwKCBGSUxFICosIGludCwg aW50ICk7CmludCBSYXdHZXRDaGFuSW5mbyggRklMRSAqLCBpbnQsIGNoYXIgKiwgaW50LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqLCBsb25nICosIGxvbmcgKiwgaW50 ICogKTsKVEJvb2wgUmF3R2V0VGlsZUluZm8oIEZJTEUgKiwgaW50LCBpbnQgKiwgaW50ICogKTsK CnZvaWQgUmF3Qml0bWFwSU8oIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgaW50LCBpbnQg KTsKdm9pZCBSYXdTZXRCaXRtYXBJbmZvKCBGSUxFICosIGludCwgbG9uZywgbG9uZywgaW50ICk7 Cgp2b2lkIFJhd01lbUJpdG1hcElPKCBGSUxFICosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIGlu dCwgaW50ICk7CnZvaWQgUmF3U2V0TWVtQml0bWFwSW5mbyggRklMRSAqLCB1bnNpZ25lZCBjaGFy ICosIGxvbmcsIGludCwgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbG9uZywgaW50ICk7CgppbnQgUmF3SGludCggRklMRSAqICk7CnZvaWQgUmF3Q2xvc2UoIEZJ TEUgKiApOwp2b2lkIFJhd0Nsb3NlT3ZlcnZpZXdzKCBGSUxFICogKTsKdm9pZCBSYXdTeW5jKCBG SUxFICogKTsKVEJvb2wgUmF3V3JpdGVBdXhGaWxlKCBGSUxFICogKTsKdm9pZCBSYXdTd2FwQnVm ZmVyKCB1bnNpZ25lZCBjaGFyICosIGludCwgaW50LCBpbnQgKTsKdm9pZCBSYXdTZWdEZXNjSU8o IEZJTEUgKiwgaW50LCBpbnQsIGludCwgY2hhciAqICk7CmludCBSYXdDaGFuRGVzY0lPKCBGSUxF ICosIGludCwgaW50LCBjaGFyICogKTsKdm9pZCBSYXdTZXRBdXhEZWZJbmZvKCBGSUxFICogKTsK Y2hhciAqKiBSYXdNZXRhRGF0YUlPKCBGSUxFICosIGludCwgaW50LCBpbnQsIGNoYXIgKiogKTsK Y2hhciAqKiBSYXdNZXRhRGF0YUlPV2l0aFBDVCggRklMRSAqLCBpbnQsIGludCwgaW50LCBjaGFy ICoqICk7Cgp1bnNpZ25lZCBjaGFyICpSYXdHZXRUaWxlKCBGSUxFICogZnAsIGludCwgaW50LCBp bnQgKTsKdW5zaWduZWQgY2hhciAqUmF3VXBkYXRlVGlsZSggRklMRSAqIGZwLCBpbnQsIGludCwg aW50ICk7CnZvaWQgUmF3U3luY1RpbGVzKCBGSUxFICogZnAsIGludCApOwp2b2lkIFJhd1dyaXRl U3luY1RpbGVzKCBGSUxFICogZnAsIGludCApOwoKdm9pZCBSYXdTZXRDaGFuT3ZlcnZpZXcoIEZJ TEUgKiwgaW50LCBGSUxFICosIGludCwgVEJvb2wsIFRCb29sICk7CnZvaWQgUmF3QnVpbGRPdmVy dmlld3MoIEZJTEUgKiwgaW50LCBpbnQgKiwgaW50LCBUQm9vbCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU1QUHJvZ3Jlc3NGdW5jLCB2b2lkICogKTsKR0RCT3ZlcnZpZXdJbmZvX3QgKgog ICAgICAgICAgICAgICAgUmF3R2V0T3ZlcnZpZXdzKCBGSUxFICosIGludCAqICk7CgoKCgoKIyAx ICIuLi8uLi8uLi9saWIvbHJlZi5oIiAxCiMgMjAgIi4uLy4uLy4uL2xpYi9scmVmLmgiCmV4dGVy biAiQyIgewoKdHlwZWRlZiBzdHJ1Y3QKewogICAgRklMRSAqZnA7CiAgICBjaGFyICpwc3pGaWxl bmFtZTsKICAgIGludCBuUmVmVHlwZTsKICAgIGludCBuTGF5ZXJUeXBlOwogICAgaW50IG5MYXll ckluZGV4OwogICAgVEJvb2wgYlJlZmVyZW5jZWQ7Cn0gR0RCTFJlZjsKCnR5cGVkZWYgc3RydWN0 CnsKICAgIGludCBuUmVmczsKICAgIEdEQkxSZWYgKipwYXBzU3JjTFJlZnM7CiAgICBHREJMUmVm ICoqcGFwc0RzdExSZWZzOwp9IEdEQkxSZWZNYXA7CiMgNTAgIi4uLy4uLy4uL2xpYi9scmVmLmgi CkdEQkxSZWYgKkdEQlBhcnNlUkVGKEZJTEUgKmZwLCBjb25zdCBjaGFyICogcHN6UmVmU3RyaW5n ICk7CmNoYXIgKkdEQkJ1aWxkUkVGKGludCBuUmVmVHlwZSwgY29uc3QgY2hhciAqcHN6QmFzZUZp bGUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzekxheWVyRmlsZSwgaW50IG5M YXllclR5cGUsaW50IG5MYXllckluZGV4KTsKR0RCTFJlZiAqR0RCQnVpbGRMUmVmKGludCBuUmVm VHlwZSwgRklMRSAqZnBMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpwc3pGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg bkxheWVyVHlwZSwgaW50IG5MYXllckluZGV4ICk7CnZvaWQgR0RCRGVzdHJveUxSZWYoR0RCTFJl ZiAqcHNMUmVmKTsKR0RCTFJlZiAqR0RCRHVwbGljYXRlTFJlZiggR0RCTFJlZiAqcHNMUmVmICk7 CnZvaWQgR0RCQWNjZXNzTFJlZiggR0RCTFJlZiAqcHNMUmVmICk7CnZvaWQgR0RCRGVhY2Nlc3NM UmVmKCBHREJMUmVmICpwc0xSZWYgKTsKVEJvb2wgR0RCTFJlZkNvbXBhcmUoIGNvbnN0IEdEQkxS ZWYgKnBzTFJlZjEsIGNvbnN0IEdEQkxSZWYgKnBzTFJlZjIgKTsKCkdEQkxSZWZNYXAgKkdEQkFk ZFRvTFJlZk1hcChHREJMUmVmTWFwICpwc0xSZWZNYXAsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHREJMUmVmICpwc1NyY0xSZWYsIEdEQkxSZWYgKnBzRHN0TFJlZik7CkdEQkxSZWZNYXAg KkdEQkFkZExheWVyVG9MUmVmTWFwKEdEQkxSZWZNYXAgKnBzTFJlZk1hcCwgaW50IG5SZWZUeXBl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkxheWVyVHlwZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHN6U3JjRmlsZSwgaW50IG5T cmNMYXllckluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpwc3pEc3RGaWxlLCBpbnQgbkRzdExheWVySW5kZXggKTsKdm9pZCBHREJEZXN0cm95TFJlZk1h cChHREJMUmVmTWFwICpwc0xSZWZNYXApOwpjaGFyICpHREJBcHBseUxSZWZNYXBUb1JFRihGSUxF ICpmcCwgY29uc3QgY2hhciAqcHN6UkVGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH REJMUmVmTWFwICpwc0xSZWZNYXApOwp2b2lkIEdEQkFwcGx5TFJlZk1hcFRvTGF5ZXIoRklMRSAq ZnAsIGludCBuTFR5cGUsIGludCBuTEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0RCTFJlZk1hcCAqIHBzTFJlZk1hcCk7CnZvaWQgR0RCQXBwbHlMUmVmTWFwVG9GaWxlKEZJ TEUgKmZwLCBHREJMUmVmTWFwICpwc0xSZWZNYXApOwoKY2hhciAqR0RCTW92ZVJFRihGSUxFICpm cE9sZEJhc2UsIGNvbnN0IGNoYXIgKnBzelJFRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg RklMRSAqZnBOZXdCYXNlKTsKVEJvb2wgR0RCTWV0YURhdGFNb3ZlUkVGKGNoYXIgKipwYXBzek1l dGFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKmZwT2xkQmFz ZSwgRklMRSAqZnBOZXdCYXNlKTsKdm9pZCBHREJTZXRWZWN0b3JMYXllclJFRihHREJMYXllciBw c0Jhc2VMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqcHN6UkVGTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCTGF5 ZXIgcHNSZWZMYXllciApOwpHREJMYXllciBHREJHZXRMYXllckZyb21SRUYoIEZJTEUgKmZwLCBj b25zdCBjaGFyICpwc3pSRUYgKTsKVEJvb2wgR0RCTGF5ZXJBbmRSRUZDb21wYXJlKEdEQkxheWVy IHBzTGF5ZXIsIEZJTEUgKmZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKnBzelJFRik7Cgp9CiMgMjc5NyAiLi4vLi4vLi4vbGliL2dkYi5oIiAyCgpH REJMUmVmICogR0RCRGVmYXVsdFBDVCggRklMRSAqLCBpbnQgKTsKR0RCTFJlZiAqIEdEQkRlZmF1 bHRMVVQoIEZJTEUgKiwgaW50ICk7CgoKCgoKdm9pZCBDTUxSZWdpc3RlciAodm9pZCk7CkZJTEUg KkNNTENyZWF0ZSAoY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQsIGNoYXIgKik7CnZvaWQgQ01M U2V0Q2hhbkluZm8gKEZJTEUgKiwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIgKiwgbG9uZywgbG9u ZywgVEJvb2wpOwoKCgoKdm9pZCBNb3Y4VSggaW50LCBpbnQsIGludCwgaW50LCB1bnNpZ25lZCBj aGFyICosIGludCwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIgKik7CnZvaWQgTW92MTZTKCBpbnQs IGludCwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIgKiwgaW50LCBpbnQsIGludCwgdW5zaWduZWQg Y2hhciAqKTsKdm9pZCBNb3YxNlUoIGludCwgaW50LCBpbnQsIGludCwgdW5zaWduZWQgY2hhciAq LCBpbnQsIGludCwgaW50LCB1bnNpZ25lZCBjaGFyICopOwp2b2lkIE1vdjMyUiggaW50LCBpbnQs IGludCwgaW50LCB1bnNpZ25lZCBjaGFyICosIGludCwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIg Kik7Cgpjb25zdCBjaGFyICpHREJDaGFuRGF0YVR5cGUyU3RyaW5nKCBpbnQgbkRhdGFUeXBlICk7 CgpTaWduYXR1cmVfdCAqU2lnQ3JlYXRlKCB2b2lkICk7CnZvaWQgU2lnRnJlZSggU2lnbmF0dXJl X3QgKiApOwoKCgoKCnZvaWQgQ2hlY2tDaFJhbmdlKCBjaGFyICosIGludCAqLCBpbnQsIGludCwg aW50ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBpbnQsIGludCApOwp2 b2lkIENoZWNrRHZDaGFuKCBjaGFyICosIGludCAqLCBpbnQsIGludCApOwp2b2lkIENoZWNrRHZX aW4oIGNoYXIgKiwgaW50ICosIGludCwgaW50ICk7CmludCBDbGlwVmVjdG9yKCBkb3VibGUgKiwg ZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSApOwp2b2lkIEJpdFdpc2VTYW1wbGUoIHVu c2lnbmVkIGNoYXIgKiwgbG9uZywgbG9uZywgdW5zaWduZWQgY2hhciAqLCBsb25nLCBsb25nICk7 CgpUQm9vbCBDbGlwM0RWZWN0b3IoIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosIGRvdWJs ZSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiwg ZG91YmxlLCBkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b3VibGUgKTsKCgoKCmV4dGVybiBpbnQgQ2hhbjJTaXplVGFibGVbXTsKCgoKCgp0eXBlZGVmIHN0 cnVjdCB7CiAgaW50IE5FbnRyaWVzOwogIGRvdWJsZSAqUmFuZ2VTdGFydDsKICBkb3VibGUgKlJh bmdlRW5kOwogIGNoYXIgKipEZXNjcmlwdGlvbjsKCiAgaW50IE5GaWVsZHM7CiAgdm9pZCAqKkZp ZWxkQXJyYXk7CiAgaW50ICpGaWVsZFR5cGU7CgogIGRvdWJsZSAqRG91YmxlQnVmZmVyOwogIGNo YXIgKlN0cmluZ0J1ZmZlcjsKfSBBdHRyaWJ1dGVfdDsKCgoKCkF0dHJpYnV0ZV90ICogSW5nZXN0 QXR0cmlidXRlcyggVEluZm9fdCAqICk7CmludCBGaW5kQXR0cmlidXRlRW50cnkoIEF0dHJpYnV0 ZV90ICosIGRvdWJsZSApOwp2b2lkIERlc3Ryb3lBdHRyaWJ1dGVzKCBBdHRyaWJ1dGVfdCAqICk7 CgoKCgp2b2lkIElNUFVwZGF0ZUZsb2F0SGFzaCggZG91YmxlICosIGRvdWJsZSApOwppbnQgSU1Q U3RyaW5nSGFzaCggY29uc3QgY2hhciAqICk7CmRvdWJsZSBHREJTaGFwZUhhc2goIEdEQkxheWVy LCBHREJTaGFwZSAqLCBpbnQgKTsKZG91YmxlIEdEQkxheWVySGFzaCggR0RCTGF5ZXIsIGludCAp OwpUQm9vbCBHREJSZXBvcnRXcm9uZ0hhc2goIGNvbnN0IGNoYXIgKiwgR0RCTGF5ZXIsIEdEQlNo YXBlICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgZG91YmxlICk7 CiMgMjg5MCAiLi4vLi4vLi4vbGliL2dkYi5oIgp2b2lkIFREQlJlZ2lzdGVyKCB2b2lkICk7CnZv aWQgR0RBUmVnaXN0ZXIoIHZvaWQgKTsKdm9pZCBRdWFkdHJlZVJlZ2lzdGVyKCB2b2lkICk7CgoK CgoKY2hhciAqIF9HREJDaGFuZ2VGaWxlRXh0KCBjb25zdCBjaGFyICpwc3pOYW1lLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHN6TmV3RXh0LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEJvb2wgYk1hdGNoQ2FzZSAp OwoKdm9pZCBfR0RCVXBkYXRlMkRCb3VuZHMoR0RCVmVydGV4ICpwc0JvdW5kc01pbiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICpwc0JvdW5kc01heCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCU2hhcGUgKnBzU2hhcGUp OwoKY2hhciAqKiBfR0RCVG9rZW5pemUoY2hhciAqcHN6U3RyMSwgY2hhciAqcHN6RGVsaW0sCiAg ICAgICAgICAgICAgICAgICAgICAgaW50IG5NYXhUb2ssIGNoYXIgKipwcHN6TmV4dCk7CgpHREJW ZXJ0ZXggKiBfR0RCRWxsaXBzZShkb3VibGUgZGZYQ2VudGVyLCBkb3VibGUgZGZZQ2VudGVyLAog ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZlhSYWRpdXMsIGRvdWJsZSBkZllSYWRpdXMs CiAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmU3RhcnRBbmdsZSwgZG91YmxlIGRmRW5k QW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IG5NYXhTZWdtZW50cywgaW50ICpwblZl cnRpY2VzKTsKCgoKCnR5cGVkZWYgc3RydWN0CnsKICAgIGludCBuUGl4ZWxzOwogICAgaW50IG5M aW5lczsKICAgIGludCBuQnl0ZXM7CiAgICBpbnQgbkJ1ZkxpbmVzOwogICAgaW50IG5MaW5lRmly c3Q7CiAgICBpbnQgbkxpbmVMYXN0OwogICAgdm9pZCAqKnBwSW1hZ2U7CiAgICB2b2lkICpwTWVt QmxvY2s7CiAgICBpbnQgbkFjY2Vzc01vZGU7CiAgICBUQm9vbCBiSW5NZW1vcnk7CiAgICBGSUxF ICpmcEJ1ZjsKICAgIGNoYXIgKnBzekZpbGVOYW1lOwp9CkZCSW5mb1R5cGU7CgoKCgoKdm9pZCAq KiBGQkFsbG9jSW1hZ2UoaW50IG5QaXhlbHMsIGludCBuTGluZXMsIGludCBuQnl0ZXMsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkJ1ZkxpbmVzLCBGQkluZm9UeXBlICpwc0ZC SW5mbyk7Cgp2b2lkIEZCRnJlZUltYWdlKEZCSW5mb1R5cGUgKnBzRkJJbmZvKTsKCnZvaWQgRkJB Y2Nlc3NMaW5lKGludCBpTGluZSwgaW50IG5MbnNBYm92ZSwgaW50IG5MbnNCZWxvdywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBuQWNjZXNzTW9kZSwgRkJJbmZvVHlwZSAqcHNGQklu Zm8pOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgQUlJRmlsZUluZm9fdAp7CiAgICBGSUxFICpmcDsK ICAgIGNoYXIgKnBzekJ1ZjsKICAgIGludCBpUHRyOwp9QUlJRmlsZUluZm87Cgp2b2lkIEFJSVJl d2luZChBSUlGaWxlSW5mbyAqcHNGaWxlSW5mbyk7CmNoYXIgKkFJSVJlYWRDb21wcmVzc2VkTGlu ZShBSUlGaWxlSW5mbyAqcHNGaWxlSW5mbyk7Cgp2b2lkIF9NSUZQcm9jZXNzQ09PUkRTWVMoRklM RSAqZnBNSUYsIFByb2pJbmZvX3QgKnNQcm9qLAogICAgZG91YmxlIGRmTUlGMkdEQlVuaXRzLCBj aGFyICoqcHBzekxpbmUgKTsKCnZvaWQgX01JRldyaXRlQ09PUkRTWVMoRklMRSAqZnBNSUYsIFBy b2pJbmZvX3QgKnNQcm9qLAogICAgVEJvb2wgYldyaXRlRU9MICk7CgoKCgoKCkdEQkxheWVyIEdE Qk9sZEdldExheWVyKEZJTEUgKmZwLCBpbnQgblNlZ21lbnQpOwpHREJTaGFwZUlkIEdEQk9sZEdl dE5leHRTaGFwZUlkKEdEQkxheWVyIHBzTGF5ZXIsIEdEQlNoYXBlSWQgaFNoYXBlSWQpOwpHREJT aGFwZUlkIEdEQk9sZENyZWF0ZVNoYXBlKEdEQkxheWVyIHBzTGF5ZXIsIEdEQlNoYXBlSWQgaEhp bnRJZCk7CkdEQlNoYXBlICpHREJPbGRHZXRTaGFwZShHREJMYXllciBwc0xheWVyLCBHREJTaGFw ZUlkIGhTaGFwZUlkKTsKdm9pZCBHREJPbGRTZXRTaGFwZShHREJMYXllciBwc0xheWVyLCBHREJT aGFwZUlkIGhTaGFwZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlNoYXBlICpwc1No YXBlKTsKaW50IEdEQk9sZEdldFByb2plY3Rpb25JbmZvKEdEQkxheWVyIHBzTGF5ZXIsIFByb2pJ bmZvX3QgKnBzUHJvaik7CnZvaWQgQ3JlYXRlRHluYW1pY0NhY2hlcyhHREJMYXllciBwc0xheWVy KTsKdm9pZCBfR0RCRGVyZWdpc3RlckxheWVyRm9yQ2xvc2UoRklMRSAqZnAsIEdEQkxheWVyIGhM YXllcik7CnZvaWQgX0dEQkZsdXNoTGF5ZXJDYWNoZShGSUxFICpmcCk7CnZvaWQgX0dEQkNsZWFy TGF5ZXJDb21wYXRMaXN0KEZJTEUgKmZwKTsKdm9pZCBfR0RCUmVsZWFzZUNhY2hlKEZJTEUgKmZw KTsKdm9pZCBHREJSZWdpc3RlckxheWVyRm9yQ2xvc2UoRklMRSAqZnAsIEdEQkxheWVyIGhMYXll cik7CgoKCgoKCmxvbmcgSW1hZ2VTdGF0cyggRklMRSAqLCBpbnQsIGludCAqLCBpbnQsIGludCAq LCBmbG9hdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqLCBmbG9hdCAqLCBm bG9hdCAqICk7CmludCBJbWFnZUhpc3RvZ3JhbSggRklMRSAqIGZwLCBpbnQsIGludCAqLCBpbnQs IGludCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGludCwgZG91Ymxl ICosIGRvdWJsZSAqLCBUQm9vbCwgVEJvb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJTVBQcm9ncmVzc0Z1bmMsIHZvaWQgKiApOwppbnQgSW1hZ2VTYW1wbGVkSGlzdG9ncmFtKCBG SUxFICogZnAsIGludCwgaW50ICosIGludCwgaW50ICosCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgKiwgaW50LCBkb3VibGUgKiwgZG91YmxlICosIFRCb29sLCBUQm9vbCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUFByb2dyZXNzRnVuYywgdm9pZCAqICk7CgoK CgoKdHlwZWRlZiBzdHJ1Y3QKewogICAgaW50IGlKb2luTnVtYmVyOwogICAgaW50IGlQcmltYXJ5 S2V5RmllbGQ7CiAgICBjaGFyICpwc3pTZWNvbmRGaWxlTmFtZTsKICAgIFRCb29sIGJJblByaW1h cnlGaWxlOwogICAgaW50IG5TZWNvbmRTZWdtZW50TnVtOwogICAgR0RCTGF5ZXIgcHNTZWNvbmRh cnlUYWJsZTsKICAgIGludCBpRm9yZWlnbktleUZpZWxkOwogICAgaW50IG5BY3RpdmU7Cn0gR0RC Sm9pbkluZm87CgpHREJKb2luSW5mbyAqR0RCUmVhZEpvaW5zKEdEQkxheWVyIHBzTGF5ZXIpOwp2 b2lkIEdEQlJlbW92ZUpvaW4oR0RCTGF5ZXIgcHNMYXllcixpbnQgaUpvaW5OdW0pOwp2b2lkIEdE QkFkZEpvaW4oR0RCTGF5ZXIgcHNMYXllcixpbnQgaVByaW1hcnlLZXksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdEQkxheWVyIHBzU2Vjb25kYXJ5VGFibGUsIGludCBpRm9yZWln bktleSk7CnZvaWQgR0RCQWN0aXZhdGVKb2luKEdEQkxheWVyIHBzTGF5ZXIsaW50IGlKb2luTnVt KTsKdm9pZCBHREJEZWFjdGl2YXRlSm9pbihHREJMYXllciBwc0xheWVyLCBpbnQgaUpvaW5OdW0p Owp2b2lkIEdEQkpvaW5SZWtleShHREJMYXllciBwc0xheWVyLGludCBpSm9pbk51bSxpbnQgaU5l d1ByaW1hcnlLZXkpOwp2b2lkIEdEQkRlc3Ryb3lKb2luSW5mbyhHREJKb2luSW5mbyAqcGFzSm9p bnMpOwppbnQgR0RCR2V0TnVtYmVySm9pbnMoIEZJTEUgKmZwLCBpbnQgblR5cGUsIGludCBuSW5k ZXggKTsKRklMRSAqR0RCQWNjZXNzTGF5ZXJXaXRoSm9pbnMoR0RCTGF5ZXIgcHNQcmltYXJ5TGF5 ZXIpOwpUQm9vbCBHREJDbG9zZUpvaW5lZExheWVycyhGSUxFICpmcCwgY2hhciAqKipwcGFwc3pD bG9zZWRGaWxlcyk7CnZvaWQgR0RCQ2xvc2VKb2luRmlsZXMoY2hhciAqKnBhcHN6Q2xvc2FibGVG aWxlcyk7ClRCb29sIEdEQklzSm9pbmVkRmllbGQoR0RCTGF5ZXIgcHNKb2luZWRMYXllciwgaW50 IGlGaWVsZCk7CgoKCgoKaW50IEdEQkdldE51bUNtYiggRklMRSAqZmRwQmFzZUZpbGUsIGludCBu QlNlZ21lbnQpOwpUQm9vbCBHREJBZGRDb21iaW5lZExheWVyIChGSUxFICpmZHBCYXNlRmlsZSwg aW50IG5CU2VnbWVudCwKICAgICAgICAgICAgICAgICAgICBjaGFyICpwc3pDRmlsZW5hbWUsIGlu dCBpQ1NlZ21lbnQsIGNoYXIgKnBzek9wdGlvbik7CnZvaWQgR0RCUmVtb3ZlQ29tYmluZWRMYXll cihGSUxFICpmZHBCYXNlRmlsZSwgaW50IG5CU2VnbWVudCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICpwc3pDRmlsZW5hbWUsaW50IGlDU2VnbWVudCk7CgoKCgp2 b2lkIEdEQlJhc3RlckFkZEpvaW4oIEZJTEUgKmZwLCBpbnQgaUNoYW5OdW0sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQkxheWVyIHBzU2Vjb25kYXJ5VGFibGUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpRm9yZWlnbktl eSApOwp2b2lkIEdEQlJhc3RlclJlbW92ZUpvaW4oIEZJTEUgKmZwLCBpbnQgaUNoYW5OdW0sIGlu dCBpSm9pbk51bSApOwpHREJKb2luSW5mbyAqIEdEQlJhc3RlclJlYWRKb2lucyggRklMRSAqZnAs IGludCBpQ2hhbk51bSApOwp2b2lkIEdEQlJhc3RlckFjdGl2YXRlSm9pbiggRklMRSAqZnAsIGlu dCBpQ2hhbk51bSwgaW50IGlKb2luTnVtICk7CnZvaWQgR0RCUmFzdGVyRGVhY3RpdmF0ZUpvaW4o IEZJTEUgKmZwLCBpbnQgaUNoYW5OdW0sIGludCBpSm9pbk51bSApOwpHREJMYXllciBHREJSYXN0 ZXJHZXRKb2luTGF5ZXIoIEZJTEUgKmZwLCBpbnQgaUNoYW5OdW0sIGludCAqcG5LZXlGaWVsZCAp OwpHREJMYXllciBHREJSYXN0ZXJDcmVhdGVKb2luKCBGSUxFICpmcCwgaW50IGlDaGFuTnVtLCBj aGFyICpwc3pLZXlGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNoYXIgKnBzek5hbWUsIGNoYXIgKnBzekRlc2MgKTsKCkdEQkZpZWxkICogR0RC UmFzdGVyR2V0UmVjb3JkUmVmKCBGSUxFICpmcCwgaW50IGlDaGFuTnVtLCBkb3VibGUgZGZQaXhl bFZhbHVlICk7CkdEQkZpZWxkICogR0RCUmFzdGVyR2V0UmVjb3JkKCBGSUxFICpmcCwgaW50IGlD aGFuTnVtLCBkb3VibGUgZGZQaXhlbFZhbHVlICk7CnZvaWQgR0RCUmFzdGVyU2V0UmVjb3JkKCBG SUxFICpmcCwgaW50IGlDaGFuTnVtLCBHREJGaWVsZCAqIHBhc0ZpZWxkcyApOwoKR0RCU2hhcGUg KiBHREJSYXN0ZXJHZXRTaGFwZVJlZiggRklMRSAqZnAsIGludCBpQ2hhbk51bSwgZG91YmxlIGRm UGl4ZWxWYWx1ZSApOwpHREJTaGFwZSAqIEdEQlJhc3RlckdldFNoYXBlKCBGSUxFICpmcCwgaW50 IGlDaGFuTnVtLCBkb3VibGUgZGZQaXhlbFZhbHVlICk7CnZvaWQgR0RCUmFzdGVyU2V0U2hhcGUo IEZJTEUgKmZwLCBpbnQgaUNoYW5OdW0sIEdEQlNoYXBlICogcHNTaGFwZSApOwoKVEJvb2wgR0RC SXNQb2ludEluc2lkZVZlcnRpY2VzKEdEQlZlcnRleCAqcHNWZXJ0ZXgsIGludCBuQ291bnQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICpwYXNWZXJ0 aWNlcywgaW50ICpuUmluZ1N0YXJ0KTsKVEJvb2wgR0RCSXNQb2ludEluc2lkZU9yT25WZXJ0aWNl cyhHREJWZXJ0ZXggKnBzVmVydGV4LCBpbnQgbkNvdW50LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzLCBpbnQgKm5SaW5n U3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCb29s IGJBbGxvd09uKTsKCmRvdWJsZSBHREJHZXREaXN0YW5jZShjb25zdCBHREJWZXJ0ZXggKnBzRmly c3RQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHREJWZXJ0ZXgg KnBzU2Vjb25kUG9pbnQpOwoKZG91YmxlIEdEQkNvbXB1dGVTaGFwZUFyZWEoR0RCTGF5ZXIgaExh eWVyLCBHREJTaGFwZUlkIGhTaGFwZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRCb29sIGJEaXNwbGF5RXJyb3IsIFRCb29sICpiVG9wb0Vycm9yKTsKZG91YmxlIEdE QkNvbXB1dGVTaGFwZVBlcmltZXRlcihHREJMYXllciBoTGF5ZXIsIEdEQlNoYXBlSWQgaFNoYXBl SWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQm9vbCBiRGlz cGxheUVycm9yLCBUQm9vbCAqYlRvcG9FcnJvcik7ClRCb29sIEdEQklzU2hhcGVDbG9zZWQoR0RC TGF5ZXIgaExheWVyLCBHREJTaGFwZSAqcHNTaGFwZSk7CgpjaGFyICoqIEdEQkNvcHlBdHRyaWJ1 dGVzKCBHREJMYXllciBoTmV3TGF5ZXIsIGludCBuTnVtYmVyTGF5ZXJzLCBHREJMYXllciAqcGFo TGF5ZXIsIFRCb29sIGJSZXR1cm5MaXN0ICk7CgpjaGFyICoqIEdEQkxpc3ROYW1lcyhjb25zdCBj aGFyICpwc3pGaWxlTmFtZSwgaW50IG5MYXllckxpc3RGbGFnKTsKY2hhciAqKiBHREJMaXN0Rmll bGROYW1lcyhjb25zdCBjaGFyICpwc3pGaWxlTmFtZSk7CmNoYXIgKiBHREJMaXN0RmlsZU1hc2so IGludCBuU2VnbWVudCwgaW50IG5Nb2RlLCBUQm9vbCBiQWRkQWxsRmlsZXMsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHN6QWRkaXRpb25hbFR5cGVzICk7 CmNoYXIgKiogR0RCR2V0VmFsaWRGaWVsZFZhbHVlcyhHREJMYXllciBoTGF5ZXIsIGludCBpRmll bGRJbmRleCk7Cn0KIyAyODcgImxzY21pc2MuaCIgMgoKCmV4dGVybiAiQyIgewojIDM0OSAibHNj bWlzYy5oIgpzdHJ1Y3QgWFlSYW5nZV90CnsKICAgIGRvdWJsZSBkZlhNaW4sIGRmWU1pbjsKICAg IGRvdWJsZSBkZlhNYXgsIGRmWU1heDsKfTsKCnR5cGVkZWYgc3RydWN0IFhZUmFuZ2VfdCBYWVJh bmdlOwoKc3RydWN0IFhZT3JpZ2luX3QKewogICAgZG91YmxlIGRmWE1pbiwgZGZZTWluOwp9OwoK c3RydWN0IExTQ0NvdW50QWxsb2NfdAp7CiAgICBjaGFyICpwc3pBbGxvY0Rlc2NyaXB0aW9uOwog ICAgaW50IG5Db3VudDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTFNDQ291bnRBbGxvY190IExTQ0NvdW50 QWxsb2M7Cgp0eXBlZGVmIHN0cnVjdCBYWU9yaWdpbl90IFhZT3JpZ2luOwoKCgoKCnR5cGVkZWYg ZG91YmxlIExTQ01hdHJpeFsyXVszXTsKdm9pZCBDb3B5TWF0cml4KExTQ01hdHJpeCBzU291cmNl LCBMU0NNYXRyaXggc0Rlc3QpOwp2b2lkIEJ1aWxkTWF0cml4KGRvdWJsZSBkWCxkb3VibGUgZFks ZG91YmxlIGRTeCxkb3VibGUgZFN5LAogICAgICAgICAgICAgICAgIGRvdWJsZSBkUngsIGRvdWJs ZSBkUlksIGRvdWJsZSBkQW5nbGUsCiAgICAgICAgICAgICAgICAgTFNDTWF0cml4IHNSZXN1bHQp Owp2b2lkIEV2YWx1YXRlX1JvdGF0ZShkb3VibGUgZEFuZ2xlLCBMU0NNYXRyaXggc1Jlc3VsdCk7 CnZvaWQgRXZhbHVhdGVfVHJhbnNsYXRlKGRvdWJsZSBkWCwgZG91YmxlIGRZLCBMU0NNYXRyaXgg c1Jlc3VsdCk7CnZvaWQgRXZhbHVhdGVfU2NhbGUoZG91YmxlIGRTY2FsZVgsIGRvdWJsZSBkU2Nh bGVZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMU0NNYXRyaXggc1Jlc3VsdCk7CnZv aWQgQWNjdW11bGF0ZShMU0NNYXRyaXggc01hLCBMU0NNYXRyaXggc01iLCBMU0NNYXRyaXggc1Jl c3VsdCk7CnZvaWQgQWNjdW11bGF0ZV9Sb3RhdGUoZG91YmxlIGRBbmdsZSwgTFNDTWF0cml4IHNS ZXN1bHQpOwp2b2lkIEFjY3VtdWxhdGVfVHJhbnNsYXRlKGRvdWJsZSBkWCwgZG91YmxlIGRZLCBM U0NNYXRyaXggc1Jlc3VsdCk7CnZvaWQgQWNjdW11bGF0ZV9TY2FsZShkb3VibGUgZFNjYWxlWCwg ZG91YmxlIGRTY2FsZVksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFNDTWF0cml4 IHNSZXN1bHQpOwp2b2lkIFRyYW5zZm9ybVBvaW50KExTQ01hdHJpeCBzTWF0cml4LCBHREJWZXJ0 ZXgqIHBzT2xkViwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4KiBwTmV3 Vik7CgoKCgoKdHlwZWRlZiBkb3VibGUgTFNDTWF0cml4M0RbM11bNF07CnZvaWQgQ29weU1hdHJp eDNEKExTQ01hdHJpeDNEIHNTb3VyY2UsIExTQ01hdHJpeDNEIHNEZXN0KTsKdm9pZCBFdmFsdWF0 ZV9Sb3RhdGUzRFgoZG91YmxlIGRBbmdsZVgsIExTQ01hdHJpeDNEIHNSZXN1bHQpOwp2b2lkIEV2 YWx1YXRlX1JvdGF0ZTNEWShkb3VibGUgZEFuZ2xlWSwgTFNDTWF0cml4M0Qgc1Jlc3VsdCk7CnZv aWQgRXZhbHVhdGVfUm90YXRlM0RaKGRvdWJsZSBkQW5nbGVaLCBMU0NNYXRyaXgzRCBzUmVzdWx0 KTsKdm9pZCBFdmFsdWF0ZV9UcmFuc2xhdGUzRChkb3VibGUgZFgsIGRvdWJsZSBkWSwgZG91Ymxl IGRaLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMU0NNYXRyaXgzRCBzUmVz dWx0KTsKdm9pZCBFdmFsdWF0ZV9TY2FsZTNEKGRvdWJsZSBkU3gsIGRvdWJsZSBkU3ksIGRvdWJs ZSBkU3osCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFNDTWF0cml4M0Qgc1Jlc3Vs dCk7Cgp2b2lkIEFjY3VtdWxhdGUzRChMU0NNYXRyaXgzRCBzTWEsIExTQ01hdHJpeDNEIHNNYiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExTQ01hdHJpeDNEIHNSZXN1bHQpOwoKdm9pZCBB Y2N1bXVsYXRlX1JvdGF0ZTNEWChkb3VibGUgZEFuZ2xlWCwgTFNDTWF0cml4M0Qgc1Jlc3VsdCk7 CnZvaWQgQWNjdW11bGF0ZV9Sb3RhdGUzRFkoZG91YmxlIGRBbmdsZVksIExTQ01hdHJpeDNEIHNS ZXN1bHQpOwp2b2lkIEFjY3VtdWxhdGVfUm90YXRlM0RaKGRvdWJsZSBkQW5nbGVaLCBMU0NNYXRy aXgzRCBzUmVzdWx0KTsKdm9pZCBBY2N1bXVsYXRlX1RyYW5zbGF0ZTNEKGRvdWJsZSBkWCwgZG91 YmxlIGRZLCBkb3VibGUgZFosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TFNDTWF0cml4M0Qgc1Jlc3VsdCk7CnZvaWQgQWNjdW11bGF0ZV9TY2FsZTNEKGRvdWJsZSBkU3gs IGRvdWJsZSBkU3ksIGRvdWJsZSBkU3osCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMU0NNYXRyaXgzRCBzUmVzdWx0KTsKCnZvaWQgVHJhbnNmb3JtUG9pbnQzRChMU0NNYXRyaXgz RCBzTWF0cml4LCBHREJWZXJ0ZXgqIHBzT2xkViwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHREJWZXJ0ZXggKnBOZXdWKTsKCgoKCnZvaWQgTFNDR0RCQ2hpbGRUb1JpbmcoR0RCTGF5 ZXIgaExheWVyKTsKVEJvb2wgSXNFbnRpdHlJbkxpc3QoR0RCU2hhcGVJZCwgR0RCU2hhcGVJZCAq LCBpbnQpOwoKaW50IExTQ0ZsdXNoRHVwbGljYXRlZFBvaW50KEdEQlZlcnRleCAqcGFzTGluZSwg aW50IGNvdW50KTsKCnZvaWQgTFNDUmV2ZXJzZUFycmF5T2ZWZXJ0aWNlcyggR0RCVmVydGV4ICog cGFzVmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IG5Db3VudCApOwoKVEJvb2wgR2V0UG9pbnRQZXJwZW5kaWN1bGFyVmVjdG9yKEdEQlZlcnRleCAq cHNQb2ludFRhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICog Y29uc3QgcHNTZWxlY3RlZFBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH REJWZXJ0ZXggKiBjb25zdCBwc0ZpcnN0UG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdEQlZlcnRleCAqY29uc3QgcHNTZWNvbmRQb2ludCApOwpjaGFyICpDb252ZXJ0SW50 ZWdlclRvVGhvdXNhbmROb3RhdGlvbihpbnQgbk51bWJlcik7CmRvdWJsZSBHZXRNaW5EaXN0YW5j ZSggR0RCVmVydGV4ICpQLCBHREJWZXJ0ZXggKkEsIEdEQlZlcnRleCAqQiApOwpkb3VibGUgR2V0 RGlzdGFuY2UoY29uc3QgR0RCVmVydGV4ICpwc0ZpcnN0UG9pbnQsCiAgICAgICAgICAgICAgICAg ICBjb25zdCBHREJWZXJ0ZXggKnBzU2Vjb25kUG9pbnQpOwpkb3VibGUgR2V0QW5nbGVJblRyaWFu Z2xlKCBjb25zdCBHREJWZXJ0ZXggKnBzQW5nbGVQb2ludCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IEdEQlZlcnRleCAqcHNMZWZ0UG9pbnQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHREJWZXJ0ZXggKnBzUmlnaHRQb2ludCAp OwoKVEJvb2wgR2V0SW50ZXJzZWN0aW9PZkxpbmVzKCBHREJWZXJ0ZXggKnBzVmVydGV4RGVzdCwg R0RCVmVydGV4IHNQMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggc1Ay LCBHREJWZXJ0ZXggc1AzLCBHREJWZXJ0ZXggc1A0ICk7ClRCb29sIEdldFByZWNpc2VMaW5lSW50 ZXJzZWN0aW9uKCBjb25zdCBkb3VibGUgZGZQcmVjaXNpb24sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBzSW50ZXJzZWN0LCBHREJWZXJ0ZXggc1AxLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4IHNQMiwgR0RCVmVydGV4IHNQ MyxHREJWZXJ0ZXggc1A0ICk7CgpUQm9vbCBJc09uVGhlTGluZSggR0RCVmVydGV4ICpwc0ZpcnN0 UG9pbnQsIEdEQlZlcnRleCAqcHNTZWNvbmRQb2ludCwKICAgICAgICAgICAgICAgICAgIEdEQlZl cnRleCAqcHNDaGVja1B0ICk7CgpUQm9vbCBJc1BvaW50T25FbnRpdHkoIEdEQlZlcnRleCAqcGFz VmVydGljZXMsIGludCBuQ291bnRWZXJ0ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVy dGV4ICpwc1ZlcnRleFBvcywgZG91YmxlIGRmRGlzdFRvbGVyYW5jZSApOwoKVEJvb2wgSXNQb2lu dEluc2lkZVBvbHkoaW50IG5wb2wsIGRvdWJsZSAqeHAsIGRvdWJsZSAqeXAsIGRvdWJsZSB4LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB5KTsKClRCb29sIEN1dHNP ckluc2lkZShHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzLCBpbnQgbkNvdW50VmVydGV4LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYWVJhbmdlIHNSYW5nZSk7Cgp2b2lkIFVwZGF0ZUJCb3go R0RCVmVydGV4ICpwc1RvdGFsTWluLCBHREJWZXJ0ZXggKnBzVG90YWxNYXgsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgR0RCVmVydGV4ICpwc01pbiwgR0RCVmVydGV4ICpwc01heCk7CgpHREJW ZXJ0ZXggKkxTQ0ZpbmROZWFyZXN0UG9pbnQoR0RCVmVydGV4ICpwc1BvaW50LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqcGFzVmVydGljZXMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5Db3VudCwgaW50ICpu TGVmdEluZGV4KTsKCmNoYXIgKiBMU0NHZW5lcmF0ZVVuaXF1ZUdEQkZpZWxkTmFtZSggR0RCTGF5 ZXIgcHNMYXllciApOwoKVEJvb2wgTFNDSXNEaXJlY3RvcnkoIGNvbnN0IGNoYXIgKnBzekRpcmVj dG9yeSApOwpUQm9vbCBMU0NJc0RpcmVjdG9yeVdyaXRhYmxlKCBjb25zdCBjaGFyICpwc3pEaXJl Y3RvcnkgKTsKCgppbnQgTFNDVmFsaWRBTmV3RmlsZW5hbWUoY29uc3QgY2hhciAqcHN6TmV3Rmls ZW5hbWUpOwpjaGFyICpMU0NDcmVhdGVVbmlxdWVCYXNlTmFtZShjb25zdCBjaGFyKiBwc3pCYXNl TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuVHJ5LCBp bnQgbk1heEJhc2VOYW1lTGVuZ3RoKTsKY2hhciAqTFNDQ3JlYXRlTmV3RmlsZW5hbWUoY29uc3Qg Y2hhciAqcHN6Q3VycmVudEZpbGVuYW1lKTsKY2hhciAqTFNDQ3JlYXRlTmV3QmFja3VwRmlsZW5h bWUoY29uc3QgY2hhciAqcHN6Q3VycmVudEZpbGVuYW1lKTsKY2hhciAqTFNDQ3JlYXRlTmV3Rmls ZW5hbWVXaXRoRXh0ZW5zaW9uKGNvbnN0IGNoYXIgKnBzekN1cnJlbnRGaWxlbmFtZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpw c3pFeHRlbnNpb24pOwoKY2hhciAqTFNDR2V0VGVtcG9yeUZpbGVuYW1lKCk7CmNoYXIgKkxTQ1Rl bXBGaWxlTmFtZSggY29uc3QgY2hhciAqcHN6UGF0aCApOwpjaGFyICpMU0NUZW1wRmlsZU5hbWVS ZWwoIGNvbnN0IGNoYXIgKnBzelJlbEZpbGUgKTsKY2hhciAqTFNDUmVsYXRpdmVGaWxlbmFtZSgg Y29uc3QgY2hhciAqcHN6RmlsZTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKnBzekZpbGUyICk7CmNvbnN0IGNoYXIgKkxTQ0dldFRlbXBEaXIoIHZvaWQg KTsKVEJvb2wgTFNDX0lTX0RJUl9PSyhjb25zdCBjaGFyKiBwc3pEaXIpOwoKY2hhciAqTFNDUmVs YXRpdmVGaWxlbmFtZTMoY29uc3QgY2hhciAqcHN6RmlsZTEsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKnBzekZpbGUyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpwc3pGaWxlMyApOwpjaGFyICpMU0NFeHRyYWN0Q29tbW9uUGF0aCggY29uc3Qg Y2hhciAqcHN6RmlsZTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpwc3pGaWxlMiApOwppbnQgTFNDQ2hlY2tQYXJhbUZpbGUoKTsKaW50IExTQ0ROUENo ZWNrKGNvbnN0IGNoYXIgKik7CmludCBMU0NETlBTZXRTdGF0dXMoIGNvbnN0IGNoYXIgKlBhY2th Z2VDb2RlLCBpbnQgblN0YXR1cyApOwoKRklMRSAqTFNDR0RCT3Blbihjb25zdCBjaGFyICpwc3pO YW1lLCBjb25zdCBjaGFyICpwc3pBY2Nlc3MpOwppbnQgTFNDR0RCQ2xvc2UoRklMRSAqZnApOwpG SUxFICpMU0NHREJDcmVhdGVGaWxlKGludCBmaWxlX3R5cGUsIGNoYXIgKmZpbGVuYW1lLAogICAg ICAgICAgICAgICAgICAgICAgIGludCBwaXhlbHMsIGludCBsaW5lcywgaW50IGJhbmRzLCBpbnQg ZGF0YV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm9wdGlvbnMgKTsKaW50IExT Q0dEQkNsb3NlQWxsKCk7CmludCBMU0NHREJHZXROdW1SZXF1ZXN0b3JzKEZJTEUgKmZwKTsKdm9p ZCBMU0NHREJGaWxlc1JlcG9ydCgpOwpsb25nIExTQ0dldEdEQlNpemUoR0RCU2hhcGUgKiBwc1No YXBlLCBHREJMYXllciBoTGF5ZXIpOwpUQm9vbCBMU0NWZXJ0ZXhFcXVhbCggY29uc3QgR0RCVmVy dGV4KiBwc0ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0RCVmVy dGV4KiBwc1NlY29uZCApOwoKVEJvb2wgTFNDWFlSYW5nZUVxdWFsKCBjb25zdCBYWVJhbmdlKiBw c1IxLCBjb25zdCBYWVJhbmdlKiBwc1IyKTsKVEJvb2wgTFNDUmFuZ2VJbnRlcnNlY3Rpb24oIGNv bnN0IFhZUmFuZ2UqIHBzUjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgWFlSYW5nZSogcHNSMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBYWVJhbmdlKiBwc1JuZ091dCk7CgpUQm9vbCBMU0NFcXVhbE9yTGVzc1RoYW4oIGRvdWJsZSBk ZkZpcnN0LCBkb3VibGUgZGZTZWNvbmQgKTsKVEJvb2wgTFNDRXF1YWxPckdyZWF0ZXJUaGFuKCBk b3VibGUgZGZGaXJzdCwgZG91YmxlIGRmU2Vjb25kICk7Cgp2b2lkIExTQ1NwbGluZUN1cnZlKEdE QlZlcnRleCAqcGFzVmVydGljZXMgLCBpbnQgbk5iVmVydGljZXMsCiAgICAgICAgICAgICAgICAg ICAgR0RCVmVydGV4ICoqcGFzVmVydGljZXNDdXJ2ZSwgaW50ICpuTmJWZXJ0aWNlc0N1cnZlKTsK dm9pZCBMU0NCZXppZXJDdXJ2ZShHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzICwgaW50IG5OYlZlcnRp Y2VzLAogICAgICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqKnBhc1ZlcnRpY2VzQ3VydmUsIGlu dCAqbk5iVmVydGljZXNDdXJ2ZSk7Cgp2b2lkIExTQ0hMU3RvUkdCMjU2KGludCBuSCwgaW50IG5M LCBpbnQgblMsIGludCAqcG5SLCBpbnQgKnBuRywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50ICpwbkIpOwoKY29uc3QgY2hhciAqIExTQ0J1aWxkTGF5ZXJEZXNjKGNvbnN0IGNoYXIg KnBzekZuYW1lLGludCBuU2VnbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKnBzelNlZ0Rlc2MsIFRCb29sIGJJc0FjdGl2ZSk7CmNvbnN0IGNoYXIgKiBMU0NC dWlsZExheWVyRGVzYzIoY29uc3QgY2hhciAqcHN6Rm5hbWUsaW50IG5TZWdtZW50LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzelNlZ0Rlc2MsIFRCb29sIGJJ c0FjdGl2ZSk7CmNvbnN0IGNoYXIgKiBMU0NCdWlsZEltYWdlRGVzYyhjb25zdCBjaGFyICpwc3pG aWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KnBzelR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwc3pT ZWdEZXNjLCBUQm9vbCBiSXNBY3RpdmUpOwpjaGFyICogTFNDU3RyaXBJREJEZXNjKGNvbnN0IGNo YXIgKnBzekRlc2MpOwoKdm9pZCBMU0NHZXRQYXBlclNpemVUaGF0TWFrZVNlbnNlKFhZUmFuZ2Ug KnBzR2VvRXh0ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBk ZkFwcHJveFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFlSYW5nZSAq cHNQYXBlckV4dGVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg KmRmU2NhbGluZ0ZhY3Rvcik7CgoKY29uc3QgY2hhciAqTFNDRmluZERhdGFGaWxlKGNvbnN0IGNo YXIgKnBzekZpbGVJbik7Cgp2b2lkIENvbXB1dGVPZmZzZXRQYXJhbXMoZG91YmxlIGRmV2lkdGgs IGRvdWJsZSBkZkhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3Vi bGUgZGZSZXNvbHV0aW9uLCBpbnQgKnBuUGl4ZWxYLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCAqcG5PZmZzZXRQaXhlbFksIGludCAqcG5NYXhQaXhlbFksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpwZGZPZmZzZXRQYXBlclkpOwoKZG91 YmxlIFZhbGlkYXRlX0RQSShkb3VibGUgZGZSZXNvbHV0aW9uLGRvdWJsZSBkZldpZHRoLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZIZWlnaHQpOwoKCgoKCgp2b2lkIExT Q0VuY3J5cHRGUChGSUxFICpmcEluLCBGSUxFICpmcE91dCwgY2hhciAqcHN6SGVhZGVyKTsKdm9p ZCBMU0NFbmNyeXB0RmlsZShjaGFyICpwc3pJbkZpbGUsIGNoYXIgKnBzek91dEZpbGUpOwpUQm9v bCBMU0NEZWNyeXB0RlAoRklMRSAqZnBJbiwgRklMRSAqZnBPdXQpOwp2b2lkIExTQ0RlY3J5cHRG aWxlKGNoYXIgKnBzekluRmlsZSwgY2hhciAqcHN6T3V0RmlsZSk7CgpjaGFyICpMU0NHZXRIZWFk ZXJGUChGSUxFICpmcEluKTsKaW50IExTQ0luc3RhbGxQU0ZvbnRzKGNoYXIgKnBzekluUGF0aCxj aGFyICoqcGFwc3pGb250TGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo YXIgKnBzek91dFBhdGgpOwp2b2lkIExTQ0dlbkZvbnRMaXN0KGNoYXIgKnBzekZvbnRMaXN0LCBj aGFyICpwc3pTZWFyY2hQYXRoKTsKCgoKClRCb29sIE1hcERldmljZUxzYyhjaGFyICpwc3pEZXZz dHJpbmcsIGludCAqbk5hbWUsIGludCAqblR5cGUsCiAgICAgICAgICAgICAgICAgICAgZG91Ymxl ICpkZlhSZXMsIGRvdWJsZSAqZGZZUmVzLAogICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqZGZY UGFnZSwgZG91YmxlICpkZllQYWdlKTsKCgoKCgp2b2lkIE1hcERldmljZShjaGFyICpwc3pEZXZz dHJpbmcsIGludCAqbk5hbWUsIGludCAqblR5cGUsCiAgICAgICAgICAgICAgICAgICAgZG91Ymxl ICpkZlhSZXMsIGRvdWJsZSAqZGZZUmVzLAogICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqZGZY UGFnZSwgZG91YmxlICpkZllQYWdlKTsKCgoKaW50IHJvdGJpdF9tYWluKGNoYXIgKmZpbGksIGNo YXIgKmZpbG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZGJpYiwgaW50IGRiaWJj b3VudCwgaW50IGFuZ2xlKTsKIyA1OTYgImxzY21pc2MuaCIKc3RydWN0IE1BUExheWVyX3QKewog ICAgVEJvb2wgYkluZm9WYWxpZDsKICAgIFhZUmFuZ2Ugc1BhcGVyRXh0ZW50czsKICAgIFhZUmFu Z2Ugc0dlb3JlZkV4dGVudHM7CiAgICBkb3VibGUgZGZHZW8yUGFwU2NhbGVYOwogICAgZG91Ymxl IGRmR2VvMlBhcFNjYWxlWTsKICAgIGRvdWJsZSBkZkdlbzJQaXhTY2FsZVg7CiAgICBkb3VibGUg ZGZHZW8yUGl4U2NhbGVZOwogICAgZG91YmxlIGRmR2VvWE9yaWdpbjsKICAgIGRvdWJsZSBkZkdl b1lPcmlnaW47CiAgICBYWVJhbmdlIHNPcmdQYXBlckV4dGVudHM7CgoKCn07CnR5cGVkZWYgc3Ry dWN0IE1BUExheWVyX3QgKiBNQVBMYXllcjsKCnN0cnVjdCBNQVBTY2FsZV90CnsKICAgIFhZUmFu Z2Ugc1BhcGVyTWFwRXh0ZW50czsKICAgIFhZUmFuZ2Ugc1BhcGVyV2luRXh0ZW50czsKICAgIGlu dCBuV2luWFNpemU7CiAgICBpbnQgbldpbllTaXplOwogICAgZG91YmxlIGRmUGFwMlBpeFNjYWxl WDsKICAgIGRvdWJsZSBkZlBhcDJQaXhTY2FsZVk7CiAgICBpbnQgbkxheWVyczsKICAgIHN0cnVj dCBNQVBMYXllcl90ICpwYXNMYXllcnM7CiAgICBYWVJhbmdlIHNPcmdQYXBlck1hcEV4dGVudHM7 CgoKICAgIFRCb29sIGJSZXZlcnNlWVBpeDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTUFQU2NhbGVfdCAq IE1BUFNjYWxlOwoKCgoKCk1BUFNjYWxlIE1BUFNjYWxlQnVpbGRJbmZvKFhZUmFuZ2UgKnBzUGFw ZXJFeHRlbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBYWVJhbmdlICpwc1dpbmRvd0V4 dGVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuV2luWFNpemUsIGludCBuV2lu WVNpemUpOwp2b2lkIE1BUFNjYWxlRGVzdHJveUluZm8oTUFQU2NhbGUgcHNJbmZvKTsKdm9pZCBN QVBTZXRQYXBlckV4dGVudHMoTUFQU2NhbGUgcHNJbmZvLCBYWVJhbmdlICpwc0V4dGVudHMpOwp2 b2lkIE1BUFNldFdpbmRvd0V4dGVudHMoTUFQU2NhbGUgcHNJbmZvLCBYWVJhbmdlICpwc0V4dGVu dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbldpblhTaXplLCBpbnQgbldpbllTaXpl KTsKdm9pZCBNQVBTZXRMYXllckV4dGVudHMoTUFQU2NhbGUgcHNJbmZvLCBpbnQgaUxheWVyLAog ICAgICAgICAgICAgICAgICAgICAgICBYWVJhbmdlICpwc1BhcGVyRXh0ZW50cywKICAgICAgICAg ICAgICAgICAgICAgICAgWFlSYW5nZSAqcHNHZW9yZWZFeHRlbnRzKTsKVEJvb2wgTUFQVmVjMlBp eCggTUFQU2NhbGUgcHNJbmZvLCBpbnQgaUxheWVyLAogICAgICAgICAgICAgICAgICBHREJWZXJ0 ZXggKnBzVmVjLCBHREJWZXJ0ZXggKnBzUGl4KTsKVEJvb2wgTUFQYVZlYzJhUGl4KCBNQVBTY2Fs ZSBwc0luZm8sIGludCBpTGF5ZXIsIGludCBuVmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAg R0RCVmVydGV4ICpwYXNWZWMsIEdEQlZlcnRleCAqcGFzUGl4KTsKVEJvb2wgTUFQUGl4MlZlYygg TUFQU2NhbGUgcHNJbmZvLCBpbnQgaUxheWVyLAogICAgICAgICAgICAgICAgICBHREJWZXJ0ZXgg KnBzUGl4LCBHREJWZXJ0ZXggKnBzVmVjKTsKVEJvb2wgTUFQYVBpeDJhVmVjKCBNQVBTY2FsZSBw c0luZm8sIGludCBpTGF5ZXIsIGludCBuVmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgR0RC VmVydGV4ICpwYXNQaXgsIEdEQlZlcnRleCAqcGFzVmVjKTsKVEJvb2wgTUFQVmVjMlBhcCggTUFQ U2NhbGUgcHNJbmZvLCBpbnQgaUxheWVyLAogICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBz VmVjLCBHREJWZXJ0ZXggKnBzUGFwKTsKVEJvb2wgTUFQYVZlYzJhUGFwKCBNQVBTY2FsZSBwc0lu Zm8sIGludCBpTGF5ZXIsIGludCBuVmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgR0RCVmVy dGV4ICpwYXNWZWMsIEdEQlZlcnRleCAqcGFzUGFwKTsKVEJvb2wgTUFQUGFwMlZlYyggTUFQU2Nh bGUgcHNJbmZvLCBpbnQgaUxheWVyLAogICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBzUGFw LCBHREJWZXJ0ZXggKnBzVmVjKTsKVEJvb2wgTUFQYVBhcDJhVmVjKCBNQVBTY2FsZSBwc0luZm8s IGludCBpTGF5ZXIsIGludCBuVmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4 ICpwYXNQYXAsIEdEQlZlcnRleCAqcGFzVmVjKTsKVEJvb2wgTUFQUGFwMlBpeCggTUFQU2NhbGUg cHNJbmZvLCBHREJWZXJ0ZXggKnBzUGFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHREJW ZXJ0ZXggKnBzUGl4KTsKVEJvb2wgTUFQYVBhcDJhUGl4KCBNQVBTY2FsZSBwc0luZm8sIGludCBu VmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICpwYXNQYXAsIEdEQlZlcnRl eCAqcGFzUGl4KTsKVEJvb2wgTUFQUGl4MlBhcCggTUFQU2NhbGUgcHNJbmZvLCBHREJWZXJ0ZXgg KnBzUGl4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBzUGFwKTsKVEJv b2wgTUFQYVBpeDJhUGFwKCBNQVBTY2FsZSBwc0luZm8sIGludCBuVmVydGljZXMsCiAgICAgICAg ICAgICAgICAgICAgR0RCVmVydGV4ICpwYXNQaXgsIEdEQlZlcnRleCAqcGFzUGFwKTsKdm9pZCBN QVBTZXRQYXBlckZpdEZhY3RvcihNQVBTY2FsZSBwc0luZm8sIGRvdWJsZSBkZlBhcGVyRml0RmFj dG9yKTsKTUFQU2NhbGUgTUFQU2NhbGVDb3B5KE1BUFNjYWxlIGhNYXBTY2FsZSk7ClRCb29sIE1B UFNldFJldmVyc2VZUGl4KE1BUFNjYWxlIHBzSW5mbywgVEJvb2wgYlJldmVyc2VZUGl4KTsKCgoK CgoKdm9pZCAqTFNDUmVhZFJTVChjaGFyICooKnBmblJlYWRGdW5jdGlvbikodm9pZCAqcERhdGEp LHZvaWQgKnBEYXRhLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKnBzelJTVEZpbGVOYW1lLCBj b25zdCBjaGFyICpwc3pBY2Nlc3MpOwp2b2lkIExTQ1dyaXRlUlNUKHZvaWQgKlJTVFRhYmxlLAog ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGZuV3JpdGVGdW5jdGlvbikoY2hhciAq cHN6RGF0YSwKICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcERhdGEpLHZvaWQgKnBEYXRhLCBj aGFyICpwc3pSU1RGaWxlTmFtZSk7CiMgNjk1ICJsc2NtaXNjLmgiCkZJTEUgKiBHREJDb3B5RGF0 YVNldFRvTWVtKEZJTEUgKiBwc1NyY0RhdGFTZXQpOwoKRklMRSAqIEdEQkNvcHlNZW1Ub0RhdGFT ZXQoRklMRSAqIHBzU3JjRGF0YVNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKiBwc3pEYXRhU2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqIHBzelNob3J0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KiBwc3pPcHRpb25zICk7CgpUQm9vbCBUTVBTZWdFeGlzdHMoRklMRSAqZnAsIGludCBuU2VnVHlw ZSwgaW50IG5TZWdtZW50KTsKaW50IEdEQkNvcHlMYXllcihGSUxFICpmcFNyYywgaW50IG5TZWdO dW0sIEZJTEUgKmZwRGVzdCk7CmludCBHREJVcGRhdGVMYXllcihGSUxFICpmcFNyYywgaW50IG5T ZWdTcmMsIEZJTEUgKmZwRGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBu U2VnRGVzdCk7CiMgNzE3ICJsc2NtaXNjLmgiCnZvaWQgVFVGT3Blbk1hc3RlckxvZyhjb25zdCBj aGFyICpwc3pGbmFtZSk7CnZvaWQgVFVGQ2xvc2VNYXN0ZXJMb2coKTsKRklMRSAqVFVGU3RhcnRU ZXN0KGNvbnN0IGNoYXIgKnBzelRlc3ROYW1lKTsKdm9pZCBUVUZFbmRUZXN0KGludCBuU3RhdHVz KTsKdm9pZCBUVUZIYW5kbGVJTVBFcnJvcigpOwp2b2lkIFRVRkxvZ0VyciggY29uc3QgY2hhciAq Zm9ybWF0LCAuLi4gKTsKdm9pZCBUVUZMb2dNc2coIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uICk7 CmNvbnN0IGNoYXIgKlRVRkZpbmREYXRhRmlsZShjb25zdCBjaGFyICpwc3pGaWxlSW4pOwojIDcz NyAibHNjbWlzYy5oIgp2b2lkIEdEQkZpbmRFeHRlbnRzKEdEQlZlcnRleCAqLCBpbnQgLCBHREJW ZXJ0ZXggKiwgR0RCVmVydGV4ICopOwoKCkdEQlNoYXBlSWQgKkdEQkdldENoaWxkTGlzdENvcHko R0RCTGF5ZXIgaExheWVyLCBHREJTaGFwZUlkIGhFbnRpdHkpOwoKCgoKCmRvdWJsZSBMU0NSYW5k VXBUbyhkb3VibGUgbk1heCk7CiMgNzY3ICJsc2NtaXNjLmgiCnZvaWQgTWF4TWluKGRvdWJsZSBk ZkEsIGRvdWJsZSBkZkIsIGRvdWJsZSogZGZNaW4sIGRvdWJsZSoKZGZNYXgpOwoKCgoKCgpUQm9v bCBMU0NDYWxjRXh0ZW50cyhHREJMYXllciBoTGF5ZXIsR0RCVmVydGV4ICpwc0xheWVyTWluLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICpwc0xheWVyTWF4KTsKCgp2 b2lkIExTQ1NldFBXRChjb25zdCBjaGFyICpwc3pGaWxlbmFtZSk7CmNvbnN0IGNoYXIgKkxTQ0dl dFBXRCgpOwoKCgp9CgoKCgoKCgp2b2lkIFNldERlYnVnRmlsZShGSUxFICpmcCk7CgoKCgoKCgp2 b2lkIENvdW50QWxsb2MoY29uc3QgY2hhciAqcHN6RGVzYyk7CnZvaWQgQ291bnREZXNhbGxvYyhj b25zdCBjaGFyICpwc3pEZXNjKTsKdm9pZCBDb3VudEFsbG9jRGVidWcoKTsKIyA2OSAibWF0cml4 LmhoIiAyCgoKCgpjbGFzcyBNYXQzRAp7CiAgcHJpdmF0ZToKICAgIFRCb29sIG1iSW52ZXJzZTsK ICAgIFRCb29sIG1iSW5pdGlhbGl6ZTsKICAgIFRCb29sIG1iSW52SW5pdGlhbGl6ZTsKICAgIGRv dWJsZSBtYWRNYXRbNF1bNF07CiAgICBkb3VibGUgbWFkTWF0SW52ZXJzZVs0XVs0XTsKCiAgcHVi bGljOgogICAgTWF0M0QoVEJvb2wgYklkZW50aXR5ID0gMSwgVEJvb2wgYkludmVyc2UgPSAxKTsK ICAgIE1hdDNEKGNvbnN0IE1hdDNEJiBvTWF0KTsKICAgIE1hdDNEKGRvdWJsZSBkZlgxLCBkb3Vi bGUgZGZZMSwgZG91YmxlIGRmWjEsIGRvdWJsZSBkZlcxLAogICAgICAgICAgZG91YmxlIGRmWDIs IGRvdWJsZSBkZlkyLCBkb3VibGUgZGZaMiwgZG91YmxlIGRmVzIsCiAgICAgICAgICBkb3VibGUg ZGZYMywgZG91YmxlIGRmWTMsIGRvdWJsZSBkZlozLCBkb3VibGUgZGZXMywKICAgICAgICAgIGRv dWJsZSBkZlg0LCBkb3VibGUgZGZZNCwgZG91YmxlIGRmWjQsIGRvdWJsZSBkZlc0KTsKCgoKCiAg ICB2b2lkIFNldFRyYW5zbGF0aW9uKHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWiA9IDAuMCk7CiAg ICB2b2lkIEFkZFRyYW5zbGF0aW9uKHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWiA9IDAuMCk7Cgog ICAgdm9pZCBTZXRTY2FsaW5nKHJlZ2lzdGVyIGRvdWJsZSBkZlNjYWxlWCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91YmxlIGRmU2NhbGVZLAogICAgICAgICAgICAgICAg ICAgICAgICAgICByZWdpc3RlciBkb3VibGUgZGZTY2FsZVogPSAxLjAsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZk9yaWdpblggPSAwLjAsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZk9yaWdpblkgPSAwLjAsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZk9yaWdpblogPSAwLjApOwoKICAg IHZvaWQgQWRkU2NhbGluZyhkb3VibGUgZGZTY2FsZVgsIGRvdWJsZSBkZlNjYWxlWSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmU2NhbGVaID0gMS4wLCBkb3VibGUgZGZPcmln aW5YID0gMC4wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZPcmlnaW5ZID0g MC4wLCBkb3VibGUgZGZPcmlnaW5aID0gMC4wKTsKCiAgICB2b2lkIFNldFNoZWFyKHJlZ2lzdGVy IGRvdWJsZSBkZlNjYWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91Ymxl IGRmT3JpZ2luWCA9IDAuMCwKICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJs ZSBkZk9yaWdpblkgPSAwLjAsCiAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBkb3Vi bGUgZGZPcmlnaW5aID0gMC4wKTsKICAgIHZvaWQgQWRkU2hlYXIoZG91YmxlIGRmU2NhbGUsIGRv dWJsZSBkZk9yaWdpblggPSAwLjAsCiAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZP cmlnaW5ZID0gMC4wLCBkb3VibGUgZGZPcmlnaW5aID0gMC4wKTsKCiAgICB2b2lkIFNldFJvdGF0 aW9uKHJlZ2lzdGVyIGRvdWJsZSBkZkFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVnaXN0ZXIgY29uc3QgR0RCVmVydGV4JiBzRml4LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVnaXN0ZXIgZG91YmxlIGRmUm90WCA9IDAuMCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlJvdFkgPSAwLjAsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZWdpc3RlciBkb3VibGUgZGZSb3RaID0gMS4wKTsKCiAgICB2b2lkIEFkZFJvdGF0aW9u KGRvdWJsZSBkZkFuZ2xlLCBjb25zdCBHREJWZXJ0ZXgmIHNGaXgsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkb3VibGUgZGZSb3RYID0gMC4wLCBkb3VibGUgZGZSb3RZID0gMC4wLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmUm90WiA9IDEuMCk7CgogICAgdm9pZCBT ZXRNaXJyb3IocmVnaXN0ZXIgY29uc3QgR0RCVmVydGV4JiBzUG9pbnQxLAogICAgICAgICAgICAg ICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IEdEQlZlcnRleCYgc1BvaW50Mik7CgoKCgogICAg dm9pZCBTZXRJZGVudGl0eSh2b2lkKTsKICAgIFRCb29sIElzSWRlbnRpdHkodm9pZCkgY29uc3Q7 CiAgICB2b2lkIFRyYW5zcG9zZSh2b2lkKTsKICAgIHZvaWQgU3dhcChyZWdpc3RlciBkb3VibGUm IGRFbGVtZW50MSwKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91YmxlJiBkRWxlbWVu dDIpOwoKCgoKICAgIE1hdDNEJiBBZGQoY29uc3QgTWF0M0QmIG9NYXQxLCBjb25zdCBNYXQzRCYg b01hdDIpOwogICAgTWF0M0QmIEFkZChjb25zdCBNYXQzRCYgb01hdCwgcmVnaXN0ZXIgZG91Ymxl IGRWYWwpOwogICAgTWF0M0Qgb3BlcmF0b3IrIChjb25zdCBNYXQzRCAmb01hdCk7CiAgICBNYXQz RCBvcGVyYXRvcisgKHJlZ2lzdGVyIGRvdWJsZSBkVmFsKTsKICAgIE1hdDNEJiBvcGVyYXRvcis9 IChjb25zdCBNYXQzRCAmb01hdCk7CiAgICBNYXQzRCYgb3BlcmF0b3IrPSAocmVnaXN0ZXIgZG91 YmxlIGRWYWwpOwoKICAgIE1hdDNEJiBTdWJzdHJhY3QoY29uc3QgTWF0M0QmIG9NYXQxLCBjb25z dCBNYXQzRCYgb01hdDIpOwogICAgTWF0M0QmIFN1YnN0cmFjdChjb25zdCBNYXQzRCYgb01hdCwg cmVnaXN0ZXIgZG91YmxlIGRWYWwpOwogICAgTWF0M0Qgb3BlcmF0b3ItIChjb25zdCBNYXQzRCAm b01hdCk7CiAgICBNYXQzRCBvcGVyYXRvci0gKHJlZ2lzdGVyIGRvdWJsZSBkVmFsKTsKICAgIE1h dDNEJiBvcGVyYXRvci09IChjb25zdCBNYXQzRCAmb01hdCk7CiAgICBNYXQzRCYgb3BlcmF0b3It PSAocmVnaXN0ZXIgZG91YmxlIGRWYWwpOwoKICAgIE1hdDNEJiBNdWx0aXBseShjb25zdCBNYXQz RCYgb01hdDEsIGNvbnN0IE1hdDNEJiBvTWF0Mik7CiAgICBNYXQzRCYgTXVsdGlwbHkoY29uc3Qg TWF0M0QmIG9NYXQsIHJlZ2lzdGVyIGRvdWJsZSBkVmFsKTsKICAgIHZvaWQgTXVsdGlwbHlJbnZl cnNlKGNvbnN0IE1hdDNEICZvTWF0MSk7CiAgICBNYXQzRCYgTXVsdGlwbHlJbnZlcnNlKGNvbnN0 IE1hdDNEJiBvTWF0MSwgY29uc3QgTWF0M0QmIG9NYXQyKTsKICAgIEdEQlZlcnRleCBNdWx0aXBs eShyZWdpc3RlciBHREJWZXJ0ZXgmIHNWZWMpOwoKICAgIE1hdDNEJiBvcGVyYXRvcio9IChyZWdp c3RlciBkb3VibGUgZFZhbCk7CiAgICBNYXQzRCYgb3BlcmF0b3IqPSAoY29uc3QgTWF0M0QgJm9N YXQpOwogICAgTWF0M0Qgb3BlcmF0b3IqIChyZWdpc3RlciBkb3VibGUgZFZhbCk7CiAgICBmcmll bmQgR0RCVmVydGV4IG9wZXJhdG9yKiAocmVnaXN0ZXIgR0RCVmVydGV4JiBzVmVjLCBjb25zdCBN YXQzRCYgb01hdCk7CiAgICBmcmllbmQgTWF0M0Qgb3BlcmF0b3IqIChjb25zdCBNYXQzRCYgb01h dDEsIGNvbnN0IE1hdDNEJiBvTWF0KTsKCiAgICBNYXQzRCYgb3BlcmF0b3IrKyAoKTsKICAgIE1h dDNEJiBvcGVyYXRvci0tICgpOwogICAgTWF0M0QmIG9wZXJhdG9yPSAoY29uc3QgTWF0M0QmIG9N YXQpOwogICAgVEJvb2wgb3BlcmF0b3I9PSAoY29uc3QgTWF0M0QmIG9NYXQpOwoKCgoKCiAgcHJp dmF0ZToKICAgIHZvaWQgQWRkVHJhbnNsYXRpb25Mb3dMZXZlbChyZWdpc3RlciBkb3VibGUgZGZU cmFuc1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRv dWJsZSBkZlRyYW5zWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn aXN0ZXIgZG91YmxlIGRmVHJhbnNaID0gMC4wKTsKCiAgICB2b2lkIEFkZFNjYWxpbmdMb3dMZXZl bChkb3VibGUgZGZTY2FsZVgsIGRvdWJsZSBkZlNjYWxlWSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb3VibGUgZGZTY2FsZVogPSAxLjAsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZG91YmxlIGRmT3JpZ2luWCA9IDAuMCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkb3VibGUgZGZPcmlnaW5ZID0gMC4wLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZk9yaWdpblogPSAwLjApOwoKICAgIHZvaWQgQWRk U2hlYXJMb3dMZXZlbChkb3VibGUgZGZTY2FsZSwgZG91YmxlIGRmT3JpZ2luWCA9IDAuMCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmT3JpZ2luWSA9IDAuMCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmT3JpZ2luWiA9IDAuMCk7Cgog ICAgdm9pZCBBZGRSb3RhdGlvbkxvd0xldmVsKGRvdWJsZSBkZkFuZ2xlLCBjb25zdCBHREJWZXJ0 ZXgmIHNGaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZlJv dFggPSAwLjAsIGRvdWJsZSBkZlJvdFkgPSAwLjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvdWJsZSBkZlJvdFogPSAxLjApOwoKCn07CiMgNTI0ICJtYXRyaXguY3BwIiAy CgpzdGF0aWMgY2hhciByY3NpZFtdID0gIiRJZDogbWF0cml4LmNwcCx2IDEuMiAyMDAxLzA3LzE4 IDEzOjAwOjI0IGpkZW5pcyBFeHAgJCI7IHN0YXRpYyBjaGFyICpyY3NpZF9hdygpIHsgcmV0dXJu KCByY3NpZF9hdygpID8gKChjaGFyICopIF9fbnVsbCkgOiByY3NpZCApOyB9CgoKCgoKCmlubGlu ZSB2b2lkIE1hdDNEOjpTd2FwKHJlZ2lzdGVyIGRvdWJsZSYgZGZFbGVtZW50MSwKICAgICAgICAg ICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91YmxlJiBkZkVsZW1lbnQyKQp7CiAgcmVnaXN0ZXIg ZG91YmxlIGRmVGVtcCA9IGRmRWxlbWVudDE7CgogIGRmRWxlbWVudDEgPSBkZkVsZW1lbnQyOwog IGRmRWxlbWVudDIgPSBkZlRlbXA7Cn0KIyA1NDggIm1hdHJpeC5jcHAiCk1hdDNEOjpNYXQzRChU Qm9vbCBiSWRlbnRpdHksIFRCb29sIGJJbnZlcnNlKQp7CiAgICBtYkludmVyc2UgPSBiSW52ZXJz ZTsKICAgIG1iSW5pdGlhbGl6ZSA9IDA7CiAgICBtYkludkluaXRpYWxpemUgPSAwOwoKICAgIGlm IChiSWRlbnRpdHkpCiAgICB7CiAgICAgICAgbWJJbnZJbml0aWFsaXplID0gMTsKICAgICAgICBt YkluaXRpYWxpemUgPSAxOwogICAgICAgIFNldElkZW50aXR5KCk7CiAgICB9Cn0KCgoKCgoKTWF0 M0Q6Ok1hdDNEKGNvbnN0IE1hdDNEJiBvTWF0KQp7CgoKCgogICAgbWJJbnZlcnNlID0gMTsKICAg IG1iSW5pdGlhbGl6ZSA9IDE7CiAgICBtYkludkluaXRpYWxpemUgPSAxOwoKICAgICp0aGlzID0g b01hdDsKfQoKCgoKCgpNYXQzRDo6TWF0M0QoZG91YmxlIGRmWDEsIGRvdWJsZSBkZlkxLCBkb3Vi bGUgZGZaMSwgZG91YmxlIGRmVzEsCiAgICAgICAgICAgICBkb3VibGUgZGZYMiwgZG91YmxlIGRm WTIsIGRvdWJsZSBkZloyLCBkb3VibGUgZGZXMiwKICAgICAgICAgICAgIGRvdWJsZSBkZlgzLCBk b3VibGUgZGZZMywgZG91YmxlIGRmWjMsIGRvdWJsZSBkZlczLAogICAgICAgICAgICAgZG91Ymxl IGRmWDQsIGRvdWJsZSBkZlk0LCBkb3VibGUgZGZaNCwgZG91YmxlIGRmVzQpCnsKICAgIG1iSW52 ZXJzZSA9IDE7CiAgICBtYkluaXRpYWxpemUgPSAxOwogICAgbWJJbnZJbml0aWFsaXplID0gMTsK CiAgICBtYWRNYXRbMF1bMF09ZGZYMTsgbWFkTWF0WzBdWzFdPWRmWTE7IG1hZE1hdFswXVsyXT1k ZloxOyBtYWRNYXRbMF1bM109ZGZXMTsKICAgIG1hZE1hdFsxXVswXT1kZlgyOyBtYWRNYXRbMV1b MV09ZGZZMjsgbWFkTWF0WzFdWzJdPWRmWjI7IG1hZE1hdFsxXVszXT1kZlcyOwogICAgbWFkTWF0 WzJdWzBdPWRmWDM7IG1hZE1hdFsyXVsxXT1kZlkzOyBtYWRNYXRbMl1bMl09ZGZaMzsgbWFkTWF0 WzJdWzNdPWRmVzM7CiAgICBtYWRNYXRbM11bMF09ZGZYNDsgbWFkTWF0WzNdWzFdPWRmWTQ7IG1h ZE1hdFszXVsyXT1kZlo0OyBtYWRNYXRbM11bM109ZGZXNDsKCgoKCiAgICBtYWRNYXRJbnZlcnNl WzBdWzBdPTEuMDsgbWFkTWF0SW52ZXJzZVswXVsxXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzBd WzJdPTAuMDsgbWFkTWF0SW52ZXJzZVswXVszXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzFdWzBd PTAuMDsgbWFkTWF0SW52ZXJzZVsxXVsxXT0xLjA7CiAgICBtYWRNYXRJbnZlcnNlWzFdWzJdPTAu MDsgbWFkTWF0SW52ZXJzZVsxXVszXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzJdWzBdPTAuMDsg bWFkTWF0SW52ZXJzZVsyXVsxXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzJdWzJdPTEuMDsgbWFk TWF0SW52ZXJzZVsyXVszXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzNdWzBdPTAuMDsgbWFkTWF0 SW52ZXJzZVszXVsxXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzNdWzJdPTAuMDsgbWFkTWF0SW52 ZXJzZVszXVszXT0xLjA7Cn0KCgoKCgoKCnZvaWQgTWF0M0Q6OlNldElkZW50aXR5KHZvaWQpCnsK ICAgIG1hZE1hdFswXVswXT0xLjA7IG1hZE1hdFswXVsxXT0wLjA7IG1hZE1hdFswXVsyXT0wLjA7 IG1hZE1hdFswXVszXT0wLjA7CiAgICBtYWRNYXRbMV1bMF09MC4wOyBtYWRNYXRbMV1bMV09MS4w OyBtYWRNYXRbMV1bMl09MC4wOyBtYWRNYXRbMV1bM109MC4wOwogICAgbWFkTWF0WzJdWzBdPTAu MDsgbWFkTWF0WzJdWzFdPTAuMDsgbWFkTWF0WzJdWzJdPTEuMDsgbWFkTWF0WzJdWzNdPTAuMDsK ICAgIG1hZE1hdFszXVswXT0wLjA7IG1hZE1hdFszXVsxXT0wLjA7IG1hZE1hdFszXVsyXT0wLjA7 IG1hZE1hdFszXVszXT0xLjA7CgogICAgbWFkTWF0SW52ZXJzZVswXVswXT0xLjA7IG1hZE1hdElu dmVyc2VbMF1bMV09MC4wOwogICAgbWFkTWF0SW52ZXJzZVswXVsyXT0wLjA7IG1hZE1hdEludmVy c2VbMF1bM109MC4wOwogICAgbWFkTWF0SW52ZXJzZVsxXVswXT0wLjA7IG1hZE1hdEludmVyc2Vb MV1bMV09MS4wOwogICAgbWFkTWF0SW52ZXJzZVsxXVsyXT0wLjA7IG1hZE1hdEludmVyc2VbMV1b M109MC4wOwogICAgbWFkTWF0SW52ZXJzZVsyXVswXT0wLjA7IG1hZE1hdEludmVyc2VbMl1bMV09 MC4wOwogICAgbWFkTWF0SW52ZXJzZVsyXVsyXT0xLjA7IG1hZE1hdEludmVyc2VbMl1bM109MC4w OwogICAgbWFkTWF0SW52ZXJzZVszXVswXT0wLjA7IG1hZE1hdEludmVyc2VbM11bMV09MC4wOwog ICAgbWFkTWF0SW52ZXJzZVszXVsyXT0wLjA7IG1hZE1hdEludmVyc2VbM11bM109MS4wOwp9CgoK CgoKCgpUQm9vbCBNYXQzRDo6SXNJZGVudGl0eSh2b2lkKSBjb25zdAp7CiAgICByZXR1cm4gKCgg KG1hZE1hdFswXVswXSAtIDEuMCkgPiAtMS4wRS05ICYmIChtYWRNYXRbMF1bMF0gLSAxLjApIDwg MS4wRS05ICkgJiYgKCAobWFkTWF0WzBdWzFdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFswXVsxXSkg PCAxLjBFLTkgKSAmJgogICAgICAgICAgICAoIChtYWRNYXRbMF1bMl0pID4gLTEuMEUtOSAmJiAo bWFkTWF0WzBdWzJdKSA8IDEuMEUtOSApICYmICggKG1hZE1hdFswXVszXSkgPiAtMS4wRS05ICYm IChtYWRNYXRbMF1bM10pIDwgMS4wRS05ICkgJiYKICAgICAgICAgICAgKCAobWFkTWF0WzFdWzBd KSA+IC0xLjBFLTkgJiYgKG1hZE1hdFsxXVswXSkgPCAxLjBFLTkgKSAmJiAoIChtYWRNYXRbMV1b MV0gLSAxLjApID4gLTEuMEUtOSAmJiAobWFkTWF0WzFdWzFdIC0gMS4wKSA8IDEuMEUtOSApICYm CiAgICAgICAgICAgICggKG1hZE1hdFsxXVsyXSkgPiAtMS4wRS05ICYmIChtYWRNYXRbMV1bMl0p IDwgMS4wRS05ICkgJiYgKCAobWFkTWF0WzFdWzNdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFsxXVsz XSkgPCAxLjBFLTkgKSAmJgogICAgICAgICAgICAoIChtYWRNYXRbMl1bMF0pID4gLTEuMEUtOSAm JiAobWFkTWF0WzJdWzBdKSA8IDEuMEUtOSApICYmICggKG1hZE1hdFsyXVsxXSkgPiAtMS4wRS05 ICYmIChtYWRNYXRbMl1bMV0pIDwgMS4wRS05ICkgJiYKICAgICAgICAgICAgKCAobWFkTWF0WzJd WzJdIC0gMS4wKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFsyXVsyXSAtIDEuMCkgPCAxLjBFLTkgKSAm JiAoIChtYWRNYXRbMl1bM10pID4gLTEuMEUtOSAmJiAobWFkTWF0WzJdWzNdKSA8IDEuMEUtOSAp ICYmCiAgICAgICAgICAgICggKG1hZE1hdFszXVswXSkgPiAtMS4wRS05ICYmIChtYWRNYXRbM11b MF0pIDwgMS4wRS05ICkgJiYgKCAobWFkTWF0WzNdWzFdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFsz XVsxXSkgPCAxLjBFLTkgKSAmJgogICAgICAgICAgICAoIChtYWRNYXRbM11bMl0pID4gLTEuMEUt OSAmJiAobWFkTWF0WzNdWzJdKSA8IDEuMEUtOSApICYmICggKG1hZE1hdFszXVszXSAtIDEuMCkg PiAtMS4wRS05ICYmIChtYWRNYXRbM11bM10gLSAxLjApIDwgMS4wRS05ICkpOwp9CiMgNjYwICJt YXRyaXguY3BwIgp2b2lkIE1hdDNEOjpTZXRUcmFuc2xhdGlvbihyZWdpc3RlciBkb3VibGUgZGZU cmFuc1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5z WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91YmxlIGRmVHJhbnNaKQp7 CiAgICBTZXRJZGVudGl0eSgpOwogICAgQWRkVHJhbnNsYXRpb24oZGZUcmFuc1gsIGRmVHJhbnNZ LCBkZlRyYW5zWik7Cn0KCgoKCgoKCnZvaWQgTWF0M0Q6OkFkZFRyYW5zbGF0aW9uKHJlZ2lzdGVy IGRvdWJsZSBkZlRyYW5zWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91 YmxlIGRmVHJhbnNZLAogICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBkb3VibGUg ZGZUcmFuc1opCnsKICAgIE1hdDNEIG9NYXQ7CgoKCgoKICAgIGRmVHJhbnNaID0gMC4wOwogICAg b01hdC5BZGRUcmFuc2xhdGlvbkxvd0xldmVsKC1kZlRyYW5zWCwgLWRmVHJhbnNZLCAtZGZUcmFu c1opOwoKCgoKICAgIGlmIChtYkludmVyc2UpCiAgICAgIE11bHRpcGx5SW52ZXJzZShvTWF0KTsK CiAgICBBZGRUcmFuc2xhdGlvbkxvd0xldmVsKGRmVHJhbnNYLCBkZlRyYW5zWSwgZGZUcmFuc1op Owp9CgoKCgoKCgp2b2lkIE1hdDNEOjpBZGRUcmFuc2xhdGlvbkxvd0xldmVsKHJlZ2lzdGVyIGRv dWJsZSBkZlRyYW5zWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rl ciBkb3VibGUgZGZUcmFuc1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn aXN0ZXIgZG91YmxlIGRmVHJhbnNaKQp7CgoKCgogICAgZGZUcmFuc1ogPSAwLjA7CgogICAgbWFk TWF0WzNdWzBdICs9IGRmVHJhbnNYOwogICAgbWFkTWF0WzNdWzFdICs9IGRmVHJhbnNZOwogICAg bWFkTWF0WzNdWzJdICs9IGRmVHJhbnNaOwogICAgbWJJbml0aWFsaXplID0gMTsKfQojIDcyNiAi bWF0cml4LmNwcCIKdm9pZCBNYXQzRDo6U2V0U2NhbGluZyhkb3VibGUgZGZTY2FsZVgsIGRvdWJs ZSBkZlNjYWxlWSwKICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZTY2FsZVosIGRvdWJs ZSBkZk9yaWdpblgsCiAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmT3JpZ2luWSxkb3Vi bGUgZGZPcmlnaW5aKQp7CgoKCgogICAgZGZTY2FsZVogPSAwLjA7CiAgICBkZk9yaWdpblogPSAw LjA7CgogICAgU2V0SWRlbnRpdHkoKTsKICAgIEFkZFNjYWxpbmcoZGZTY2FsZVgsIGRmU2NhbGVZ LCBkZlNjYWxlWiwKICAgICAgICAgICAgICAgZGZPcmlnaW5YLCBkZk9yaWdpblksIGRmT3JpZ2lu Wik7Cn0KCgoKCgoKCnZvaWQgTWF0M0Q6OkFkZFNjYWxpbmcoZG91YmxlIGRmU2NhbGVYLCBkb3Vi bGUgZGZTY2FsZVksIGRvdWJsZSBkZlNjYWxlWiwKICAgICAgICAgICAgICAgICAgICAgICBkb3Vi bGUgZGZPcmlnaW5YLCBkb3VibGUgZGZPcmlnaW5ZLCBkb3VibGUgZGZPcmlnaW5aKQp7CiAgICBN YXQzRCBvTWF0KDApOwoKCgoKICAgIGlmIChtYkludmVyc2UpCiAgICB7CiAgICAgICAgTWF0M0Qg b01hdEludjsKICAgICAgICBvTWF0SW52LkFkZFNjYWxpbmdMb3dMZXZlbCgoMS4wL2RmU2NhbGVY KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMC9kZlNjYWxlWSksICgx LjAvZGZTY2FsZVopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZk9yaWdp blgsIGRmT3JpZ2luWSwgZGZPcmlnaW5aKTsKICAgICAgICBNdWx0aXBseUludmVyc2Uob01hdElu dik7CiAgICB9CgogICAgb01hdC5BZGRTY2FsaW5nTG93TGV2ZWwoZGZTY2FsZVgsIGRmU2NhbGVZ LCBkZlNjYWxlWiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZk9yaWdpblgsIGRmT3Jp Z2luWSwgZGZPcmlnaW5aKTsKICAgIE11bHRpcGx5KCp0aGlzLCBvTWF0KTsKfQojIDc3NyAibWF0 cml4LmNwcCIKdm9pZCBNYXQzRDo6QWRkU2NhbGluZ0xvd0xldmVsKHJlZ2lzdGVyIGRvdWJsZSBk ZlNjYWxlWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBkb3VibGUg ZGZTY2FsZVksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91Ymxl IGRmU2NhbGVaLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJs ZSBkZk9yaWdpblgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91 YmxlIGRmT3JpZ2luWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBk b3VibGUgZGZPcmlnaW5aKQp7CgoKCgogICAgZGZTY2FsZVogPSAwLjA7CiAgICBkZk9yaWdpblog PSAwLjA7CgogICAgbWFkTWF0WzBdWzBdID0gZGZTY2FsZVg7CiAgICBtYWRNYXRbMF1bMV0gPSAw LjA7CiAgICBtYWRNYXRbMF1bMl0gPSAwLjA7CiAgICBtYWRNYXRbMF1bM10gPSAwLjA7CiAgICBt YWRNYXRbMV1bMF0gPSAwLjA7CiAgICBtYWRNYXRbMV1bMV0gPSBkZlNjYWxlWTsKICAgIG1hZE1h dFsxXVsyXSA9IDAuMDsKICAgIG1hZE1hdFsxXVszXSA9IDAuMDsKICAgIG1hZE1hdFsyXVswXSA9 IDAuMDsKICAgIG1hZE1hdFsyXVsxXSA9IDAuMDsKICAgIG1hZE1hdFsyXVsyXSA9IGRmU2NhbGVa OwogICAgbWFkTWF0WzJdWzNdID0gMC4wOwogICAgbWFkTWF0WzNdWzBdID0gKDEuMCAtIGRmU2Nh bGVYKSAqIGRmT3JpZ2luWDsKICAgIG1hZE1hdFszXVsxXSA9ICgxLjAgLSBkZlNjYWxlWSkgKiBk Zk9yaWdpblk7CiAgICBtYWRNYXRbM11bMl0gPSAoMS4wIC0gZGZTY2FsZVopICogZGZPcmlnaW5a OwogICAgbWFkTWF0WzNdWzNdID0gMS4wOwogICAgbWJJbml0aWFsaXplID0gMTsKfQoKCgoKCgoK dm9pZCBNYXQzRDo6U2V0U2hlYXIocmVnaXN0ZXIgZG91YmxlIGRmU2NhbGUsIHJlZ2lzdGVyIGRv dWJsZSBkZk9yaWdpblgsCiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZk9y aWdpblksIHJlZ2lzdGVyIGRvdWJsZSBkZk9yaWdpblopCnsKICAgIHJlZ2lzdGVyIEdEQlZlcnRl eCBzVW5pdFZlYzsKICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlNjYWxhciwgZGZWZWN0b3JMZW47CgoK CgoKICAgIGRmT3JpZ2luWiA9IDAuMDsKCgoKCiAgICBkZlZlY3RvckxlbiA9IHNxcnQoZGZPcmln aW5YICogZGZPcmlnaW5YICsgZGZPcmlnaW5ZICogZGZPcmlnaW5ZICsKICAgICAgICAgICAgICAg ICAgICAgICBkZk9yaWdpblogKiBkZk9yaWdpblopOwogICAgKElNUENoZWNrRXhwcigiIUVRWkVS TyhkZlZlY3RvckxlbikiLCAibWF0cml4LmNwcCIsIDgzMyksICghKCAoZGZWZWN0b3JMZW4pID4g LTEuMEUtOSAmJiAoZGZWZWN0b3JMZW4pIDwgMS4wRS05ICkpID8gKDApIDogX0lNUEFzc2VydCgi IUVRWkVSTyhkZlZlY3RvckxlbikiLCJtYXRyaXguY3BwIiw4MzMpKTsKCiAgICBpZiAoISggKGRm VmVjdG9yTGVuKSA+IC0xLjBFLTkgJiYgKGRmVmVjdG9yTGVuKSA8IDEuMEUtOSApKQogICAgewog ICAgICAgIHNVbml0VmVjLnggPSBkZk9yaWdpblggLyBkZlZlY3RvckxlbjsKICAgICAgICBzVW5p dFZlYy55ID0gZGZPcmlnaW5ZIC8gZGZWZWN0b3JMZW47CiAgICAgICAgc1VuaXRWZWMueiA9IGRm T3JpZ2luWiAvIGRmVmVjdG9yTGVuOwoKCgoKCiAgICAgICAgZGZTY2FsYXIgPSAoKDEuMCAtIGRm U2NhbGUpICogZGZPcmlnaW5YICogc1VuaXRWZWMueCArCiAgICAgICAgICAgICAgICAgICAgKDEu MCAtIGRmU2NhbGUpICogZGZPcmlnaW5ZICogc1VuaXRWZWMueSArCiAgICAgICAgICAgICAgICAg ICAgKDEuMCAtIGRmU2NhbGUpICogZGZPcmlnaW5aICogc1VuaXRWZWMueik7CgoKCgogICAgICAg IG1hZE1hdFswXVswXSA9IDEuMCAtICgxLjAgLSBkZlNjYWxlKSAqIHNVbml0VmVjLnggKiBzVW5p dFZlYy54OwogICAgICAgIG1hZE1hdFswXVsxXSA9IC0oMS4wIC0gZGZTY2FsZSkgKiBzVW5pdFZl Yy54ICogc1VuaXRWZWMueTsKICAgICAgICBtYWRNYXRbMF1bMl0gPSAtKDEuMCAtIGRmU2NhbGUp ICogc1VuaXRWZWMueCAqIHNVbml0VmVjLno7CiAgICAgICAgbWFkTWF0WzBdWzNdID0gMC4wOwog ICAgICAgIG1hZE1hdFsxXVswXSA9IG1hZE1hdFswXVsxXTsKICAgICAgICBtYWRNYXRbMV1bMV0g PSAxLjAgLSAoMS4wIC0gZGZTY2FsZSkgKiBzVW5pdFZlYy55ICogc1VuaXRWZWMueTsKICAgICAg ICBtYWRNYXRbMV1bMl0gPSAtKDEuMCAtIGRmU2NhbGUpICogc1VuaXRWZWMueSAqIHNVbml0VmVj Lno7CiAgICAgICAgbWFkTWF0WzFdWzNdID0gMC4wOwogICAgICAgIG1hZE1hdFsyXVswXSA9IG1h ZE1hdFswXVsyXTsKICAgICAgICBtYWRNYXRbMl1bMV0gPSBtYWRNYXRbMV1bMl07CiAgICAgICAg bWFkTWF0WzJdWzJdID0gMS4wIC0gKDEuMCAtIGRmU2NhbGUpICogc1VuaXRWZWMueiAqIHNVbml0 VmVjLno7CiAgICAgICAgbWFkTWF0WzJdWzNdID0gMC4wOwogICAgICAgIG1hZE1hdFszXVswXSA9 IGRmU2NhbGFyICogc1VuaXRWZWMueDsKICAgICAgICBtYWRNYXRbM11bMV0gPSBkZlNjYWxhciAq IHNVbml0VmVjLnk7CiAgICAgICAgbWFkTWF0WzNdWzJdID0gZGZTY2FsYXIgKiBzVW5pdFZlYy56 OwogICAgICAgIG1hZE1hdFszXVszXSA9IDEuMDsKICAgIH0KfQoKCgoKCgoKdm9pZCBNYXQzRDo6 QWRkU2hlYXIoZG91YmxlIGRmU2NhbGUsIGRvdWJsZSBkZk9yaWdpblgsCiAgICAgICAgICAgICAg ICAgICAgIGRvdWJsZSBkZk9yaWdpblksIGRvdWJsZSBkZk9yaWdpblopCgp7CiAgICBNYXQzRCBv TWF0KDApOwoKCgoKCiAgICBkZk9yaWdpblogPSAwLjA7CgogICAgb01hdC5TZXRTY2FsaW5nKGRm U2NhbGUsIGRmT3JpZ2luWCwgZGZPcmlnaW5ZLCBkZk9yaWdpblopOwogICAgTXVsdGlwbHkoKnRo aXMsIG9NYXQpOwogICAgaWYgKG1iSW52ZXJzZSkKICAgICAgTXVsdGlwbHlJbnZlcnNlKCp0aGlz LCBvTWF0KTsKfQoKCgoKdm9pZCBNYXQzRDo6QWRkU2hlYXJMb3dMZXZlbChkb3VibGUsIGRvdWJs ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlLCBkb3VibGUpCnsKCn0KIyA5 MTQgIm1hdHJpeC5jcHAiCnZvaWQgTWF0M0Q6OlNldFJvdGF0aW9uKGRvdWJsZSBkZkFuZ2xlLCBj b25zdCBHREJWZXJ0ZXgmIHNGaXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZlJv dFgsIGRvdWJsZSBkZlJvdFksIGRvdWJsZSBkZlJvdFopCnsKICAgIFNldElkZW50aXR5KCk7CiAg ICBBZGRSb3RhdGlvbihkZkFuZ2xlLCBzRml4LCBkZlJvdFgsIGRmUm90WSwgZGZSb3RaKTsKCn0K IyA5MjkgIm1hdHJpeC5jcHAiCnZvaWQgTWF0M0Q6OkFkZFJvdGF0aW9uKGRvdWJsZSBkZkFuZ2xl LCBjb25zdCBHREJWZXJ0ZXgmIHNGaXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBk ZlJvdFgsIGRvdWJsZSBkZlJvdFksIGRvdWJsZSBkZlJvdFopCnsKICAgIE1hdDNEIG9NYXQoMCk7 CgogICAgaWYgKG1iSW52ZXJzZSkKICAgIHsKICAgICAgICBNYXQzRCBvTWF0SW52OwogICAgICAg IG9NYXRJbnYuQWRkUm90YXRpb25Mb3dMZXZlbCgtZGZBbmdsZSwgc0ZpeCwgZGZSb3RYLCBkZlJv dFksIGRmUm90Wik7CgoKCiAgICAgICAgTXVsdGlwbHlJbnZlcnNlKG9NYXRJbnYpOwogICAgfQoK ICAgIG9NYXQuQWRkUm90YXRpb25Mb3dMZXZlbChkZkFuZ2xlLCBzRml4LCBkZlJvdFgsIGRmUm90 WSwgZGZSb3RaKTsKICAgIE11bHRpcGx5KCp0aGlzLCBvTWF0KTsKfQojIDk1NSAibWF0cml4LmNw cCIKdm9pZCBNYXQzRDo6CkFkZFJvdGF0aW9uTG93TGV2ZWwocmVnaXN0ZXIgZG91YmxlIGRmQW5n bGUsIHJlZ2lzdGVyIGNvbnN0IEdEQlZlcnRleCYgc0ZpeCwKICAgICAgICAgICAgICAgICAgICBy ZWdpc3RlciBkb3VibGUgZGZSb3RYLCByZWdpc3RlciBkb3VibGUgZGZSb3RZLAogICAgICAgICAg ICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlJvdFopCnsKICAgIEdEQlZlcnRleCBzVW5pdFZl YzsKICAgIGRvdWJsZSBkZlpWYWx1ZSA9IDAuMDsKICAgIGRvdWJsZSBkZlZlY3RvckxlbiwgZGZT aW4sIGRmQ29zOwoKCgoKICAgIGRmVmVjdG9yTGVuID0gc3FydChkZlJvdFggKiBkZlJvdFggKyBk ZlJvdFkgKiBkZlJvdFkgKyBkZlJvdFogKiBkZlJvdFopOwogICAgKElNUENoZWNrRXhwcigiIUVR WkVSTyhkZlZlY3RvckxlbikiLCAibWF0cml4LmNwcCIsIDk2OCksICghKCAoZGZWZWN0b3JMZW4p ID4gLTEuMEUtOSAmJiAoZGZWZWN0b3JMZW4pIDwgMS4wRS05ICkpID8gKDApIDogX0lNUEFzc2Vy dCgiIUVRWkVSTyhkZlZlY3RvckxlbikiLCJtYXRyaXguY3BwIiw5NjgpKTsKCiAgICBpZiAoISgg KGRmVmVjdG9yTGVuKSA+IC0xLjBFLTkgJiYgKGRmVmVjdG9yTGVuKSA8IDEuMEUtOSApKQogICAg ewogICAgICAgIGRmU2luID0gc2luKGRmQW5nbGUpOwogICAgICAgIGRmQ29zID0gY29zKGRmQW5n bGUpOwogICAgICAgIHNVbml0VmVjLnggPSBkZlJvdFggLyBkZlZlY3RvckxlbjsKICAgICAgICBz VW5pdFZlYy55ID0gZGZSb3RZIC8gZGZWZWN0b3JMZW47CiAgICAgICAgc1VuaXRWZWMueiA9IGRm Um90WiAvIGRmVmVjdG9yTGVuOwoKCgoKICAgICAgICBtYWRNYXRbMF1bMF0gPSBkZkNvcyArICgx LjAgLSBkZkNvcykgKiBzVW5pdFZlYy54ICogc1VuaXRWZWMueDsKICAgICAgICBtYWRNYXRbMF1b MV0gPSAoMS4wIC0gZGZDb3MpICogc1VuaXRWZWMueCAqIHNVbml0VmVjLnkgKwogICAgICAgICAg ICBkZlNpbiAqIHNVbml0VmVjLno7CiAgICAgICAgbWFkTWF0WzBdWzJdID0gKDEuMCAtIGRmQ29z KSAqIHNVbml0VmVjLnggKiBzVW5pdFZlYy56IC0KICAgICAgICAgICAgZGZTaW4gKiBzVW5pdFZl Yy55OwogICAgICAgIG1hZE1hdFswXVszXSA9IDAuMDsKICAgICAgICBtYWRNYXRbMV1bMF0gPSAo MS4wIC0gZGZDb3MpICogc1VuaXRWZWMueSAqIHNVbml0VmVjLnggLQogICAgICAgICAgICBkZlNp biAqIHNVbml0VmVjLno7CiAgICAgICAgbWFkTWF0WzFdWzFdID0gZGZDb3MgKyAoMS4wIC0gZGZD b3MpICogc1VuaXRWZWMueSAqIHNVbml0VmVjLnk7CiAgICAgICAgbWFkTWF0WzFdWzJdID0gKDEu MCAtIGRmQ29zKSAqIHNVbml0VmVjLnkgKiBzVW5pdFZlYy56ICsKICAgICAgICAgICAgZGZTaW4g KiBzVW5pdFZlYy54OwogICAgICAgIG1hZE1hdFsxXVszXSA9IDAuMDsKICAgICAgICBtYWRNYXRb Ml1bMF0gPSAoMS4wIC0gZGZDb3MpICogc1VuaXRWZWMueiAqIHNVbml0VmVjLnggKwogICAgICAg ICAgICBkZlNpbiAqIHNVbml0VmVjLnk7CiAgICAgICAgbWFkTWF0WzJdWzFdID0gKDEuMCAtIGRm Q29zKSAqIHNVbml0VmVjLnogKiBzVW5pdFZlYy55IC0KICAgICAgICAgICAgZGZTaW4gKiBzVW5p dFZlYy54OwogICAgICAgIG1hZE1hdFsyXVsyXSA9IGRmQ29zICsgKDEuMCAtIGRmQ29zKSAqIHNV bml0VmVjLnogKiBzVW5pdFZlYy56OwogICAgICAgIG1hZE1hdFsyXVszXSA9IDAuMDsKICAgICAg ICBtYWRNYXRbM11bMF0gPSBzRml4LnggLSBzRml4LnggKiBtYWRNYXRbMF1bMF0gLQogICAgICAg ICAgICBzRml4LnkgKiBtYWRNYXRbMV1bMF0gLSBkZlpWYWx1ZSAqIG1hZE1hdFsyXVswXTsKICAg ICAgICBtYWRNYXRbM11bMV0gPSBzRml4LnkgLSBzRml4LnggKiBtYWRNYXRbMF1bMV0gLQogICAg ICAgICAgICBzRml4LnkgKiBtYWRNYXRbMV1bMV0gLSBkZlpWYWx1ZSAqIG1hZE1hdFsyXVsxXTsK ICAgICAgICBtYWRNYXRbM11bMl0gPSBkZlpWYWx1ZSAtIHNGaXgueCAqIG1hZE1hdFswXVsyXSAt CiAgICAgICAgICAgIHNGaXgueSAqIG1hZE1hdFsxXVsyXSAtIGRmWlZhbHVlICogbWFkTWF0WzJd WzJdOwogICAgICAgIG1hZE1hdFszXVszXSA9IDEuMDsKCiAgICAgICAgbWJJbml0aWFsaXplID0g MTsKICAgIH0KfQoKCgoKCgoKdm9pZCBNYXQzRDo6U2V0TWlycm9yKHJlZ2lzdGVyIGNvbnN0IEdE QlZlcnRleCYgc1BvaW50MSwKICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IEdE QlZlcnRleCYgc1BvaW50MikKewogICAgZG91YmxlIGRmWlZhbHVlID0gMC4wOwogICAgcmVnaXN0 ZXIgZG91YmxlIGRmQW5nbGUsIGRmU2NhbGFyOwogICAgcmVnaXN0ZXIgR0RCVmVydGV4IHNEZWx0 YSwgc1VuaXRWZWM7CgoKCgogICAgc0RlbHRhLnggPSBzUG9pbnQyLnggLSBzUG9pbnQxLng7CiAg ICBzRGVsdGEueSA9IHNQb2ludDIueSAtIHNQb2ludDEueTsKICAgIGlmICgoIChzRGVsdGEueCkg PiAtMS4wRS05ICYmIChzRGVsdGEueCkgPCAxLjBFLTkgKSkKICAgIHsKICAgICAgICBpZiAoKCAo c0RlbHRhLnkpID4gLTEuMEUtOSAmJiAoc0RlbHRhLnkpIDwgMS4wRS05ICkpCiAgICAgICAgICBT ZXRTY2FsaW5nKC0xLjAsIC0xLjAsIDAuMCwgc1BvaW50MS54LCBzUG9pbnQxLnksIGRmWlZhbHVl KTsKICAgICAgICBlbHNlCiAgICAgICAgICBTZXRTY2FsaW5nKC0xLjAsIDEuMCwgMC4wLCBzUG9p bnQxLngsIHNQb2ludDEueSwgZGZaVmFsdWUpOwogICAgfQoKCgogICAgZWxzZSBpZiAoKCAoc0Rl bHRhLnkpID4gLTEuMEUtOSAmJiAoc0RlbHRhLnkpIDwgMS4wRS05ICkpCiAgICAgIFNldFNjYWxp bmcoMS4wLCAtMS4wLCAwLjAsIHNQb2ludDEueCwgc1BvaW50MS55LCBkZlpWYWx1ZSk7CgoKCgoK ICAgIGRmQW5nbGUgPSBhdGFuMigtc0RlbHRhLngsIHNEZWx0YS55KTsKICAgIHNVbml0VmVjLngg PSBjb3MoZGZBbmdsZSk7CiAgICBzVW5pdFZlYy55ID0gc2luKGRmQW5nbGUpOwogICAgc1VuaXRW ZWMueiA9IDAuMDsKCgoKCgogICAgZGZTY2FsYXIgPSAyLjAgKiAoc1BvaW50Mi54ICogc1VuaXRW ZWMueCArIHNQb2ludDIueSAqIHNVbml0VmVjLnkgKwogICAgICAgICAgICAgICAgICAgICAgZGZa VmFsdWUgKiBzVW5pdFZlYy56KTsKCgoKCiAgICBtYWRNYXRbMF1bMF0gPSAxLjAgLSAyLjAgKiBz VW5pdFZlYy54ICogc1VuaXRWZWMueDsKICAgIG1hZE1hdFswXVsxXSA9IC0yLjAgKiBzVW5pdFZl Yy54ICogc1VuaXRWZWMueTsKICAgIG1hZE1hdFswXVsyXSA9IC0yLjAgKiBzVW5pdFZlYy54ICog c1VuaXRWZWMuejsKICAgIG1hZE1hdFswXVszXSA9IDAuMDsKICAgIG1hZE1hdFsxXVswXSA9IG1h ZE1hdFswXVsxXTsKICAgIG1hZE1hdFsxXVsxXSA9IDEuMCAtIDIuMCAqIHNVbml0VmVjLnkgKiBz VW5pdFZlYy55OwogICAgbWFkTWF0WzFdWzJdID0gLTIuMCAqIHNVbml0VmVjLnkgKiBzVW5pdFZl Yy56OwogICAgbWFkTWF0WzJdWzBdID0gbWFkTWF0WzBdWzJdOwogICAgbWFkTWF0WzJdWzFdID0g bWFkTWF0WzFdWzJdOwogICAgbWFkTWF0WzJdWzJdID0gMS4wIC0gMi4wICogc1VuaXRWZWMueiAq IHNVbml0VmVjLno7CiAgICBtYWRNYXRbM11bMF0gPSBkZlNjYWxhciAqIHNVbml0VmVjLng7CiAg ICBtYWRNYXRbM11bMV0gPSBkZlNjYWxhciAqIHNVbml0VmVjLnk7CiAgICBtYWRNYXRbM11bMl0g PSBkZlNjYWxhciAqIHNVbml0VmVjLno7Cn0KCgoKCgoKdm9pZCBNYXQzRDo6VHJhbnNwb3NlKHZv aWQpCnsKICAgIFN3YXAobWFkTWF0WzBdWzFdLCBtYWRNYXRbMV1bMF0pOwogICAgU3dhcChtYWRN YXRbMF1bMl0sIG1hZE1hdFsyXVswXSk7CiAgICBTd2FwKG1hZE1hdFswXVszXSwgbWFkTWF0WzNd WzBdKTsKICAgIFN3YXAobWFkTWF0WzFdWzJdLCBtYWRNYXRbMl1bMV0pOwogICAgU3dhcChtYWRN YXRbMV1bM10sIG1hZE1hdFszXVsxXSk7CiAgICBTd2FwKG1hZE1hdFsyXVszXSwgbWFkTWF0WzNd WzJdKTsKfQoKCgoKCgpNYXQzRCYgTWF0M0Q6OkFkZChjb25zdCBNYXQzRCYgb01hdDEsIGNvbnN0 IE1hdDNEJiBvTWF0MikKewogICAgbWFkTWF0WzBdWzBdID0gb01hdDEubWFkTWF0WzBdWzBdICsg b01hdDIubWFkTWF0WzBdWzBdOwogICAgbWFkTWF0WzBdWzFdID0gb01hdDEubWFkTWF0WzBdWzFd ICsgb01hdDIubWFkTWF0WzBdWzFdOwogICAgbWFkTWF0WzBdWzJdID0gb01hdDEubWFkTWF0WzBd WzJdICsgb01hdDIubWFkTWF0WzBdWzJdOwogICAgbWFkTWF0WzBdWzNdID0gb01hdDEubWFkTWF0 WzBdWzNdICsgb01hdDIubWFkTWF0WzBdWzNdOwogICAgbWFkTWF0WzFdWzBdID0gb01hdDEubWFk TWF0WzFdWzBdICsgb01hdDIubWFkTWF0WzFdWzBdOwogICAgbWFkTWF0WzFdWzFdID0gb01hdDEu bWFkTWF0WzFdWzFdICsgb01hdDIubWFkTWF0WzFdWzFdOwogICAgbWFkTWF0WzFdWzJdID0gb01h dDEubWFkTWF0WzFdWzJdICsgb01hdDIubWFkTWF0WzFdWzJdOwogICAgbWFkTWF0WzFdWzNdID0g b01hdDEubWFkTWF0WzFdWzNdICsgb01hdDIubWFkTWF0WzFdWzNdOwogICAgbWFkTWF0WzJdWzBd ID0gb01hdDEubWFkTWF0WzJdWzBdICsgb01hdDIubWFkTWF0WzJdWzBdOwogICAgbWFkTWF0WzJd WzFdID0gb01hdDEubWFkTWF0WzJdWzFdICsgb01hdDIubWFkTWF0WzJdWzFdOwogICAgbWFkTWF0 WzJdWzJdID0gb01hdDEubWFkTWF0WzJdWzJdICsgb01hdDIubWFkTWF0WzJdWzJdOwogICAgbWFk TWF0WzJdWzNdID0gb01hdDEubWFkTWF0WzJdWzNdICsgb01hdDIubWFkTWF0WzJdWzNdOwogICAg bWFkTWF0WzNdWzBdID0gb01hdDEubWFkTWF0WzNdWzBdICsgb01hdDIubWFkTWF0WzNdWzBdOwog ICAgbWFkTWF0WzNdWzFdID0gb01hdDEubWFkTWF0WzNdWzFdICsgb01hdDIubWFkTWF0WzNdWzFd OwogICAgbWFkTWF0WzNdWzJdID0gb01hdDEubWFkTWF0WzNdWzJdICsgb01hdDIubWFkTWF0WzNd WzJdOwogICAgbWFkTWF0WzNdWzNdID0gb01hdDEubWFkTWF0WzNdWzNdICsgb01hdDIubWFkTWF0 WzNdWzNdOwoKICAgIHJldHVybiAqdGhpczsKfQoKCgoKCgpNYXQzRCYgTWF0M0Q6OkFkZChjb25z dCBNYXQzRCYgb01hdCwgcmVnaXN0ZXIgZG91YmxlIGRWYWwpCnsKICAgIG1hZE1hdFswXVswXSA9 IG9NYXQubWFkTWF0WzBdWzBdICsgZFZhbDsKICAgIG1hZE1hdFswXVsxXSA9IG9NYXQubWFkTWF0 WzBdWzFdICsgZFZhbDsKICAgIG1hZE1hdFswXVsyXSA9IG9NYXQubWFkTWF0WzBdWzJdICsgZFZh bDsKICAgIG1hZE1hdFswXVszXSA9IG9NYXQubWFkTWF0WzBdWzNdICsgZFZhbDsKICAgIG1hZE1h dFsxXVswXSA9IG9NYXQubWFkTWF0WzFdWzBdICsgZFZhbDsKICAgIG1hZE1hdFsxXVsxXSA9IG9N YXQubWFkTWF0WzFdWzFdICsgZFZhbDsKICAgIG1hZE1hdFsxXVsyXSA9IG9NYXQubWFkTWF0WzFd WzJdICsgZFZhbDsKICAgIG1hZE1hdFsxXVszXSA9IG9NYXQubWFkTWF0WzFdWzNdICsgZFZhbDsK ICAgIG1hZE1hdFsyXVswXSA9IG9NYXQubWFkTWF0WzJdWzBdICsgZFZhbDsKICAgIG1hZE1hdFsy XVsxXSA9IG9NYXQubWFkTWF0WzJdWzFdICsgZFZhbDsKICAgIG1hZE1hdFsyXVsyXSA9IG9NYXQu bWFkTWF0WzJdWzJdICsgZFZhbDsKICAgIG1hZE1hdFsyXVszXSA9IG9NYXQubWFkTWF0WzJdWzNd ICsgZFZhbDsKICAgIG1hZE1hdFszXVswXSA9IG9NYXQubWFkTWF0WzNdWzBdICsgZFZhbDsKICAg IG1hZE1hdFszXVsxXSA9IG9NYXQubWFkTWF0WzNdWzFdICsgZFZhbDsKICAgIG1hZE1hdFszXVsy XSA9IG9NYXQubWFkTWF0WzNdWzJdICsgZFZhbDsKICAgIG1hZE1hdFszXVszXSA9IG9NYXQubWFk TWF0WzNdWzNdICsgZFZhbDsKCiAgICByZXR1cm4gKnRoaXM7Cn0KCgoKCgoKCk1hdDNEIE1hdDNE OjpvcGVyYXRvcisgKGNvbnN0IE1hdDNEJiBvTWF0KQp7CiAgICByZXR1cm4gTWF0M0QobWFkTWF0 WzBdWzBdICsgb01hdC5tYWRNYXRbMF1bMF0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzFd ICsgb01hdC5tYWRNYXRbMF1bMV0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzJdICsgb01h dC5tYWRNYXRbMF1bMl0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzNdICsgb01hdC5tYWRN YXRbMF1bM10sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzFdWzBdICsgb01hdC5tYWRNYXRbMV1b MF0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzFdWzFdICsgb01hdC5tYWRNYXRbMV1bMV0sCiAg ICAgICAgICAgICAgICAgbWFkTWF0WzFdWzJdICsgb01hdC5tYWRNYXRbMV1bMl0sCiAgICAgICAg ICAgICAgICAgbWFkTWF0WzFdWzNdICsgb01hdC5tYWRNYXRbMV1bM10sCiAgICAgICAgICAgICAg ICAgbWFkTWF0WzJdWzBdICsgb01hdC5tYWRNYXRbMl1bMF0sCiAgICAgICAgICAgICAgICAgbWFk TWF0WzJdWzFdICsgb01hdC5tYWRNYXRbMl1bMV0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJd WzJdICsgb01hdC5tYWRNYXRbMl1bMl0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJdWzNdICsg b01hdC5tYWRNYXRbMl1bM10sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzBdICsgb01hdC5t YWRNYXRbM11bMF0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzFdICsgb01hdC5tYWRNYXRb M11bMV0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzJdICsgb01hdC5tYWRNYXRbM11bMl0s CiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzNdICsgb01hdC5tYWRNYXRbM11bM10pOwp9CgoK CgoKCgpNYXQzRCBNYXQzRDo6b3BlcmF0b3IrIChyZWdpc3RlciBkb3VibGUgZFZhbCkKewogICAg cmV0dXJuIE1hdDNEKG1hZE1hdFswXVswXSArIGRWYWwsIG1hZE1hdFswXVsxXSArIGRWYWwsCiAg ICAgICAgICAgICAgICAgbWFkTWF0WzBdWzJdICsgZFZhbCwgbWFkTWF0WzBdWzNdICsgZFZhbCwK ICAgICAgICAgICAgICAgICBtYWRNYXRbMV1bMF0gKyBkVmFsLCBtYWRNYXRbMV1bMV0gKyBkVmFs LAogICAgICAgICAgICAgICAgIG1hZE1hdFsxXVsyXSArIGRWYWwsIG1hZE1hdFsxXVszXSArIGRW YWwsCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJdWzBdICsgZFZhbCwgbWFkTWF0WzJdWzFdICsg ZFZhbCwKICAgICAgICAgICAgICAgICBtYWRNYXRbMl1bMl0gKyBkVmFsLCBtYWRNYXRbMl1bM10g KyBkVmFsLAogICAgICAgICAgICAgICAgIG1hZE1hdFszXVswXSArIGRWYWwsIG1hZE1hdFszXVsx XSArIGRWYWwsCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzJdICsgZFZhbCwgbWFkTWF0WzNd WzNdICsgZFZhbCk7Cn0KCgoKCgoKCk1hdDNEJiBNYXQzRDo6b3BlcmF0b3IrPSAoY29uc3QgTWF0 M0QmIG9NYXQpCnsKICAgIEFkZCgqdGhpcywgb01hdCk7CgogICAgcmV0dXJuICp0aGlzOwp9CgoK CgoKCk1hdDNEJiBNYXQzRDo6b3BlcmF0b3IrPSAocmVnaXN0ZXIgZG91YmxlIGRWYWwpCnsKICAg IEFkZCgqdGhpcywgZFZhbCk7CgogICAgcmV0dXJuICp0aGlzOwp9CgoKCgoKCk1hdDNEJiBNYXQz RDo6U3Vic3RyYWN0KGNvbnN0IE1hdDNEJiBvTWF0MSwgY29uc3QgTWF0M0QmIG9NYXQyKQp7CiAg ICBtYWRNYXRbMF1bMF0gPSBvTWF0MS5tYWRNYXRbMF1bMF0gLSBvTWF0Mi5tYWRNYXRbMF1bMF07 CiAgICBtYWRNYXRbMF1bMV0gPSBvTWF0MS5tYWRNYXRbMF1bMV0gLSBvTWF0Mi5tYWRNYXRbMF1b MV07CiAgICBtYWRNYXRbMF1bMl0gPSBvTWF0MS5tYWRNYXRbMF1bMl0gLSBvTWF0Mi5tYWRNYXRb MF1bMl07CiAgICBtYWRNYXRbMF1bM10gPSBvTWF0MS5tYWRNYXRbMF1bM10gLSBvTWF0Mi5tYWRN YXRbMF1bM107CiAgICBtYWRNYXRbMV1bMF0gPSBvTWF0MS5tYWRNYXRbMV1bMF0gLSBvTWF0Mi5t YWRNYXRbMV1bMF07CiAgICBtYWRNYXRbMV1bMV0gPSBvTWF0MS5tYWRNYXRbMV1bMV0gLSBvTWF0 Mi5tYWRNYXRbMV1bMV07CiAgICBtYWRNYXRbMV1bMl0gPSBvTWF0MS5tYWRNYXRbMV1bMl0gLSBv TWF0Mi5tYWRNYXRbMV1bMl07CiAgICBtYWRNYXRbMV1bM10gPSBvTWF0MS5tYWRNYXRbMV1bM10g LSBvTWF0Mi5tYWRNYXRbMV1bM107CiAgICBtYWRNYXRbMl1bMF0gPSBvTWF0MS5tYWRNYXRbMl1b MF0gLSBvTWF0Mi5tYWRNYXRbMl1bMF07CiAgICBtYWRNYXRbMl1bMV0gPSBvTWF0MS5tYWRNYXRb Ml1bMV0gLSBvTWF0Mi5tYWRNYXRbMl1bMV07CiAgICBtYWRNYXRbMl1bMl0gPSBvTWF0MS5tYWRN YXRbMl1bMl0gLSBvTWF0Mi5tYWRNYXRbMl1bMl07CiAgICBtYWRNYXRbMl1bM10gPSBvTWF0MS5t YWRNYXRbMl1bM10gLSBvTWF0Mi5tYWRNYXRbMl1bM107CiAgICBtYWRNYXRbM11bMF0gPSBvTWF0 MS5tYWRNYXRbM11bMF0gLSBvTWF0Mi5tYWRNYXRbM11bMF07CiAgICBtYWRNYXRbM11bMV0gPSBv TWF0MS5tYWRNYXRbM11bMV0gLSBvTWF0Mi5tYWRNYXRbM11bMV07CiAgICBtYWRNYXRbM11bMl0g PSBvTWF0MS5tYWRNYXRbM11bMl0gLSBvTWF0Mi5tYWRNYXRbM11bMl07CiAgICBtYWRNYXRbM11b M10gPSBvTWF0MS5tYWRNYXRbM11bM10gLSBvTWF0Mi5tYWRNYXRbM11bM107CgogICAgcmV0dXJu ICp0aGlzOwp9CgoKCgoKCk1hdDNEJiBNYXQzRDo6U3Vic3RyYWN0IChjb25zdCBNYXQzRCYgb01h dCwgcmVnaXN0ZXIgZG91YmxlIGRWYWwpCnsKICAgIG1hZE1hdFswXVswXSA9IG9NYXQubWFkTWF0 WzBdWzBdIC0gZFZhbDsKICAgIG1hZE1hdFswXVsxXSA9IG9NYXQubWFkTWF0WzBdWzFdIC0gZFZh bDsKICAgIG1hZE1hdFswXVsyXSA9IG9NYXQubWFkTWF0WzBdWzJdIC0gZFZhbDsKICAgIG1hZE1h dFswXVszXSA9IG9NYXQubWFkTWF0WzBdWzNdIC0gZFZhbDsKICAgIG1hZE1hdFsxXVswXSA9IG9N YXQubWFkTWF0WzFdWzBdIC0gZFZhbDsKICAgIG1hZE1hdFsxXVsxXSA9IG9NYXQubWFkTWF0WzFd WzFdIC0gZFZhbDsKICAgIG1hZE1hdFsxXVsyXSA9IG9NYXQubWFkTWF0WzFdWzJdIC0gZFZhbDsK ICAgIG1hZE1hdFsxXVszXSA9IG9NYXQubWFkTWF0WzFdWzNdIC0gZFZhbDsKICAgIG1hZE1hdFsy XVswXSA9IG9NYXQubWFkTWF0WzJdWzBdIC0gZFZhbDsKICAgIG1hZE1hdFsyXVsxXSA9IG9NYXQu bWFkTWF0WzJdWzFdIC0gZFZhbDsKICAgIG1hZE1hdFsyXVsyXSA9IG9NYXQubWFkTWF0WzJdWzJd IC0gZFZhbDsKICAgIG1hZE1hdFsyXVszXSA9IG9NYXQubWFkTWF0WzJdWzNdIC0gZFZhbDsKICAg IG1hZE1hdFszXVswXSA9IG9NYXQubWFkTWF0WzNdWzBdIC0gZFZhbDsKICAgIG1hZE1hdFszXVsx XSA9IG9NYXQubWFkTWF0WzNdWzFdIC0gZFZhbDsKICAgIG1hZE1hdFszXVsyXSA9IG9NYXQubWFk TWF0WzNdWzJdIC0gZFZhbDsKICAgIG1hZE1hdFszXVszXSA9IG9NYXQubWFkTWF0WzNdWzNdIC0g ZFZhbDsKCiAgICByZXR1cm4gKnRoaXM7Cn0KCgoKCgoKCk1hdDNEIE1hdDNEOjpvcGVyYXRvci0g KGNvbnN0IE1hdDNEJiBvTWF0KQp7CiAgICByZXR1cm4gTWF0M0QobWFkTWF0WzBdWzBdIC0gb01h dC5tYWRNYXRbMF1bMF0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzFdIC0gb01hdC5tYWRN YXRbMF1bMV0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzJdIC0gb01hdC5tYWRNYXRbMF1b Ml0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzNdIC0gb01hdC5tYWRNYXRbMF1bM10sCiAg ICAgICAgICAgICAgICAgbWFkTWF0WzFdWzBdIC0gb01hdC5tYWRNYXRbMV1bMF0sCiAgICAgICAg ICAgICAgICAgbWFkTWF0WzFdWzFdIC0gb01hdC5tYWRNYXRbMV1bMV0sCiAgICAgICAgICAgICAg ICAgbWFkTWF0WzFdWzJdIC0gb01hdC5tYWRNYXRbMV1bMl0sCiAgICAgICAgICAgICAgICAgbWFk TWF0WzFdWzNdIC0gb01hdC5tYWRNYXRbMV1bM10sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJd WzBdIC0gb01hdC5tYWRNYXRbMl1bMF0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJdWzFdIC0g b01hdC5tYWRNYXRbMl1bMV0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJdWzJdIC0gb01hdC5t YWRNYXRbMl1bMl0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJdWzNdIC0gb01hdC5tYWRNYXRb Ml1bM10sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzBdIC0gb01hdC5tYWRNYXRbM11bMF0s CiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzFdIC0gb01hdC5tYWRNYXRbM11bMV0sCiAgICAg ICAgICAgICAgICAgbWFkTWF0WzNdWzJdIC0gb01hdC5tYWRNYXRbM11bMl0sCiAgICAgICAgICAg ICAgICAgbWFkTWF0WzNdWzNdIC0gb01hdC5tYWRNYXRbM11bM10pOwp9CgoKCgoKCgpNYXQzRCBN YXQzRDo6b3BlcmF0b3ItIChyZWdpc3RlciBkb3VibGUgZFZhbCkKewogICAgcmV0dXJuIE1hdDNE KG1hZE1hdFswXVswXSAtIGRWYWwsIG1hZE1hdFswXVsxXSAtIGRWYWwsCiAgICAgICAgICAgICAg ICAgbWFkTWF0WzBdWzJdIC0gZFZhbCwgbWFkTWF0WzBdWzNdIC0gZFZhbCwKICAgICAgICAgICAg ICAgICBtYWRNYXRbMV1bMF0gLSBkVmFsLCBtYWRNYXRbMV1bMV0gLSBkVmFsLAogICAgICAgICAg ICAgICAgIG1hZE1hdFsxXVsyXSAtIGRWYWwsIG1hZE1hdFsxXVszXSAtIGRWYWwsCiAgICAgICAg ICAgICAgICAgbWFkTWF0WzJdWzBdIC0gZFZhbCwgbWFkTWF0WzJdWzFdIC0gZFZhbCwKICAgICAg ICAgICAgICAgICBtYWRNYXRbMl1bMl0gLSBkVmFsLCBtYWRNYXRbMl1bM10gLSBkVmFsLAogICAg ICAgICAgICAgICAgIG1hZE1hdFszXVswXSAtIGRWYWwsIG1hZE1hdFszXVsxXSAtIGRWYWwsCiAg ICAgICAgICAgICAgICAgbWFkTWF0WzNdWzJdIC0gZFZhbCwgbWFkTWF0WzNdWzNdIC0gZFZhbCk7 Cn0KCgoKCgoKCk1hdDNEJiBNYXQzRDo6b3BlcmF0b3ItPSAoY29uc3QgTWF0M0QmIG9NYXQpCnsK ICAgIFN1YnN0cmFjdCgqdGhpcywgb01hdCk7CgogICAgcmV0dXJuICp0aGlzOwp9CgoKCgoKCgpN YXQzRCYgTWF0M0Q6Om9wZXJhdG9yLT0gKHJlZ2lzdGVyIGRvdWJsZSBkVmFsKQp7CiAgICBTdWJz dHJhY3QoKnRoaXMsIGRWYWwpOwoKICAgIHJldHVybiAqdGhpczsKfQojIDEzNDUgIm1hdHJpeC5j cHAiCk1hdDNEJiBNYXQzRDo6TXVsdGlwbHkoY29uc3QgTWF0M0QmIG9NYXQxLCBjb25zdCBNYXQz RCYgb01hdDIpCnsKCgoKCiAgICBpZiAodGhpcyA9PSAmb01hdDEpCiAgICB7CiAgICAgICAgTWF0 M0Qgb01hdCgqdGhpcyk7CiAgICAgICAgTXVsdGlwbHkob01hdCwgb01hdDIpOwogICAgfQogICAg ZWxzZSBpZiAodGhpcyA9PSAmb01hdDIpCiAgICB7CiAgICAgICAgTWF0M0Qgb01hdCgqdGhpcyk7 CiAgICAgICAgTXVsdGlwbHkob01hdDEsIG9NYXQpOwogICAgfQogICAgZWxzZQogICAgewogICAg ICAgIG1hZE1hdFswXVswXSA9IG9NYXQxLm1hZE1hdFswXVswXSAqIG9NYXQyLm1hZE1hdFswXVsw XSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVswXSAr CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVswXSArCiAg ICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVszXSAqIG9NYXQyLm1hZE1hdFszXVswXTsKCiAgICAg ICAgbWFkTWF0WzBdWzFdID0gb01hdDEubWFkTWF0WzBdWzBdICogb01hdDIubWFkTWF0WzBdWzFd ICsKICAgICAgICAgICAgb01hdDEubWFkTWF0WzBdWzFdICogb01hdDIubWFkTWF0WzFdWzFdICsK ICAgICAgICAgICAgb01hdDEubWFkTWF0WzBdWzJdICogb01hdDIubWFkTWF0WzJdWzFdICsKICAg ICAgICAgICAgb01hdDEubWFkTWF0WzBdWzNdICogb01hdDIubWFkTWF0WzNdWzFdOwoKICAgICAg ICBtYWRNYXRbMF1bMl0gPSBvTWF0MS5tYWRNYXRbMF1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMl0g KwogICAgICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMl0gKwog ICAgICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bMl0gKwogICAg ICAgICAgICBvTWF0MS5tYWRNYXRbMF1bM10gKiBvTWF0Mi5tYWRNYXRbM11bMl07CgogICAgICAg IG1hZE1hdFswXVszXSA9IG9NYXQxLm1hZE1hdFswXVswXSAqIG9NYXQyLm1hZE1hdFswXVszXSAr CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVszXSArCiAg ICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVszXSArCiAgICAg ICAgICAgIG9NYXQxLm1hZE1hdFswXVszXSAqIG9NYXQyLm1hZE1hdFszXVszXTsKCiAgICAgICAg bWFkTWF0WzFdWzBdID0gb01hdDEubWFkTWF0WzFdWzBdICogb01hdDIubWFkTWF0WzBdWzBdICsK ICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzFdICogb01hdDIubWFkTWF0WzFdWzBdICsKICAg ICAgICAgICAgb01hdDEubWFkTWF0WzFdWzJdICogb01hdDIubWFkTWF0WzJdWzBdICsKICAgICAg ICAgICAgb01hdDEubWFkTWF0WzFdWzNdICogb01hdDIubWFkTWF0WzNdWzBdOwoKICAgICAgICBt YWRNYXRbMV1bMV0gPSBvTWF0MS5tYWRNYXRbMV1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMV0gKwog ICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMV0gKwogICAg ICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bMV0gKwogICAgICAg ICAgICBvTWF0MS5tYWRNYXRbMV1bM10gKiBvTWF0Mi5tYWRNYXRbM11bMV07CgogICAgICAgIG1h ZE1hdFsxXVsyXSA9IG9NYXQxLm1hZE1hdFsxXVswXSAqIG9NYXQyLm1hZE1hdFswXVsyXSArCiAg ICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVsyXSArCiAgICAg ICAgICAgIG9NYXQxLm1hZE1hdFsxXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVsyXSArCiAgICAgICAg ICAgIG9NYXQxLm1hZE1hdFsxXVszXSAqIG9NYXQyLm1hZE1hdFszXVsyXTsKCiAgICAgICAgbWFk TWF0WzFdWzNdID0gb01hdDEubWFkTWF0WzFdWzBdICogb01hdDIubWFkTWF0WzBdWzNdICsKICAg ICAgICAgICAgb01hdDEubWFkTWF0WzFdWzFdICogb01hdDIubWFkTWF0WzFdWzNdICsKICAgICAg ICAgICAgb01hdDEubWFkTWF0WzFdWzJdICogb01hdDIubWFkTWF0WzJdWzNdICsKICAgICAgICAg ICAgb01hdDEubWFkTWF0WzFdWzNdICogb01hdDIubWFkTWF0WzNdWzNdOwoKICAgICAgICBtYWRN YXRbMl1bMF0gPSBvTWF0MS5tYWRNYXRbMl1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMF0gKwogICAg ICAgICAgICBvTWF0MS5tYWRNYXRbMl1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMF0gKwogICAgICAg ICAgICBvTWF0MS5tYWRNYXRbMl1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bMF0gKwogICAgICAgICAg ICBvTWF0MS5tYWRNYXRbMl1bM10gKiBvTWF0Mi5tYWRNYXRbM11bMF07CgogICAgICAgIG1hZE1h dFsyXVsxXSA9IG9NYXQxLm1hZE1hdFsyXVswXSAqIG9NYXQyLm1hZE1hdFswXVsxXSArCiAgICAg ICAgICAgIG9NYXQxLm1hZE1hdFsyXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVsxXSArCiAgICAgICAg ICAgIG9NYXQxLm1hZE1hdFsyXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVsxXSArCiAgICAgICAgICAg IG9NYXQxLm1hZE1hdFsyXVszXSAqIG9NYXQyLm1hZE1hdFszXVsxXTsKCiAgICAgICAgbWFkTWF0 WzJdWzJdID0gb01hdDEubWFkTWF0WzJdWzBdICogb01hdDIubWFkTWF0WzBdWzJdICsKICAgICAg ICAgICAgb01hdDEubWFkTWF0WzJdWzFdICogb01hdDIubWFkTWF0WzFdWzJdICsKICAgICAgICAg ICAgb01hdDEubWFkTWF0WzJdWzJdICogb01hdDIubWFkTWF0WzJdWzJdICsKICAgICAgICAgICAg b01hdDEubWFkTWF0WzJdWzNdICogb01hdDIubWFkTWF0WzNdWzJdOwoKICAgICAgICBtYWRNYXRb Ml1bM10gPSBvTWF0MS5tYWRNYXRbMl1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bM10gKwogICAgICAg ICAgICBvTWF0MS5tYWRNYXRbMl1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bM10gKwogICAgICAgICAg ICBvTWF0MS5tYWRNYXRbMl1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bM10gKwogICAgICAgICAgICBv TWF0MS5tYWRNYXRbMl1bM10gKiBvTWF0Mi5tYWRNYXRbM11bM107CgogICAgICAgIG1hZE1hdFsz XVswXSA9IG9NYXQxLm1hZE1hdFszXVswXSAqIG9NYXQyLm1hZE1hdFswXVswXSArCiAgICAgICAg ICAgIG9NYXQxLm1hZE1hdFszXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVswXSArCiAgICAgICAgICAg IG9NYXQxLm1hZE1hdFszXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVswXSArCiAgICAgICAgICAgIG9N YXQxLm1hZE1hdFszXVszXSAqIG9NYXQyLm1hZE1hdFszXVswXTsKCiAgICAgICAgbWFkTWF0WzNd WzFdID0gb01hdDEubWFkTWF0WzNdWzBdICogb01hdDIubWFkTWF0WzBdWzFdICsKICAgICAgICAg ICAgb01hdDEubWFkTWF0WzNdWzFdICogb01hdDIubWFkTWF0WzFdWzFdICsKICAgICAgICAgICAg b01hdDEubWFkTWF0WzNdWzJdICogb01hdDIubWFkTWF0WzJdWzFdICsKICAgICAgICAgICAgb01h dDEubWFkTWF0WzNdWzNdICogb01hdDIubWFkTWF0WzNdWzFdOwoKICAgICAgICBtYWRNYXRbM11b Ml0gPSBvTWF0MS5tYWRNYXRbM11bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMl0gKwogICAgICAgICAg ICBvTWF0MS5tYWRNYXRbM11bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMl0gKwogICAgICAgICAgICBv TWF0MS5tYWRNYXRbM11bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bMl0gKwogICAgICAgICAgICBvTWF0 MS5tYWRNYXRbM11bM10gKiBvTWF0Mi5tYWRNYXRbM11bMl07CgogICAgICAgIG1hZE1hdFszXVsz XSA9IG9NYXQxLm1hZE1hdFszXVswXSAqIG9NYXQyLm1hZE1hdFswXVszXSArCiAgICAgICAgICAg IG9NYXQxLm1hZE1hdFszXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVszXSArCiAgICAgICAgICAgIG9N YXQxLm1hZE1hdFszXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVszXSArCiAgICAgICAgICAgIG9NYXQx Lm1hZE1hdFszXVszXSAqIG9NYXQyLm1hZE1hdFszXVszXTsKICAgIH0KICAgIHJldHVybiAqdGhp czsKfQoKCgoKCgpNYXQzRCAmTWF0M0Q6Ok11bHRpcGx5SW52ZXJzZShjb25zdCBNYXQzRCYgb01h dDEsIGNvbnN0IE1hdDNEJiBvTWF0MikKewoKCgoKICAgIGlmKHRoaXMgPT0gJm9NYXQxKQogICAg ewogICAgICAgIE1hdDNEIG9NYXQoKnRoaXMpOwogICAgICAgIE11bHRpcGx5SW52ZXJzZShvTWF0 LCBvTWF0Mik7CiAgICB9CiAgICBlbHNlIGlmICh0aGlzID09ICZvTWF0MikKICAgIHsKICAgICAg ICBNYXQzRCBvTWF0KCp0aGlzKTsKICAgICAgICBNdWx0aXBseUludmVyc2Uob01hdDEsIG9NYXQp OwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIG1hZE1hdEludmVyc2VbMF1bMF0gPQogICAg ICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzBdWzBdICogb01hdDIubWFkTWF0SW52ZXJzZVsw XVswXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMF1bMV0gKiBvTWF0Mi5tYWRN YXRJbnZlcnNlWzFdWzBdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVswXVsyXSAq IG9NYXQyLm1hZE1hdEludmVyc2VbMl1bMF0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZl cnNlWzBdWzNdICogb01hdDIubWFkTWF0SW52ZXJzZVszXVswXTsKCiAgICAgICAgbWFkTWF0SW52 ZXJzZVswXVsxXSA9CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMF1bMF0gKiBvTWF0 Mi5tYWRNYXRJbnZlcnNlWzBdWzFdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsw XVsxXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbMV1bMV0gKwogICAgICAgICAgICBvTWF0MS5tYWRN YXRJbnZlcnNlWzBdWzJdICogb01hdDIubWFkTWF0SW52ZXJzZVsyXVsxXSArCiAgICAgICAgICAg IG9NYXQxLm1hZE1hdEludmVyc2VbMF1bM10gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzNdWzFdOwoK ICAgICAgICBtYWRNYXRJbnZlcnNlWzBdWzJdID0KICAgICAgICAgICAgb01hdDEubWFkTWF0SW52 ZXJzZVswXVswXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbMF1bMl0gKwogICAgICAgICAgICBvTWF0 MS5tYWRNYXRJbnZlcnNlWzBdWzFdICogb01hdDIubWFkTWF0SW52ZXJzZVsxXVsyXSArCiAgICAg ICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMF1bMl0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzJd WzJdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVswXVszXSAqIG9NYXQyLm1hZE1h dEludmVyc2VbM11bMl07CgogICAgICAgIG1hZE1hdEludmVyc2VbMF1bM10gPQogICAgICAgICAg ICBvTWF0MS5tYWRNYXRJbnZlcnNlWzBdWzBdICogb01hdDIubWFkTWF0SW52ZXJzZVswXVszXSAr CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMF1bMV0gKiBvTWF0Mi5tYWRNYXRJbnZl cnNlWzFdWzNdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVswXVsyXSAqIG9NYXQy Lm1hZE1hdEludmVyc2VbMl1bM10gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzBd WzNdICogb01hdDIubWFkTWF0SW52ZXJzZVszXVszXTsKCiAgICAgICAgbWFkTWF0SW52ZXJzZVsx XVswXSA9CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMV1bMF0gKiBvTWF0Mi5tYWRN YXRJbnZlcnNlWzBdWzBdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsxXVsxXSAq IG9NYXQyLm1hZE1hdEludmVyc2VbMV1bMF0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZl cnNlWzFdWzJdICogb01hdDIubWFkTWF0SW52ZXJzZVsyXVswXSArCiAgICAgICAgICAgIG9NYXQx Lm1hZE1hdEludmVyc2VbMV1bM10gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzNdWzBdOwoKICAgICAg ICBtYWRNYXRJbnZlcnNlWzFdWzFdID0KICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsx XVswXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbMF1bMV0gKwogICAgICAgICAgICBvTWF0MS5tYWRN YXRJbnZlcnNlWzFdWzFdICogb01hdDIubWFkTWF0SW52ZXJzZVsxXVsxXSArCiAgICAgICAgICAg IG9NYXQxLm1hZE1hdEludmVyc2VbMV1bMl0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzJdWzFdICsK ICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsxXVszXSAqIG9NYXQyLm1hZE1hdEludmVy c2VbM11bMV07CgogICAgICAgIG1hZE1hdEludmVyc2VbMV1bMl0gPQogICAgICAgICAgICBvTWF0 MS5tYWRNYXRJbnZlcnNlWzFdWzBdICogb01hdDIubWFkTWF0SW52ZXJzZVswXVsyXSArCiAgICAg ICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMV1bMV0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzFd WzJdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsxXVsyXSAqIG9NYXQyLm1hZE1h dEludmVyc2VbMl1bMl0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzFdWzNdICog b01hdDIubWFkTWF0SW52ZXJzZVszXVsyXTsKCiAgICAgICAgbWFkTWF0SW52ZXJzZVsxXVszXSA9 CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMV1bMF0gKiBvTWF0Mi5tYWRNYXRJbnZl cnNlWzBdWzNdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsxXVsxXSAqIG9NYXQy Lm1hZE1hdEludmVyc2VbMV1bM10gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzFd WzJdICogb01hdDIubWFkTWF0SW52ZXJzZVsyXVszXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1h dEludmVyc2VbMV1bM10gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzNdWzNdOwoKICAgICAgICBtYWRN YXRJbnZlcnNlWzJdWzBdID0KICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsyXVswXSAq IG9NYXQyLm1hZE1hdEludmVyc2VbMF1bMF0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZl cnNlWzJdWzFdICogb01hdDIubWFkTWF0SW52ZXJzZVsxXVswXSArCiAgICAgICAgICAgIG9NYXQx Lm1hZE1hdEludmVyc2VbMl1bMl0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzJdWzBdICsKICAgICAg ICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsyXVszXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbM11b MF07CgogICAgICAgIG1hZE1hdEludmVyc2VbMl1bMV0gPQogICAgICAgICAgICBvTWF0MS5tYWRN YXRJbnZlcnNlWzJdWzBdICogb01hdDIubWFkTWF0SW52ZXJzZVswXVsxXSArCiAgICAgICAgICAg IG9NYXQxLm1hZE1hdEludmVyc2VbMl1bMV0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzFdWzFdICsK ICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsyXVsyXSAqIG9NYXQyLm1hZE1hdEludmVy c2VbMl1bMV0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzJdWzNdICogb01hdDIu bWFkTWF0SW52ZXJzZVszXVsxXTsKCiAgICAgICAgbWFkTWF0SW52ZXJzZVsyXVsyXSA9CiAgICAg ICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMl1bMF0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzBd WzJdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsyXVsxXSAqIG9NYXQyLm1hZE1h dEludmVyc2VbMV1bMl0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzJdWzJdICog b01hdDIubWFkTWF0SW52ZXJzZVsyXVsyXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVy c2VbMl1bM10gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzNdWzJdOwoKICAgICAgICBtYWRNYXRJbnZl cnNlWzJdWzNdID0KICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsyXVswXSAqIG9NYXQy Lm1hZE1hdEludmVyc2VbMF1bM10gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzJd WzFdICogb01hdDIubWFkTWF0SW52ZXJzZVsxXVszXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1h dEludmVyc2VbMl1bMl0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzJdWzNdICsKICAgICAgICAgICAg b01hdDEubWFkTWF0SW52ZXJzZVsyXVszXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbM11bM107Cgog ICAgICAgIG1hZE1hdEludmVyc2VbM11bMF0gPQogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZl cnNlWzNdWzBdICogb01hdDIubWFkTWF0SW52ZXJzZVswXVswXSArCiAgICAgICAgICAgIG9NYXQx Lm1hZE1hdEludmVyc2VbM11bMV0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzFdWzBdICsKICAgICAg ICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVszXVsyXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbMl1b MF0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzNdWzNdICogb01hdDIubWFkTWF0 SW52ZXJzZVszXVswXTsKCiAgICAgICAgbWFkTWF0SW52ZXJzZVszXVsxXSA9CiAgICAgICAgICAg IG9NYXQxLm1hZE1hdEludmVyc2VbM11bMF0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzBdWzFdICsK ICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVszXVsxXSAqIG9NYXQyLm1hZE1hdEludmVy c2VbMV1bMV0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzNdWzJdICogb01hdDIu bWFkTWF0SW52ZXJzZVsyXVsxXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbM11b M10gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzNdWzFdOwoKICAgICAgICBtYWRNYXRJbnZlcnNlWzNd WzJdID0KICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVszXVswXSAqIG9NYXQyLm1hZE1h dEludmVyc2VbMF1bMl0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzNdWzFdICog b01hdDIubWFkTWF0SW52ZXJzZVsxXVsyXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVy c2VbM11bMl0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzJdWzJdICsKICAgICAgICAgICAgb01hdDEu bWFkTWF0SW52ZXJzZVszXVszXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbM11bMl07CgogICAgICAg IG1hZE1hdEludmVyc2VbM11bM10gPQogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzNd WzBdICogb01hdDIubWFkTWF0SW52ZXJzZVswXVszXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1h dEludmVyc2VbM11bMV0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzFdWzNdICsKICAgICAgICAgICAg b01hdDEubWFkTWF0SW52ZXJzZVszXVsyXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbMl1bM10gKwog ICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzNdWzNdICogb01hdDIubWFkTWF0SW52ZXJz ZVszXVszXTsKICAgIH0KICAgIHJldHVybiAqdGhpczsKfQoKCgoKCgpNYXQzRCYgTWF0M0Q6Ok11 bHRpcGx5KGNvbnN0IE1hdDNEJiBvTWF0LCByZWdpc3RlciBkb3VibGUgZFZhbCkKewogICAgbWFk TWF0WzBdWzBdID0gb01hdC5tYWRNYXRbMF1bMF0gKiBkVmFsOwogICAgbWFkTWF0WzBdWzFdID0g b01hdC5tYWRNYXRbMF1bMV0gKiBkVmFsOwogICAgbWFkTWF0WzBdWzJdID0gb01hdC5tYWRNYXRb MF1bMl0gKiBkVmFsOwogICAgbWFkTWF0WzBdWzNdID0gb01hdC5tYWRNYXRbMF1bM10gKiBkVmFs OwogICAgbWFkTWF0WzFdWzBdID0gb01hdC5tYWRNYXRbMV1bMF0gKiBkVmFsOwogICAgbWFkTWF0 WzFdWzFdID0gb01hdC5tYWRNYXRbMV1bMV0gKiBkVmFsOwogICAgbWFkTWF0WzFdWzJdID0gb01h dC5tYWRNYXRbMV1bMl0gKiBkVmFsOwogICAgbWFkTWF0WzFdWzNdID0gb01hdC5tYWRNYXRbMV1b M10gKiBkVmFsOwogICAgbWFkTWF0WzJdWzBdID0gb01hdC5tYWRNYXRbMl1bMF0gKiBkVmFsOwog ICAgbWFkTWF0WzJdWzFdID0gb01hdC5tYWRNYXRbMl1bMV0gKiBkVmFsOwogICAgbWFkTWF0WzJd WzJdID0gb01hdC5tYWRNYXRbMl1bMl0gKiBkVmFsOwogICAgbWFkTWF0WzJdWzNdID0gb01hdC5t YWRNYXRbMl1bM10gKiBkVmFsOwogICAgbWFkTWF0WzNdWzBdID0gb01hdC5tYWRNYXRbM11bMF0g KiBkVmFsOwogICAgbWFkTWF0WzNdWzFdID0gb01hdC5tYWRNYXRbM11bMV0gKiBkVmFsOwogICAg bWFkTWF0WzNdWzJdID0gb01hdC5tYWRNYXRbM11bMl0gKiBkVmFsOwogICAgbWFkTWF0WzNdWzNd ID0gb01hdC5tYWRNYXRbM11bM10gKiBkVmFsOwoKICAgIHJldHVybiAqdGhpczsKfQoKCgoKCgp2 b2lkIE1hdDNEOjpNdWx0aXBseUludmVyc2UoY29uc3QgTWF0M0QgJm9NYXQxKQp7CiAgICBkb3Vi bGUgYWRmTWF0WzRdWzRdOwoKICAgIGFkZk1hdFswXVswXSA9CiAgICAgICAgb01hdDEubWFkTWF0 WzBdWzBdICogbWFkTWF0SW52ZXJzZVswXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzFd ICogbWFkTWF0SW52ZXJzZVsxXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzJdICogbWFk TWF0SW52ZXJzZVsyXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzNdICogbWFkTWF0SW52 ZXJzZVszXVswXTsKCiAgICBhZGZNYXRbMF1bMV0gPQogICAgICAgIG9NYXQxLm1hZE1hdFswXVsw XSAqIG1hZE1hdEludmVyc2VbMF1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFswXVsxXSAqIG1h ZE1hdEludmVyc2VbMV1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFswXVsyXSAqIG1hZE1hdElu dmVyc2VbMl1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFswXVszXSAqIG1hZE1hdEludmVyc2Vb M11bMV07CgogICAgYWRmTWF0WzBdWzJdID0KICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMF0gKiBt YWRNYXRJbnZlcnNlWzBdWzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMV0gKiBtYWRNYXRJ bnZlcnNlWzFdWzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMl0gKiBtYWRNYXRJbnZlcnNl WzJdWzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMF1bM10gKiBtYWRNYXRJbnZlcnNlWzNdWzJd OwoKICAgIGFkZk1hdFswXVszXSA9CiAgICAgICAgb01hdDEubWFkTWF0WzBdWzBdICogbWFkTWF0 SW52ZXJzZVswXVszXSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzFdICogbWFkTWF0SW52ZXJz ZVsxXVszXSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzJdICogbWFkTWF0SW52ZXJzZVsyXVsz XSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzNdICogbWFkTWF0SW52ZXJzZVszXVszXTsKCiAg ICBhZGZNYXRbMV1bMF0gPQogICAgICAgIG9NYXQxLm1hZE1hdFsxXVswXSAqIG1hZE1hdEludmVy c2VbMF1bMF0gKwogICAgICAgIG9NYXQxLm1hZE1hdFsxXVsxXSAqIG1hZE1hdEludmVyc2VbMV1b MF0gKwogICAgICAgIG9NYXQxLm1hZE1hdFsxXVsyXSAqIG1hZE1hdEludmVyc2VbMl1bMF0gKwog ICAgICAgIG9NYXQxLm1hZE1hdFsxXVszXSAqIG1hZE1hdEludmVyc2VbM11bMF07CgogICAgYWRm TWF0WzFdWzFdID0KICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMF0gKiBtYWRNYXRJbnZlcnNlWzBd WzFdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMV0gKiBtYWRNYXRJbnZlcnNlWzFdWzFdICsK ICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMl0gKiBtYWRNYXRJbnZlcnNlWzJdWzFdICsKICAgICAg ICBvTWF0MS5tYWRNYXRbMV1bM10gKiBtYWRNYXRJbnZlcnNlWzNdWzFdOwoKICAgIGFkZk1hdFsx XVsyXSA9CiAgICAgICAgb01hdDEubWFkTWF0WzFdWzBdICogbWFkTWF0SW52ZXJzZVswXVsyXSAr CiAgICAgICAgb01hdDEubWFkTWF0WzFdWzFdICogbWFkTWF0SW52ZXJzZVsxXVsyXSArCiAgICAg ICAgb01hdDEubWFkTWF0WzFdWzJdICogbWFkTWF0SW52ZXJzZVsyXVsyXSArCiAgICAgICAgb01h dDEubWFkTWF0WzFdWzNdICogbWFkTWF0SW52ZXJzZVszXVsyXTsKCiAgICBhZGZNYXRbMV1bM10g PQogICAgICAgIG9NYXQxLm1hZE1hdFsxXVswXSAqIG1hZE1hdEludmVyc2VbMF1bM10gKwogICAg ICAgIG9NYXQxLm1hZE1hdFsxXVsxXSAqIG1hZE1hdEludmVyc2VbMV1bM10gKwogICAgICAgIG9N YXQxLm1hZE1hdFsxXVsyXSAqIG1hZE1hdEludmVyc2VbMl1bM10gKwogICAgICAgIG9NYXQxLm1h ZE1hdFsxXVszXSAqIG1hZE1hdEludmVyc2VbM11bM107CgogICAgYWRmTWF0WzJdWzBdID0KICAg ICAgICBvTWF0MS5tYWRNYXRbMl1bMF0gKiBtYWRNYXRJbnZlcnNlWzBdWzBdICsKICAgICAgICBv TWF0MS5tYWRNYXRbMl1bMV0gKiBtYWRNYXRJbnZlcnNlWzFdWzBdICsKICAgICAgICBvTWF0MS5t YWRNYXRbMl1bMl0gKiBtYWRNYXRJbnZlcnNlWzJdWzBdICsKICAgICAgICBvTWF0MS5tYWRNYXRb Ml1bM10gKiBtYWRNYXRJbnZlcnNlWzNdWzBdOwoKICAgIGFkZk1hdFsyXVsxXSA9CiAgICAgICAg b01hdDEubWFkTWF0WzJdWzBdICogbWFkTWF0SW52ZXJzZVswXVsxXSArCiAgICAgICAgb01hdDEu bWFkTWF0WzJdWzFdICogbWFkTWF0SW52ZXJzZVsxXVsxXSArCiAgICAgICAgb01hdDEubWFkTWF0 WzJdWzJdICogbWFkTWF0SW52ZXJzZVsyXVsxXSArCiAgICAgICAgb01hdDEubWFkTWF0WzJdWzNd ICogbWFkTWF0SW52ZXJzZVszXVsxXTsKCiAgICBhZGZNYXRbMl1bMl0gPQogICAgICAgIG9NYXQx Lm1hZE1hdFsyXVswXSAqIG1hZE1hdEludmVyc2VbMF1bMl0gKwogICAgICAgIG9NYXQxLm1hZE1h dFsyXVsxXSAqIG1hZE1hdEludmVyc2VbMV1bMl0gKwogICAgICAgIG9NYXQxLm1hZE1hdFsyXVsy XSAqIG1hZE1hdEludmVyc2VbMl1bMl0gKwogICAgICAgIG9NYXQxLm1hZE1hdFsyXVszXSAqIG1h ZE1hdEludmVyc2VbM11bMl07CgogICAgYWRmTWF0WzJdWzNdID0KICAgICAgICBvTWF0MS5tYWRN YXRbMl1bMF0gKiBtYWRNYXRJbnZlcnNlWzBdWzNdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMl1b MV0gKiBtYWRNYXRJbnZlcnNlWzFdWzNdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMl1bMl0gKiBt YWRNYXRJbnZlcnNlWzJdWzNdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMl1bM10gKiBtYWRNYXRJ bnZlcnNlWzNdWzNdOwoKICAgIGFkZk1hdFszXVswXSA9CiAgICAgICAgb01hdDEubWFkTWF0WzNd WzBdICogbWFkTWF0SW52ZXJzZVswXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzNdWzFdICog bWFkTWF0SW52ZXJzZVsxXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzNdWzJdICogbWFkTWF0 SW52ZXJzZVsyXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzNdWzNdICogbWFkTWF0SW52ZXJz ZVszXVswXTsKCiAgICBhZGZNYXRbM11bMV0gPQogICAgICAgIG9NYXQxLm1hZE1hdFszXVswXSAq IG1hZE1hdEludmVyc2VbMF1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFszXVsxXSAqIG1hZE1h dEludmVyc2VbMV1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFszXVsyXSAqIG1hZE1hdEludmVy c2VbMl1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFszXVszXSAqIG1hZE1hdEludmVyc2VbM11b MV07CgogICAgYWRmTWF0WzNdWzJdID0KICAgICAgICBvTWF0MS5tYWRNYXRbM11bMF0gKiBtYWRN YXRJbnZlcnNlWzBdWzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbM11bMV0gKiBtYWRNYXRJbnZl cnNlWzFdWzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbM11bMl0gKiBtYWRNYXRJbnZlcnNlWzJd WzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbM11bM10gKiBtYWRNYXRJbnZlcnNlWzNdWzJdOwoK ICAgIGFkZk1hdFszXVszXSA9CiAgICAgICAgb01hdDEubWFkTWF0WzNdWzBdICogbWFkTWF0SW52 ZXJzZVswXVszXSArCiAgICAgICAgb01hdDEubWFkTWF0WzNdWzFdICogbWFkTWF0SW52ZXJzZVsx XVszXSArCiAgICAgICAgb01hdDEubWFkTWF0WzNdWzJdICogbWFkTWF0SW52ZXJzZVsyXVszXSAr CiAgICAgICAgb01hdDEubWFkTWF0WzNdWzNdICogbWFkTWF0SW52ZXJzZVszXVszXTsKCiAgICBt YWRNYXRJbnZlcnNlWzBdWzBdID0gYWRmTWF0WzBdWzBdOwogICAgbWFkTWF0SW52ZXJzZVswXVsx XSA9IGFkZk1hdFswXVsxXTsKICAgIG1hZE1hdEludmVyc2VbMF1bMl0gPSBhZGZNYXRbMF1bMl07 CiAgICBtYWRNYXRJbnZlcnNlWzBdWzNdID0gYWRmTWF0WzBdWzNdOwoKICAgIG1hZE1hdEludmVy c2VbMV1bMF0gPSBhZGZNYXRbMV1bMF07CiAgICBtYWRNYXRJbnZlcnNlWzFdWzFdID0gYWRmTWF0 WzFdWzFdOwogICAgbWFkTWF0SW52ZXJzZVsxXVsyXSA9IGFkZk1hdFsxXVsyXTsKICAgIG1hZE1h dEludmVyc2VbMV1bM10gPSBhZGZNYXRbMV1bM107CgogICAgbWFkTWF0SW52ZXJzZVsyXVswXSA9 IGFkZk1hdFsyXVswXTsKICAgIG1hZE1hdEludmVyc2VbMl1bMV0gPSBhZGZNYXRbMl1bMV07CiAg ICBtYWRNYXRJbnZlcnNlWzJdWzJdID0gYWRmTWF0WzJdWzJdOwogICAgbWFkTWF0SW52ZXJzZVsy XVszXSA9IGFkZk1hdFsyXVszXTsKCiAgICBtYWRNYXRJbnZlcnNlWzNdWzBdID0gYWRmTWF0WzNd WzBdOwogICAgbWFkTWF0SW52ZXJzZVszXVsxXSA9IGFkZk1hdFszXVsxXTsKICAgIG1hZE1hdElu dmVyc2VbM11bMl0gPSBhZGZNYXRbM11bMl07CiAgICBtYWRNYXRJbnZlcnNlWzNdWzNdID0gYWRm TWF0WzNdWzNdOwp9CgoKCgoKCgpNYXQzRCYgTWF0M0Q6Om9wZXJhdG9yKj0gKHJlZ2lzdGVyIGRv dWJsZSBkVmFsKQp7CiAgICBNdWx0aXBseSgqdGhpcywgZFZhbCk7CgogICAgcmV0dXJuICp0aGlz Owp9CgoKCgoKCgpNYXQzRCYgTWF0M0Q6Om9wZXJhdG9yKj0gKGNvbnN0IE1hdDNEICZvTWF0KQp7 CiAgICBNdWx0aXBseSgqdGhpcywgb01hdCk7CgogICAgcmV0dXJuICp0aGlzOwp9CgoKCgoKCgpN YXQzRCBNYXQzRDo6b3BlcmF0b3IqIChyZWdpc3RlciBkb3VibGUgZFZhbCkKewogICAgcmV0dXJu IE1hdDNEKG1hZE1hdFswXVswXSAqIGRWYWwsIG1hZE1hdFswXVsxXSAqIGRWYWwsCiAgICAgICAg ICAgICAgICAgbWFkTWF0WzBdWzJdICogZFZhbCwgbWFkTWF0WzBdWzNdICogZFZhbCwKICAgICAg ICAgICAgICAgICBtYWRNYXRbMV1bMF0gKiBkVmFsLCBtYWRNYXRbMV1bMV0gKiBkVmFsLAogICAg ICAgICAgICAgICAgIG1hZE1hdFsxXVsyXSAqIGRWYWwsIG1hZE1hdFsxXVszXSAqIGRWYWwsCiAg ICAgICAgICAgICAgICAgbWFkTWF0WzJdWzBdICogZFZhbCwgbWFkTWF0WzJdWzFdICogZFZhbCwK ICAgICAgICAgICAgICAgICBtYWRNYXRbMl1bMl0gKiBkVmFsLCBtYWRNYXRbMl1bM10gKiBkVmFs LAogICAgICAgICAgICAgICAgIG1hZE1hdFszXVswXSAqIGRWYWwsIG1hZE1hdFszXVsxXSAqIGRW YWwsCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzJdICogZFZhbCwgbWFkTWF0WzNdWzNdICog ZFZhbCk7Cn0KCgoKCgoKTWF0M0Qgb3BlcmF0b3IqIChjb25zdCBNYXQzRCYgb01hdDEsIGNvbnN0 IE1hdDNEJiBvTWF0MikKewogICAgcmV0dXJuIE1hdDNEKG9NYXQxLm1hZE1hdFswXVswXSAqIG9N YXQyLm1hZE1hdFswXVswXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzBdWzFdICog b01hdDIubWFkTWF0WzFdWzBdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMl0g KiBvTWF0Mi5tYWRNYXRbMl1bMF0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVsz XSAqIG9NYXQyLm1hZE1hdFszXVswXSwKCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzBd WzBdICogb01hdDIubWFkTWF0WzBdWzFdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRb MF1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMV0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1h dFswXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVsxXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFk TWF0WzBdWzNdICogb01hdDIubWFkTWF0WzNdWzFdLAoKICAgICAgICAgICAgICAgICBvTWF0MS5t YWRNYXRbMF1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMl0gKwogICAgICAgICAgICAgICAgIG9NYXQx Lm1hZE1hdFswXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVsyXSArCiAgICAgICAgICAgICAgICAgb01h dDEubWFkTWF0WzBdWzJdICogb01hdDIubWFkTWF0WzJdWzJdICsKICAgICAgICAgICAgICAgICBv TWF0MS5tYWRNYXRbMF1bM10gKiBvTWF0Mi5tYWRNYXRbM11bMl0sCgogICAgICAgICAgICAgICAg IG9NYXQxLm1hZE1hdFswXVswXSAqIG9NYXQyLm1hZE1hdFswXVszXSArCiAgICAgICAgICAgICAg ICAgb01hdDEubWFkTWF0WzBdWzFdICogb01hdDIubWFkTWF0WzFdWzNdICsKICAgICAgICAgICAg ICAgICBvTWF0MS5tYWRNYXRbMF1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bM10gKwogICAgICAgICAg ICAgICAgIG9NYXQxLm1hZE1hdFswXVszXSAqIG9NYXQyLm1hZE1hdFszXVszXSwKCiAgICAgICAg ICAgICAgICAgb01hdDEubWFkTWF0WzFdWzBdICogb01hdDIubWFkTWF0WzBdWzBdICsKICAgICAg ICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMF0gKwogICAg ICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVswXSArCiAg ICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzNdICogb01hdDIubWFkTWF0WzNdWzBdLAoK ICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMV0g KwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVsx XSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzJdICogb01hdDIubWFkTWF0WzJd WzFdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bM10gKiBvTWF0Mi5tYWRNYXRb M11bMV0sCgogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVswXSAqIG9NYXQyLm1hZE1h dFswXVsyXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzFdICogb01hdDIubWFk TWF0WzFdWzJdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMl0gKiBvTWF0Mi5t YWRNYXRbMl1bMl0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVszXSAqIG9NYXQy Lm1hZE1hdFszXVsyXSwKCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzBdICogb01h dDIubWFkTWF0WzBdWzNdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMV0gKiBv TWF0Mi5tYWRNYXRbMV1bM10gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVsyXSAq IG9NYXQyLm1hZE1hdFsyXVszXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzNd ICogb01hdDIubWFkTWF0WzNdWzNdLAoKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMl1b MF0gKiBvTWF0Mi5tYWRNYXRbMF1bMF0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsy XVsxXSAqIG9NYXQyLm1hZE1hdFsxXVswXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0 WzJdWzJdICogb01hdDIubWFkTWF0WzJdWzBdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRN YXRbMl1bM10gKiBvTWF0Mi5tYWRNYXRbM11bMF0sCgogICAgICAgICAgICAgICAgIG9NYXQxLm1h ZE1hdFsyXVswXSAqIG9NYXQyLm1hZE1hdFswXVsxXSArCiAgICAgICAgICAgICAgICAgb01hdDEu bWFkTWF0WzJdWzFdICogb01hdDIubWFkTWF0WzFdWzFdICsKICAgICAgICAgICAgICAgICBvTWF0 MS5tYWRNYXRbMl1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bMV0gKwogICAgICAgICAgICAgICAgIG9N YXQxLm1hZE1hdFsyXVszXSAqIG9NYXQyLm1hZE1hdFszXVsxXSwKCiAgICAgICAgICAgICAgICAg b01hdDEubWFkTWF0WzJdWzBdICogb01hdDIubWFkTWF0WzBdWzJdICsKICAgICAgICAgICAgICAg ICBvTWF0MS5tYWRNYXRbMl1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMl0gKwogICAgICAgICAgICAg ICAgIG9NYXQxLm1hZE1hdFsyXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVsyXSArCiAgICAgICAgICAg ICAgICAgb01hdDEubWFkTWF0WzJdWzNdICogb01hdDIubWFkTWF0WzNdWzJdLAoKICAgICAgICAg ICAgICAgICBvTWF0MS5tYWRNYXRbMl1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bM10gKwogICAgICAg ICAgICAgICAgIG9NYXQxLm1hZE1hdFsyXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVszXSArCiAgICAg ICAgICAgICAgICAgb01hdDEubWFkTWF0WzJdWzJdICogb01hdDIubWFkTWF0WzJdWzNdICsKICAg ICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMl1bM10gKiBvTWF0Mi5tYWRNYXRbM11bM10sCgog ICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFszXVswXSAqIG9NYXQyLm1hZE1hdFswXVswXSAr CiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzNdWzFdICogb01hdDIubWFkTWF0WzFdWzBd ICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbM11bMl0gKiBvTWF0Mi5tYWRNYXRbMl1b MF0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFszXVszXSAqIG9NYXQyLm1hZE1hdFsz XVswXSwKCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzNdWzBdICogb01hdDIubWFkTWF0 WzBdWzFdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbM11bMV0gKiBvTWF0Mi5tYWRN YXRbMV1bMV0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFszXVsyXSAqIG9NYXQyLm1h ZE1hdFsyXVsxXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzNdWzNdICogb01hdDIu bWFkTWF0WzNdWzFdLAoKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbM11bMF0gKiBvTWF0 Mi5tYWRNYXRbMF1bMl0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFszXVsxXSAqIG9N YXQyLm1hZE1hdFsxXVsyXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzNdWzJdICog b01hdDIubWFkTWF0WzJdWzJdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbM11bM10g KiBvTWF0Mi5tYWRNYXRbM11bMl0sCgogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFszXVsw XSAqIG9NYXQyLm1hZE1hdFswXVszXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzNd WzFdICogb01hdDIubWFkTWF0WzFdWzNdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRb M11bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bM10gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1h dFszXVszXSAqIG9NYXQyLm1hZE1hdFszXVszXSk7Cn0KCgoKCgoKR0RCVmVydGV4IG9wZXJhdG9y KiAocmVnaXN0ZXIgR0RCVmVydGV4JiBzVmVjSW4sIGNvbnN0IE1hdDNEJiBvTWF0KQp7CgogICAg R0RCVmVydGV4IHNWZWNPdXQ7CiAgICBzVmVjSW4ueiA9IDAuMDsKCgoKCgogICAgc1ZlY091dC54 ID0gb01hdC5tYWRNYXRbMF1bMF0qc1ZlY0luLnggKwogICAgICAgIG9NYXQubWFkTWF0WzFdWzBd KnNWZWNJbi55ICsgb01hdC5tYWRNYXRbM11bMF07CiAgICBzVmVjT3V0LnkgPSBvTWF0Lm1hZE1h dFswXVsxXSpzVmVjSW4ueCArCiAgICAgICAgb01hdC5tYWRNYXRbMV1bMV0qc1ZlY0luLnkgKyBv TWF0Lm1hZE1hdFszXVsxXTsKICAgIHNWZWNPdXQueiA9IHNWZWNJbi56OwojIDE4ODIgIm1hdHJp eC5jcHAiCiAgICByZXR1cm4gc1ZlY091dDsKfQoKCgoKCgpHREJWZXJ0ZXggTWF0M0Q6Ok11bHRp cGx5KHJlZ2lzdGVyIEdEQlZlcnRleCAmc1ZlYykKewogICAgY29uc3QgZG91YmxlIGRXID0gMS4w OwogICAgR0RCVmVydGV4IHNWZWNPdXQ7CiAgICBzVmVjLnogPSAwLjA7CgogICAgc1ZlY091dC54 ID0gbWFkTWF0SW52ZXJzZVswXVswXSpzVmVjLnggKwogICAgICAgIG1hZE1hdEludmVyc2VbMV1b MF0qc1ZlYy55ICsKICAgICAgICBtYWRNYXRJbnZlcnNlWzJdWzBdKnNWZWMueiArCiAgICAgICAg bWFkTWF0SW52ZXJzZVszXVswXSpkVzsKCiAgICBzVmVjT3V0LnkgPSBtYWRNYXRJbnZlcnNlWzBd WzFdKnNWZWMueCArCiAgICAgICAgbWFkTWF0SW52ZXJzZVsxXVsxXSpzVmVjLnkgKwogICAgICAg IG1hZE1hdEludmVyc2VbMl1bMV0qc1ZlYy56ICsKICAgICAgICBtYWRNYXRJbnZlcnNlWzNdWzFd KmRXOwoKICAgIHNWZWNPdXQueiA9IG1hZE1hdEludmVyc2VbMF1bMl0qc1ZlYy54ICsKICAgICAg ICBtYWRNYXRJbnZlcnNlWzFdWzJdKnNWZWMueSArCiAgICAgICAgbWFkTWF0SW52ZXJzZVsyXVsy XSpzVmVjLnogKwogICAgICAgIG1hZE1hdEludmVyc2VbM11bMl0qZFc7CgogICAgcmV0dXJuIHNW ZWNPdXQ7Cn0KCgoKCgoKTWF0M0QmIE1hdDNEOjpvcGVyYXRvcisrICh2b2lkKQp7CiAgICArK21h ZE1hdFswXVswXTsgKyttYWRNYXRbMF1bMV07ICsrbWFkTWF0WzBdWzJdOyArK21hZE1hdFswXVsz XTsKICAgICsrbWFkTWF0WzFdWzBdOyArK21hZE1hdFsxXVsxXTsgKyttYWRNYXRbMV1bMl07ICsr bWFkTWF0WzFdWzNdOwogICAgKyttYWRNYXRbMl1bMF07ICsrbWFkTWF0WzJdWzFdOyArK21hZE1h dFsyXVsyXTsgKyttYWRNYXRbMl1bM107CiAgICArK21hZE1hdFszXVswXTsgKyttYWRNYXRbM11b MV07ICsrbWFkTWF0WzNdWzJdOyArK21hZE1hdFszXVszXTsKCiAgICByZXR1cm4gKnRoaXM7Cn0K CgoKCgoKTWF0M0QmIE1hdDNEOjpvcGVyYXRvci0tICgpCnsKICAgLS1tYWRNYXRbMF1bMF07IC0t bWFkTWF0WzBdWzFdOyAtLW1hZE1hdFswXVsyXTsgLS1tYWRNYXRbMF1bM107CiAgIC0tbWFkTWF0 WzFdWzBdOyAtLW1hZE1hdFsxXVsxXTsgLS1tYWRNYXRbMV1bMl07IC0tbWFkTWF0WzFdWzNdOwog ICAtLW1hZE1hdFsyXVswXTsgLS1tYWRNYXRbMl1bMV07IC0tbWFkTWF0WzJdWzJdOyAtLW1hZE1h dFsyXVszXTsKICAgLS1tYWRNYXRbM11bMF07IC0tbWFkTWF0WzNdWzFdOyAtLW1hZE1hdFszXVsy XTsgLS1tYWRNYXRbM11bM107CgogICByZXR1cm4gKnRoaXM7Cn0KCgoKCgoKTWF0M0QmIE1hdDNE OjpvcGVyYXRvcj0gKGNvbnN0IE1hdDNEJiBvTWF0KQp7CiAgICBtYWRNYXRbMF1bMF0gPSBvTWF0 Lm1hZE1hdFswXVswXTsgbWFkTWF0WzBdWzFdID0gb01hdC5tYWRNYXRbMF1bMV07CiAgICBtYWRN YXRbMF1bMl0gPSBvTWF0Lm1hZE1hdFswXVsyXTsgbWFkTWF0WzBdWzNdID0gb01hdC5tYWRNYXRb MF1bM107CiAgICBtYWRNYXRbMV1bMF0gPSBvTWF0Lm1hZE1hdFsxXVswXTsgbWFkTWF0WzFdWzFd ID0gb01hdC5tYWRNYXRbMV1bMV07CiAgICBtYWRNYXRbMV1bMl0gPSBvTWF0Lm1hZE1hdFsxXVsy XTsgbWFkTWF0WzFdWzNdID0gb01hdC5tYWRNYXRbMV1bM107CiAgICBtYWRNYXRbMl1bMF0gPSBv TWF0Lm1hZE1hdFsyXVswXTsgbWFkTWF0WzJdWzFdID0gb01hdC5tYWRNYXRbMl1bMV07CiAgICBt YWRNYXRbMl1bMl0gPSBvTWF0Lm1hZE1hdFsyXVsyXTsgbWFkTWF0WzJdWzNdID0gb01hdC5tYWRN YXRbMl1bM107CiAgICBtYWRNYXRbM11bMF0gPSBvTWF0Lm1hZE1hdFszXVswXTsgbWFkTWF0WzNd WzFdID0gb01hdC5tYWRNYXRbM11bMV07CiAgICBtYWRNYXRbM11bMl0gPSBvTWF0Lm1hZE1hdFsz XVsyXTsgbWFkTWF0WzNdWzNdID0gb01hdC5tYWRNYXRbM11bM107CgogICAgbWFkTWF0SW52ZXJz ZVswXVswXSA9IG9NYXQubWFkTWF0SW52ZXJzZVswXVswXTsKICAgIG1hZE1hdEludmVyc2VbMF1b MV0gPSBvTWF0Lm1hZE1hdEludmVyc2VbMF1bMV07CiAgICBtYWRNYXRJbnZlcnNlWzBdWzJdID0g b01hdC5tYWRNYXRJbnZlcnNlWzBdWzJdOwogICAgbWFkTWF0SW52ZXJzZVswXVszXSA9IG9NYXQu bWFkTWF0SW52ZXJzZVswXVszXTsKICAgIG1hZE1hdEludmVyc2VbMV1bMF0gPSBvTWF0Lm1hZE1h dEludmVyc2VbMV1bMF07CiAgICBtYWRNYXRJbnZlcnNlWzFdWzFdID0gb01hdC5tYWRNYXRJbnZl cnNlWzFdWzFdOwogICAgbWFkTWF0SW52ZXJzZVsxXVsyXSA9IG9NYXQubWFkTWF0SW52ZXJzZVsx XVsyXTsKICAgIG1hZE1hdEludmVyc2VbMV1bM10gPSBvTWF0Lm1hZE1hdEludmVyc2VbMV1bM107 CiAgICBtYWRNYXRJbnZlcnNlWzJdWzBdID0gb01hdC5tYWRNYXRJbnZlcnNlWzJdWzBdOwogICAg bWFkTWF0SW52ZXJzZVsyXVsxXSA9IG9NYXQubWFkTWF0SW52ZXJzZVsyXVsxXTsKICAgIG1hZE1h dEludmVyc2VbMl1bMl0gPSBvTWF0Lm1hZE1hdEludmVyc2VbMl1bMl07CiAgICBtYWRNYXRJbnZl cnNlWzJdWzNdID0gb01hdC5tYWRNYXRJbnZlcnNlWzJdWzNdOwogICAgbWFkTWF0SW52ZXJzZVsz XVswXSA9IG9NYXQubWFkTWF0SW52ZXJzZVszXVswXTsKICAgIG1hZE1hdEludmVyc2VbM11bMV0g PSBvTWF0Lm1hZE1hdEludmVyc2VbM11bMV07CiAgICBtYWRNYXRJbnZlcnNlWzNdWzJdID0gb01h dC5tYWRNYXRJbnZlcnNlWzNdWzJdOwogICAgbWFkTWF0SW52ZXJzZVszXVszXSA9IG9NYXQubWFk TWF0SW52ZXJzZVszXVszXTsKCiAgICByZXR1cm4gKnRoaXM7Cn0KCgoKCgoKVEJvb2wgTWF0M0Q6 Om9wZXJhdG9yPT0gKGNvbnN0IE1hdDNEJiBvTWF0KQp7CiAgICBpZiAoJm9NYXQgPT0gdGhpcykK ICAgICAgcmV0dXJuIDE7CgogICAgcmV0dXJuICggKCAobWFkTWF0WzBdWzBdIC0gb01hdC5tYWRN YXRbMF1bMF0pID4gLTEuMEUtOSAmJiAobWFkTWF0WzBdWzBdIC0gb01hdC5tYWRNYXRbMF1bMF0p IDwgMS4wRS05ICkgJiYKICAgICAgICAgICAgICggKG1hZE1hdFswXVsxXSAtIG9NYXQubWFkTWF0 WzBdWzFdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFswXVsxXSAtIG9NYXQubWFkTWF0WzBdWzFdKSA8 IDEuMEUtOSApJiYKICAgICAgICAgICAgICggKG1hZE1hdFswXVsyXSAtIG9NYXQubWFkTWF0WzBd WzJdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFswXVsyXSAtIG9NYXQubWFkTWF0WzBdWzJdKSA8IDEu MEUtOSApJiYKICAgICAgICAgICAgICggKG1hZE1hdFswXVszXSAtIG9NYXQubWFkTWF0WzBdWzNd KSA+IC0xLjBFLTkgJiYgKG1hZE1hdFswXVszXSAtIG9NYXQubWFkTWF0WzBdWzNdKSA8IDEuMEUt OSApJiYKICAgICAgICAgICAgICggKG1hZE1hdFsxXVswXSAtIG9NYXQubWFkTWF0WzFdWzBdKSA+ IC0xLjBFLTkgJiYgKG1hZE1hdFsxXVswXSAtIG9NYXQubWFkTWF0WzFdWzBdKSA8IDEuMEUtOSAp JiYKICAgICAgICAgICAgICggKG1hZE1hdFsxXVsxXSAtIG9NYXQubWFkTWF0WzFdWzFdKSA+IC0x LjBFLTkgJiYgKG1hZE1hdFsxXVsxXSAtIG9NYXQubWFkTWF0WzFdWzFdKSA8IDEuMEUtOSApJiYK ICAgICAgICAgICAgICggKG1hZE1hdFsxXVsyXSAtIG9NYXQubWFkTWF0WzFdWzJdKSA+IC0xLjBF LTkgJiYgKG1hZE1hdFsxXVsyXSAtIG9NYXQubWFkTWF0WzFdWzJdKSA8IDEuMEUtOSApJiYKICAg ICAgICAgICAgICggKG1hZE1hdFsxXVszXSAtIG9NYXQubWFkTWF0WzFdWzNdKSA+IC0xLjBFLTkg JiYgKG1hZE1hdFsxXVszXSAtIG9NYXQubWFkTWF0WzFdWzNdKSA8IDEuMEUtOSApJiYKICAgICAg ICAgICAgICggKG1hZE1hdFsyXVswXSAtIG9NYXQubWFkTWF0WzJdWzBdKSA+IC0xLjBFLTkgJiYg KG1hZE1hdFsyXVswXSAtIG9NYXQubWFkTWF0WzJdWzBdKSA8IDEuMEUtOSApJiYKICAgICAgICAg ICAgICggKG1hZE1hdFsyXVsxXSAtIG9NYXQubWFkTWF0WzJdWzFdKSA+IC0xLjBFLTkgJiYgKG1h ZE1hdFsyXVsxXSAtIG9NYXQubWFkTWF0WzJdWzFdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAg ICggKG1hZE1hdFsyXVsyXSAtIG9NYXQubWFkTWF0WzJdWzJdKSA+IC0xLjBFLTkgJiYgKG1hZE1h dFsyXVsyXSAtIG9NYXQubWFkTWF0WzJdWzJdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAgICgg KG1hZE1hdFsyXVszXSAtIG9NYXQubWFkTWF0WzJdWzNdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFsy XVszXSAtIG9NYXQubWFkTWF0WzJdWzNdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAgICggKG1h ZE1hdFszXVswXSAtIG9NYXQubWFkTWF0WzNdWzBdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFszXVsw XSAtIG9NYXQubWFkTWF0WzNdWzBdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAgICggKG1hZE1h dFszXVsxXSAtIG9NYXQubWFkTWF0WzNdWzFdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFszXVsxXSAt IG9NYXQubWFkTWF0WzNdWzFdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAgICggKG1hZE1hdFsz XVsyXSAtIG9NYXQubWFkTWF0WzNdWzJdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFszXVsyXSAtIG9N YXQubWFkTWF0WzNdWzJdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAgICggKG1hZE1hdFszXVsz XSAtIG9NYXQubWFkTWF0WzNdWzNdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFszXVszXSAtIG9NYXQu bWFkTWF0WzNdWzNdKSA8IDEuMEUtOSApICk7Cn0K